Files
ROS2_learn/src/cpp_robot_tf2/README.md
T

1.7 KiB

cpp_robot_tf2

ROS2 URDF + TF2 + JointState 演示包(C++)。属于 Level 1 基础机制第 5-6 块。

功能

  • joint_state_publisher_cpp: 周期性发布 3 关节(模拟正弦运动)到 /joint_states
  • tf2_listener_cpp: 订阅 TF,查询 gripperbase_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"> 有限位转动关节

运行

# 一键启动(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

测试

colcon test --packages-select cpp_robot_tf2

测试覆盖(在 test/test_tf2_lookup.cpp):

用例 内容
ConstructsWithDefaults 节点名 + 默认参数
PublisherExistsOnJointStates publisher 已创建
TimerCreated 定时器已创建
TimerCallbackPublishes spin 1s 不崩溃

深度学习

进阶(下一阶段)

  • <transmission> 标签 → 接入 ros2_control
  • <gazebo> 标签 → 接入 Gazebo 仿真
  • 用 xacro 写参数化 URDF → 支持多种尺寸机械臂