Yakagadziriswa: wedzera sevhisi mafaera mu setup.py ROS2

Mumakore achangopfuura, ndima yerobhoti yakaona kuwedzera mukufambira mberi uye matekinoroji akagamuchirwa. Imwe yacho iROS2 (Robot Operating System 2), yakavhurika-sosi yepakati dhizaini inopa maturusi, maraibhurari, uye zvibvumirano zvekuvandudza, kuyedza uye kuchengetedza mashandisirwo emarobhoti. Ichi chinyorwa chinotarisa mukuwedzera mafaera ebasa muROS2 package uchishandisa setup.py, hunyanzvi hwakakosha kune vanogadzira vanoshanda nepuratifomu iyi. Tichatanga neshumo pfupi, topa mhinduro kudambudziko, kufambisa iwe nhanho-ne-nhanho gwara, uye kukurukura nyaya dzine chekuita nekunzwisisa kwakadzama.

Kugadzira sevhisi faira muROS2 pasuru kunosanganisira matanho makuru maviri: kugadzira sevhisi yekutsanangura faira (.srv) uye kuwedzera zvigadziriso zvinodiwa mupakeji.xml uye setup.py mafaera. Muchidzidzo ichi, tichagadzira sevhisi yakapfava inotora tambo yekupinda uye inodzoreredza kureba kweiyo yekupinza yakapihwa.

Kutanga, ngatigadzirirei nzvimbo yedu yekushandira. Gadzira pasuru yeROS2 inonzi "string_length_service" nemurairo unotevera:

``
ros2 pkg gadzira -vaka-mhando ament_python tambo_length_service
``

Zvino, gadzira dhairekitori rakanzi "srv" mukati me "string_length_service" package kuchengetedza yedu sevhisi meseji tsananguro faira:

``
mkdir srv
``

Mukati me "srv" dhairekitori, gadzira faira rakanzi "StringLength.srv" rine zvinotevera zvirimo:

``
tambo input_string
-
int64 kureba
``

Mupakeji.xml faira, ita shuwa kuti wawedzera zvinodikanwa:

"`xml
std_msgs
service_interface_packages
ament_cmake
ament_cmake_auto
kkburemu
``

Zvino, ngatifambei kune yakakosha chikamu chechinyorwa ichi - tichiwedzera sevhisi mafaera mu setup.py. Vhura iyo "setup.py" faira uye sanganisira inotevera kodhi:

"'python
kubva setuptools kupinza setup
kubva kuglob import glob

package_name = 'string_length_service'

gadzirira(
zita=pakeji_zita,
shanduro='0.0.0′,
mapakeji=[package_name],
data_files=[
('share/ament_index/resource_index/packages',
['resource/' + package_name]),
('share/' + package_name, ['package.xml']),
('share/' + package_name, glob('srv/*'))
],
install_requires=['setuptools'],
zip_safe=Chokwadi,
muchengeti='mugadziri_zita_pano',
muchengeti_email='developer_email_here',
tsananguro='Sevhisi yekuverenga kureba kwetambo',
rezinesi = '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',
],
},
)
``

Ngatikurukurei zvinoita kodhi iyi: Iyo setup.py faira inoshandisa setuptools kugovera uye kubata pasuru yedu. Iyo package_name inosiyana inobata zita repasuru yedu. Data_files list inotsanangura chinodiwa, package.xml, uye mafaera esevhisi anofanira kugovaniswa pamwe chete nepasuru. install_requires inonyora mapakeji anodiwa, uye entry_points inotsanangura sevhisi yedu inoteeka mafaera. Ita shuwa yekutsiva iyo 'developer_name_here' uye 'developer_email_here' nehunhu hwakakodzera.

Kushandisa rclpy uye std_srvs

Mushure mekuisa mafaera esevhisi mu setup.py, zvinodikanwa kuita sevha uye kodhi yemutengi uchishandisa iyo ROS2 Python Client Library, rclpy, uye std_srvs yemhando dzesevhisi.

Gadzira mafaera "string_length_server.py" uye "string_length_client.py" mukati mepasuru yako dhairekitori uye shandisa sevha uye kodhi yemutengi. Unogona kuwana ruzivo rwekunyora sevha uye kodhi yemutengi muROS2 zvinyorwa.

Kuvaka uye kuyedza sevhisi

Pakupedzisira, gadzira uye edza pasuru yako uchishandisa inotevera mirairo:

``
kunobva /opt/ros/foxy/setup.bash
colcon kuvaka -packages-sarudza tambo_length_service
source install/setup.bash
``

Mushure mekuvaka kwakabudirira, mhanyisa sevha uye mutengi uchishandisa maviri akasiyana materminal:

``
ros2 mhanya tambo_length_service tambo_length_server
``

``
ros2 mhanya tambo_length_service tambo_length_client
``

Gwaro iri rakapa tsananguro yakadzama yekuwedzera mafaera esevhisi mu setup.py yemapakeji eROS2 uchibata-bata nyaya dzine chekuita senge rclpy uye std_srvs. Nekutevera nhanho idzi, unogona kugadzira uye kugovera yako ROS2 masevhisi nenzira inoshanda uye yakarongeka, uchifambisa kudyidzana mukati mezvishandiso zvako zverobhoti. Rombo rakanaka uye kufara coding!

Related posts:

Leave a Comment