Išspręsta: pridėkite paslaugų failus setup.py ROS2

Pastaraisiais metais robotikos srityje sparčiai augo pažanga ir pritaikytos technologijos. Vienas iš jų yra ROS2 (Robot Operating System 2), atvirojo kodo tarpinės programinės įrangos sistema, teikianti įrankius, bibliotekas ir konvencijas, skirtas kurti, išbandyti ir prižiūrėti robotų programas. Šiame straipsnyje kalbama apie paslaugų failų įtraukimą į ROS2 paketą naudojant setup.py – esminį įgūdį kūrėjams, dirbantiems su šia platforma. Pradėsime nuo trumpo įvado, pateiksime problemos sprendimą, supažindinsime su nuosekliu vadovu ir aptarsime susijusias temas, kad suprastume giliau.

Paslaugos failo nustatymas ROS2 pakete apima du pagrindinius veiksmus: paslaugos pranešimo apibrėžimo failo (.srv) kūrimą ir būtinų konfigūracijų įtraukimą į paketą.xml ir setup.py failus. Šioje pamokoje sukursime paprastą paslaugą, kuri paima įvesties eilutę ir grąžina pateiktos įvesties ilgį.

Pirmiausia paruošime savo darbo vietą. Sukurkite ROS2 paketą pavadinimu „string_length_service“ naudodami šią komandą:

„“
ros2 pkg Create –build-type ament_python string_length_service
„“

Dabar „string_length_service“ pakete sukurkite katalogą pavadinimu „srv“, kad išsaugotumėte mūsų paslaugų pranešimo apibrėžimo failą:

„“
mkdir srv
„“

Kataloge „srv“ sukurkite failą pavadinimu „StringLength.srv“ su tokiu turiniu:

„“
eilutė įvesties_eilutė
-
int64 ilgis
„“

Package.xml faile būtinai pridėkite reikiamas priklausomybes:

xml
std_msgs
paslaugų_sąsajos_paketai
ament_cmake
ament_cmake_auto
matplotlib
„“

Dabar pereikime prie pagrindinės šio straipsnio dalies – paslaugų failų įtraukimo į setup.py. Atidarykite failą „setup.py“ ir įtraukite šį kodą:

"" Python
importuoti sąranką
iš glob import glob

paketo_pavadinimas = 'eilutės_ilgio_paslauga'

setup (
pavadinimas=paketo_pavadinimas,
version='0.0.0',
paketai=[paketo_pavadinimas],
data_files=[
('share/ament_index/resource_index/packages',
['resursas/' + paketo_pavadinimas]),
('share/' + paketo_pavadinimas, ['paketas.xml']),
('share/' + paketo_pavadinimas, glob('srv/*'))
],
install_requires=['setuptools'],
zip_safe=Tiesa,
keeper='developer_name_here',
karbantartás_email='developer_email_here',
description='Eilutės ilgio skaičiavimo paslauga',
licencija='MIT',
tests_require=['pytest'],
įėjimo_taškai={
'console_scripts': [
'string_length_server = ' + paketo_pavadinimas + '.string_length_server:main',
'string_length_client = ' + paketo_pavadinimas + '.string_length_client:main',
],
},
)
„“

Dabar aptarkime, ką daro šis kodas: Failas setup.py mūsų paketui platinti ir valdyti naudoja sąrankos įrankius. Kintamajame paketo_pavadinimas yra mūsų paketo pavadinimas. Data_files sąrašas nurodo būtinus išteklius, paketą.xml ir paslaugų failus, kurie turi būti platinami kartu su paketu. install_requires pateikia reikalingų paketų sąrašą, o įrašo_taškai apibrėžia mūsų paslaugų vykdomuosius failus. Būtinai pakeiskite „developer_name_here“ ir „developer_email_here“ tinkamomis reikšmėmis.

Naudojant rclpy ir std_srvs

Nustačius paslaugos failus setup.py, būtina įdiegti serverio ir kliento kodą naudojant ROS2 Python Client Library, rclpy ir std_srvs standartiniams paslaugų tipams.

Sukurkite failus „string_length_server.py“ ir „string_length_client.py“ savo paketo kataloge ir įdiekite serverio ir kliento kodą. Išsamią informaciją apie tai, kaip parašyti serverio ir kliento kodą, rasite ROS2 dokumentacijoje.

Paslaugos kūrimas ir testavimas

Galiausiai sukurkite ir patikrinkite paketą naudodami šias komandas:

„“
šaltinis /opt/ros/foxy/setup.bash
colcon build –packages-select string_length_service
šaltinis install/setup.bash
„“

Sėkmingai sukūrę paleiskite serverį ir klientą naudodami du atskirus terminalus:

„“
ros2 paleiskite string_length_service string_length_server
„“

„“
ros2 paleiskite string_length_service string_length_client
„“

Šiame vadove buvo pateiktas išsamus paslaugų failų pridėjimo prie setup.py, skirto ROS2 paketams, paaiškinimas, kartu paliečiant susijusias temas, pvz., rclpy ir std_srvs. Atlikdami šiuos veiksmus, galite efektyviai ir organizuotai kurti ir platinti savo ROS2 paslaugas, palengvindami sąveiką savo robotų programose. Sėkmės ir gero kodavimo!

Susijusios naujienos:

Palikite komentarą