feat(level1): ROS2 完全体 12 包 / 80 测试 / 23 文档 / 工程化 / Docker 分组

This commit is contained in:
xs
2026-08-04 10:19:47 +08:00
parent 5ef38ab508
commit 549d6b337e
141 changed files with 8949 additions and 1594 deletions
+62
View File
@@ -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 → 支持多种尺寸机械臂