Atrisināts: pievienojiet pakalpojuma failus setup.py ROS2

Pēdējos gados robotikas jomā ir vērojams progress un pieņemtās tehnoloģijas. Viens no tiem ir ROS2 (Robot Operating System 2), atvērtā pirmkoda starpprogrammatūras ietvars, kas nodrošina rīkus, bibliotēkas un konvencijas, lai izstrādātu, pārbaudītu un uzturētu robotu lietojumprogrammas. Šajā rakstā ir aplūkota pakalpojuma failu pievienošana ROS2 pakotnei, izmantojot setup.py, kas ir būtiska prasme izstrādātājiem, kas strādā ar šo platformu. Mēs sāksim ar īsu ievadu, piedāvāsim problēmas risinājumu, sniegsim detalizētu ceļvedi un apspriedīsim saistītās tēmas, lai iegūtu dziļāku izpratni.

Pakalpojuma faila iestatīšana ROS2 pakotnē ietver divas galvenās darbības: pakalpojuma ziņojuma definīcijas faila (.srv) izveide un nepieciešamo konfigurāciju pievienošana failos package.xml un setup.py. Šajā apmācībā mēs izveidosim vienkāršu pakalpojumu, kas ņem ievades virkni un atgriež ievadītās ievades garumu.

Vispirms sagatavosim savu darbvietu. Izveidojiet ROS2 pakotni ar nosaukumu “string_length_service” ar šādu komandu:


ros2 pkg create –build-type ament_python string_length_service

Tagad pakotnē “string_length_service” izveidojiet direktoriju ar nosaukumu “srv”, lai saglabātu mūsu pakalpojuma ziņojuma definīcijas failu:


mkdir srv

Direktorijā “srv” izveidojiet failu ar nosaukumu “StringLength.srv” ar šādu saturu:


virkne ievades_string
Sākot no
int64 garums

Failā package.xml noteikti pievienojiet nepieciešamās atkarības:

“` xml
std_msgs
pakalpojumu_interfeisa_paketes
ament_cmake
ament_cmake_auto
matplotlib

Tagad pāriesim uz šī raksta galveno daļu — pakalpojuma failu pievienošanu failā setup.py. Atveriet failu setup.py un iekļaujiet šādu kodu:

"" Python
no setuptools importēt iestatīšanu
no glob importa glob

paketes_nosaukums = 'string_length_service'

uzstādīt(
name=package_name,
versija='0.0.0',
paketes=[pakotnes_nosaukums],
data_files=[
('share/ament_index/resource_index/packages',
['resurss/' + pakotnes_nosaukums]),
('share/' + pakotnes_nosaukums, ['package.xml']),
('share/' + pakotnes_nosaukums, glob('srv/*'))
],
install_requires=['setuptools'],
zip_safe=Tiesa,
uzturētājs='developer_name_here',
karbantartás_email='developer_email_here',
description='Pakalpojums virknes garuma aprēķināšanai',
licence='MIT',
tests_require=['pytest'],
ieejas_punkti={
'console_scripts': [
'string_length_server = ' + pakotnes_nosaukums + '.string_length_server:main',
'string_length_client = ' + pakotnes_nosaukums + '.string_length_client:main',
],
},
)

Tagad apspriedīsim, ko dara šis kods: Fails setup.py izmanto iestatīšanas rīkus, lai izplatītu un pārvaldītu mūsu pakotni. Mainīgais pakotnes_nosaukums satur mūsu pakotnes nosaukumu. Sarakstā data_files ir norādīti nepieciešamie resursi, pack.xml un pakalpojumu faili, kas jāizplata kopā ar pakotni. Install_requires uzskaita nepieciešamās pakotnes, un ieraksta_punkti nosaka mūsu pakalpojuma izpildāmos failus. Noteikti aizstājiet 'developer_name_here' un 'developer_email_here' ar atbilstošām vērtībām.

Izmantojot rclpy un std_srvs

Pēc pakalpojuma failu iestatīšanas setup.py, ir jāievieš servera un klienta kods, izmantojot ROS2 Python klienta bibliotēku, rclpy un std_srvs standarta pakalpojumu veidiem.

Savā pakotnes direktorijā izveidojiet failus “string_length_server.py” un “string_length_client.py” un ieviesiet servera un klienta kodu. Sīkāku informāciju par servera un klienta koda rakstīšanu varat atrast ROS2 dokumentācijā.

Pakalpojuma izveide un testēšana

Visbeidzot, izveidojiet un pārbaudiet savu paketi, izmantojot šādas komandas:


avots /opt/ros/foxy/setup.bash
colcon build – packages-select string_length_service
avots install/setup.bash

Pēc veiksmīgas izveides palaidiet serveri un klientu, izmantojot divus atsevišķus termināļus:


ros2 palaist string_length_service string_length_server


ros2 palaist string_length_service string_length_client

Šajā rokasgrāmatā ir sniegts padziļināts skaidrojums par pakalpojumu failu pievienošanu setup.py ROS2 pakotnēm, vienlaikus pieskaroties saistītām tēmām, piemēram, rclpy un std_srvs. Veicot šīs darbības, jūs varat izveidot un izplatīt savus ROS2 pakalpojumus efektīvā un organizētā veidā, atvieglojot mijiedarbību jūsu robotizētajās lietojumprogrammās. Veiksmi un veiksmīgu kodēšanu!

Related posts:

Leave a Comment