Lahendatud: lisage teenusefailid saidile setup.py ROS2

Viimastel aastatel on robootika valdkonnas toimunud edusammud ja kasutusele võetud tehnoloogiad. Üks neist on ROS2 (Robot Operating System 2), avatud lähtekoodiga vahevara raamistik, mis pakub tööriistu, teeke ja konventsioone robotite rakenduste arendamiseks, testimiseks ja hooldamiseks. Selles artiklis käsitletakse teenusefailide lisamist ROS2 paketti, kasutades setup.py-d, mis on selle platvormiga töötavate arendajate jaoks oluline oskus. Alustame lühikese sissejuhatusega, esitame probleemile lahenduse, juhendame teid samm-sammulise juhendi kaudu ja arutame seotud teemasid sügavama mõistmise huvides.

Teenusefaili seadistamine ROS2 paketis hõlmab kahte peamist sammu: teenusesõnumi määratlusfaili (.srv) loomine ja vajalike konfiguratsioonide lisamine failides package.xml ja setup.py. Selles õpetuses loome lihtsa teenuse, mis võtab sisendstringi ja tagastab sisestatud sisendi pikkuse.

Esiteks valmistame ette oma tööruumi. Looge ROS2 pakett nimega "string_length_service" järgmise käsuga:

""
ros2 pkg create –build-type ament_python string_length_service
""

Nüüd looge paketi "string_length_service" sees kataloog nimega "srv", et salvestada meie teenusesõnumi määratlusfail:

""
mkdir srv
""

Looge kataloogis "srv" järgmise sisuga fail nimega "StringLength.srv".

""
string sisend_string
-
int64 pikkus
""

Lisage failis package.xml kindlasti vajalikud sõltuvused:

"`xml
std_msgs
teenuse_liidese_paketid
ament_cmake
ament_cmake_auto
matplotlib
""

Liigume nüüd selle artikli põhiosa juurde – teenusefailide lisamine saidile setup.py. Avage fail „setup.py” ja lisage järgmine kood:

"" Python
tööriistadelt impordi seadistamine
alates glob import glob

package_name = 'stringi_pikkus_teenus'

setup (
nimi=paketi_nimi,
version='0.0.0',
paketid=[paketi_nimi],
data_files=[
('share/ament_index/resource_index/packages',
['ressurss/' + paketi_nimi]),
('share/' + paketi_nimi, ['pakett.xml']),
('share/' + paketi_nimi, glob('srv/*'))
],
install_requires=['setuptools'],
zip_safe=Tõsi,
ylläpitär='developer_name_here',
karbantartás_email='developer_email_here',
description='Teenus stringi pikkuse arvutamiseks',
License='MIT',
tests_require=['pytest'],
sisenemispunktid={
'console_scripts': [
'string_length_server = ' + paketi_nimi + '.string_length_server:main',
'string_length_client = ' + paketi_nimi + '.string_length_client:main',
],
},
)
""

Arutame nüüd, mida see kood teeb: Fail setup.py kasutab meie paketi levitamiseks ja haldamiseks seadistustööriistu. Muutuja paketi_nimi sisaldab meie paketi nime. Loend data_files määrab vajalikud ressursi-, package.xml- ja teenusefailid, mida koos paketiga levitada. install_requires loetleb vajalikud paketid ja enter_points määratlevad meie teenuse käivitatavad failid. Asendage kindlasti "developer_name_here" ja "developer_email_here" õigete väärtustega.

Kasutades rclpy ja std_srvs

Pärast teenusefailide seadistamist saidis setup.py on vaja standardsete teenusetüüpide jaoks juurutada serveri- ja kliendikood, kasutades ROS2 Pythoni klienditeegi, rclpy ja std_srvs-i.

Looge oma paketikataloogis failid "string_length_server.py" ja "string_length_client.py" ning rakendage serveri- ja kliendikood. Serveri ja kliendi koodi kirjutamise üksikasjad leiate ROS2 dokumentatsioonist.

Teenuse ehitamine ja testimine

Lõpuks koostage ja testige oma pakett järgmiste käskude abil:

""
allikas /opt/ros/foxy/setup.bash
colcon build – paketid-vali string_length_service
allikas install/setup.bash
""

Pärast edukat ehitamist käivitage server ja klient kahe eraldi terminali abil:

""
ros2 käivitage string_length_service string_length_server
""

""
ros2 käivitage string_length_service string_length_client
""

Selles juhendis kirjeldatakse põhjalikult ROS2 pakettide jaoks teenusefailide lisamist faili setup.py, puudutades samal ajal seotud teemasid, nagu rclpy ja std_srvs. Järgides neid samme, saate luua ja levitada oma ROS2 teenuseid tõhusal ja organiseeritud viisil, hõlbustades koostoimeid teie robotrakendustes. Edu ja head kodeerimist!

Seonduvad postitused:

Jäta kommentaar