Posljednjih godina, polje robotike je doživjelo nagli napredak i usvojene tehnologije. Jedan od njih je ROS2 (Robot Operating System 2), open-source midware framework koji pruža alate, biblioteke i konvencije za razvoj, testiranje i održavanje aplikacija robota. Ovaj članak se bavi dodavanjem servisnih datoteka u ROS2 paket pomoću setup.py, što je bitna vještina za programere koji rade s ovom platformom. Počet ćemo kratkim uvodom, predstaviti rješenje problema, provesti vas kroz vodič korak po korak i razgovarati o srodnim temama radi dubljeg razumijevanja.
Postavljanje servisne datoteke u ROS2 paketu uključuje dva glavna koraka: kreiranje datoteke definicije servisne poruke (.srv) i dodavanje potrebnih konfiguracija u datoteke package.xml i setup.py. U ovom vodiču ćemo kreirati jednostavnu uslugu koja uzima ulazni niz i vraća dužinu datog unosa.
Prvo, pripremimo naš radni prostor. Kreirajte ROS2 paket pod nazivom “string_length_service” sa sljedećom naredbom:
"`
ros2 pkg create –build-type ament_python string_length_service
"`
Sada kreirajte direktorij pod nazivom “srv” unutar paketa “string_length_service” za pohranjivanje naše datoteke definicije servisne poruke:
"`
mkdir srv
"`
Unutar direktorija “srv” kreirajte datoteku pod nazivom “StringLength.srv” sa sljedećim sadržajem:
"`
string input_string
-
int64 dužina
"`
U datoteci package.xml, obavezno dodajte potrebne zavisnosti:
“`xml
"`
Sada, pređimo na osnovni dio ovog članka – dodavanje servisnih datoteka u setup.py. Otvorite datoteku “setup.py” i uključite sljedeći kod:
“`python
iz setupptools import setup
od glob import glob
package_name = 'string_length_service'
postaviti(
ime=naziv_paketa,
verzija='0.0.0′,
paketi=[ime_paketa],
data_files=[
('share/ament_index/resource_index/packages',
['resource/' + package_name]),
('share/' + package_name, ['package.xml']),
('share/' + package_name, glob('srv/*'))
],
install_requires=['setuptools'],
zip_safe=Tačno,
supporter='developer_name_here',
supporter_email='developer_email_here',
description='Usluga za izračunavanje dužine niza',
licenca='MIT',
tests_require=['pytest'],
entry_points={
'console_scripts': [
'string_length_server = ' + naziv_paketa + '.string_length_server:main',
'string_length_client = ' + naziv_paketa + '.string_length_client:main',
],
},
)
"`
Hajde sada da razgovaramo o tome šta ovaj kod radi: Datoteka setup.py koristi setuptools za distribuciju i upravljanje našim paketom. Varijabla package_name sadrži ime našeg paketa. Lista data_files specificira potrebne resurse, package.xml i servisne datoteke koje će se distribuirati zajedno s paketom. install_requires navodi potrebne pakete, a entry_points definiraju izvršne datoteke naše usluge. Obavezno zamijenite 'developer_name_here' i 'developer_email_here' odgovarajućim vrijednostima.
Korištenje rclpy i std_srvs
Nakon postavljanja servisnih datoteka u setup.py, potrebno je implementirati serverski i klijentski kod koristeći ROS2 Python Client Library, rclpy i std_srvs za standardne tipove usluga.
Kreirajte datoteke “string_length_server.py” i “string_length_client.py” unutar vašeg direktorija paketa i implementirajte serverski i klijentski kod. Detalje o tome kako napisati serverski i klijentski kod možete pronaći u ROS2 dokumentaciji.
Izgradnja i testiranje usluge
Konačno, napravite i testirajte svoj paket koristeći sljedeće naredbe:
"`
izvor /opt/ros/foxy/setup.bash
colcon build –packages-select string_length_service
izvorni install/setup.bash
"`
Nakon uspješne gradnje, pokrenite server i klijent koristeći dva odvojena terminala:
"`
ros2 pokrenite string_length_service string_length_server
"`
"`
ros2 pokrenite string_length_service string_length_client
"`
Ovaj vodič je predstavio detaljno objašnjenje dodavanja servisnih datoteka u setup.py za ROS2 pakete dok se dotiče srodnih tema kao što su rclpy i std_srvs. Prateći ove korake, možete kreirati i distribuirati svoje ROS2 usluge na efikasan i organiziran način, olakšavajući interakcije unutar vaših robotskih aplikacija. Sretno i sretno kodiranje!