Løst: tilføj servicefiler i setup.py ROS2

I de seneste år har robotteknologien oplevet en stigning i fremskridt og vedtagne teknologier. En af dem er ROS2 (Robot Operating System 2), en open source middleware-ramme, der giver værktøjer, biblioteker og konventioner til at udvikle, teste og vedligeholde robotters applikationer. Denne artikel dykker ned i tilføjelse af servicefiler i en ROS2-pakke ved hjælp af setup.py, en essentiel færdighed for udviklere, der arbejder med denne platform. Vi starter med en kort introduktion, præsenterer en løsning på problemet, leder dig gennem en trin-for-trin guide og diskuterer relaterede emner for en dybere forståelse.

Opsætning af en servicefil i ROS2-pakken involverer to hovedtrin: oprettelse af en servicemeddelelsesdefinitionsfil (.srv) og tilføjelse af nødvendige konfigurationer i filerne package.xml og setup.py. I denne vejledning vil vi oprette en simpel tjeneste, der tager en inputstreng og returnerer længden af ​​den leverede input.

Lad os først forberede vores arbejdsområde. Opret en ROS2-pakke med navnet "string_length_service" med følgende kommando:

”`
ros2 pkg oprette –build-type ament_python string_length_service
”`

Opret nu en mappe med navnet "srv" inde i "string_length_service"-pakken for at gemme vores servicemeddelelsesdefinitionsfil:

”`
mkdir srv
”`

Inde i "srv"-mappen skal du oprette en fil med navnet "StringLength.srv" med følgende indhold:

”`
streng input_string

int64 længde
”`

I filen package.xml skal du sørge for at tilføje de nødvendige afhængigheder:

"` xml
std_msgs
service_interface_packages
ament_cmake
ament_cmake_auto
matplotlib
”`

Lad os nu gå til kernedelen af ​​denne artikel – tilføje servicefiler i setup.py. Åbn filen "setup.py", og inkluder følgende kode:

"'python
fra setuptools importopsætning
fra glob import glob

pakkenavn = 'string_length_service'

Opsætning(
navn=pakkenavn,
version='0.0.0′,
pakker=[pakkenavn],
data_filer=[
('share/ament_index/resource_index/packages',
['ressource/' + pakkenavn]),
('share/' + pakkenavn, ['pakke.xml']),
('share/' + pakkenavn, glob('srv/*'))
],
install_requires=['setuptools'],
zip_safe=Sandt,
maintenanceer='developer_name_here',
maintenanceer_email='developer_email_here',
description='En tjeneste til beregning af strenglængde',
licens='MIT',
tests_require=['pytest'],
entry_points={
'console_scripts': [
'string_length_server = ' + pakkenavn + '.string_length_server:main',
'string_length_client = ' + pakkenavn + '.string_length_client:main',
],
},
)
”`

Lad os nu diskutere, hvad denne kode gør: Filen setup.py bruger opsætningsværktøjer til at distribuere og administrere vores pakke. Variablen package_name indeholder navnet på vores pakke. Data_files-listen angiver de nødvendige ressource-, package.xml- og servicefiler, der skal distribueres sammen med pakken. install_requires viser de nødvendige pakker, og entry_points definerer vores eksekverbare servicefiler. Sørg for at erstatte 'developer_name_here' og 'developer_email_here' med de rigtige værdier.

Brug af rclpy og std_srvs

Efter opsætning af servicefilerne i setup.py, er det nødvendigt at implementere server- og klientkoden ved hjælp af ROS2 Python Client Library, rclpy og std_srvs for standardservicetyperne.

Opret filerne "string_length_server.py" og "string_length_client.py" inde i din pakkemappe og implementer server- og klientkoden. Du kan finde detaljer om, hvordan du skriver server- og klientkode i ROS2-dokumentationen.

Opbygning og test af tjenesten

Til sidst skal du bygge og teste din pakke ved hjælp af følgende kommandoer:

”`
kilde /opt/ros/foxy/setup.bash
colcon build –packages-select string_length_service
source install/setup.bash
”`

Efter den vellykkede build skal du køre serveren og klienten ved hjælp af to separate terminaler:

”`
ros2 køre string_length_service string_length_server
”`

”`
ros2 køre string_length_service string_length_client
”`

Denne vejledning præsenterede en dybdegående forklaring på tilføjelse af servicefiler i setup.py til ROS2-pakker, mens man berørte relaterede emner som rclpy og std_srvs. Ved at følge disse trin kan du oprette og distribuere dine ROS2-tjenester på en effektiv og organiseret måde, hvilket letter interaktioner i dine robotapplikationer. Held og lykke og god kodning!

Relaterede indlæg:

Efterlad en kommentar