Решено: добавете сервизни файлове в 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“ и включете следния код:

„`python
от setupptools импортиране настройка
от глоб внос глоб

package_name = 'string_length_service'

настройвам(
име=име_на_пакет,
версия='0.0.0',
пакети=[име_на_пакет],
данни_файлове=[
('share/ament_index/resource_index/packages',
['ресурс/' + име_на_пакета]),
('share/' + package_name, ['package.xml']),
('share/' + package_name, glob('srv/*'))
],
install_requires=['setuptools'],
zip_safe=Вярно,
supporter='developer_name_here',
supporter_email='developer_email_тук',
description='Услуга за изчисляване на дължина на низ',
лиценз='MIT',
tests_require=['pytest'],
входни_точки={
'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 Client Library, 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 услуги по ефективен и организиран начин, улеснявайки взаимодействията във вашите роботизирани приложения. Успех и приятно кодиране!

Подобни публикации:

Оставете коментар