解決:在setup.py ROS2中新增服務文件

近年來,機器人領域的進步和採用的技術激增。 其中之一是 ROS2(機器人作業系統 2),它是一個開源中間件框架,提供用於開發、測試和維護機器人應用程式的工具、函式庫和約定。 本文深入研究使用 setup.py 在 ROS2 套件中新增服務文件,這是使用該平台的開發人員的基本技能。 我們將從簡要介紹開始,提出問題的解決方案,引導您完成逐步指南,並討論相關主題以加深理解。

在 ROS2 套件中設定服務檔案涉及兩個主要步驟:建立服務訊息定義檔 (.srv) 以及在 package.xml 和 setup.py 檔案中新增必要的設定。 在本教程中,我們將建立一個簡單的服務,它接受輸入字串並傳回所提供輸入的長度。

首先,讓我們準備好我們的工作區。 使用以下命令建立名為“string_length_service”的 ROS2 套件:


ros2 pkg create –build-type ament_python string_length_service

現在,在「string_length_service」套件中建立一個名為「srv」的目錄來儲存我們的服務訊息定義檔:


mkdir srv

在「srv」目錄中,建立一個名為「StringLength.srv」的文件,其中包含以下內容:


字串輸入字串
-
int64 長度

在 package.xml 檔案中,確保新增必要的依賴項:

“`xml
標準訊息
服務介麵包
ament_cmake
ament_cmake_auto
繪圖庫

現在,讓我們進入本文的核心部分——在 setup.py 中新增服務文件。 開啟“setup.py”檔案並包含以下程式碼:

“`蟒蛇
從setuptools導入安裝程序
從全域導入全域

包名稱 = '字串長度服務'

設定(
名稱=包名,
版本='0.0.0',
包=[包名],
資料檔=[
('共享/ament_index/resource_index/packages',
['資源/' + 包名]),
('share/' + package_name, ['package.xml']),
('共享/' + 包名, glob('srv/*'))
],
install_requires=['安裝工具'],
zip_safe=真,
維護者='developer_name_here',
Maintenanceer_email='developer_email_here',
description='計算字串長度的服務',
許可證='麻省理工學院',
test_require=['pytest'],
入口點={
'console_scripts':[
'string_length_server = ' + package_name + '.string_length_server:main',
'string_length_client = ' + package_name + '.string_length_client:main',
],
},
)

現在讓我們來討論這段程式碼的作用: setup.py 檔案使用 setuptools 來分發和管理我們的套件。 package_name 變數保存我們的套件的名稱。 data_files 清單指定與套件一起分發的必要資源、package.xml 和服務檔案。 install_requires 列出了所需的套件,entry_points 定義了我們的服務執行檔。 確保將“developer_name_here”和“developer_email_here”替換為正確的值。

使用 rclpy 和 std_srvs

在 setup.py 中設定服務檔案後,需要使用 ROS2 Python 用戶端程式庫、rclpy 和 std_srvs 來實作標準服務類型的伺服器和用戶端程式碼。

在套件目錄中建立檔案“string_length_server.py”和“string_length_client.py”並實作伺服器和客戶端程式碼。 您可以在 ROS2 文件中找到有關如何編寫伺服器和客戶端程式碼的詳細資訊。

建置和測試服務

最後,使用以下命令建置並測試您的套件:


源/opt/ros/foxy/setup.bash
colcon build –packages-select string_length_service
來源安裝/setup.bash

成功建置後,使用兩個單獨的終端運行伺服器和客戶端:


ros2 執行 string_length_service string_length_server


ros2 執行 string_length_service string_length_client

本指南深入解釋如何在 ROS2 套件的 setup.py 中新增服務文件,同時涉及 rclpy 和 std_srvs 等相關主題。 透過執行這些步驟,您可以以高效且有組織的方式創建和分發 ROS2 服務,從而促進機器人應用程式內的互動。 祝你好運,編碼愉快!

相關文章:

發表評論