V zadnjih letih je področje robotike doživelo porast napredka in sprejetih tehnologij. Eden od njih je ROS2 (Robot Operating System 2), odprtokodno vmesno ogrodje, ki ponuja orodja, knjižnice in konvencije za razvoj, testiranje in vzdrževanje aplikacij robotov. Ta članek se poglobi v dodajanje storitvenih datotek v paket ROS2 z uporabo setup.py, bistvenega znanja za razvijalce, ki delajo s to platformo. Začeli bomo s kratkim uvodom, predstavili rešitev problema, vas vodili skozi vodnik po korakih in razpravljali o povezanih temah za globlje razumevanje.
Nastavitev storitvene datoteke v paketu ROS2 vključuje dva glavna koraka: ustvarjanje datoteke z definicijo storitvenega sporočila (.srv) in dodajanje potrebnih konfiguracij v datoteki package.xml in setup.py. V tej vadnici bomo ustvarili preprosto storitev, ki sprejme vhodni niz in vrne dolžino podanega vnosa.
Najprej si pripravimo delovni prostor. Ustvarite paket ROS2 z imenom “string_length_service” z naslednjim ukazom:
""
ros2 pkg create –build-type ament_python string_length_service
""
Sedaj ustvarite imenik z imenom “srv” znotraj paketa “string_length_service” za shranjevanje naše datoteke z definicijo storitvenega sporočila:
""
mkdir srv
""
Znotraj imenika »srv« ustvarite datoteko z imenom »StringLength.srv« z naslednjo vsebino:
""
niz input_string
-
dolžina int64
""
V datoteki package.xml se prepričajte, da ste dodali potrebne odvisnosti:
“xml
""
Zdaj pa preidimo na osrednji del tega članka – dodajanje servisnih datotek v setup.py. Odprite datoteko »setup.py« in vključite to kodo:
"python
iz setupptools uvoz setup
iz glob import glob
package_name = 'string_length_service'
nastaviti(
ime=ime_paketa,
različica='0.0.0',
paketi=[ime_paketa],
podatkovne_datoteke=[
('share/ament_index/resource_index/packages',
['resource/' + package_name]),
('share/' + package_name, ['package.xml']),
('share/' + package_name, glob('srv/*'))
],
install_requires=['setuptools'],
zip_safe=Res,
vzdrževalec='ime_razvijalca_tukaj',
vzdrževalec_email='e-pošta_razvijalca_tukaj',
description='Storitev za izračun dolžine niza',
licenca='MIT',
tests_require=['pytest'],
vstopne_točke={
'console_scripts': [
'string_length_server = ' + package_name + '.string_length_server:main',
'string_length_client = ' + package_name + '.string_length_client:main',
],
},
)
""
Pogovorimo se zdaj o tem, kaj počne ta koda: Datoteka setup.py uporablja orodja za distribucijo in upravljanje našega paketa. Spremenljivka package_name vsebuje ime našega paketa. Seznam data_files določa potreben vir, package.xml in storitvene datoteke, ki bodo razdeljene skupaj s paketom. install_requires navaja zahtevane pakete, entry_points pa določa izvršljive datoteke naše storitve. Ne pozabite zamenjati 'developer_name_here' in 'developer_email_here' z ustreznimi vrednostmi.
Uporaba rclpy in std_srvs
Po nastavitvi storitvenih datotek v setup.py je treba implementirati kodo strežnika in odjemalca z uporabo ROS2 Python Client Library, rclpy in std_srvs za standardne vrste storitev.
Ustvarite datoteki »string_length_server.py« in »string_length_client.py« v vašem imeniku paketov in implementirajte kodo strežnika in odjemalca. Podrobnosti o tem, kako napisati kodo strežnika in odjemalca, najdete v dokumentaciji ROS2.
Gradnja in testiranje storitve
Končno sestavite in preizkusite svoj paket z naslednjimi ukazi:
""
vir /opt/ros/foxy/setup.bash
colcon build –packages-select string_length_service
vir install/setup.bash
""
Po uspešni gradnji zaženite strežnik in odjemalca z uporabo dveh ločenih terminalov:
""
ros2 zaženi string_length_service string_length_server
""
""
ros2 zaženi string_length_service string_length_client
""
Ta priročnik je predstavil poglobljeno razlago dodajanja servisnih datotek v setup.py za pakete ROS2, medtem ko se je dotaknil povezanih tem, kot sta rclpy in std_srvs. Če sledite tem korakom, lahko ustvarite in distribuirate svoje storitve ROS2 na učinkovit in organiziran način, kar olajša interakcijo znotraj vaših robotskih aplikacij. Vso srečo in veselo kodiranje!