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
"`
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!