跳到正文

Wiki

執行第一個RRBot例項

約 3 分鐘閱讀

本文由簡體中文內容確定性轉換,並受版本化術語表保護。

先執行官方雙關節 RRBot,建立模型、介面、控制器和反饋之間的聯絡。

1.示例 1:啟動並檢視介面

終端 1:

source /opt/ros/jazzy/setup.bash
source ~/ros2_control_jazzy_demos_ws/install/setup.bash
ros2 launch ros2_control_demo_example_1 rrbot.launch.py gui:=false

在 Ubuntu 圖形桌面中需要 RViz 時,可以改為 gui:=true。先確認後臺狀態,再觀察顯示。

終端 2 同樣 source 系統與官方例項工作區,然後執行:

ros2 control list_controllers
ros2 control list_hardware_components
ros2 control list_hardware_interfaces

1.1.預期輸出

狀態廣播器和位置命令轉發器應為 active;joint1/position、joint2/position 命令介面應 available、claimed。具體控制器名稱以固定提交的配置檔案為準。

available 是資源可用,claimed 是已經被控制器申請。YAML 中有一段配置,並不意味著控制器已載入。

2.示例 2:傳送目標

ros2 topic pub --once /forward_position_controller/commands \
  std_msgs/msg/Float64MultiArray "{data: [0.4, -0.2]}"
ros2 topic echo /joint_states

2.1.執行過程

先根據 name 陣列找到各關節,再檢視 position。反饋應朝目標變化;變化快慢由該例項的模擬硬體引數決定。不要把模擬延遲誤判為 Topic 未收到,也不要把 RViz 顯示當成物理模擬。

robot_description 提供硬件与接口声明
  → 管理器创建硬件对象
  → spawner 提供控制器参数并激活控制器
  → 目标回调更新缓冲
  → update 写入命令接口
  → 硬件模型产生状态
  → broadcaster 发布反馈

3.原始碼閱讀順序

先開啟ros2_control_demos/example_1/bringup/launch/rrbot.launch.py和ros2_control_demos/example_1/bringup/config/rrbot_controllers.yaml,找到模型位置、引數檔案與兩個 spawner。然後開啟ros2_control_demos/example_1/hardware/rrbot.cpp,觀察 set_state、get_command 如何連線模擬模型和框架介面。

3.1.常見問題

管理器服務沒有出現時,先看模型解析和外掛載入日誌;控制器 inactive 時,檢視介面是否可用、引數是否交給了控制器;反饋不變時,同時核對 Topic 型別、訂閱者、陣列長度和當前 active 控制器。


返回 Jazzy 總覽 · 上一篇:ros2_control整體工作過程 · 下一篇:從零建立學習工作區