ROS 机器人技术 - 静态 TF 坐标帧

本文介绍了在ROS项目中如何应用静态TF坐标转换,包括在建图时手动发布静态TF的步骤,以及如何编写自己的静态TF发布者。通过示例展示了创建静态TF发布程序的过程,并强调实际操作中应使用ROS提供的工具。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

上次总结了 ROS 机器人技术 - TF 坐标系统基本概念,这次学习下如何发布静态坐标转换,静态 TF 官方教程在这里

一、我在项目中应用 TF 的方法

先说下这个静态坐标转换在我项目中的应用,我在建图的时候需要一个 rslidar -> world 的 TF 变换,但是系统 TF 树中只有师兄 lego_loam 的 base_link -> world的转换,所以为了获取 rslidar -> world,我用 Kinetic 提供的工具手动发布了一个静态的 TF:

# 欧拉角
rosrun tf2_ros static_transform_publisher x y z yaw pitch roll frame_id child_frame_id
# 四元数
rosrun tf2_ros static_transform_publisher x y z qx qy qz qw frame_id child_frame_id

我用的第一种参数类型,因为我只是想要 rslidar -> world 的变换存在,不需要真实的旋转和平移,所以我把 6 个转换参数都设置为 0:

rosrun tf2_ros static_transform_publisher 0 0 0 0 0 0 base_link rslidar

这样我就能在系统中找到 rslidar -> world 了,但是这句话是在命令行中运行的,每次测试都要运行一遍很麻烦,所以我把上面这句加到我的 launch 中,跟测试的节点一同启动:

<launch>
  <!-- 其他节点 -->
    <node pkg="tf2_ros" type="static_transform_publisher" name="dlonng_static_transform_publisher" args="0 0 0 0 0 0 base_link rslidar" />
</launch>

以上就是这一节静态的 TF 帮我完成的工作,下面就带你手动实现一个静态 TF 发布程序,实际使用的时候不用自己写,直接使用已经提供的 static_transform_publisher 即可。

二、自己编写静态 TF 发布者

先在你的工作空间创建一个 learning_tf2 包,记得 source devel/setup.zsh

catkin_create_pkg learning_tf2 tf2 tf2_ros roscpp rospy turtlesim

然后进入这个包中,如果已经知道包名且环境变量也 source<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值