ROS中的TF坐标变换

        坐标变换是机器人系统中常用的基础功能,ROS中的坐标变换系统由TF功能包维护。一个机器人系统通常有很多三维坐标系,而且会随时间的推移发生变化,如世界坐标系(World Frame)、基坐标系(Base Frame)、机械爪坐标系(Gripper Frame)、机器人头部坐标系(Head Frame)等。而TF功能包则可以让用户随时间跟踪多个坐标系,以时间为轴跟踪这些坐标系(默认10s以内)。

        TF功能包的作用?

                5秒钟之前,机器人头部坐标系相对于全局坐标系的关系是什么样的?

                机器人夹取的物体相对于机器人中心坐标系的位置在哪里?

                机器人中心坐标系相对于全局坐标系的位置在哪里?

        TF如何使用?

                监听TF变换

                广播TF变换

TF工具:

        tf_monitor        打印TF树中所有坐标系的发布状态,也可以通过输入参数来查看指定坐标系之间的发布状态

                查看TF树中所有坐标系的发布状态

$ tf_monitor

                 查看指定坐标系之间的发布状态

$ tf_monitor <source_frame> <target_frame>

        tf_echo        查看指定坐标系之间的变换关系

$ tf_echo <source_frame> <target_frame>

        static_transform_publisher        发布两个坐标系之间的静态坐标变换,这两个坐标系不发生相对位置变化,在命令中需要设置坐标的偏移参数和旋转参数,偏移参数都是使用相对于x、y、z三轴的坐标偏移;而旋转参数在第一种命令格式中是使用以弧度为单位的yaw/pitch/roll角度,在第二种命令格式中是使用四元数表达旋转角度。发布频率以ms为单位。

$ static_transform_publisher x y z yaw pitch roll frame_id child_frame_id period_in_ms
$ static_transform_publisher x y z qx qy qz qw frame_id child_frame_id period_in_ms

         view_frames        是可视化的调试工具,可以生成pdf文件,显示整棵TF树的信息

$ rosrun tf view_frames

下面举个乌龟例程中的TF来说明一下:

        1.安装该例程的功能包turtle-tf

$ sudo apt-get install ros-kinetic-turtle-tf

        2.通过roslaunch来启动我们要运行的关于海龟跟随的指令

$ roslaunch turtle_tf turtle_tf_demo.launch

        3.启动键盘控制节点

$ rosrun turtlesim turtle_teleop_key

        4.查看系统中整个tf的数据结构,会生成一个pdf文件在该路径下

$ rosrun tf view_frames

        5.使用tf_echo工具可以在TF工具树中查找乌龟坐标系之间的变换关系

$ rosrun tf tf_echo turtle1 turtle2

        6.可以通过rviz的图形界面更加形象的看到这三者之间的坐标关系

$ rosrun rviz rviz -d `rospack find turtle_tf`/rviz/turtle_rviz.rviz

如何实现一个tf广播器

        定义TF广播器(TransformBroadcaster)

        创建坐标变换值

        发布坐标变换(sendTransform)

如何实现一个tf监听器

        定义TF监听器(TransformListener)

        查找坐标变换(waitForTransform、lookupTransform)

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值