Đã giải quyết: thêm tệp dịch vụ vào setup.py ROS2

Trong những năm gần đây, lĩnh vực robot đã chứng kiến ​​sự đột biến về tiến bộ và công nghệ được áp dụng. Một trong số đó là ROS2 (Hệ điều hành Robot 2), một khung phần mềm trung gian nguồn mở cung cấp các công cụ, thư viện và quy ước để phát triển, kiểm tra và duy trì các ứng dụng của robot. Bài viết này đi sâu vào việc thêm các tệp dịch vụ trong gói ROS2 bằng setup.py, một kỹ năng cần thiết cho các nhà phát triển làm việc với nền tảng này. Chúng tôi sẽ bắt đầu bằng phần giới thiệu ngắn gọn, trình bày giải pháp cho vấn đề, hướng dẫn bạn từng bước và thảo luận về các chủ đề liên quan để hiểu sâu hơn.

Thiết lập tệp dịch vụ trong gói ROS2 bao gồm hai bước chính: tạo tệp định nghĩa thông báo dịch vụ (.srv) và thêm các cấu hình cần thiết trong tệp pack.xml và setup.py. Trong hướng dẫn này, chúng ta sẽ tạo một dịch vụ đơn giản nhận chuỗi đầu vào và trả về độ dài của đầu vào được cung cấp.

Đầu tiên, hãy chuẩn bị không gian làm việc của chúng ta. Tạo gói ROS2 có tên “string_length_service” bằng lệnh sau:


ros2 pkg tạo –build-type ament_python string_length_service

Bây giờ, hãy tạo một thư mục có tên “srv” bên trong gói “string_length_service” để lưu trữ tệp định nghĩa thông báo dịch vụ của chúng tôi:


mkdir srv

Trong thư mục “srv”, tạo một tệp có tên “StringLength.srv” với nội dung sau:


chuỗi đầu vào_chuỗi
-
chiều dài int64

Trong tệp pack.xml, hãy đảm bảo thêm các phần phụ thuộc cần thiết:

“`xml
std_msgs
dịch vụ_interface_packages
ament_cmake
ament_cmake_auto
matplotlib

Bây giờ, hãy chuyển sang phần cốt lõi của bài viết này – thêm tệp dịch vụ vào setup.py. Mở tệp “setup.py” và thêm đoạn mã sau:

“`trăn
từ thiết lập nhập setuptools
từ toàn cầu nhập khẩu toàn cầu

package_name = 'string_length_service'

cài đặt(
tên=tên_gói,
phiên bản='0.0.0',
gói=[tên_gói],
data_files=[
('share/ament_index/resource_index/gói',
['resource/' + package_name]),
('share/' + package_name, ['package.xml']),
('share/' + package_name, glob('srv/*'))
],
install_requires=['setuptools'],
zip_safe=Đúng,
người bảo trì='developer_name_here',
người bảo trì_email='developer_email_here',
description='Dịch vụ tính toán độ dài chuỗi',
giấy phép='MIT',
test_require=['pytest'],
entry_points={
'console_scripts': [
'string_length_server = ' + package_name + '.string_length_server:main',
'string_length_client = ' + package_name + '.string_length_client:main',
],
},
)

Bây giờ chúng ta hãy thảo luận xem đoạn mã này làm gì: Tệp setup.py sử dụng setuptools để phân phối và quản lý gói của chúng tôi. Biến package_name giữ tên gói của chúng tôi. Danh sách data_files chỉ định các tệp tài nguyên, gói.xml và dịch vụ cần thiết sẽ được phân phối cùng với gói. install_requires liệt kê các gói được yêu cầu và entry_points xác định các tệp thực thi dịch vụ của chúng tôi. Đảm bảo thay thế 'developer_name_here' và 'developer_email_here' bằng các giá trị phù hợp.

Sử dụng rclpy và std_srvs

Sau khi thiết lập các tệp dịch vụ trong setup.py, cần phải triển khai mã máy chủ và máy khách bằng Thư viện máy khách ROS2 Python, rclpy và std_srvs cho các loại dịch vụ tiêu chuẩn.

Tạo các tệp “string_length_server.py” và “string_length_client.py” trong thư mục gói của bạn và triển khai mã máy chủ và máy khách. Bạn có thể tìm thấy chi tiết về cách viết mã máy chủ và máy khách trong tài liệu ROS2.

Xây dựng và thử nghiệm dịch vụ

Cuối cùng, xây dựng và kiểm tra gói của bạn bằng các lệnh sau:


nguồn /opt/ros/foxy/setup.bash
xây dựng colcon –packages-select string_length_service
nguồn cài đặt/setup.bash

Sau khi xây dựng thành công, hãy chạy máy chủ và máy khách bằng hai thiết bị đầu cuối riêng biệt:


ros2 chạy string_length_service string_length_server


ros2 chạy string_length_service string_length_client

Hướng dẫn này trình bày giải thích sâu về cách thêm tệp dịch vụ trong setup.py cho các gói ROS2 đồng thời đề cập đến các chủ đề liên quan như rclpy và std_srvs. Bằng cách làm theo các bước này, bạn có thể tạo và phân phối các dịch vụ ROS2 của mình một cách hiệu quả và có tổ chức, tạo điều kiện thuận lợi cho việc tương tác trong các ứng dụng robot của bạn. Chúc may mắn và mã hóa vui vẻ!

bài viết liên quan:

Để lại một bình luận