当前位置:网站首页>激光slam学习(2D/3D、偏实践)
激光slam学习(2D/3D、偏实践)
2022-07-07 21:52:00 【内有小猪卖】
----------------------------------------------学习资料来源---深蓝学院--------------------------------------------------
目录
1.1.1 map --> odom --> base_footprint --> base_link --> laser_link的tf树关系
1.1.3 为什么不能直接从map --> base_link发布信息?
1.1.1 Eigen::Vector3d 和 Eigen::Matrix3dA
3.3.2激光雷达数据为何在CPU上处理而不是单片机上处理?
5、gmapping——基于滤波器的激光SLAM方法(Grid-based)
6、cartographer——基于图优化的激光SLAM方法(Grid-based)
1、激光SLAM简要介绍
1.1 tf树
1.1.1 map --> odom --> base_footprint --> base_link --> laser_link的tf树关系
1、世界坐标(map)
该map坐标系是一个世界固定坐标系,其Z轴指向上方。典型的设置中,定位模块(轮式里程计等传感器)不断的重新计算世界坐标中机器人的位姿,从而消除偏差,但是当新的传感器信息到达时可能会跳变。
2、里程计坐标系(odom)
odom 坐标系是基于测距源来计算的,如车轮里程计,视觉里程计或惯性测量单元。
3、基座标(base_footprint)
默认Z坐标为0,即紧贴地面。但是实际情况一般不是这样。
base_footprint表示机器人base_link原点在地面上的投影,区别base_link之处是其“z”坐标不同。一般为了模型不陷入地面,base_footprint的“z”坐标比base_link高。其中蓝色箭头所指的绿色框框就是base_footprint。
4、基座标(base_link)
base_link是固定在机器人本体上的坐标系,通常选择机器人腰部;一般设置为机器人的旋转中心,也就是两个轮子之间的中轴处。
这里有一个重要默认:move_base默认base_link的z坐标为0。即机器人的在地图中的位置由base_link。因此一般默认将base_link设置为定位用的机器人本体坐标系。
base_link区别base_footprint 之处是其“z”坐标不同,前者比后者高。
5、雷达坐标系(laser_link)
根据实际安装位置进行测量,修改tf的发布参数。
1.1.2 odom的作用和理解
“odom和map坐标系在机器人运动开始是重合的。但是,随着时间的推移是不重合的,而出现的偏差就是里程计的累积误差。那map-->odom的tf就是在一些校正传感器合作校正的package比如gmapping会给出一个位置估计(localization),这可以得到map-->base_link的tf,所以估计位置和里程计位置的偏差也就是odom与map的坐标系偏差。所以,如果你的odom计算没有错误,那么map–->odom的tf就是“ 如下图关系:
1.1.3 为什么不能直接从map --> base_link发布信息?
导航堆栈必须有map到base_link的变换,有的本地规划器还要求提供/odom
参考博客:
map odom base_link三者关系的通俗理解_TYINY的博客-CSDN博客_base_link
ROS中map、odom、base_link等坐标系关系的理解_网络通杀108的博客-CSDN博客_map odom
ROS、base_footprint和base_link的区别及Gazebo差速小车建模遇到的坑汇总_yjj1227033506的博客-CSDN博客_base_footprint
1.2 slam常用函数
1.1.1 Eigen::Vector3d 和 Eigen::Matrix3dA
首先Eigen是一个开源的基于c++的矩阵运算库。
Eigen::Ref< Eigen::Matrix3d >中“Matrix3d”代表一个33的类型为double的矩阵,Ref<>代表引用类型,所以这条语句表示对3*3矩阵的引用对象;同理,Vector3d表示长度为3的类型为double的向量。
boolcompute_C(Eigen::Ref<Eigen::Matrix3d>A_,Eigen::Ref<Eigen::Vector3d>B_)。应该是声明了一个函数,其中有两个参量,第一个是名为A的矩阵,第二个是名为B的向量。为了避免产生拷贝和临时值,所以用了Ref<>。Ref的用法可以理解为 按引用传递。
2、传感器数据处理I:里程计运动模型及标定
3、传感器数据处理II:激光雷达数学模型和运动畸变去除
3.1激光雷达传感器原理介绍
3.2运动畸变
解决方法:ICP、VICP等等
3.3运动畸变去除——传感器辅助
3.3.1 IMU和轮式里程计优缺点
3.3.2激光雷达数据为何在CPU上处理而不是单片机上处理?
4、激光SLAM的前端配准方法
5、gmapping——基于滤波器的激光SLAM方法(Grid-based)
6、cartographer——基于图优化的激光SLAM方法(Grid-based)
7、基于已知定位的建图
8、3D激光SLAM介绍
参考链接:SLAM常用坐标系总结:_Zack_Liu的博客-CSDN博客_slam 坐标系
边栏推荐
- Stringutils tool class
- MySQL Index Optimization Practice II
- SAP HR 家庭成员信息
- Class C design questions
- How can we make money by making video clips from our media?
- C # exchange number, judge to pass the exam
- B_QuRT_User_Guide(39)
- MySQL Architecture
- Unity3d learning notes 5 - create sub mesh
- 城联优品作为新力量初注入,相关上市公司股价应声上涨150%
猜你喜欢
B_QuRT_User_Guide(37)
MongoDB快速入门
Markdown
Summary of SQL single table query 2020.7.27
SAP HR 家庭成员信息
Extended tree (I) - graphic analysis and C language implementation
S2b2b mall solution of intelligent supply chain in packaging industry: opening up a new ecosystem of e-commerce consumption
Balanced binary tree [AVL tree] - insert, delete
0-1 knapsack problem
Oracle database backup and recovery
随机推荐
2022 Season 6 perfect children's model Shaanxi finals came to a successful conclusion
平衡二叉樹【AVL樹】——插入、删除
windows设置redis开启自动启动
城联优品作为新力量初注入,相关上市公司股价应声上涨150%
Navicat connects Oracle
Live server usage
数据库面试题+解析
SLAM面试总结
Given an array, such as [7864, 284, 347, 7732, 8498], now you need to splice the numbers in the array to return the "largest possible number."
Extended tree (I) - graphic analysis and C language implementation
通达信买基金安全吗?
Take you hand in hand to build Eureka client with idea
电子设备行业智能供应链协同平台解决方案:解决低效, 赋能产业数字化升级
The efficient s2b2c e-commerce system helps electronic material enterprises improve their adaptability in this way
产业共融新势能,城链科技数字峰会厦门站成功举办
0-1 knapsack problem
Slam interview summary
The 19th Zhejiang Provincial College Programming Contest 2022 f.easyfix chairman tree
SAP HR 社会工作经历 0023
建筑建材行业SRM供应商云协同管理平台解决方案,实现业务应用可扩展可配置