Megoldva: adjon hozzá szervizfájlokat a setup.py ROS2-ben

Az elmúlt években a robotika területén a fejlődés és az elfogadott technológiák felfutása történt. Az egyik a ROS2 (Robot Operating System 2), egy nyílt forráskódú köztes szoftver keretrendszer, amely eszközöket, könyvtárakat és konvenciókat biztosít a robotok alkalmazásai fejlesztéséhez, teszteléséhez és karbantartásához. Ez a cikk a szolgáltatási fájlok ROS2-csomagba történő hozzáadásával foglalkozik a setup.py használatával, amely elengedhetetlen készség a platformmal dolgozó fejlesztők számára. Kezdjük egy rövid bemutatkozással, megoldást mutatunk be a problémára, végigvezetjük egy lépésről lépésre szóló útmutatón, és megvitatjuk a kapcsolódó témákat a mélyebb megértés érdekében.

A ROS2-csomagban lévő szolgáltatásfájl beállítása két fő lépésből áll: egy szolgáltatási üzenet-definíciós fájl (.srv) létrehozása és a szükséges konfigurációk hozzáadása a package.xml és setup.py fájlokhoz. Ebben az oktatóanyagban egy egyszerű szolgáltatást fogunk létrehozni, amely egy bemeneti karakterláncot vesz fel, és visszaadja a megadott bemenet hosszát.

Először készítsük elő a munkaterületünket. Hozzon létre egy „string_length_service” nevű ROS2-csomagot a következő paranccsal:

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

Most hozzon létre egy „srv” nevű könyvtárat a „string_length_service” csomagban a szolgáltatási üzenet definíciós fájljának tárolásához:

""
mkdir srv
""

Az „srv” könyvtárban hozzon létre egy „StringLength.srv” nevű fájlt a következő tartalommal:

""
string input_string
-
int64 hossza
""

A package.xml fájlban ügyeljen arra, hogy hozzáadja a szükséges függőségeket:

„`xml
std_msgs
service_interface_packages
ament_cmake
ament_cmake_auto
matplotlib
""

Most térjünk át ennek a cikknek a lényegére – a szolgáltatásfájlok hozzáadására a setup.py fájlban. Nyissa meg a „setup.py” fájlt, és írja be a következő kódot:

"" Python
importálja a setupt
glob import glob

package_name = 'karakterlánc_hosszú szolgáltatás'

beállít(
név=csomagnév,
version='0.0.0',
packages=[csomagnév],
data_files=[
('share/ament_index/resource_index/packages',
['erőforrás/' + csomag_neve]),
('share/' + csomag_neve, ['package.xml']),
('share/' + csomag_neve, glob('srv/*'))
],
install_requires=['setuptools'],
zip_safe=Igaz,
fenntartó='developer_name_here',
karbantartás_email='developer_email_here',
description='A karakterlánc hosszának kiszámítására szolgáló szolgáltatás',
licence='MIT',
tests_require=['pyteszt'],
belépési_pontok={
'console_scripts': [
'string_length_server = ' + csomag_neve + '.string_length_server:main',
'string_length_client = ' + csomag_neve + '.string_length_client:main',
],
},
)
""

Most beszéljük meg, mit csinál ez a kód: A setup.py fájl setuptools segítségével terjeszti és kezeli csomagunkat. A package_name változó tartalmazza a csomagunk nevét. A data_files lista megadja a csomaggal együtt terjesztendő szükséges erőforrás-, package.xml- és szolgáltatásfájlokat. Az install_requires felsorolja a szükséges csomagokat, az enter_points pedig a szolgáltatás végrehajtható fájljait határozza meg. Ügyeljen arra, hogy a „developer_name_here” és a „developer_email_here” mezőket megfelelő értékekkel helyettesítse.

Az rclpy és az std_srvs használatával

Miután beállította a szolgáltatásfájlokat a setup.py fájlban, meg kell valósítani a kiszolgáló- és ügyfélkódot a ROS2 Python Client Library, az rclpy és az std_srvs használatával a szabványos szolgáltatástípusokhoz.

Hozza létre a „string_length_server.py” és „string_length_client.py” fájlokat a csomagkönyvtárban, és alkalmazza a szerver- és ügyfélkódot. A szerver- és klienskód írásának részleteit a ROS2 dokumentációjában találja.

A szolgáltatás felépítése és tesztelése

Végül készítse el és tesztelje a csomagot a következő parancsokkal:

""
forrás /opt/ros/foxy/setup.bash
colcon build –packages-select string_length_service
forrás install/setup.bash
""

A sikeres összeállítás után futtassa a kiszolgálót és a klienst két külön terminál használatával:

""
A ros2 futtatása string_length_service string_length_server
""

""
A ros2 futtassa a string_length_service string_length_client parancsot
""

Ez az útmutató részletesen bemutatja a szolgáltatásfájlok hozzáadását a setup.py fájlhoz ROS2-csomagokhoz, miközben olyan kapcsolódó témákat is érint, mint az rclpy és az std_srvs. E lépések követésével hatékonyan és szervezetten hozhatja létre és terjesztheti ROS2 szolgáltatásait, megkönnyítve a robotalkalmazásokon belüli interakciókat. Sok sikert és jó kódolást!

Kapcsolódó hozzászólások:

Írj hozzászólást