Skip to content

Wiki

运行第一个RRBot实例

About 3 min read

Existing English translations were reused. 15 current source blocks remain in Simplified Chinese, without triggering paid translation.

先运行官方双关节 RRBot,建立模型、接口、控制器和反馈之间的联系。

1.示例 1:启动并查看接口

Terminal 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.Frequently Asked Questions

管理器服务没有出现时,先看模型解析和插件加载日志;控制器 inactive 时,查看接口是否可用、参数是否交给了控制器;反馈不变时,同时核对 Topic 类型、订阅者、数组长度和当前 active 控制器。


返回 Jazzy 总览 · 上一篇:ros2_control整体工作过程 · 下一篇:从零创建学习工作区