Nalutas: magdagdag ng mga file ng serbisyo sa setup.py ROS2

Sa mga nagdaang taon, ang larangan ng robotics ay nakakita ng isang pagsulong sa mga pagsulong at pinagtibay na mga teknolohiya. Isa sa mga ito ay ang ROS2 (Robot Operating System 2), isang open-source middleware framework na nagbibigay ng mga tool, library, at convention para bumuo, subukan at mapanatili ang mga application ng mga robot. Sinusuri ng artikulong ito ang pagdaragdag ng mga file ng serbisyo sa isang pakete ng ROS2 gamit ang setup.py, isang mahalagang kasanayan para sa mga developer na nagtatrabaho sa platform na ito. Magsisimula kami sa isang maikling pagpapakilala, magpapakita ng solusyon sa problema, gagabay sa iyo sa isang sunud-sunod na gabay, at talakayin ang mga kaugnay na paksa para sa mas malalim na pag-unawa.

Ang pag-set up ng service file sa ROS2 package ay may kasamang dalawang pangunahing hakbang: paggawa ng service message definition file (.srv) at pagdaragdag ng mga kinakailangang configuration sa package.xml at setup.py file. Sa tutorial na ito, gagawa kami ng simpleng serbisyo na kumukuha ng input string at ibinabalik ang haba ng ibinigay na input.

Una, ihanda natin ang ating workspace. Lumikha ng ROS2 package na pinangalanang "string_length_service" gamit ang sumusunod na command:

""
ros2 pkg lumikha –build-type ament_python string_length_service
""

Ngayon, lumikha ng isang direktoryo na pinangalanang "srv" sa loob ng package na "string_length_service" upang iimbak ang aming file ng kahulugan ng mensahe ng serbisyo:

""
mkdir srv
""

Sa loob ng direktoryo ng "srv", lumikha ng isang file na pinangalanang "StringLength.srv" na may sumusunod na nilalaman:

""
string input_string
-
int64 ang haba
""

Sa package.xml file, tiyaking idagdag ang mga kinakailangang dependency:

“`xml
std_msgs
service_interface_packages
ament_cmake
ament_cmake_auto
matplotlib
""

Ngayon, lumipat tayo sa pangunahing bahagi ng artikulong ito – pagdaragdag ng mga file ng serbisyo sa setup.py. Buksan ang "setup.py" file at isama ang sumusunod na code:

“`python
mula sa setuptools import setup
mula sa glob import glob

package_name = 'string_length_service'

setup(
name=package_name,
bersyon='0.0.0′,
packages=[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=Totoo,
maintainer='developer_name_here',
maintainer_email='developer_email_here',
description='Isang serbisyo para sa pagkalkula ng haba ng string',
lisensya='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',
],
},
)
""

Talakayin natin ngayon kung ano ang ginagawa ng code na ito: Ang setup.py file ay gumagamit ng setuptools upang ipamahagi at pamahalaan ang aming package. Ang package_name variable ay nagtataglay ng pangalan ng aming package. Tinutukoy ng listahan ng data_files ang kinakailangang mapagkukunan, package.xml, at mga file ng serbisyo na ipapamahagi kasama ng package. install_requires ay naglilista ng mga kinakailangang pakete, at ang mga entry_point ay tumutukoy sa aming mga file na maipapatupad ng serbisyo. Tiyaking palitan ang 'developer_name_here' at 'developer_email_here' ng mga tamang value.

Gamit ang rclpy at std_srvs

Pagkatapos i-set up ang mga file ng serbisyo sa setup.py, kinakailangan na ipatupad ang server at client code gamit ang ROS2 Python Client Library, rclpy, at std_srvs para sa mga karaniwang uri ng serbisyo.

Lumikha ng mga file na “string_length_server.py” at “string_length_client.py” sa loob ng iyong direktoryo ng package at ipatupad ang server at client code. Makakakita ka ng mga detalye sa kung paano magsulat ng server at client code sa dokumentasyon ng ROS2.

Pagbuo at pagsubok ng serbisyo

Panghuli, buuin at subukan ang iyong package gamit ang mga sumusunod na command:

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

Pagkatapos ng matagumpay na build, patakbuhin ang server at client gamit ang dalawang magkahiwalay na terminal:

""
ros2 magpatakbo ng string_length_service string_length_server
""

""
ros2 magpatakbo ng string_length_service string_length_client
""

Ang gabay na ito ay nagpakita ng isang malalim na paliwanag sa pagdaragdag ng mga file ng serbisyo sa setup.py para sa mga pakete ng ROS2 habang hinahawakan ang mga nauugnay na paksa tulad ng rclpy at std_srvs. Sa pamamagitan ng pagsunod sa mga hakbang na ito, maaari mong gawin at ipamahagi ang iyong mga serbisyo ng ROS2 sa isang mahusay at organisadong paraan, na nagpapadali sa mga pakikipag-ugnayan sa loob ng iyong mga robotic na application. Good luck at maligayang coding!

Kaugnay na mga post:

Mag-iwan ng komento