feat(level1): ROS2 完全体 12 包 / 80 测试 / 23 文档 / 工程化 / Docker 分组
This commit is contained in:
@@ -0,0 +1,62 @@
|
||||
# cpp_robot_tf2
|
||||
|
||||
ROS2 URDF + TF2 + JointState 演示包(C++)。属于 Level 1 基础机制第 5-6 块。
|
||||
|
||||
## 功能
|
||||
|
||||
- **`joint_state_publisher_cpp`**: 周期性发布 3 关节(模拟正弦运动)到 `/joint_states`
|
||||
- **`tf2_listener_cpp`**: 订阅 TF,查询 `gripper` 在 `base_link` 下的位姿
|
||||
- **`simple_arm.urdf`**: 3 关节 + gripper 链式机械臂模型
|
||||
|
||||
## 关键概念
|
||||
|
||||
| 概念 | 用途 |
|
||||
|---|---|
|
||||
| `sensor_msgs/JointState` | 关节状态(name/position/velocity/effort) |
|
||||
| `robot_state_publisher` | ROS2 系统包:URDF + `/joint_states` → `/tf` |
|
||||
| `tf2_ros::Buffer` + `TransformListener` | TF 缓冲 + 监听 |
|
||||
| `lookupTransform` | 查 frame 间变换 |
|
||||
| URDF `<joint type="revolute">` | 有限位转动关节 |
|
||||
|
||||
## 运行
|
||||
|
||||
```bash
|
||||
# 一键启动(URDF + JointState + robot_state_publisher + TF listener)
|
||||
ros2 launch cpp_robot_tf2 robot_tf2_launch.py
|
||||
|
||||
# 看 TF 树
|
||||
ros2 run tf2_tools view_frames
|
||||
|
||||
# 实时查 gripper 在 base_link 下位姿
|
||||
ros2 run tf2_ros tf2_echo base_link gripper
|
||||
|
||||
# 看 /tf 频率
|
||||
ros2 topic hz /tf
|
||||
```
|
||||
|
||||
## 测试
|
||||
|
||||
```bash
|
||||
colcon test --packages-select cpp_robot_tf2
|
||||
```
|
||||
|
||||
测试覆盖(在 `test/test_tf2_lookup.cpp`):
|
||||
|
||||
| 用例 | 内容 |
|
||||
|---|---|
|
||||
| `ConstructsWithDefaults` | 节点名 + 默认参数 |
|
||||
| `PublisherExistsOnJointStates` | publisher 已创建 |
|
||||
| `TimerCreated` | 定时器已创建 |
|
||||
| `TimerCallbackPublishes` | spin 1s 不崩溃 |
|
||||
|
||||
## 深度学习
|
||||
|
||||
- 编程规范:[`doc/CODING_STYLE.md`](../doc/CODING_STYLE.md) §3
|
||||
- TF2 深度:[`doc/50-tf2.md`](../doc/50-tf2.md)
|
||||
- URDF 深度:[`doc/60-urdf.md`](../doc/60-urdf.md)
|
||||
|
||||
## 进阶(下一阶段)
|
||||
|
||||
- 加 `<transmission>` 标签 → 接入 ros2_control
|
||||
- 加 `<gazebo>` 标签 → 接入 Gazebo 仿真
|
||||
- 用 xacro 写参数化 URDF → 支持多种尺寸机械臂
|
||||
Reference in New Issue
Block a user