外部設備整合包External Process Handler

external_process_handler 外部設備整合包是一套完整的程序,可以提供使用者去執行外部的任務,整合到Seirios的介面上。

如何運用外部設備整合包,來設置您的任務呢?

本指南向您展示如何使用 external_process_handler 外部設備整合包,將您自己的程序作為插件整合到 Seirios 中。

您將會需要:

  1. Seirios 導航軟體

  2. 您自備的程式碼

0. 安裝 Movel Seirios 訊息

請確認您的ROS版本。

  • 若您是 Ubuntu 20.04, ROS Noetic的使用者 :

請至以下連結下載 .deb package: https://drive.google.com/drive/folders/1hpi5NaSkFyr6QVXs83taxeHjWLulw8SH

移動 .deb 此安裝包的你的資料夾,打開終端視窗,請執行此指令 sudo apt install ./ros-noetic-movel-seirios-msgs_0.0.0-0focalXXX64.deb 以下載安裝。

  • 其餘版本的使用者:

Git clone this repo here: https://gitlab.com/movelai_public/movel_seirios_msgs/-/tree/master/srv into your catkin workspace.

Run catkin_make this repo to compile so that it will be usable.

1.請將程式碼加進你自己的程式中

你需要功能去與 external_program_handler溝通,以執行你啟動的指令和停止的指令。

你的程式中必須有一些東西可以告訴 Seirios 啟動程序和停止程序。 啟動時,可以使用 ROS 服務或啟動文件來完成。 需要停止時,可以使用 ROS 服務或訂閱主題來完成

以下為程式碼範例 (python and c++)

請確保您正在複製正確類型的程式碼。 不要將 c++ 代碼複製到 python 程序中,反之亦然。

1.1. 使用ROS service 去啟動 & 停止一個程式

啟動Starting

在您的程序中,添加一個服務,將其命名為 service_start 。 編寫一個處理程序 start_handler作為回調來處理您的啟動程式碼。

停止Stopping

將另一個服務初始化為service_stop。 同樣,編寫一個回調 stop_handler來處理您的程式碼以停止程序。

C++ 的額外配置

對於 C++ 程序,您還必須在自己包中的 package.xml 中添加 movel_seirios_msgs 包作為相依

在自己的程式包CMakeLists.txt中, 添加 movel_seirios_msgs ,在此 find_package 之下。

1.2. 使用主題來停止程序

如果您是從 UI 發布停止主題來停止程序,請參閱本節。 否則,忽略它。

請撰寫訂閱者 topic_process_cancel去訂閱此UI主題, 其中 handle_publish_cancel的回調中,請包含您的停止程式碼。

請確保topic_process_cancel 訂閱正確的UI主題。

1.3. 發布客戶的狀態

如果您從啟動文件啟動程序,請參閱本節。 否則,忽略它。

這樣做的目的,是要檢查從啟動文件,啟動程序後您的程序,是否有運行成功。

請撰寫發布者 client_status ,如果運行成功,請發佈2 ; 如果運行失敗,請發布3。

2. 範例程式碼

您可以參考範例程式碼,了解如何使用外部設備整合包,來去啟動程序和停止程序。

回調函數中的程式碼,只是用於測試 external_process_handler 的填充代碼。 可以使用您自己的開始程式碼和停止程式碼來替換它們。

3. 在Seirios裡更改檔案

更改您自己的程式碼後,你還需要去配置task_supervisor,才能讓Seirios在你的程式上運行。

3.1. 使用參數 external_process_handler

根據您啟動/停止程序的方式設置 service_reqlaunch_reqtopic_cancel_req 的布爾狀態。

參數 service_startservice_stoptopic_process_cancelclient_status 必須與您在自己的文件中提供的主題和服務的名稱相匹配。

3.2. 添加task supervisor 作為插件

將您的程式作為插件添加到task supervisor,以便 Seirios 運行,將配置插入 task_supervisor.yaml

Filepath: ../config/task_supervisor/config/

File to modify: task_supervisor.yaml

在task supervisor的插件部分下,插入以下程式碼。 縮排必須與其他插件對齊。 您可以提供任何nametype,但要確保它們不會與其他插件衝突。 請不要更改class

在文件的末尾中,使用您在上面提供的name創建一個新部分。 請貼上該參數。

其他注意事項

對於 C++ 程式,請記住在您自己的程式包中,要正確設置 CMakeLists.txtpackage.xml

欲了解更多信息,請點擊此處。 click here.

Last updated

Was this helpful?