Posljednjih godina polje robotike bilježi porast napretka i usvojenih tehnologija. Jedan od njih je ROS2 (Robot Operating System 2), okvir srednjeg softvera otvorenog koda koji pruža alate, biblioteke i konvencije za razvoj, testiranje i održavanje aplikacija robota. Ovaj se članak bavi dodavanjem servisnih datoteka u ROS2 paket koristeći setup.py, bitnu vještinu za programere koji rade s ovom platformom. Započet ćemo s kratkim uvodom, predstaviti rješenje problema, provesti vas kroz vodič korak po korak i razgovarati o povezanim temama radi dubljeg razumijevanja.
Postavljanje servisne datoteke u paketu ROS2 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 stvoriti jednostavnu uslugu koja uzima ulazni niz i vraća duljinu dostavljenog unosa.
Prvo, pripremimo naš radni prostor. Stvorite ROS2 paket pod nazivom “string_length_service” sa sljedećom naredbom:
"`
ros2 pkg create –build-type ament_python string_length_service
"`
Sada stvorite direktorij pod nazivom “srv” unutar paketa “string_length_service” za pohranu naše datoteke definicije servisne poruke:
"`
mkdir srv
"`
Unutar direktorija “srv” kreirajte datoteku pod nazivom “StringLength.srv” sa sljedećim sadržajem:
"`
niz input_string
-
int64 duljina
"`
U datoteci package.xml svakako dodajte potrebne ovisnosti:
“`xml
"`
Sada prijeđimo na srž ovog članka – dodavanje servisnih datoteka u setup.py. Otvorite datoteku "setup.py" i uključite sljedeći kod:
“`python
iz setuptools import setup
od glob import glob
package_name = 'string_length_service'
postaviti(
naziv=naziv_paketa,
verzija='0.0.0′,
paketi=[naziv_paketa],
podatkovne_datoteke=[
('share/ament_index/resource_index/packages',
['resource/' + naziv_paketa]),
('share/' + package_name, ['package.xml']),
('share/' + package_name, glob('srv/*'))
],
install_requires=['setuptools'],
zip_safe=Istina,
održavatelj='ime_programera_ovdje',
maintenanceer_email='developer_email_ovdje',
description='Usluga za izračunavanje duljine niza',
licenca='MIT',
tests_require=['pytest'],
ulazne_točke={
'console_scripts': [
'string_length_server = ' + package_name + '.string_length_server:main',
'string_length_client = ' + package_name + '.string_length_client:main',
],
},
)
"`
Raspravimo sada što ovaj kod radi: Datoteka setup.py koristi setuptools za distribuciju i upravljanje našim paketom. Varijabla package_name sadrži naziv našeg paketa. Popis data_files navodi potrebne resurse, package.xml i servisne datoteke koje će se distribuirati zajedno s paketom. install_requires navodi potrebne pakete, a entry_points definira izvršne datoteke naše usluge. Provjerite jeste li zamijenili 'developer_name_here' i 'developer_email_here' ispravnim vrijednostima.
Korištenje rclpy i std_srvs
Nakon postavljanja servisnih datoteka u setup.py, potrebno je implementirati kod poslužitelja i klijenta koristeći ROS2 Python Client Library, rclpy i std_srvs za standardne tipove usluga.
Napravite datoteke “string_length_server.py” i “string_length_client.py” unutar vašeg direktorija paketa i implementirajte kod poslužitelja i klijenta. Detalje o tome kako napisati kod poslužitelja i klijenta možete pronaći u ROS2 dokumentaciji.
Izgradnja i testiranje usluge
Na kraju, izgradite i testirajte svoj paket pomoću sljedećih naredbi:
"`
izvor /opt/ros/foxy/setup.bash
colcon build –packages-select string_length_service
izvor instalacija/postavljanje.bash
"`
Nakon uspješne izgradnje, pokrenite poslužitelj 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č predstavlja detaljno objašnjenje dodavanja servisnih datoteka u setup.py za ROS2 pakete dok se dotiče povezanih tema kao što su rclpy i std_srvs. Slijedeći ove korake, možete kreirati i distribuirati svoje ROS2 usluge na učinkovit i organiziran način, olakšavajući interakcije unutar vaših robotskih aplikacija. Sretno i sretno kodiranje!