参考资源:

tf2资源:

官网:http://wiki.ros.org/tf2
http://wiki.ros.org/tf2/Tutorials
API: http://docs.ros.org/jade/api/tf2/html/index.html

在tf2系统中,将包分为tf2和tf2_ros,前者用来进行坐标变换等具体操作,tf2_ros则负责与ROS消息打交道,负责发布tf或订阅tf,即发布者和订阅者是在tf2_ros命名空间下的。
ROS中广播和监听的tf2消息类型是tf2_msgs::TFMessage,其本质是

geometry_msgs/TransformStamped类型的向量形式
geometry_msgs/TransformStamped[] transformsstd_msgs/Header headeruint32 seqtime stampstring frame_idstring child_frame_idgeometry_msgs/Transform transformgeometry_msgs/Vector3 translationfloat64 xfloat64 yfloat64 zgeometry_msgs/Quaternion rotationfloat64 xfloat64 yfloat64 zfloat64 w

tf2_ros wiki:http://wiki.ros.org/tf2_ros?distro=melodic
tf2_ros API: http://docs.ros.org/kinetic/api/tf2_ros/html/c++/

广播tf2:

#include <tf2_ros/transform_listener.h>
#include <tf2_geometry_msgs/tf2_geometry_msgs.h>
#include <geometry_msgs/TransformStamped.h>
#include <geometry_msgs/PointStamped.h>static tf2_ros::TransformBroadcaster br;geometry_msgs::TransformStamped transformStamped;transformStamped.header.stamp = ros::Time::now();transformStamped.header.frame_id = "world";transformStamped.child_frame_id = turtle_name;transformStamped.transform.translation.x = msg->x;transformStamped.transform.translation.y = msg->y;transformStamped.transform.translation.z = 0.0;tf2::Quaternion q;q.setRPY(0, 0, msg->theta);transformStamped.transform.rotation.x = q.x();transformStamped.transform.rotation.y = q.y();transformStamped.transform.rotation.z = q.z();transformStamped.transform.rotation.w = q.w();br.sendTransform(transformStamped);

监听tf2:

使用tf2消息的大部分工作通过tf2_ros::Buffer类完成,其通过tf2_ros::TransformListener完成对tf2_ros::Buffer类的初始化和构造,并订阅相应tf消息,后续操作都是用的tf2_ros::Buffer类的成员函数完成:

#include <tf2_ros/transform_listener.h>
#include <tf2_geometry_msgs/tf2_geometry_msgs.h>
#include <geometry_msgs/TransformStamped.h>
#include <geometry_msgs/PointStamped.h>
....
tf2_ros::Buffer tfBuffer;tf2_ros::TransformListener tfListener(tfBuffer);ros::Rate rate(10.0);while (node.ok()){geometry_msgs::TransformStamped transformStamped;try{transformStamped = tfBuffer.lookupTransform("turtle2", "turtle1",ros::Time(0), ros::Duration(3.0));geometry_msgs::PointStamped world, velo_link;tfBuffer.transform<geometry_msgs::PointStamped>(world, velo_link, "velo_link", ros::Duration(1.0));}catch (tf2::TransformException &ex) {ROS_WARN("%s",ex.what());ros::Duration(1.0).sleep();continue;}}

数据类型变换:


https://answers.ros.org/question/261419/tf2-transformpose-in-c/
https://answers.ros.org/question/95791/tf-transformpoint-equivalent-on-tf2/

点云转换:


https://github.com/lucasw/transform_point_cloud

ROS之tf2坐标转换包相关推荐

  1. ros之TF坐标转换

    ros之TF坐标转换 1.c++ demo01_turtle1.cpp #include <iostream> #include <ros/ros.h> #include &l ...

  2. 【机器人操作系统】ROS工作空间及功能包的创建

    ROS工作空间及功能包的创建 摘要: 总结ROS工作空间及功能包的创建的具体步骤及命令: 工作空间/功能包的创建的步骤大同小异: step1.创建工作空间/功能包: step2.编译工作空间/功能包: ...

  3. 四.卡尔曼滤波器(EKF)开发实践之四: ROS系统位姿估计包robot_pose_ekf详解

    本系列文章主要介绍如何在工程实践中使用卡尔曼滤波器,分七个小节介绍: 一.卡尔曼滤波器开发实践之一: 五大公式 二.卡尔曼滤波器开发实践之二:  一个简单的位置估计卡尔曼滤波器 三.卡尔曼滤波器(EK ...

  4. ros --- 录制imu bag包 和 imu标定

    ros --- base notes ( tf ...) 1. ros 录制imu bag包 2. imu标定 创建 launch 文件 1. ros 录制imu bag包 rosbag 指令 ros ...

  5. ROS系列——image-transport功能包没有发布compressed图像Topic的原因

    ROS系列--image-transport功能包没有发布compressed图像Topic的原因 说明 解决 说明 自己开发了摄像头图像发布节点,但是运行节点发现只有image_transportd ...

  6. ROS系列——mavros功能包中常用话题和服务介绍,包括消息名称、类型、头文件、成员变量、示例代码

    ROS系列--mavros功能包中常用话题和服务介绍,包括消息名称.类型.头文件.成员变量.示例代码 官方链接 常用话题 订阅 1.1 系统状态 1.2 GPS数据 1.3 本地位置 1.4 三轴速度 ...

  7. ros中使用serial包实现串口通信

    一.Ubuntu下的串口助手cutecom 1.安装cutecom并打开: sudo apt-get install cutecom sudo cutecom 2.查看电脑链接的串口信息(名称): d ...

  8. ubuntu 20.04 ROS Noetic 无serial包解决方法

    ubuntu 20.04 ROS Noetic 无serial包解决方法 在ros-noetic版本之前的ros-kinetic或者ros-meldic版本,进行串口通信的时候可以采用 sudo ap ...

  9. ROS学习——tf2

    一.TF2简介 Since ROS Hydro, tf has been "deprecated" in favor of tf2. tf2 is an iteration on ...

最新文章

  1. Dynamic Setting ImageUrl In DataPager
  2. 浅谈电量传感器在数据中心的UPS电源中的应用
  3. Centos 7 安装NodeJS开发环境
  4. Spring注解开发-初始化/销毁方法注解
  5. 多重背包单调队列优化思路_动态规划入门——多重背包与单调优化
  6. 网关 Spring Cloud Gateway
  7. linux redis-4.0,Linux Redis 4.0.2 安装部署
  8. python中number函数_Python 数字(Number)
  9. Bootstrap 可切换的标签导航
  10. 解析对偶理论与对偶单纯性法
  11. 若依(RuoYi)如何不登录直接访问?
  12. LTE下行资源分配方式
  13. Linux快捷方式There was an error launching the application
  14. 暑假教师计算机培训总结,关于暑期教师信息技术培训总结范文
  15. 【Fracturing amp; Destruction】Unity3D的物体爆裂、炸裂、碎裂效果
  16. D3.js从入门指南
  17. C primer plus编程练习-第7章
  18. img文件制作linux启动u盘,如何在Linux系统中制作可启动img/iso镜像文件
  19. 5.1再次优化httpserver
  20. 《被讨厌的勇气》- 一切烦恼都来自人际关系

热门文章

  1. 基于Matlab的图像几何变换实现
  2. c语言精确线搜索抛物线法,一维迭代搜索(黄金分割法抛物线法).ppt
  3. ngnix有版本要求吗_魔兽世界:暴雪疯了?新版本老玩家遭重大削弱,这是逼人AFK?...
  4. Spring中AOP实现
  5. matlab中的脚本与函数、自相关函数corr,xcorr,corrcoef的应用
  6. 区块链软件开发公司谈区块链为什么被大众所接受
  7. 作为测试人员,从哪几个方面保证产品质量呢
  8. 查办总统丑闻的韩国检方受到黑客攻击
  9. 产品力品牌力双重加码,育润羊奶粉新品强势来袭
  10. 即将开源,码晒客/疯狂创意二维码,个性二维码底层。