跳到正文

Wiki

完整机器人与进阶实例

约 3 分钟阅读

从单执行器扩展为完整机器人时,保留接口契约,显式管理每个设备的映射和有效性。

1.示例 1:多关节映射

joint1 → 设备 A → 方向、零点、范围 A
joint2 → 设备 B → 方向、零点、范围 B

不能把先收到的帧当作第一个关节。通信快照应保留设备身份、时间和故障状态;部分设备过期时,要按整机策略决定是否允许继续控制。

整机一次收发更适合统一 System;独立执行器则结合 Actuator 的生命周期与故障边界组织。

2.示例 2:真实差速底盘

沿用轮子 velocity 命令与 position/velocity 反馈,统一转换到输出轮轴单位。先分别校验方向,再验证同号目标是否前进,随后标定轮半径与有效轮距。

open_loop=false 表示里程计使用反馈,但仍可能因轮胎、接触和打滑漂移。定位融合属于后续系统集成,不能仅凭 odom Topic 存在就认定完成定位。

3.Jazzy 进阶实例地图

实例 阅读目标
example_4、5 集成与外部传感器
example_6、14 独立执行器与附加状态
example_7 六自由度工程组织
example_8 传动与电机侧、关节侧变量
example_10 GPIO 接口
example_12 控制器串联和 reference 接口
example_13、15 多机器人、namespace 和多管理器
example_16 差速底盘与串联控制
example_17 硬件状态与诊断发布

基础章节只选择构建部分实例。进阶实例需按固定提交的实际目录和说明,另行安装依赖、构建和验证。不存在于所用提交的实例,应先核对版本,不能直接混入其它分支文件。

4.示例 3:按需构建

以传动实例为例:

source /opt/ros/jazzy/setup.bash
cd ~/ros2_control_jazzy_demos_ws
rosdep install --from-paths src --ignore-src -r -y --rosdistro jazzy
colcon build --symlink-install --packages-up-to ros2_control_demo_example_8 \
  --cmake-args -DBUILD_TESTING=OFF
source install/setup.bash
ls $(ros2 pkg prefix ros2_control_demo_example_8)/share/ros2_control_demo_example_8/launch

再按实际文件名运行,先查看 --show-args。阅读一个实例时记录“增加了什么接口、组件或管理边界”,然后再决定怎样引入自己的工程。

4.1.框架异步组件与通信线程

框架异步 read/write 或不同更新频率,和 Asio 线程处理字节流不是同一功能。前者调度组件,后者完成协议与设备 IO;两者仍要解决快照、时效和资源生命周期。

4.2.诊断与控制循环

get_node 等扩展能力应以固定源码版本为准。低频状态发布放在非实时回调中,不能在每轮 read 中构造大量字符串并无限制发布。

官方入口:Jazzy demos。


返回 Jazzy 总览 · 上一篇:单执行器实物适配 · 下一篇:综合工程与系统排错