Rešeno: dodajte servisne fajlove u setup.py ROS2

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
std_msgs
service_interface_packages
ament_cmake
ament_cmake_auto
matplotlib
"`

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!

Slični postovi:

Ostavite komentar