当前位置: 首页 > news >正文

SLAM中坐标轴旋转及ros的接口解释

        读完几个loam算法,满篇的坐标轴旋转,还是手写的(作者,用eigen写不好嘛。。。),我滴天适应了好久…,今天就总结一下坐标轴旋转问题。

一、首先,我们看一下ros中关于欧拉角旋转的函数:setRPYsetEulersetEulerZYX1、3等价

ros中的欧拉角可以分为绕旋方式)和绕旋方式)的变换方式,函数没有给出Euler时,是按定轴转动,矩阵依次乘。若函数的名字中有Euler,则表示为绕动轴转动的方式,矩阵依次乘。

1.setRPY()

这个函数采用固定轴的旋转方式,先绕定轴x旋转(横滚),然后再绕定轴y (俯仰),最后绕定轴z(偏航)。从数学形式上说,这是绕定轴XYZ矩阵依次左乘.即:R=R(z)R(y)R(x)的顺序。由于是绕着定轴转动,所以很直观,便于人机交互。

2.setEuler()

这种方式是绕着动轴转动,先绕Y轴,在绕变换后的X轴,再绕变换后的Z轴旋转。从数学形式上说,这是绕定轴YXZ矩阵依次右乘.即:R= R(y)R(x)R(z)的顺序。

3.setEulerZYX()

与2相同,此种旋转变换也是绕动轴旋转,只不过次序为ZYX,矩阵也是右乘,即R = R(z)R(y)R(x)。我们发现,这里的R与1中的R的最终结果相同,所以1和3的定义最终是等价的。

总结“外定左,内动右” 。

二、再看,我们定义一个坐标系如下

        欧拉角对于旋转方向的定义:该轴的正向往逆向看去,逆时针方向即为正方向(右手定则)。绕某个轴的单次旋转矩阵:按照机器人前(x)-左(y)-上(z)的坐标系定义,并令横滚角为roll、俯仰角为pitch、航向角为yaw,假设旋转矩阵是按照z-y-x的顺序旋转得来,那么旋转矩阵可以表示为:

,其中theta=roll.

,其中theta=pitch.

 ,其中theta=yaw.

旋转矩阵的记法:

(还是不理解可以去b站,搜索一个中国台湾的老师讲解的课程,相当清晰!·)

三、ros的tf监听、发布及显示

        tf_tree树中的箭头表示父子坐标系,上面为父坐标系,下面为子坐标系,显示的是坐标系变换之间的关系;

        rviz界面显示的是坐标变换的关系;(左侧添加tf插件:层次也是与tf_tree一致)。

        ros的监听/发布接口解释:

==》:  a系到b系的坐标系变换;等价==》b在a下的坐标及姿态描述;

              a系到b系的坐标系变换;等价==》b系到a系的坐标变换,so

              a系到b系的坐标变换;等价==》a在b下的坐标及姿态描述。

------------------------------------------------------------可爱的分割线

        这篇写完(这篇草稿已经是去年10月份左右了,拖着拖着还是觉得写完吧),对激光slam的工作可能会放一段落了,研究生进程过一大半了要准备投简历找工作咯!不知道以后还有没有接触SLAM的机会。祝大家在SLAM道路上一帆风顺!

http://www.lryc.cn/news/2399.html

相关文章:

  • 文件管理(9)
  • PyTorch学习笔记:nn.TripletMarginLoss——三元组损失
  • 冒泡排序详解
  • git极快上手指南超级精简版
  • 蓝桥杯-最长公共子序列(线性dp)
  • GO的并发模式Context
  • 《Redis实战篇》六、秒杀优化
  • 《C++ Primer Plus》第16章:string类和标准模板库(11)
  • 声明和定义
  • Python获取最小路径,查找元素在list中的坐标
  • 数据采集协同架构,集成马扎克、西门子、海德汉、广数、凯恩帝、三菱、海德汉、兄弟、哈斯、宝元、新代、发那科、华中各类数控以及各类PLC数据采集软件
  • Allegro172版本如何用自带的功能实现快速在1MMBGA下方等距放置电容
  • 一种简单的统计pytorch模型参数量的方法
  • 【PyTorch】教程:对抗学习实例生成
  • 中国区使用Open AI账号试用Chat GPT指南
  • STM32开发(9)----CubeMX配置外部中断
  • Nextjs了解内容
  • 从事功能测试1年,裸辞1个月,找不到工作的“我”怎么办?
  • 机器学习基本原理总结
  • JVET-AC0315:用于色度帧内预测的跨分量Merge模式
  • Session与Cookie的区别(二)
  • 疫情开发,软件测试行情趋势是怎么样的?
  • Java中间件描述与使用,面试可以用
  • [OpenMMLab]AI实战营第七节课
  • 面向对象的设计模式
  • 里氏替换原则|SOLID as a rock
  • 【C++】右左法则,指针、函数与数组
  • 打通数据价值链,百分点数据科学基础平台实现数据到决策的价值转换 | 爱分析调研
  • C++之多态【详细总结】
  • ThingsBoard-RPC