Vyriešené: pridajte servisné súbory do setup.py ROS2

V posledných rokoch zaznamenala oblasť robotiky prudký nárast pokrokov a prijatých technológií. Jedným z nich je ROS2 (Robot Operating System 2), open-source middleware framework, ktorý poskytuje nástroje, knižnice a konvencie na vývoj, testovanie a údržbu aplikácií robotov. Tento článok sa ponorí do pridávania servisných súborov do balíka ROS2 pomocou setup.py, čo je základná zručnosť pre vývojárov pracujúcich s touto platformou. Začneme krátkym úvodom, predstavíme riešenie problému, prevedieme vás podrobným sprievodcom a prediskutujeme súvisiace témy pre hlbšie pochopenie.

Nastavenie servisného súboru v balíku ROS2 zahŕňa dva hlavné kroky: vytvorenie súboru definície servisnej správy (.srv) a pridanie potrebných konfigurácií do súborov package.xml a setup.py. V tomto návode vytvoríme jednoduchú službu, ktorá vezme vstupný reťazec a vráti dĺžku poskytnutého vstupu.

Najprv si pripravíme pracovný priestor. Vytvorte balík ROS2 s názvom „string_length_service“ pomocou nasledujúceho príkazu:

"`
ros2 pkg create –build-type ament_python string_length_service
"`

Teraz vytvorte adresár s názvom „srv“ v balíku „string_length_service“ na uloženie súboru definície servisnej správy:

"`
mkdir srv
"`

V adresári „srv“ vytvorte súbor s názvom „StringLength.srv“ s nasledujúcim obsahom:

"`
reťazec vstupný_reťazec
-
dĺžka int64
"`

V súbore package.xml nezabudnite pridať potrebné závislosti:

"`xml
std_msgs
service_interface_packages
ament_cmake
ament_cmake_auto
matplotlib
"`

Teraz prejdime k hlavnej časti tohto článku – pridávanie servisných súborov do setup.py. Otvorte súbor „setup.py“ a vložte nasledujúci kód:

"Python."
z nastavenia importu nástrojov
z glob importovať glob

package_name = 'služba dĺžky_reťazca'

nastaviť(
meno=názov_balíka,
verzia='0.0.0′,
packages=[package_name],
data_files=[
('share/ament_index/resource_index/packages',
['resource/' + package_name]),
('share/' + názov_balíka, ['package.xml']),
('share/' + názov_balíka, glob('srv/*'))
],
install_requires=['setuptools'],
zip_safe=Pravda,
administrator='developer_name_here',
administrator_email='developer_email_here',
description='Služba na výpočet dĺžky reťazca',
licencia='MIT',
testy_require=['pytest'],
vstupné_body={
'console_scripts': [
'string_length_server = ' + názov_balíka + '.string_length_server:main',
'string_length_client = ' + názov_balíka + '.string_length_client:main',
],
},
)
"`

Poďme teraz diskutovať o tom, čo robí tento kód: Súbor setup.py používa nástroje setuptools na distribúciu a správu nášho balíka. Premenná package_name obsahuje názov nášho balíka. Zoznam data_files špecifikuje potrebný prostriedok, package.xml a súbory služieb, ktoré sa majú distribuovať spolu s balíkom. install_requires uvádza zoznam požadovaných balíkov a entry_points definujú spustiteľné súbory našej služby. Nezabudnite nahradiť 'developer_name_here' a 'developer_email_here' správnymi hodnotami.

Pomocou rclpy a std_srvs

Po nastavení servisných súborov v setup.py je potrebné implementovať serverový a klientsky kód pomocou ROS2 Python Client Library, rclpy a std_srvs pre štandardné typy služieb.

Vytvorte súbory „string_length_server.py“ a „string_length_client.py“ v adresári vášho balíka a implementujte kód servera a klienta. Podrobnosti o zápise serverového a klientskeho kódu nájdete v dokumentácii ROS2.

Budovanie a testovanie služby

Nakoniec zostavte a otestujte svoj balík pomocou nasledujúcich príkazov:

"`
zdroj /opt/ros/foxy/setup.bash
colcon build –packages-select string_length_service
source install/setup.bash
"`

Po úspešnom zostavení spustite server a klienta pomocou dvoch samostatných terminálov:

"`
ros2 spustiť string_length_service string_length_server
"`

"`
ros2 spustiť string_length_service string_length_client
"`

Táto príručka obsahuje podrobné vysvetlenie pridávania servisných súborov do setup.py pre balíky ROS2, pričom sa dotýka súvisiacich tém ako rclpy a std_srvs. Podľa týchto krokov môžete vytvárať a distribuovať svoje služby ROS2 efektívnym a organizovaným spôsobom, čo uľahčuje interakcie v rámci vašich robotických aplikácií. Veľa šťastia a šťastného kódovania!

Súvisiace príspevky:

Pridať komentár