Çözüldü: setup.py ROS2'ye hizmet dosyaları ekleyin

Son yıllarda robotik alanında ilerlemeler ve benimsenen teknolojilerde bir artış görüldü. Bunlardan biri, robotların uygulamalarını geliştirmek, test etmek ve sürdürmek için araçlar, kitaplıklar ve kurallar sağlayan açık kaynaklı bir ara katman yazılımı çerçevesi olan ROS2'dir (Robot İşletim Sistemi 2). Bu makale, bu platformla çalışan geliştiriciler için önemli bir beceri olan setup.py'yi kullanarak ROS2 paketine hizmet dosyaları ekleme konusunu ele alıyor. Kısa bir girişle başlayacağız, soruna bir çözüm sunacağız, adım adım bir kılavuzla size yol göstereceğiz ve daha derin bir anlayış için ilgili konuları tartışacağız.

ROS2 paketinde bir hizmet dosyasının ayarlanması iki ana adımı içerir: bir hizmet mesajı tanım dosyası (.srv) oluşturmak ve gerekli yapılandırmaları package.xml ve setup.py dosyalarına eklemek. Bu derste, bir giriş dizesi alan ve sağlanan girişin uzunluğunu döndüren basit bir hizmet oluşturacağız.

Öncelikle çalışma alanımızı hazırlayalım. Aşağıdaki komutla “string_length_service” adında bir ROS2 paketi oluşturun:

"
ros2 pkg create –build-type ament_python string_length_service
"

Şimdi servis mesajı tanımlama dosyamızı saklamak için “string_length_service” paketinin içinde “srv” adında bir dizin oluşturun:

"
mkdir srv
"

“Srv” dizininin içinde aşağıdaki içeriğe sahip “StringLength.srv” adında bir dosya oluşturun:

"
dize girdi_dizesi
-
int64 uzunluğu
"

package.xml dosyasına gerekli bağımlılıkları eklediğinizden emin olun:

“`xml
std_msgs
service_interface_packages
ament_cmake
ament_cmake_auto
matplotlib
"

Şimdi bu makalenin ana kısmına geçelim: setup.py'ye hizmet dosyaları ekleme. “setup.py” dosyasını açın ve aşağıdaki kodu ekleyin:

piton
kurulum araçlarından içe aktarma kurulumundan
glob ithalatından glob

package_name = 'string_length_service'

kurmak(
ad=paket_adı,
sürüm='0.0.0',
paketler=[paket_adı],
veri_dosyaları=[
('paylaşım/ament_index/resource_index/paketler',
['kaynak/' + paket_adı]),
('paylaş/' + paket_adı, ['paket.xml']),
('paylaş/' + paket_adı, glob('srv/*'))
],
install_requires=['setuptools'],
zip_safe=Doğru,
bakımcı='geliştirici_adı_here',
Maintenanceer_email='developer_email_here',
açıklama='Dize uzunluğunu hesaplamak için bir hizmet',
lisans='MIT',
testler_require=['pytest'],
giriş_noktaları={
'konsol_komut dosyaları': [
'string_length_server = ' + paket_adı + '.string_length_server:ana',
'string_length_client = ' + paket_adı + '.string_length_client:ana',
],
},
)
"

Şimdi bu kodun ne işe yaradığını tartışalım: setup.py dosyası paketimizi dağıtmak ve yönetmek için setuptools'u kullanır. package_name değişkeni paketimizin adını tutar. data_files listesi, paketle birlikte dağıtılacak gerekli kaynak, package.xml ve hizmet dosyalarını belirtir. install_requires gerekli paketleri listeler ve entry_points hizmetin yürütülebilir dosyalarımızı tanımlar. 'Geliştirici_adı_buraya' ve 'geliştirici_e-posta_burası'nı uygun değerlerle değiştirdiğinizden emin olun.

Rclpy ve std_srvs'yi kullanma

setup.py'de hizmet dosyalarını ayarladıktan sonra, standart hizmet türleri için ROS2 Python İstemci Kitaplığı, rclpy ve std_srvs'yi kullanarak sunucu ve istemci kodunu uygulamak gerekir.

Paket dizininizde “string_length_server.py” ve “string_length_client.py” dosyalarını oluşturun ve sunucu ve istemci kodunu uygulayın. Sunucu ve istemci kodunun nasıl yazılacağına ilişkin ayrıntıları ROS2 belgelerinde bulabilirsiniz.

Hizmeti oluşturma ve test etme

Son olarak aşağıdaki komutları kullanarak paketinizi oluşturun ve test edin:

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

Başarılı derlemenin ardından sunucuyu ve istemciyi iki ayrı terminal kullanarak çalıştırın:

"
ros2 çalıştır string_length_service string_length_server
"

"
ros2'yi çalıştır string_length_service string_length_client
"

Bu kılavuz, rclpy ve std_srvs gibi ilgili konulara değinirken, ROS2 paketleri için setup.py'ye hizmet dosyalarının eklenmesine ilişkin ayrıntılı bir açıklama sundu. Bu adımları izleyerek ROS2 hizmetlerinizi verimli ve düzenli bir şekilde oluşturabilir ve dağıtabilir, robotik uygulamalarınızdaki etkileşimleri kolaylaştırabilirsiniz. İyi şanslar ve mutlu kodlama!

İlgili Mesajlar:

Leave a Comment