În ultimii ani, domeniul roboticii a cunoscut o creștere a progreselor și a tehnologiilor adoptate. Unul dintre ele este ROS2 (Robot Operating System 2), un cadru middleware open-source care oferă instrumente, biblioteci și convenții pentru dezvoltarea, testarea și întreținerea aplicațiilor roboților. Acest articol analizează adăugarea fișierelor de serviciu într-un pachet ROS2 folosind setup.py, o abilitate esențială pentru dezvoltatorii care lucrează cu această platformă. Vom începe cu o scurtă introducere, vom prezenta o soluție la problemă, vă vom prezenta un ghid pas cu pas și vom discuta subiecte conexe pentru o înțelegere mai profundă.
Configurarea unui fișier de serviciu în pachetul ROS2 implică doi pași principali: crearea unui fișier de definire a mesajelor de serviciu (.srv) și adăugarea configurațiilor necesare în fișierele package.xml și setup.py. În acest tutorial, vom crea un serviciu simplu care preia un șir de intrare și returnează lungimea intrării furnizate.
Mai întâi, să ne pregătim spațiul de lucru. Creați un pachet ROS2 numit „string_length_service” cu următoarea comandă:
„`
ros2 pkg create –build-type ament_python string_length_service
„`
Acum, creați un director numit „srv” în interiorul pachetului „string_length_service” pentru a stoca fișierul nostru de definire a mesajului de serviciu:
„`
mkdir srv
„`
În directorul „srv”, creați un fișier numit „StringLength.srv” cu următorul conținut:
„`
șir input_string
-
lungime int64
„`
În fișierul package.xml, asigurați-vă că adăugați dependențele necesare:
„`xml
„`
Acum, să trecem la partea de bază a acestui articol – adăugarea fișierelor de serviciu în setup.py. Deschideți fișierul „setup.py” și includeți următorul cod:
„`python
din setuptools import setup
din glob import glob
package_name = 'serviciu_lungime_șir'
înființat(
nume=nume_pachet,
versiune='0.0.0′,
pachete=[nume_pachet],
data_files=[
('share/ament_index/resource_index/packages',
['resursa/' + nume_pachet]),
('share/' + package_name, ['package.xml']),
('share/' + package_name, glob('srv/*'))
],
install_requires=['setuptools'],
zip_safe=Adevărat,
maintenanceer='nume_dezvoltator_aici',
keeper_email='developer_email_here',
description='Un serviciu pentru calcularea lungimii șirului',
licență='MIT',
tests_require=['pytest'],
entry_points={
'console_scripts': [
'string_length_server = '+ package_name + '.string_length_server:main',
„string_length_client = „+ package_name + „.string_length_client:main”,
],
},
)
„`
Să discutăm acum ce face acest cod: Fișierul setup.py folosește setuptools pentru a distribui și gestiona pachetul nostru. Variabila package_name conține numele pachetului nostru. Lista data_files specifică resursele necesare, pachetul.xml și fișierele de serviciu care urmează să fie distribuite împreună cu pachetul. install_requires listează pachetele necesare, iar entry_points definește fișierele executabile ale serviciului nostru. Asigurați-vă că înlocuiți „developer_name_here” și „developer_email_here” cu valorile adecvate.
Folosind rclpy și std_srvs
După configurarea fișierelor de serviciu în setup.py, este necesar să implementați codul serverului și al clientului folosind biblioteca client ROS2 Python, rclpy și std_srvs pentru tipurile de servicii standard.
Creați fișierele „string_length_server.py” și „string_length_client.py” în directorul pachetului și implementați codul server și client. Puteți găsi detalii despre cum să scrieți codul de server și client în documentația ROS2.
Construirea și testarea serviciului
În cele din urmă, construiți și testați pachetul folosind următoarele comenzi:
„`
sursa /opt/ros/foxy/setup.bash
colcon build –packages-select string_length_service
sursă install/setup.bash
„`
După construirea cu succes, rulați serverul și clientul folosind două terminale separate:
„`
ros2 rulează string_length_service string_length_server
„`
„`
ros2 rulează string_length_service string_length_client
„`
Acest ghid a prezentat o explicație amănunțită despre adăugarea fișierelor de serviciu în setup.py pentru pachetele ROS2, în timp ce atinge subiecte conexe precum rclpy și std_srvs. Urmând acești pași, puteți crea și distribui serviciile dumneavoastră ROS2 într-un mod eficient și organizat, facilitând interacțiunile în cadrul aplicațiilor dumneavoastră robotizate. Succes și codare fericită!