Вирішено: додайте службові файли в setup.py ROS2

В останні роки у сфері робототехніки спостерігається сплеск прогресу та впровадження технологій. Однією з них є 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
std_msgs
service_interface_packages
ament_cmake
ament_cmake_auto
matplotlib
"

Тепер перейдемо до основної частини цієї статті – додавання службових файлів у 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 ефективним і організованим способом, полегшуючи взаємодію в межах ваших роботизованих програм. Успіхів і щасливого кодування!

Схожі повідомлення:

Залишити коментар