Isonjululwe: yongeza iifayile zenkonzo kwi-setup.py ROS2

Kwiminyaka yakutshanje, icandelo lerobhothi libone ukwanda kwenkqubela phambili kunye nokwamkelwa kwetekhnoloji. Enye yazo yi-ROS2 (i-Robot Operating System 2), isakhelo se-middleware esivulelekileyo esibonelela ngezixhobo, amathala eencwadi, kunye nemigaqo yokuphuhlisa, ukuvavanya nokugcina izicelo zeerobhothi. Eli nqaku lijonge ekongezeni iifayile zenkonzo kwiphakheji ye-ROS2 usebenzisa i-setup.py, isakhono esiyimfuneko kubaphuhlisi abasebenza neli qonga. Siza kuqala ngentshayelelo emfutshane, sibonisa isisombululo kule ngxaki, sikuhambe ngesikhokelo senyathelo nenyathelo, kwaye sixoxe ngezihloko ezinxulumeneyo ukuze siqonde nzulu.

Ukumisela ifayile yenkonzo kwiphakheji ye-ROS2 kubandakanya amanyathelo amabini aphambili: ukudala ifayile yenkcazo yomyalezo wenkonzo (.srv) kunye nokongeza ulungelelwaniso oluyimfuneko kwi-package.xml kunye neefayile ze-setup.py. Kule tutorial, siya kudala inkonzo elula ethatha umtya wegalelo kwaye ibuyise ubude begalelo elinikiweyo.

Okokuqala, masilungise indawo yethu yokusebenza. Yenza ipakethe yeROS2 enegama elithi "string_length_service" ngalo myalelo ulandelayo:

``
ros2 pkg dala -build-type ament_python string_length_service
``

Ngoku, yenza uvimba obizwa ngokuba yi "srv" ngaphakathi kwephakheji ye "string_length_service" ukugcina ifayile yenkcazo yomyalezo wenkonzo yethu:

``
mkdir srv
``

Ngaphakathi kuluhlu lwe "srv", yenza ifayile ebizwa ngokuba yi "StringLength.srv" enomxholo olandelayo:

``
umtya input_umtya
-
int64 ubude
``

Kwifayile ye-package.xml, qiniseka ukuba wongeza uxhomekeko oluyimfuneko:

"`xml
std_msgs
inkonzo_iinterface_packages
ament_cmake
ament_cmake_auto
matliblib
``

Ngoku, masihambe siye kwindawo engundoqo yeli nqaku – ukongeza iifayile zenkonzo kwi setup.py. Vula ifayile "setup.py" kwaye ubandakanye ikhowudi elandelayo:

“`python
ukusuka setuptools ukungenisa ngaphakathi
ukusuka kwiglobhu yokungenisa elizweni

package_name = 'string_length_service'

misela(
igama=pakethe_igama,
uguqulelo='0.0.0′,
ipakethe=[igama_lephakheji],
iinkcukacha_iifayile=[
('share/ament_index/resource_index/packages',
['isixhobo/' + ipakethe_name]),
('isabelo/' + igama_lephakheji, ['package.xml']),
('isabelo/' + igama_lephakheji, iglobhu('srv/*'))
],
install_requires=['setuptools'],
zip_safe=Yinyani,
umlondolozi='igama_lomphuhlisi_apha',
umlondolozi_imeyile='i-imeyile_yophuhlisi_apha',
description='Inkonzo yokubala ubude bomtya',
ilayisenisi='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',
],
},
)
``

Ngoku masixoxe ukuba le khowudi yenza ntoni: Ifayile ye-setup.py isebenzisa i-setuptools ukusabalalisa nokulawula ipakethe yethu. Ipakethe_name variable ibambe igama lephakheji yethu. Uluhlu lweefayile zedatha luchaza isibonelelo esiyimfuneko, iphakheji.xml, kunye neefayile zenkonzo eziza kuhanjiswa kunye nomqulu. i-install_requires dwelisa iipakethe ezifunekayo, kwaye i-entry_points ichaza iifayile zethu ezisebenzisekayo zenkonzo. Qinisekisa ukuba ubuyisela u-'developer_name_here' kunye ne-'developer_email_here' ngamaxabiso afanelekileyo.

Ukusebenzisa i-rclpy kunye ne-std_srvs

Emva kokumisela iifayile zenkonzo kwi-setup.py, kuyimfuneko ukuphumeza iseva kunye nekhowudi yomxhasi usebenzisa i-ROS2 Python Client Library, rclpy, kunye ne-std_srvs kwiintlobo zeenkonzo eziqhelekileyo.

Yenza iifayile "string_length_server.py" kunye "string_length_client.py" ngaphakathi kwephakeji yakho kwaye usebenzise iseva kunye nekhowudi yomxhasi. Ungafumana iinkcukacha malunga nendlela yokubhala iseva kunye nekhowudi yomxhasi kuxwebhu lweROS2.

Ukwakha nokuvavanya inkonzo

Okokugqibela, yakha kwaye uvavanye ipakethe yakho usebenzisa le miyalelo ilandelayo:

``
umthombo /opt/ros/foxy/setup.bash
colcon build -iipakethi-khetha string_length_service
imvelaphi yokufaka/iseta.bash
``

Emva kolwakhiwo oluyimpumelelo, sebenzisa iseva kunye nomxhasi usebenzisa iitheminali ezimbini ezahlukeneyo:

``
ros2 sebenzisa umtya_ubude_wenkonzo umtya_ubude_umncedisi
``

``
ros2 sebenzisa umtya_ubude_wenkonzo umtya_ubude_umthengi
``

Esi sikhokelo sibonise inkcazo enzulu yokongeza iifayile zenkonzo kwi-setup.py kwiiphakheji ze-ROS2 ngelixa uchukumisa izihloko ezinxulumene ne-rclpy kunye ne-std_srvs. Ngokulandela la manyathelo, unokwenza kwaye usasaze iinkonzo zakho ze-ROS2 ngendlela esebenzayo nelungelelanisiweyo, uququzelele unxibelelwano ngaphakathi kwezicelo zakho zerobhothi. Ithamsanqa kunye nekhowudi yolonwabo!

Izithuba ezihambelanayo:

Shiya Comment