导航杂记

1.导航给电机的速度命令:geometry_msgs/Twist
geometry_msgs/Twist 消息类型:geometry_msgs/Vector3 linear
  float64 x //沿x方向的运动速度
  float64 y //沿y方向的运动速度
  float64 z //沿z方向的运动速度
geometry_msgs/Vector3 angular
  float64 x //沿x轴的旋转速度
  float64 y //沿y轴的旋转速度
  float64 z //沿z轴的旋转速度

对于两轮差动只有linear.x和angular.z有用

对于全向三轮只有linear.x,linear.y和angular.z有用

2.小车在地图中位姿(位置+方向)的表示:geometry_msgs/Pose
geometry_msgs/Point position # This contains the position of a point in free space
  float64 x
  float64 y
  float64 z
geometry_msgs/Quaternion orientation # This represents an orientation in free space in quaternion form
  float64 x
  float64 y
  float64 z
  float64 w
备注:geometry_msgs/Point position表示点在空间中的方向,不表示方向信息,因为点没有方向

        geometry_msgs/Quaternion orientation表示小车的方向信息,是用四元素的形式表示的

        欧拉角和四元素:用旋转表示的方位信息,不含位置信息

-------------------------------------------------------------------------------------------------

HectorSLAM:
 scan-matching(Gaussian-Newton equation)  +  传感器的要求高
 扫描匹配方法是高斯牛顿方法.

备注:
1.Gauss-Newton算法是解决非线性最优问题的常见算法之一
2.匹配方法还有最邻近匹配方法ICP(Iterative Closest Point),ICP的目的很简单,就是求解两堆点云之间的变换关系(旋转变换R和平移变换t)

Gmapping:
is a Rao-Blackwellized PF SLAM(RBPF) approach
RBPF:是粒子滤波器的一种

graphslam:图优化的核心思想我认为主要就是矩阵的稀疏化与最小二乘

KartoSLAM:KartoSLAM是基于图优化的方法,用高度优化和非迭代 cholesky矩阵进行稀疏系统解耦作为解

CoreSLAM:为了简单和容易理解最小化性能损失的一种slam算法.将算法简化为距离计算与地图更新的两个过程,  第一步,每次扫描输入,基于简单的粒子滤波算法计算距离,粒子滤波的匹配器用于激光与地图的匹配,每个滤波器粒子代表机器人可能的位置和相应的概率权重,这些都依赖于之前的迭代计算. 选择好最好的假设分布,即低权重粒子消失,新粒子生成..在更新步骤,扫描得到的线加入地图中,当障碍出现时,围绕障碍点绘制调整点集,而非仅一个孤立点.

LagoSLAM(Linear Approximation for Graph Optimization):基本的图优化slam的方法就是利用最小化非线性非凸代价函数.每次迭代, 解决局部凸近似的初始问题来更新图配置,过程迭代一定次数直到局部最小代价函数达到. (假设起始点经过多次迭代使得局部代价函数最小).  LagoSLAM 是线性近似图优化,不需要初始假设.  优化器的方法可以有三种选择 Tree-based netORK Optimizer(TORO), g2o,LAGO

g2o(General Graph Optimization)—通用图优化算法

原文地址:https://www.cnblogs.com/cj2014/p/7592495.html