ROS2 实战 | 手写 TF2 海龟实时坐标广播器(含完整避坑指南)
摘要:本文从零实现一个 ROS2 Python 节点,实时订阅 turtlesim 海龟位姿并广播 TF 坐标变换。重点修正了官方教程中常见的 Odometry/Pose 混用、
__name__入口错误、--symlink-install开发技巧等高频踩坑点,附完整可运行代码与调试命令。
一、环境准备
确保已安装 ROS2 Jazzy 及依赖:
sudoaptupdatesudoaptinstallros-jazzy-turtlesim ros-jazzy-tf-transformations ros-jazzy-tf2-tools每次打开新终端需先 source 环境:
source/opt/ros/jazzy/setup.bash二、创建功能包
mkdir-p~/ros2_ws/srccd~/ros2_ws/src ros2 pkg create --build-type ament_python turtle_tf2_broadcaster\--dependenciesrclpy geometry_msgs tf2_ros tf2_ros_py tf_transformations避坑1:不需要nav_msgs。turtlesim 发布的是turtlesim.msg.Pose,不是Odometry。
三、编写广播器节点
cd~/ros2_ws/src/turtle_tf2_broadcaster/turtle_tf2_broadcasternanoturtle_tf2_broadcaster.py完整代码:
importrclpyfromrclpy.nodeimportNodefromgeometry_msgs.msgimportTransformStampedfromturtlesim.msgimportPoseimporttf2_rosimportmathdefquaternion_from_euler(ai,aj,ak):ai/=2.0aj/=2.0ak/=2.0ci=math.cos(ai)si=math.sin(ai)cj=math.cos