当前位置:网站首页>激光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 坐标系

边栏推荐
猜你喜欢

UE4_ Ue5 combined with Logitech handle (F710) use record

SAP HR 劳动合同信息 0016

0-1背包问题

List. How to achieve ascending and descending sort() 2020.8.6

C simple question one

Ora-02437 failed to verify the primary key violation

How to change the formula picture in the paper directly into the formula in word

伸展树(一) - 图文解析与C语言实现

ESP at installation esp8266 and esp32 versions

C inheritance and interface design polymorphism
随机推荐
做自媒体视频剪辑怎么赚钱呢?
Sequence of entity layer, Dao layer, service layer and controller layer
伸展树(一) - 图文解析与C语言实现
Three questions TDM
Dependency injection 2 advantage lifecycle
【leetcode】day1
USB (XV) 2022-04-14
How to change the formula picture in the paper directly into the formula in word
SLAM面试总结
【7.5】15. Sum of three numbers
Access database query all tables SQL
Markdown
Understand TCP's three handshakes and four waves with love
Unity3d learning notes 5 - create sub mesh
Fibonacci number of dynamic programming
建筑建材行业SRM供应商云协同管理平台解决方案,实现业务应用可扩展可配置
C simple question one
Design and implementation of spark offline development framework
C cat and dog
Anxinco esp32-a1s development board is adapted to Baidu dueros routine to realize online voice function
