做那事的网站,外国做挂的网站是多少钱,网站做好了 怎么做解析,乐山旅游 英文网站建设这两日看lego-loam#xff0c;其中的坐标系定义很混乱。 在lego-loam的一个issue中#xff0c;作者指出他坐标系定义是完全按照ROS的REP103和105的建议的。 然后又看到了关于/odom, /map, /base_link 几个坐标系的含义的说明#xff0c;因此整理一下。
关于ROS的REP
关于R…这两日看lego-loam其中的坐标系定义很混乱。 在lego-loam的一个issue中作者指出他坐标系定义是完全按照ROS的REP103和105的建议的。 然后又看到了关于/odom, /map, /base_link 几个坐标系的含义的说明因此整理一下。
关于ROS的REP
关于REPhttps://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. /mapz轴向上的、与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/