En els darrers anys, el camp de la robòtica ha experimentat un augment en els avenços i les tecnologies adoptades. Un d'ells és ROS2 (Robot Operating System 2), un marc de programari intermedi de codi obert que proporciona eines, biblioteques i convencions per desenvolupar, provar i mantenir les aplicacions dels robots. Aquest article aprofundeix en afegir fitxers de servei en un paquet ROS2 mitjançant setup.py, una habilitat essencial per als desenvolupadors que treballen amb aquesta plataforma. Començarem amb una breu introducció, presentarem una solució al problema, us guiarem a través d'una guia pas a pas i parlarem de temes relacionats per a una comprensió més profunda.
La configuració d'un fitxer de servei al paquet ROS2 implica dos passos principals: crear un fitxer de definició de missatges de servei (.srv) i afegir les configuracions necessàries als fitxers package.xml i setup.py. En aquest tutorial, crearem un servei senzill que pren una cadena d'entrada i retorna la longitud de l'entrada proporcionada.
Primer, preparem el nostre espai de treball. Creeu un paquet ROS2 anomenat "string_length_service" amb l'ordre següent:
“
ros2 pkg create –build-type ament_python string_length_service
“
Ara, creeu un directori anomenat "srv" dins del paquet "string_length_service" per emmagatzemar el nostre fitxer de definició de missatges de servei:
“
mkdir srv
“
Dins del directori "srv", creeu un fitxer anomenat "StringLength.srv" amb el contingut següent:
“
cadena input_string
-
longitud int64
“
Al fitxer package.xml, assegureu-vos d'afegir les dependències necessàries:
"`xml
“
Ara, passem a la part bàsica d'aquest article: afegir fitxers de servei a setup.py. Obriu el fitxer "setup.py" i incloeu el codi següent:
"`pitó
des de la configuració d'importació de setuptools
de glob import glob
package_name = 'string_length_service'
configuració (
nom=nom_paquet,
versió='0.0.0′,
paquets=[nom_paquet],
fitxers_dades=[
('share/ament_index/resource_index/packages',
['recurs/' + nom_paquet]),
('share/' + nom_paquet, ['package.xml']),
('share/' + nom_paquet, glob('srv/*'))
],
install_requires=['setuptools'],
zip_safe=Veritat,
mantenedor='nom_desenvolupador_aquí',
keeper_email='developer_email_here',
description='Un servei per calcular la longitud de la cadena',
llicència='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',
],
},
)
“
Anem a discutir ara què fa aquest codi: El fitxer setup.py utilitza setuptools per distribuir i gestionar el nostre paquet. La variable package_name conté el nom del nostre paquet. La llista data_files especifica els fitxers de recursos, package.xml i de servei necessaris que s'han de distribuir juntament amb el paquet. install_requires enumera els paquets necessaris i entry_points defineixen els fitxers executables del nostre servei. Assegureu-vos de substituir "developer_name_here" i "developer_email_here" pels valors adequats.
Utilitzant rclpy i std_srvs
Després de configurar els fitxers de servei a setup.py, cal implementar el codi del servidor i del client mitjançant la biblioteca de client Python ROS2, rclpy i std_srvs per als tipus de servei estàndard.
Creeu els fitxers "string_length_server.py" i "string_length_client.py" dins del vostre directori de paquets i implementeu el codi de servidor i client. Podeu trobar detalls sobre com escriure codi de servidor i client a la documentació de ROS2.
Creació i prova del servei
Finalment, creeu i proveu el vostre paquet amb les ordres següents:
“
font /opt/ros/foxy/setup.bash
colcon build –packages-select string_length_service
font install/setup.bash
“
Després de la compilació correcta, executeu el servidor i el client mitjançant dos terminals separats:
“
ros2 executa string_length_service string_length_server
“
“
ros2 executa string_length_service string_length_client
“
Aquesta guia va presentar una explicació detallada sobre com afegir fitxers de servei a setup.py per als paquets ROS2 mentre es tractava de temes relacionats com rclpy i std_srvs. Seguint aquests passos, podeu crear i distribuir els vostres serveis ROS2 d'una manera eficient i organitzada, facilitant les interaccions dins de les vostres aplicacions robòtiques. Molta sort i feliç codificació!