U zgjidh: shtoni skedarë shërbimi në setup.py ROS2

Vitet e fundit, fusha e robotikës ka parë një rritje të avancimeve dhe teknologjive të adoptuara. Njëri prej tyre është ROS2 (Robot Operating System 2), një kornizë e ndërmjetme me burim të hapur që ofron mjete, biblioteka dhe konventa për të zhvilluar, testuar dhe mirëmbajtur aplikacionet e robotëve. Ky artikull shqyrton shtimin e skedarëve të shërbimit në një paketë ROS2 duke përdorur setup.py, një aftësi thelbësore për zhvilluesit që punojnë me këtë platformë. Ne do të fillojmë me një hyrje të shkurtër, do të paraqesim një zgjidhje për problemin, do t'ju përcjellim një udhëzues hap pas hapi dhe do të diskutojmë tema të lidhura për një kuptim më të thellë.

Vendosja e një skedari shërbimi në paketën ROS2 përfshin dy hapa kryesorë: krijimin e një skedari përkufizimi të mesazheve të shërbimit (.srv) dhe shtimin e konfigurimeve të nevojshme në skedarët package.xml dhe setup.py. Në këtë tutorial, ne do të krijojmë një shërbim të thjeshtë që merr një varg hyrje dhe kthen gjatësinë e hyrjes së dhënë.

Së pari, le të përgatisim hapësirën tonë të punës. Krijoni një paketë ROS2 të quajtur "string_length_service" me komandën e mëposhtme:

""
ros2 pkg krijo –ndërtim-lloj ament_python string_length_service
""

Tani, krijoni një direktori të quajtur "srv" brenda paketës "string_length_service" për të ruajtur skedarin tonë të përkufizimit të mesazheve të shërbimit:

""
mkdir srv
""

Brenda drejtorisë "srv", krijoni një skedar të quajtur "StringLength.srv" me përmbajtjen e mëposhtme:

""
string input_string
-
gjatësia int64
""

Në skedarin package.xml, sigurohuni që të shtoni varësitë e nevojshme:

"`xml
std_msgs
shërbimi_ndërfaqja_paketat
ament_cmake
ament_cmake_auto
matplotlib
""

Tani, le të kalojmë te pjesa thelbësore e këtij artikulli – shtimi i skedarëve të shërbimit në setup.py. Hapni skedarin "setup.py" dhe përfshini kodin e mëposhtëm:

“Python
nga konfigurimi i importit të setuptools
nga glob import glob

emri_paketë = 'shërbimi_gjatësi_string'

konfigurimi (
emri=emri_pako,
version='0.0.0',
paketa=[emri_pako],
skedarët_të dhënat=[
('share/ament_index/resource_index/packages',
['burimi/' + emri_paketë]),
('share/' + emri_paketë, ['package.xml']),
('share/' + emri_paketë, glob('srv/*'))
],
install_requires=['setuptools'],
zip_safe=E vërtetë,
maintenanceer='developer_name_here',
maintenanceer_email='developer_email_here',
description='Një shërbim për llogaritjen e gjatësisë së vargut',
licencë='MIT',
tests_require=['pytest'],
pika_hyrje={
'console_scripts': [
'string_length_server = ' + emri_paketë + '.string_length_server:main',
'string_length_client = ' + emri_paketës + '.string_length_client:main',
],
},
)
""

Le të diskutojmë tani se çfarë bën ky kod: Skedari setup.py përdor setuptools për të shpërndarë dhe menaxhuar paketën tonë. Ndryshorja package_name mban emrin e paketës sonë. Lista data_files specifikon burimin e nevojshëm, package.xml dhe skedarët e shërbimit që do të shpërndahen së bashku me paketën. install_requires liston paketat e kërkuara dhe pikat e hyrjes përcaktojnë skedarët e ekzekutueshëm të shërbimit tonë. Sigurohuni që të zëvendësoni 'developer_name_here' dhe 'developer_email_here' me vlerat e duhura.

Duke përdorur rclpy dhe std_srvs

Pas konfigurimit të skedarëve të shërbimit në setup.py, është e nevojshme të implementoni kodin e serverit dhe klientit duke përdorur ROS2 Python Client Library, rclpy dhe std_srvs për llojet standarde të shërbimit.

Krijoni skedarët "string_length_server.py" dhe "string_length_client.py" brenda drejtorisë së paketës tuaj dhe zbatoni kodin e serverit dhe klientit. Ju mund të gjeni detaje se si të shkruani kodin e serverit dhe klientit në dokumentacionin ROS2.

Ndërtimi dhe testimi i shërbimit

Së fundi, ndërtoni dhe testoni paketën tuaj duke përdorur komandat e mëposhtme:

""
burimi /opt/ros/foxy/setup.bash
colcon build –packages-select string_length_service
burim install/setup.bash
""

Pas ndërtimit të suksesshëm, ekzekutoni serverin dhe klientin duke përdorur dy terminale të veçantë:

""
ros2 ekzekuton string_length_service string_length_server
""

""
ros2 ekzekuton string_length_service string_length_client
""

Ky udhëzues prezantoi një shpjegim të thellë të shtimit të skedarëve të shërbimit në setup.py për paketat ROS2 duke prekur tema të lidhura si rclpy dhe std_srvs. Duke ndjekur këto hapa, ju mund të krijoni dhe shpërndani shërbimet tuaja ROS2 në një mënyrë efikase dhe të organizuar, duke lehtësuar ndërveprimet brenda aplikacioneve tuaja robotike. Fat i mirë dhe kodim i lumtur!

Mesazhe të ngjashme:

Lini një koment