Vyřešeno: přidejte soubory služeb do setup.py ROS2

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
std_msgs
service_interface_packages
ament_cmake
ament_cmake_auto
matplotlib
"."

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í!

Související příspěvky:

Zanechat komentář