ROS中/odom,/map,/base_link几个坐标系的含义:从ROS的REP105严谨介绍

2023-11-01 03:28

本文主要是介绍ROS中/odom,/map,/base_link几个坐标系的含义:从ROS的REP105严谨介绍,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

这两日看lego-loam,其中的坐标系定义很混乱。
在lego-loam的一个issue中,作者指出他坐标系定义是完全按照ROS的REP103和105的建议的。
然后又看到了关于/odom, /map, /base_link 几个坐标系的含义的说明,因此整理一下。

关于ROS的REP

关于REP:https://ros.org/reps/rep-0000.html

The REP contains the index of all ROS Enhancement Proposals, known as REPs. REP numbers are assigned by the REP Editor, and once assigned are never changed.

简单来说,REP是对ROS的一些提议,即某些人建议对这些问题这样操作。

REP103 测量和坐标系习惯

REP103: Standard Units of Measure and Coordinate Conventions

简要概括:
传感器坐标系采用:x-前,y-左,z-上
用于地理定位的短距离笛卡尔坐标系:东北天坐标系
光学传感器:z-前,x-右,y-下

REP105 移动机器人平台坐标系定义

REP105 Coordinate Frames for Mobile Platforms

移动机器人建议有这么几个坐标系:

  • /base_link:与移动机器人基座固连的坐标系,建议采用REP103的方式进行定义。
  • /odom:与world固定的一个frame

The coordinate frame called odom is a world-fixed frame. The pose of a mobile platform in the odom frame can drift over time, without any bounds. This drift makes the odom frame useless as a long-term global reference. However, the pose of a robot in the odom frame is guaranteed to be continuous, meaning that the pose of a mobile platform in the odom frame always evolves in a smooth way, without discrete jumps.
In a typical setup the odom frame is computed based on an odometry source, such as wheel odometry, visual odometry or an inertial measurement unit.
The odom frame is useful as an accurate, short-term local reference, but drift makes it a poor frame for long-term reference.

  • /map:z轴向上的、与world固定的一个frame

The coordinate frame called map is a world fixed frame, with its Z-axis pointing upwards. The pose of a mobile platform, relative to the map frame, should not significantly drift over time. The map frame is not continuous, meaning the pose of a mobile platform in the map frame can change in discrete jumps at any time.
In a typical setup, a localization component constantly re-computes the robot pose in the map frame based on sensor observations, therefore eliminating drift, but causing discrete jumps when new sensor information arrives.
The map frame is useful as a long-term global reference, but discrete jumps in position estimators make it a poor reference frame for local sensing and acting.

其中,关于/odom和/map两个坐标系的看起来很复杂,因此深入探究一下。

关于/odom和/map两个坐标系

核心区别:
odom坐标系是机器人移动过程中里程计(例如IMU、轮式编码器)参考的坐标系,其初始时刻一般设定为原点、无旋转。但由于数据存在错误(例如轮式编码器打滑)、或漂移(IMU的漂移),odom系下/base_link的坐标并不能直接用于导航,而是需要转到/map系下。

如果采用了其他定位系统(localization system),例如GPS数据,在map系下的坐标会发生纠正/校准/跳变。因此,可以认为,/odom系到/map系的变化通过定位系统不断纠正。即定位系统提供一个从 /map-> /odom 的 tf [2]。

所以,可以有以下一些理解:

  • 如果满足:1. 设定/odom初始时刻即为/map,即重合。且,2. 用于/odom定位的传感器没有漂移。则/odom和/map系一直是重合的。
  • 或者:如果传感器没有漂移,则/odom和/map永远差一个恒定的变化,即初始时刻的变化。/map的定义建议参考REP103,例如东北天。
  • 当然,也可以这么说:/odom+一些离散传感器(例如GPS)的数据(比如用KEF后),得到了/map下的坐标,因此/map下的位子变化是离散的,而/odom是连续的。

那么,/odom系有什么用呢?
[3]指出:如果你需要一个control system,一般需要对象是连续的,因此 /odom 系下的连续轨迹便于用于控制,而/map这种跳变的则不好处理。

其他坐标系:/world和/laser_link, /sensor_link

/world一般认为和/map一样[2]。
/laser_link 和 /sensor_link 是传感器的坐标系,一般依附于 /base_link 坐标系。

总的关系是:
/world 或 /map --> /odom --> /base_link --> /laser_link 或 /sensor_link

参考资料:

[1] CSDN的博客:ROS里基本坐标系的理解:map,odom,base_link,base_laser
但是这个资料中的表述有个问题:/map与/odom在初始时刻不一定是完全一致的。如果认为/odom的第一帧是就是/map,则初始时刻一致。
[2] https://airlab.deib.polimi.it/life-in-airlab/service-pages/resources/ros-howto/ros-components/
[3] https://www.reddit.com/r/ROS/comments/j9ao94/odom_frame_worldfixed_rep105/

这篇关于ROS中/odom,/map,/base_link几个坐标系的含义:从ROS的REP105严谨介绍的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/320140

相关文章

性能测试介绍

性能测试是一种测试方法,旨在评估系统、应用程序或组件在现实场景中的性能表现和可靠性。它通常用于衡量系统在不同负载条件下的响应时间、吞吐量、资源利用率、稳定性和可扩展性等关键指标。 为什么要进行性能测试 通过性能测试,可以确定系统是否能够满足预期的性能要求,找出性能瓶颈和潜在的问题,并进行优化和调整。 发现性能瓶颈:性能测试可以帮助发现系统的性能瓶颈,即系统在高负载或高并发情况下可能出现的问题

水位雨量在线监测系统概述及应用介绍

在当今社会,随着科技的飞速发展,各种智能监测系统已成为保障公共安全、促进资源管理和环境保护的重要工具。其中,水位雨量在线监测系统作为自然灾害预警、水资源管理及水利工程运行的关键技术,其重要性不言而喻。 一、水位雨量在线监测系统的基本原理 水位雨量在线监测系统主要由数据采集单元、数据传输网络、数据处理中心及用户终端四大部分构成,形成了一个完整的闭环系统。 数据采集单元:这是系统的“眼睛”,

Hadoop数据压缩使用介绍

一、压缩原则 (1)运算密集型的Job,少用压缩 (2)IO密集型的Job,多用压缩 二、压缩算法比较 三、压缩位置选择 四、压缩参数配置 1)为了支持多种压缩/解压缩算法,Hadoop引入了编码/解码器 2)要在Hadoop中启用压缩,可以配置如下参数

每天认识几个maven依赖(ActiveMQ+activemq-jaxb+activesoap+activespace+adarwin)

八、ActiveMQ 1、是什么? ActiveMQ 是一个开源的消息中间件(Message Broker),由 Apache 软件基金会开发和维护。它实现了 Java 消息服务(Java Message Service, JMS)规范,并支持多种消息传递协议,包括 AMQP、MQTT 和 OpenWire 等。 2、有什么用? 可靠性:ActiveMQ 提供了消息持久性和事务支持,确保消

uva 10061 How many zero's and how many digits ?(不同进制阶乘末尾几个0)+poj 1401

题意是求在base进制下的 n!的结果有几位数,末尾有几个0。 想起刚开始的时候做的一道10进制下的n阶乘末尾有几个零,以及之前有做过的一道n阶乘的位数。 当时都是在10进制下的。 10进制下的做法是: 1. n阶位数:直接 lg(n!)就是得数的位数。 2. n阶末尾0的个数:由于2 * 5 将会在得数中以0的形式存在,所以计算2或者计算5,由于因子中出现5必然出现2,所以直接一

图神经网络模型介绍(1)

我们将图神经网络分为基于谱域的模型和基于空域的模型,并按照发展顺序详解每个类别中的重要模型。 1.1基于谱域的图神经网络         谱域上的图卷积在图学习迈向深度学习的发展历程中起到了关键的作用。本节主要介绍三个具有代表性的谱域图神经网络:谱图卷积网络、切比雪夫网络和图卷积网络。 (1)谱图卷积网络 卷积定理:函数卷积的傅里叶变换是函数傅里叶变换的乘积,即F{f*g}

C++——stack、queue的实现及deque的介绍

目录 1.stack与queue的实现 1.1stack的实现  1.2 queue的实现 2.重温vector、list、stack、queue的介绍 2.1 STL标准库中stack和queue的底层结构  3.deque的简单介绍 3.1为什么选择deque作为stack和queue的底层默认容器  3.2 STL中对stack与queue的模拟实现 ①stack模拟实现

Mysql BLOB类型介绍

BLOB类型的字段用于存储二进制数据 在MySQL中,BLOB类型,包括:TinyBlob、Blob、MediumBlob、LongBlob,这几个类型之间的唯一区别是在存储的大小不同。 TinyBlob 最大 255 Blob 最大 65K MediumBlob 最大 16M LongBlob 最大 4G

Collection List Set Map的区别和联系

Collection List Set Map的区别和联系 这些都代表了Java中的集合,这里主要从其元素是否有序,是否可重复来进行区别记忆,以便恰当地使用,当然还存在同步方面的差异,见上一篇相关文章。 有序否 允许元素重复否 Collection 否 是 List 是 是 Set AbstractSet 否

使用JS/Jquery获得父窗口的几个方法(笔记)

<pre name="code" class="javascript">取父窗口的元素方法:$(selector, window.parent.document);那么你取父窗口的父窗口的元素就可以用:$(selector, window.parent.parent.document);如题: $(selector, window.top.document);//获得顶级窗口里面的元素 $(