学习ros-turtle-TF坐标转换与roslaunch的编写

在机器人系统中,我们经常会遇到坐标变换相关的问题。比如说,在一个导航系统中,我们通过激光雷达、双目摄像头等传感器对周围环境进行感知,但是这些传感器直接采集的数据是相对于传感器而言的, 而传感器在机器人身上的安装位置又各不相同,我们关心的则是外部环境与机器人本体之间的关系,所以还需要把相对于传感器的数据变换成为相对于机器人的数据。这个过程就是所谓的坐标变换。

如果涉及到多个机器人之间的协同工作,则需要维护两两之间的相对位置关系,在机器人很多的情况下,或者说是自由度很多的情况下,这种坐标系之间的变换关系就相对比较复杂。 ROS系统提供了一个叫做tf的坐标变换库,这个库使得我们能够在各种坐标系之间自由地切换。

在ROS中有一个turtle的例子,一个通过键盘控制turtle1跑,另外一个turtle2跟在turtle1后面,跟随其坐标进行跟踪。

这是:官方例子

这一过程就是通过tf来实现的。一个tf系统由tf广播者(tf broadcaster)和tf监听者(tf listener)两个部分构成的。这里的白龟(turtle1)和红龟(turtle2)就是两个tf广播者,它们不断的向外发送自己相对于世界坐标系的位置(也就是自己坐标系的原点在世界坐标系下的位置)。这里的是广播,所以所有的都会接收到他们发送的。
另外有一个监听者负责维护两个乌龟的坐标系,通过tf的API系统计算白龟(turtle1)相对红龟(turtle2)的位置,并控制红龟(turtle2)跟踪白龟(turtle1)。为了跟随,就需要知道turtle1相对于turtle2的坐标位置,也就是说turtle1的坐标原点在turtle2下的位置,也就是说turtle1在turtle2下的位置

官方broadcaster例子C++版

创建功能包及其依赖
catkin_create_pkg learning_tf tf roscpp rospy turtlesim

broadcaster.cpp,我们发布的节点就是通过这个来广播自己在世界坐标系的位置

//这里有我们访问master的接口
#include <ros/ros.h>     

//提供了tf广播的各种API 后面的listen就是根据这个来的
#include <tf/transform_broadcaster.h>   

//turtlesim是一个依赖包,里面有将要订阅pose主题的消息类型
#include <turtles
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值