4,ROS 2 TF 坐标变换实践教程(Python + C++)—— 手眼坐标变换(Hand-Eye)完整示例 + 调试工具 + 数据记录
目录
1. 场景说明(手眼坐标变换)
2. Python 版本实现
2.1 创建功能包
2.2 核心代码
demo_python_TF/static_tf_broadcaster.py(发布固定变换)
demo_python_TF/dynamic_tf_broadcaster.py(模拟相机实时检测)
demo_python_TF/tf_listener.py(查询最终变换)
2.3 配置 setup.py 和 package.xml
2.4 编译运行
3. C++ 版本案例(类似地图→机器人→目标点场景)
3.1 创建功能包
3.2 核心代码
static_tf_broadcaster.cpp:map → target_point(发布固定变换)
dynamic_tf_broadcaster.cpp:map → base_link(动态:模拟机器人移动)
3.3 配置 CMakeLists.txt 和 package.xml
3.4 编译运行
4. 调试可视化工具
4.1 tf2_tools 查看 TF 树
4.2 Rviz2 可视化
4.3 rqt 图形化工具
5. 数据记录与回放 — ros2 bag
6. 手眼标定(Hand-Eye Calibration)进阶提示
1. 场景说明(手眼坐标变换)
需求:
- 机械臂底座固定在 base_link
- 相机固定在机械臂末端 camera_link
- 相机通过视觉识别得到瓶子在相机坐标系下的位姿 bottle_link
- 需要计算瓶子相对于机械臂底座 base_link 的位姿,才能控制机械臂抓取
已知固定变换(静态):
