在开发的过程中,通常会遇到坐标转换的问题,比如从传感器坐标系src,到车体坐标系ref。通常可以分为3步:
第一步:监听TF

bool getTF(const ros::Time&query_time,const std::string& ref,const std::string& src,tf::StampedTransform& transform)
{try {tf::TransformListener* tf_=new tf::TransformListener();tf_->waitForTransform(ref,src,query_time,ros::Duration(0.01));tf_->.lookupTransform(ref,src,query_time,transform);return true;} catch (tf::TransformException &ex) {return false;}
}

第二步:tf::StampedTransform => Eigen::Matrix4f 转换

bool TFListener::TransformToMatrix(const tf::StampedTransform& transform, Eigen::Matrix4f& transform_matrix)
{Eigen::Translation3f tl_btol(transform.getOrigin().getX(), transform.getOrigin().getY(), transform.getOrigin().getZ());double roll, pitch, yaw;tf::Matrix3x3(transform.getRotation()).getEulerYPR(yaw, pitch, roll);Eigen::AngleAxisf rot_x_btol(roll, Eigen::Vector3f::UnitX());Eigen::AngleAxisf rot_y_btol(pitch, Eigen::Vector3f::UnitY());Eigen::AngleAxisf rot_z_btol(yaw, Eigen::Vector3f::UnitZ());transform_matrix = (tl_btol * rot_z_btol * rot_y_btol * rot_x_btol).matrix();return true;
}

第三步:坐标变换,以点云为例。
将source_cloud经过transform_matrix转换矩阵得到新的点云filtered_pc

pcl::PointCloud<pcl::PointXYZI>::Ptr filtered_pc(new pcl::PointCloud<pcl::PointXYZI>)
pcl::tranformPointCloud(*source_cloud,*filtered_pc,transform_matrix);

当然这里只是其中一种针对点云批量转换的写法,如果只是想转换传感器坐标系下的一个点(比如传感器坐标系下的一个障碍物),可以直接通过transform进行转换,也可以通过数学坐标变换关系完成。下一节会对这两种方式作介绍。

数据预处理(17)_坐标转换,tf::StampedTransform =」 Eigen::Matrix4f相关推荐

  1. 数据预处理工具_数据预处理

    数据预处理工具 As the title states this is the last project from Udacity Nanodegree. The goal of this proje ...

  2. 数据预处理 泰坦尼克号_了解泰坦尼克号数据集的数据预处理

    数据预处理 泰坦尼克号 什么是数据预处理? (What is Data Pre-Processing?) We know from my last blog that data preprocessi ...

  3. 数据预处理--噪声_为什么数据对您的业务很重要-以及如何处理数据

    数据预处理--噪声 YES! Data is extremely important for your business. 是! 数据对您的业务极为重要. A human body has five ...

  4. spss数据预处理步骤_数学建模准备必备的十个数据分析软件(数学建模从入门到精通)...

    前几天咋们聊了很多关于数学建模的干货,比如怎么样去前期准备学习数学建模,又比如数学建模需要哪些疾病软件?再比如数学建模论文摘要写作技巧.昨天那篇更是直接把数学建模常用的思维导图.流程图软件全部统统介绍 ...

  5. python数据预处理案例_对pandas进行数据预处理的实例讲解

    参加kaggle数据挖掘比赛,就第一个赛题Titanic的数据,学习相关数据预处理以及模型建立,本博客关注基于pandas进行数据预处理过程.包括数据统计.数据离散化.数据关联性分析 引入包和加载数据 ...

  6. 数据挖掘中数据预处理方法_数据挖掘中的数据预处理

    数据挖掘中数据预处理方法 In the previous article, we have discussed the Data Exploration with which we have star ...

  7. spss数据预处理步骤_数据处理之剔除无效问卷

    我们都知道在数据分析前,首先需要对数据进行预处理,检查数据中是否含有存在无效样本.异常值等.如果同一样本中存在大量漏填数据或相似答案过多的情况这样的样本都应该算作无效样本来处理. 无效样本的常见使用场 ...

  8. 【Eigen和tf中位姿表达方式转换】【tf::StampedTransform】【Eigen::Matrix4f】

    [tf的使用][Eigen和tf中位姿表达方式转换][tf::StampedTransform][Eigen::Matrix4f] 0 前言 1 tf::StampedTransform<--& ...

  9. [Python] 数据预处理(缺失值、异常值、重复值) [相关方法参数说明、代码示例、相关概念]

    前言 系列文章目录 [Python]目录 视频及资料和课件 链接:https://pan.baidu.com/s/1LCv_qyWslwB-MYw56fjbDg?pwd=1234 提取码:1234 文 ...

最新文章

  1. 如何用敏捷消除项目风险?
  2. Spring AOP源码解析(三)—— AOP引入(续)
  3. 剑指 Offer 31. 栈的压入、弹出序列【无取巧,易于理解!】
  4. java的hr样式,spring+spring mvc+mybatis开发java医院HR人事管理系统(加强版本+ shiro)...
  5. 松下年净利润预计降20% 或启动新一轮裁员
  6. 【JVM】第三章 垃圾收集机制
  7. Android7.1 audio 播放流程(三十五)
  8. Windows10临时关闭数字签名认证
  9. c++字节对齐编译器指令#pragma
  10. oracle中jason串,在oracle中使用json
  11. c++利用StretchBlt函数改变CImage输出图片的位置
  12. 给仍在「 选品 」的跨境卖家提个醒!
  13. 什么是抓包?为什么要抓包?
  14. Mysql报错1055
  15. Android系统之制作开机LOGO
  16. C语言求一个整数各个位数之和
  17. PDF页眉页脚删除用什么方法
  18. linux防火墙关闭 重启 开启、防火墙开放端口
  19. LINODE优惠码与服务器搭建
  20. 采样频率和带宽的关系_ADC为什么需要采样保持器(SHA)?

热门文章

  1. gmail怎么发送html,如何通过gmail api for python发送HTML格式的电子邮件
  2. numpy手写mlp
  3. Ubuntu禁用网卡驱动的方法
  4. 数据传输的三种方式--计算机网络
  5. 高防CDN为何可以抵御大规模ddos流量攻击?
  6. java返回不同类型_Java,如果我想从函数中返回不同的类型怎么办?
  7. Python 中的自动点击器——2 种简单易行的方法
  8. 软件测试 怎样 查看日志文件,软件测试技能之查看log日志
  9. 在线快速制作老照片效果-幕末古写真
  10. python中if elif语句优化_在Python中优化ifelif表达式