Selesai: tambah fail perkhidmatan dalam setup.py ROS2

Dalam beberapa tahun kebelakangan ini, bidang robotik telah menyaksikan lonjakan kemajuan dan teknologi yang diterima pakai. Salah satu daripadanya ialah ROS2 (Robot Operating System 2), rangka kerja middleware sumber terbuka yang menyediakan alatan, perpustakaan dan konvensyen untuk membangun, menguji dan menyelenggara aplikasi robot. Artikel ini menyelidiki menambah fail perkhidmatan dalam pakej ROS2 menggunakan setup.py, kemahiran penting untuk pembangun yang bekerja dengan platform ini. Kami akan bermula dengan pengenalan ringkas, membentangkan penyelesaian kepada masalah itu, membimbing anda melalui panduan langkah demi langkah dan membincangkan topik berkaitan untuk pemahaman yang lebih mendalam.

Menyediakan fail perkhidmatan dalam pakej ROS2 melibatkan dua langkah utama: mencipta fail definisi mesej perkhidmatan (.srv) dan menambah konfigurasi yang diperlukan dalam fail package.xml dan setup.py. Dalam tutorial ini, kami akan mencipta perkhidmatan ringkas yang mengambil rentetan input dan mengembalikan panjang input yang diberikan.

Mula-mula, mari kita sediakan ruang kerja kita. Buat pakej ROS2 bernama "string_length_service" dengan arahan berikut:

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

Sekarang, buat direktori bernama "srv" di dalam pakej "string_length_service" untuk menyimpan fail definisi mesej perkhidmatan kami:

""
mkdir srv
""

Di dalam direktori "srv", buat fail bernama "StringLength.srv" dengan kandungan berikut:

""
rentetan input_rentetan
-
panjang int64
""

Dalam fail package.xml, pastikan anda menambah kebergantungan yang diperlukan:

“`xml
std_msgs
perkhidmatan_antaramuka_pakej
ament_cmake
ament_cmake_auto
matplotlib
""

Sekarang, mari kita beralih ke bahagian teras artikel ini – menambah fail perkhidmatan dalam setup.py. Buka fail "setup.py" dan masukkan kod berikut:

“`python
dari persediaan import setuptools
daripada glob import glob

package_name = 'string_length_service'

persediaan (
nama=nama_pakej,
versi='0.0.0′,
packages=[package_name],
data_files=[
('share/ament_index/resource_index/packages',
['resource/' + package_name]),
('share/' + package_name, ['package.xml']),
('kongsi/' + nama_pakej, glob('srv/*'))
],
install_requires=['setuptools'],
zip_safe=Benar,
maintainer='developer_name_here',
maintainer_email='developer_email_here',
description='Perkhidmatan untuk mengira panjang rentetan',
lesen='MIT',
tests_require=['pytest'],
entry_points={
'console_scripts': [
'string_length_server = ' + package_name + '.string_length_server:utama',
'string_length_client = ' + package_name + '.string_length_client:utama',
],
},
)
""

Mari kita bincangkan apa yang dilakukan oleh kod ini: Fail setup.py menggunakan setuptools untuk mengedar dan mengurus pakej kami. Pembolehubah package_name memegang nama pakej kami. Senarai data_files menentukan sumber yang diperlukan, pakej.xml dan fail perkhidmatan untuk diedarkan bersama pakej. install_requires menyenaraikan pakej yang diperlukan dan entry_points mentakrifkan fail boleh laku perkhidmatan kami. Pastikan untuk menggantikan 'developer_name_here' dan 'developer_email_here' dengan nilai yang betul.

Menggunakan rclpy dan std_srvs

Selepas menyediakan fail perkhidmatan dalam setup.py, adalah perlu untuk melaksanakan pelayan dan kod klien menggunakan Perpustakaan Pelanggan Python ROS2, rclpy dan std_srvs untuk jenis perkhidmatan standard.

Cipta fail “string_length_server.py” dan “string_length_client.py” di dalam direktori pakej anda dan laksanakan kod pelayan dan klien. Anda boleh mendapatkan butiran tentang cara menulis kod pelayan dan klien dalam dokumentasi ROS2.

Membina dan menguji perkhidmatan

Akhir sekali, bina dan uji pakej anda menggunakan arahan berikut:

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

Selepas binaan berjaya, jalankan pelayan dan klien menggunakan dua terminal berasingan:

""
ros2 jalankan string_length_service string_length_server
""

""
ros2 jalankan string_length_service string_length_client
""

Panduan ini membentangkan penjelasan mendalam tentang menambah fail perkhidmatan dalam setup.py untuk pakej ROS2 sambil menyentuh topik berkaitan seperti rclpy dan std_srvs. Dengan mengikuti langkah-langkah ini, anda boleh mencipta dan mengedarkan perkhidmatan ROS2 anda dengan cara yang cekap dan teratur, memudahkan interaksi dalam aplikasi robotik anda. Semoga berjaya dan selamat mengekod!

Related posts:

Tinggalkan komen