V posledních letech zaznamenala oblast robotiky prudký nárůst pokroků a přijatých technologií. Jedním z nich je ROS2 (Robot Operating System 2), open-source middleware framework, který poskytuje nástroje, knihovny a konvence pro vývoj, testování a údržbu aplikací robotů. Tento článek se ponoří do přidávání souborů služeb do balíčku ROS2 pomocí setup.py, což je základní dovednost pro vývojáře pracující s touto platformou. Začneme krátkým úvodem, představíme řešení problému, provedeme vás podrobným průvodcem a probereme související témata pro hlubší pochopení.
Nastavení souboru služby v balíčku ROS2 zahrnuje dva hlavní kroky: vytvoření souboru definice servisní zprávy (.srv) a přidání nezbytných konfigurací do souborů package.xml a setup.py. V tomto tutoriálu vytvoříme jednoduchou službu, která vezme vstupní řetězec a vrátí délku poskytnutého vstupu.
Nejprve si připravíme pracovní plochu. Vytvořte balíček ROS2 s názvem „string_length_service“ pomocí následujícího příkazu:
"."
ros2 pkg create –build-type ament_python string_length_service
"."
Nyní vytvořte adresář s názvem „srv“ v balíčku „string_length_service“ pro uložení našeho souboru definice servisní zprávy:
"."
mkdir srv
"."
V adresáři „srv“ vytvořte soubor s názvem „StringLength.srv“ s následujícím obsahem:
"."
řetězec vstupní_řetězec
-
délka int64
"."
V souboru package.xml nezapomeňte přidat potřebné závislosti:
"`xml
"."
Nyní přejděme k hlavní části tohoto článku – přidávání servisních souborů do setup.py. Otevřete soubor „setup.py“ a vložte následující kód:
"Python."
z nastavení importu nástrojů setuptools
z glob import glob
package_name = 'služba délky_řetězce'
založit(
jméno=název_balíčku,
verze='0.0.0′,
packages=[package_name],
datové_soubory=[
('share/ament_index/resource_index/packages',
['resource/' + package_name]),
('share/' + název_balíčku, ['package.xml']),
('share/' + název_balíčku, glob('srv/*'))
],
install_requires=['setuptools'],
zip_safe=Pravda,
administrator='developer_name_here',
administrator_email='developer_email_here',
description='Služba pro výpočet délky řetězce',
licence='MIT',
testy_require=['pytest'],
vstupní_body={
'console_scripts': [
'string_length_server = ' + název_balíčku + '.string_length_server:main',
'string_length_client = ' + název_balíčku + '.string_length_client:main',
],
},
)
"."
Pojďme nyní diskutovat o tom, co tento kód dělá: Soubor setup.py používá setuptools k distribuci a správě našeho balíčku. Proměnná package_name obsahuje název našeho balíčku. Seznam datových_souborů uvádí nezbytný prostředek, soubor package.xml a soubory služeb, které mají být distribuovány spolu s balíčkem. install_requires uvádí požadované balíčky a entry_points definují spustitelné soubory naší služby. Nezapomeňte nahradit 'developer_name_here' a 'developer_email_here' správnými hodnotami.
Pomocí rclpy a std_srvs
Po nastavení souborů služeb v setup.py je nutné implementovat kód serveru a klienta pomocí klientské knihovny ROS2 Python, rclpy a std_srvs pro standardní typy služeb.
Vytvořte soubory „string_length_server.py“ a „string_length_client.py“ v adresáři balíčku a implementujte kód serveru a klienta. Podrobnosti o zápisu kódu serveru a klienta naleznete v dokumentaci ROS2.
Budování a testování služby
Nakonec sestavte a otestujte svůj balíček pomocí následujících příkazů:
"."
zdroj /opt/ros/foxy/setup.bash
colcon build –packages-select string_length_service
source install/setup.bash
"."
Po úspěšném sestavení spusťte server a klienta pomocí dvou samostatných terminálů:
"."
ros2 spusťte string_length_service string_length_server
"."
"."
ros2 spusťte string_length_service string_length_client
"."
Tato příručka poskytla podrobné vysvětlení přidávání souborů služeb do setup.py pro balíčky ROS2 a dotkla se souvisejících témat, jako jsou rclpy a std_srvs. Pomocí těchto kroků můžete vytvářet a distribuovat své služby ROS2 efektivním a organizovaným způsobem, což usnadňuje interakce v rámci vašich robotických aplikací. Hodně štěstí a šťastné kódování!