ROS坐标系统,常见的坐标系和其含义
常见的坐标系
在使用ROS进行定位导航等操作时,我们经常会遇到各种坐标系。每种坐标系都有明确的含义。理论上坐标系的名称可以是随意的,但是为了方便不同的软件间共享坐标信息,ROS定义了几个常见的坐标系。
1.base_link
base_link
坐标系和机器人的底盘直接连接。其具体位置和方向都是任意的。对于不同的机器人平台,底盘上会有不同的参考点。不过ROS也给了推荐的坐标系取法。
x 轴指向机器人前方
y 轴指向机器人左方
z 轴指向机器人上方
2.odom
odom
是一个固定在环境中的坐标系也就是world-fixed。它的原点和方向不会随着机器人运动而改变。但是odom的位置可以随着机器人的运动漂移。漂移导致odom
不是一个很有用的长期的全局坐标。然而机器人的odom
坐标必须保证是连续变化的。也就是在odom
坐标系下机器人的位置必须是连续变化的,不能有突变和跳跃。
在一般使用中odom
坐标系是通过里程计信息计算出来的。比如轮子的编码器或者视觉里程计算法或者陀螺仪和加速度计。odom
是一个短期的局域的精确坐标系。但是却是一个比较差的长期大范围坐标。
3.map
map
和odom
一样是一个固定在环境中的世界坐标系。map
的z轴是向上的。机器人在map
坐标系下的坐标不应该随着时间漂移。但是map
坐标系下的坐标并不需要保证连续性。也就是说在map坐标系下机器人的坐标可以在任何时间发生跳跃变化。
一般来说map
坐标系的坐标是通过传感器的信息不断的计算更新而来。比如激光雷达,视觉定位等等。因此能够有效的减少累积误差,但是也导致每次坐标更新可能会产生跳跃。
map
坐标系是一个很有用的长期全局坐标系。但是由于坐标会跳跃改变,这是一个比较差的局部坐标系(不适合用于避障和局部操作)。
坐标系的约定
在非结构化的环境中(比如开放环境),如果我们要定义一个全球坐标系
- 默认的方向要采用 x轴向东,y轴向北,z轴向上
- 如果没有特殊说明的话z轴为零的地方应该在WGS84椭球上(WGS84椭球是一个全球定位坐标。大致上也就是z代表水平面高度)
如果在开发中这个约定不能完全保证,也要求尽量满足。比如对于没有GPS,指南针等传感器的机器人,仍然可以保证坐标系z轴向上的约定。如果有指南针传感器,这样就能保证x和y轴的初始化方向。
坐标系之间的关系
坐标系之间的关系可以用树图的方式表示。每一个坐标系只能有一个父坐标系和任意多个子坐标系。
earth -> map -> odom -> base_link
按照之前的说明,odom
和map
都应该连接到base_link
坐标系。但是这样是不允许的,因为每一个坐标系只能有一个父坐标系。
额外的中间坐标系
这个图只表示了最少的坐标系。在保证基本的结构不变的情况下可以在其中加入中间的坐标系以提供额外的功能。
earth --> map_1 --> odom_1 --> base_link1
earth --> map_2 --> odom_2 --> base_link2
坐标系变换的计算
odom
到base_link
的变换由里程计数据源中的一个发布
map
到base_link
通过定位组件计算得出。但是定位组件并不发布从map
到base_link
的变换。它首先获取odom
到base_link
的变换然后利用定位信息计算出map
到odom
的变换。
earth
到map
的变换是根据map
坐标系选取所发布的一个静态变换。如果没有设置,那么就会使用机器人的初始位置作为坐标原点。
Map之间的切换
ROS坐标系统,常见的坐标系和其含义相关推荐
- ROS中常见坐标系定义及基本单位
为了方便开发者代码复用,ROS中统一定义了常见的坐标系(REP),所有的坐标系都是右手坐标系. 1. map --固定的世界坐标系,z轴垂直向上.在map中表示的移动平台的pose是没有drift,没 ...
- ROS系统实现 tf坐标系广播与监听
安装Ros中 tf 相关功能包 sudo apt-get install ros-melodic-turtle-tf 启动launch文件,这个launch文件相当于一个脚本,可以一次性启动很多节点 ...
- LaTeX中常见的宏包及其含义
LaTeX中常见的宏包及其含义 宏包 含义 metalogo 特殊符号和预定义字符串 mflogo 特殊符号和预定义字符串 texnames 特殊符号和预定义字符串 ulem 字体修饰 identfi ...
- 【XYZ】常见三维坐标系约定图结
序 三维接触时间长了会慢慢发现,不同的引擎.建模软件.库对坐标系的约定各不相同. 本篇总结了本人目前接触到的一些常见软件和库的坐标系,直接给出截图,希望能达到直观的速查表效果. 左右手坐标系判定标准: ...
- 地图坐标系统(各种坐标系详解)
作者:EasyV数字孪生可视化 链接:https://www.zhihu.com/question/277520588/answer/2526778212 来源:知乎 著作权归作者所有.商业转载请联系 ...
- ROS入门-16.tf坐标系广播与监听的编程实现
介绍这两只海龟跟随背后的原理,怎样通过tf坐标系来完成广播与监听的编程实现 第一步,创建功能包learning_tf cd ~/catkin_ws/src 在工作空间src下进入终端 catkin_c ...
- 常见地图坐标系以及转换方法、转换工具
l 为什么要进行坐标系转换? 因为国内对地理坐标有特殊的政策,GPS获取的原始坐标不能在互联网上对外提供,所有电子地图必须对位置做偏移处理,这就导致从底层接口得到的坐标展示在地图上会有偏移.这种偏移不 ...
- Python 实现常见的坐标系之间的转换
常见的一些坐标系之间的转换 话不多说,直接上代码 import mathx_pi = 3.14159265358979324 * 3000.0 / 180.0 pi = 3.1415926535897 ...
- ros:如何获得地图坐标系中的某一点的像素坐标
首先加载一张地图作为示例 rosrun map_server map_server xxx.yaml 可以得到如下图的地图信息: 在对应的yaml文件中,存储的信息为: image: a314.pgm ...
最新文章
- 【GStreamer】gstreamer工具详解之:gst-launch-1.0
- SQL学习笔记:库和表的创建
- # C# 学习笔记(4) 类
- 【玩法设计】炉石传说吃鸡竞技场构思
- Flask+nginx负载均衡综合使用
- SpringMVC配置项学习笔记
- typora 公式对齐_都0202年了还不会用 Typora——看Typora使用教程这篇就够了
- Lua开发工作笔记0001---什么是热更新为什么要热更
- 5817. 【NOIP提高A组模拟2018.8.15】 抄代码
- linux定时执行任务命令,crontab(linux下定时执行任务命令)
- PHP百度收录量查询接口源码,百度收录量API查询PHP源码
- bag of word C++图像批量读写
- AutoCAD如何将dwf转成dwg格式
- Windows 7硬盘安装工具 NT6 HDD Installer v3.0(含图文教程)
- win10计算机历史记录,教你win10如何查看电脑开机历史记录
- 第一课:电极的安放位置和测量
- SEO专用虚拟主机横空出世
- matlab中ode指令,[转载]MATLAB中ODE的使用
- 【IOS】《捕鱼达人》的简单实现(一)
- PhpSpreadsheet中文文档 | Spreadsheet操作教程实例
热门文章
- css用hover制作下拉菜单
- java- WatchService监控
- 类的 三大特性 封装,继承,多态 overload与override的区别
- spring 4.0 JUnit简单的Dao,Service测试
- 软件工程——理论、方法与实践 第一章
- HDU 4403 A very hard Aoshu problem DFS
- python利用有道词典翻译_使用Python从有道词典网页获取单词翻译
- python卸载opencv_20.Windows python,opencv的安装与卸载
- 文件服务器上传文件的过程,文件服务器上传文件实现过程【分享】
- 多个html如何套用套一个头部,Vue.js项目中管理每个页面的头部标签的两种方法...