В останні роки у сфері робототехніки спостерігається сплеск прогресу та впровадження технологій. Однією з них є ROS2 (Robot Operating System 2), платформа проміжного програмного забезпечення з відкритим вихідним кодом, яка надає інструменти, бібліотеки та конвенції для розробки, тестування та підтримки додатків роботів. У цій статті розповідається про додавання службових файлів у пакунок ROS2 за допомогою setup.py, важливої навички для розробників, які працюють із цією платформою. Ми розпочнемо з короткого вступу, представимо рішення проблеми, проведемо вас через покроковий посібник і обговоримо пов’язані теми для глибшого розуміння.
Налаштування службового файлу в пакеті ROS2 передбачає два основні етапи: створення файлу визначення службового повідомлення (.srv) і додавання необхідних конфігурацій у файли package.xml і setup.py. У цьому посібнику ми створимо просту службу, яка приймає вхідний рядок і повертає довжину наданого введення.
Спочатку підготуємо наше робоче місце. Створіть пакет ROS2 під назвою “string_length_service” за допомогою такої команди:
"
ros2 pkg create –build-type ament_python string_length_service
"
Тепер створіть каталог під назвою “srv” всередині пакета “string_length_service” для зберігання нашого файлу визначення службового повідомлення:
"
mkdir srv
"
У каталозі «srv» створіть файл під назвою «StringLength.srv» із таким вмістом:
"
рядок input_string
-
довжина int64
"
У файлі package.xml обов’язково додайте необхідні залежності:
“`xml
"
Тепер перейдемо до основної частини цієї статті – додавання службових файлів у setup.py. Відкрийте файл «setup.py» і додайте такий код:
«пітон
з установок імпорту налаштувань
від глоб імпорт глоб
package_name = 'string_length_service'
налаштування(
ім'я=назва_пакета,
версія='0.0.0',
packages=[назва_пакета],
файли_даних=[
('share/ament_index/resource_index/packages',
['ресурс/' + назва_пакета]),
('share/' + package_name, ['package.xml']),
('share/' + package_name, glob('srv/*'))
],
install_requires=['setuptools'],
zip_safe=Правда,
supporter='ім'я_розробника_тут',
supporter_email='developer_email_here',
description='Сервіс для обчислення довжини рядка',
ліцензія='MIT',
tests_require=['pytest'],
entry_points={
'console_scripts': [
'string_length_server = ' + package_name + '.string_length_server:main',
'string_length_client = ' + package_name + '.string_length_client:main',
],
},
)
"
Давайте тепер обговоримо, що робить цей код: Файл setup.py використовує setuptools для розповсюдження та керування нашим пакетом. Змінна package_name містить назву нашого пакета. Список data_files визначає необхідний ресурс, package.xml і службові файли, які розповсюджуватимуться разом із пакетом. install_requires містить список необхідних пакетів, а entry_points визначає виконувані файли нашої служби. Обов’язково замініть 'developer_name_here' і 'developer_email_here' на належні значення.
Використання rclpy і std_srvs
Після налаштування службових файлів у setup.py необхідно реалізувати код сервера та клієнта за допомогою клієнтської бібліотеки ROS2 Python, rclpy та std_srvs для стандартних типів послуг.
Створіть файли «string_length_server.py» і «string_length_client.py» у своєму каталозі пакунків і запровадьте код сервера та клієнта. Ви можете знайти докладні відомості про те, як написати код сервера та клієнта, у документації ROS2.
Побудова та тестування сервісу
Нарешті, створіть і протестуйте свій пакет за допомогою таких команд:
"
джерело /opt/ros/foxy/setup.bash
colcon build –packages-select string_length_service
джерело install/setup.bash
"
Після успішної збірки запустіть сервер і клієнт за допомогою двох окремих терміналів:
"
ros2 запустити string_length_service string_length_server
"
"
ros2 запустити string_length_service string_length_client
"
У цьому посібнику подано детальне пояснення щодо додавання службових файлів у setup.py для пакетів ROS2, торкаючись пов’язаних тем, таких як rclpy та std_srvs. Дотримуючись цих кроків, ви зможете створювати та поширювати свої служби ROS2 ефективним і організованим способом, полегшуючи взаємодію в межах ваших роботизованих програм. Успіхів і щасливого кодування!