Kuxazululiwe: engeza amafayela esevisi ku-setup.py ROS2

Eminyakeni yamuva nje, umkhakha wamarobhothi ubone ukwanda kwentuthuko kanye nobuchwepheshe obamukelwayo. Enye yazo i-ROS2 (I-Robot Operating System 2), uhlaka lomthombo ovulekile lwe-middleware oluhlinzeka ngamathuluzi, imitapo yolwazi, nezimiso zokuthuthukisa, ukuhlola nokugcina izinhlelo zokusebenza zamarobhothi. Lesi sihloko sidingida ekungezeni amafayela esevisi kuphakheji ye-ROS2 kusetshenziswa i-setup.py, ikhono elibalulekile lonjiniyela abasebenza nale nkundla. Sizoqala ngesingeniso esifushane, sethule isixazululo senkinga, sikuhambise ngomhlahlandlela wesinyathelo nesinyathelo, futhi sixoxe ngezihloko ezihlobene ukuze siqonde ngokujulile.

Ukusetha ifayela lesevisi kuphakheji ye-ROS2 kuhilela izinyathelo ezimbili eziyinhloko: ukudala ifayela lencazelo yomlayezo wesevisi (.srv) nokwengeza ukulungiselelwa okudingekayo kumafayela ephakheji.xml kanye ne-setup.py. Kulesi sifundo, sizodala isevisi elula ethatha iyunithi yezinhlamvu yokufaka futhi ibuyisele ubude bokufaka okunikeziwe.

Okokuqala, masilungise indawo yethu yokusebenza. Dala iphakheji ye-ROS2 ebizwa ngokuthi "string_length_service" ngomyalo olandelayo:

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

Manje, dala uhla lwemibhalo olubizwa ngokuthi “srv” ngaphakathi kwephakheji elithi “string_length_service” ukuze ugcine ifayela lencazelo yomlayezo wesevisi yethu:

``
mkdir srv
``

Ngaphakathi kohla lwemibhalo lwe-“srv”, dala ifayela elinegama elithi “StringLength.srv” ngokuqukethwe okulandelayo:

``
string input_string
-
ubude int64
``

Efayelini le-package.xml, qiniseka ukuthi ungeza ukuncika okudingekayo:

"`xml
std_msgs
service_interface_packages
ament_cmake
ament_cmake_auto
umathop
``

Manje, ake siye engxenyeni eyinhloko yalesi sihloko - sengeza amafayela esevisi kokuthi setup.py. Vula ifayela elithi “setup.py” futhi ufake ikhodi elandelayo:

"`python
kusuka ku- setuptools import setup
kusuka ku-glob import glob

package_name = 'string_length_service'

ukumisa (
igama=igama_lephakheji,
inguqulo='0.0.0′,
amaphakheji=[igama_lephakheji],
idatha_files=[
('share/ament_index/resource_index/packages',
['insiza/' + package_name]),
('share/' + package_name, ['package.xml']),
('share/' + package_name, iglob('srv/*'))
],
install_requires=['setuptools'],
zip_safe=Iqiniso,
umnakekeli='igama_lonjiniyela_lapha',
umnakekeli_imeyili='i-imeyili_kanjiniyela_lapha',
description='Isevisi yokubala ubude bentambo',
ilayisensi='MIT',
tests_require=['pytest'],
amaphuzu_entry={
'console_scripts': [
'string_length_server = ' + package_name + '.string_length_server:main',
'string_length_client = ' + package_name + '.string_length_client:main',
],
},
)
``

Manje ake sixoxe ngokuthi le khodi yenzani: Ifayela le-setup.py lisebenzisa ama-setuptools ukusabalalisa nokuphatha iphakheji yethu. I-package_name variable iphethe igama lephakheji yethu. Uhlu lwama-data_files lucacisa isisetshenziswa esidingekayo, i-package.xml, namafayela esevisi azosatshalaliswa kanye nephakheji. i-install_requires yenza uhlu lwamaphakheji adingekayo, futhi ama-entry_points achaza amafayela wethu asebenzisekayo. Qiniseka ukuthi ufaka amanani afanele esikhundleni se-'developer_name_here' ne-'developer_email_here'.

Isebenzisa i-rclpy ne-std_srvs

Ngemva kokusetha amafayela esevisi kokuthi setup.py, kuyadingeka ukuthi usebenzise iseva nekhodi yeklayenti usebenzisa i-ROS2 Python Client Library, rclpy, kanye ne-std_srvs ngezinhlobo zesevisi ezijwayelekile.

Dala amafayela athi “string_length_server.py” kanye “string_length_client.py” ngaphakathi kwephakeji yakho yemibhalo bese usebenzisa iseva nekhodi yeklayenti. Ungathola imininingwane yokuthi uyibhala kanjani iseva nekhodi yeklayenti kumadokhumenti e-ROS2.

Ukwakha nokuhlola isevisi

Ekugcineni, yakha futhi uhlole iphakheji lakho usebenzisa imiyalo elandelayo:

``
umthombo /opt/ros/foxy/setup.bash
colcon build -packages-khetha string_length_service
faka umthombo/setup.bash
``

Ngemuva kokwakhiwa okuyimpumelelo, sebenzisa iseva neklayenti usebenzisa amatheminali amabili ahlukene:

``
I-ros2 sebenzisa i-string_length_service string_length_server
``

``
ros2 sebenzisa i-string_length_service string_length_client
``

Lo mhlahlandlela wethule incazelo ejulile yokwengeza amafayela esevisi ku-setup.py yamaphakheji e-ROS2 kuyilapho uthinta izihloko ezihlobene njenge-rclpy kanye ne-std_srvs. Ngokulandela lezi zinyathelo, ungakha futhi usabalalise izinsiza zakho ze-ROS2 ngendlela ephumelelayo nehlelekile, wenze kube lula ukusebenzisana ngaphakathi kwezinhlelo zakho zokusebenza zerobhothi. Sikufisela inhlanhla nokubhala amakhodi okujabulisayo!

Okuthunyelwe okuhlobene:

Shiya amazwana