ROS:坐标系之间的关系 (map \ odom \ base_link)
ROS:坐标系之间的关系 (map \ odom \ base_link)
在使用ROS进行定位与导航操作时,会伴随着各种坐标系,并且每种坐标系都有明确的含义,ros中定义了常见的坐标系,并且所有的坐标系采用右手坐标系。
1. 三种坐标系
- base_link : 以机器人自身为原点的坐标系。
baselink可以连接到任意位置或方向的本体,且每个硬件平台都有一个不同的位置,并且可以提供明显的参考点。在实际中,我们约定小车base_link的x轴指向机器人前方,y轴为指向小车左方,z轴为指向小车上方。
- odom: 里程计坐标系
odom为一个固定在环境中的坐标系(world fixed),它的原点和方向不会随着机器人运动而改变。但是odom的位置可以随着机器人的运动漂移。漂移导致odom
不是一个很有用的长期的全局坐标。然而机器人的odom
坐标必须保证是连续变化的。
在odom
坐标系下机器人的位置必须是连续变化的,不能有突变和跳跃。在一般使用中odom
坐标系是通过里程计信息计算出来的。比如轮子的编码器或者视觉里程计算法或者陀螺仪和加速度计。odom
是一个短期的局域的精确坐标系。
- map : 是一个固定在环境中得世界坐标系
机器人在map
坐标系下的坐标不应该随着时间漂移。但是map
坐标系下的坐标并不需要保证连续性。map
坐标系是一个很有用的长期全局坐标系。但是由于坐标会跳跃改变,这是一个比较差的局部坐标系(不适合用于避障和局部操作)。
可能说到这还是很懵。-__-
可以参考ROS 中的三种坐标系
如果让机器人去所设定的点,机器人需要通过里程计信息去倒推,也表明odom应该与map重合.
2. 坐标系之间的关系
earth ------> map ------ > odom ------> base_link
- earth : 当有多个机器人的时候,每个机器人都有自己的
map
坐标系,他们之间的map
坐标系并不相同。如果想要在不同的机器人间共享数据,则需要这个earth坐标系来进行转化。 map
到base_link
通过定位组件计算得出。但是定位组件并不发布从map
到base_link
的变换。它首先获取odom
到base_link
的变换然后利用定位信息计算出map
到odom
的变换。odom
到base_link
的变换由里程计数据源中的一个发布。
他们之间满足如下关系:
base_link + 里程计等计算的信息 -> odom + 矫正(amcl)-> map坐标系
3. add a frame
#include <ros/ros.h>
#include <tf/transform_broadcaster.h>int main(int argc, char** argv){ros::init(argc, argv, "my_tf_broadcaster");ros::NodeHandle node;tf::TransformBroadcaster br;tf::Transform transform;//以10hz的速率来循环执行ros::Rate rate(10.0);while (node.ok()){//transform.setOrigin( tf::Vector3(0.0, 2.0, 0.0) ); //静止tftransform.setOrigin( tf::Vector3(2.0*sin(ros::Time::now().toSec()), 2.0*cos(ros::Time::now().toSec()), 0.0) ); //随时间变换tf--- x(-2,2) y(-2 ,2)std::cout <<"时间:"<<ros::Time::now()<<" "<<ros::Time::now().toSec()<<" "<< sin(ros::Time::now().toSec())<< std::endl;transform.setRotation( tf::Quaternion(0, 0, 0, 1) );br.sendTransform(tf::StampedTransform(transform, ros::Time::now(), "turtle1", "carrot1"));rate.sleep();}return 0;
};
find_package(catkin REQUIRED COMPONENTSroscpptf
)add_executable(frame_tf_broadcaster src/frame_tf_broadcaster.cpp)
target_link_libraries(frame_tf_broadcaster ${catkin_LIBRARIES})
rosrun [add_pkg] frame_tf_broadcaster
参考资料
- wiki.ros.org/reps
- wiki.ros.org/tf/tutorials(c++)
- http://wiki.ros.org/tf/Tutorials
ROS:坐标系之间的关系 (map \ odom \ base_link)相关推荐
- 地理坐标系和投影坐标系之间的关系 基本概念
地理坐标系和投影坐标系之间的关系 基本概念 地理坐标系:为球面坐标. 参考平面地是椭球面,坐标单位:经纬度: 投影坐标系:为平面坐标.参考平面地是水平面,坐标单位:米.千米等: 地理坐标转换到投影坐标 ...
- 摄像机标定中四大坐标系之间的关系
一.四个坐标系简介和转换 相机模型为以后一切标定算法的关键,只有这边有相当透彻的理解,对以后的标定算法才能有更好的理解.本人研究了好长时间,几乎每天都重复看几遍,最终才会明白其推导过程. 我 ...
- 相机标定的原理及四个坐标系之间的关系
参考:https://www.jianshu.com/p/7d97fccd79bb 1. 相机标定 在图像测量过程以及机器视觉应用中,为确定空间物体表面某点的三维几何位置与其在图像中对应点之间的相互关 ...
- 移动机器人平台的坐标系---map,odom,base_link
文章目录 本问学习记录移动机器人的坐标系 https://blog.csdn.net/w383117613/article/details/46006991
- 地理坐标系和投影坐标系之间的关系
转自:http://blog.csdn.net/qq_34149805/article/details/65634252 基本概念 地理坐标系:为球面坐标. 参考平面地是椭球面,坐标单位:经纬度: 投 ...
- 【相机标定】四个坐标系之间的变换关系
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达本文转自|新机器视觉 世界坐标系,相机坐标系,图像物理坐标系,像素坐 ...
- 相机标定之4个坐标系之间的变换关系
最近在进行相机标定和相机成像范围计算时,需要用到相机坐标转换关系中的图像坐标到世界坐标的转换,检索到这篇博文[四个坐标系之间的变换关系],觉得讲解简练清晰易懂,故进行转载分享如下,供更多人学习. 转自 ...
- xy轴坐标图数字表示_【相机标定】四个坐标系之间的变换关系
点击上方"新机器视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 世界坐标系,相机坐标系,图像物理坐标系,像素坐标系之间的关系: 首 ...
- 三维视觉基础之世界坐标系、相机坐标系、图像坐标系和像素坐标系之间的转换关系
三维视觉基础之世界坐标系.相机坐标系.图像坐标系和像素坐标系之间的转换关系 一.各坐标系介绍 二.世界坐标系和相机坐标系之间的转换 三.相机坐标系和图像坐标系之间的转换 四.图像坐标系和像素坐标系之间 ...
最新文章
- 使用Python,Opencv进行二维直方图的计算及绘制
- 7个提升PyTorch性能的技巧
- 在VS上配置OpenCV
- .NET开发者如何愉快的进行微信公众号开发
- mysql timstamp_DB_MySQL_日期类型讲解_DATETIME_DATE_TIMESTAMP
- PyTorch框架学习二——基本数据结构(张量)
- Google 封杀我写的 Web 浏览器!
- python colorbar位置大小调整_python - matplotlib相邻子图:添加colorbar更改子图的大小 - 堆栈内存溢出...
- python123平台在线编程_Python程序设计实验报告一:熟悉IDLE和在线编程平台
- 一招教你轻松恢复丢失的MP4视频
- jsp html5 模板,JSP标准模板库
- 运算服务器v9型号,V9服务器
- python爬虫 微信公众号模拟登陆js解密
- 网站死链接检测工具 Xenu 汉化版
- pycharm 2017年5月注册码(2017.4.25更新)
- 如何获取阿里云免费的SSL证书
- 资本冷落政令明禁,电子烟如何冬去春回?
- 色卡矩形检测和颜色提取
- android 界面大小设置在哪里,移动应用界面设计的尺寸设置及规范
- Invalid bound statement (not found): com.kuang.dao.bookMapper.queryAllbook
热门文章
- Dfinity(ICP)基础开发教程-5
- 读计算机必看:美国顶尖IT公司从哪些大学招人最多?
- 用华为手机,别忘记打开这个“开发者选项”,能瞬间提升手机性能
- 常用的时序图软件收集
- python绘制七巧板_CSS3制作七巧板动画
- VBA实战(09) - 工作簿(WorkBook)
- MySQL week()函数及参数mode详解
- 用PyInstaller把Python代码打包成单个独立的exe可执行文件
- RTX Excption integer divided by zero at loc (proc= thread=)Process image has been *unloaded
- 5G应用创新发展策略研究