Soal: tambahkan file layanan di setup.py ROS2

Dalam beberapa tahun terakhir, bidang robotika telah mengalami lonjakan kemajuan dan adopsi teknologi. Salah satunya adalah ROS2 (Robot Operating System 2), kerangka middleware sumber terbuka yang menyediakan alat, perpustakaan, dan konvensi untuk mengembangkan, menguji, dan memelihara aplikasi robot. Artikel ini mempelajari cara menambahkan file layanan dalam paket ROS2 menggunakan setup.py, keterampilan penting bagi pengembang yang bekerja dengan platform ini. Kami akan memulai dengan pengenalan singkat, menyajikan solusi masalah, memandu Anda melalui panduan langkah demi langkah, dan mendiskusikan topik terkait untuk pemahaman lebih dalam.

Menyiapkan file layanan dalam paket ROS2 melibatkan dua langkah utama: membuat file definisi pesan layanan (.srv) dan menambahkan konfigurasi yang diperlukan dalam file package.xml dan setup.py. Dalam tutorial ini, kita akan membuat layanan sederhana yang mengambil string masukan dan mengembalikan panjang masukan yang diberikan.

Pertama, mari kita persiapkan ruang kerja kita. Buat paket ROS2 bernama “string_length_service” dengan perintah berikut:


ros2 pkg buat –tipe build ament_python string_length_service

Sekarang, buat direktori bernama “srv” di dalam paket “string_length_service” untuk menyimpan file definisi pesan layanan kami:


mkdir srv

Di dalam direktori “srv”, buat file bernama “StringLength.srv” dengan konten berikut:


string masukan_string
-
panjang int64

Di file package.xml, pastikan untuk menambahkan dependensi yang diperlukan:

“`xml
std_msgs
paket_antarmuka_layanan
ament_cmake
ament_cmake_auto
matplotlib.dll

Sekarang, mari beralih ke bagian inti artikel ini – menambahkan file layanan di setup.py. Buka file “setup.py” dan sertakan kode berikut:

“`piton
dari setuptools import setup
dari glob impor glob

nama_paket = 'string_panjang_layanan'

mempersiapkan(
nama=nama_paket,
versi='0.0.0′,
paket=[nama_paket],
data_file=[
('bagikan/ament_index/resource_index/paket',
['sumber daya/' + nama_paket]),
('bagikan/' + nama_paket, ['paket.xml']),
('bagikan/' + nama_paket, glob('srv/*'))
],
install_requires=['alat pengaturan'],
zip_safe=Benar,
pengelola='nama_pengembang_di sini',
pengelola_email='email_pengembang_di sini',
deskripsi='Layanan untuk menghitung panjang string',
lisensi='MIT',
tes_require=['pytest'],
titik_masuk={
'skrip_konsol': [
'string_length_server = ' + nama_paket + '.string_length_server:utama',
'string_length_client = '+ nama_paket + '.string_length_client: utama',
],
},
)

Sekarang mari kita bahas apa fungsi kode ini: File setup.py menggunakan setuptools untuk mendistribusikan dan mengelola paket kami. Variabel package_name menyimpan nama paket kita. Daftar data_files menentukan sumber daya, package.xml, dan file layanan yang diperlukan untuk didistribusikan bersama dengan paket. install_requires mencantumkan paket yang diperlukan, dan entry_points menentukan file layanan kami yang dapat dieksekusi. Pastikan untuk mengganti 'nama_pengembang_di sini' dan 'email_pengembang_di sini' dengan nilai yang sesuai.

Menggunakan rclpy dan std_srvs

Setelah menyiapkan file layanan di setup.py, penting untuk mengimplementasikan kode server dan klien menggunakan ROS2 Python Client Library, rclpy, dan std_srvs untuk jenis layanan standar.

Buat file “string_length_server.py” dan “string_length_client.py” di dalam direktori paket Anda dan terapkan kode server dan klien. Anda dapat menemukan detail tentang cara menulis kode server dan klien di dokumentasi ROS2.

Membangun dan menguji layanan

Terakhir, buat dan uji paket Anda menggunakan perintah berikut:


sumber /opt/ros/foxy/setup.bash
colcon build –paket-pilih string_length_service
sumber instal/setup.bash

Setelah build berhasil, jalankan server dan klien menggunakan dua terminal terpisah:


ros2 jalankan string_length_service string_length_server


ros2 jalankan string_length_service string_length_client

Panduan ini menyajikan penjelasan mendalam tentang penambahan file layanan di setup.py untuk paket ROS2 sambil menyentuh topik terkait seperti rclpy dan std_srvs. Dengan mengikuti langkah-langkah ini, Anda dapat membuat dan mendistribusikan layanan ROS2 dengan cara yang efisien dan terorganisir, memfasilitasi interaksi dalam aplikasi robotik Anda. Semoga berhasil dan selamat coding!

Pos terkait:

Tinggalkan Komentar