激光SLAM之里程计标定

里程计运动模型及标定 文章目录1 里程计运动模型1.1 两轮差分底盘的运动模型1.2 三轮全向底盘的运动学模型1.3 航迹推算(Dead Reckoning)2 里程计标定2.1 线性最小二乘的基本原理2.2 最小二乘的直线拟合2.3 最小二乘在里程计标定中的应用3 实现一个直接线性方法的里程计标定模块3.1 安装3.2 运行3.2.1 启动launch文件3.2.2 打开rviz3.2.3 播放bag3.2.4 矫正里程计3.2.5 结果3.3 解析3.3.1 构建超定方程组Ax=b3.3.2 求解超定方程组3.3.3 计算两 阅读详情

里程计模型可以分为3类:

  • 1.两轮差分底盘的运动型模型
  • 2.三轮全向底盘的运动学模型
  • 3.航迹推算(Dead Rocking)

航机推算

其中航迹推算的方法是最普遍的,其示意图为
在这里插入图片描述
推算公式

  • (x,y,z)(x,y,z)(x,y,z)为底盘当前位姿
  • (dx,dy,dθ)(dx,dy,d\theta)(dx,dy,dθ)为运动学解算增量
    [xyθ]=[xyθ]+[cosθ−sinθ0sinθcosθ0001][dxdydθ]\begin{bmatrix} x\\ y\\\theta \end{bmatrix}=\begin{bmatrix} x\\ y\\\theta \end{bmatrix}+ \begin{bmatrix} cos\theta & -sin\theta & 0\\ sin\theta&cos\theta&0\\ 0&0&1 \end{bmatrix}\begin{bmatrix} dx\\ dy\\d\theta \end{bmatrix} ⎣⎡​xyθ​⎦⎤​=⎣⎡​xyθ​⎦⎤​+⎣⎡​cosθsinθ0​−sinθcosθ0​001​⎦⎤​⎣⎡​dxdydθ​⎦⎤​
    由于在工程应用里程计会有误差,所以需要加一个误差,这是一个高斯白噪声
    [xyθ]=[xyθ]+[cosθ−sinθ0sinθcosθ0001][dx+ϵxdy+ϵydθ+ϵθ]\begin{bmatrix} x\\ y\\\theta \end{bmatrix}=\begin{bmatrix} x\\ y\\\theta \end{bmatrix}+ \begin{bmatrix} cos\theta & -sin\theta & 0\\ sin\theta&cos\theta&0\\ 0&0&1 \end{bmatrix}\begin{bmatrix} dx+\epsilon_x\\ dy+\epsilon_y\\ d\theta+\epsilon_\theta \end{bmatrix} ⎣⎡​xyθ​⎦⎤​=⎣⎡​xyθ​⎦⎤​+⎣⎡​cosθsinθ0​−sinθcosθ0​001​⎦⎤​⎣⎡​dx+ϵx​dy+ϵy​dθ+ϵθ​​⎦⎤​

线性最小二乘

线性最小二乘是一种比较通用的标定方法,但是由于比较通用,所以无法做到性能最佳,一般最优的线性方法都是根据工程项目来特定的,下面来介绍一下最小二乘的一些原理

原理

线性方程组Ax=bAx=bAx=b
𝐴为𝑚 × 𝑛的矩阵。 x为𝑛 × 1的向量
当m=n时,适定方程组,方程组有唯一解
当m<n时,欠定方程组,方程组有无穷多解
当m>n时,超定方程组,方程组有通常无解
但在现实中,绝大多数情况为m>n,比如说我们要求的参数只有两个,而我们需要采集很多组数据,这些数据都存在误差,可能两两之间都是矛盾的,所以超定方程组,无解,可以寻找最靠近真实解的解,无解但是有最小二乘解,通解: x∗=(ATA)−1ATbx^*=(A^TA)^{-1}A^Tbx∗=(ATA)−1ATb
那么为什么是这个方程呢??
我们从线性空间的角度来考虑,假设AxAxAx表示AAA的列向量空间SSS,无解意味着向量bbb不在S中,最近的解即为向量bbb在SSS中的投影。
假设Ax∗Ax^*Ax∗为向量bbb在空间SSS中的投影,显然(b−Ax∗)(b-Ax^*)(b−Ax∗)垂直于空间SSS,那么(b−Ax∗)(b-Ax^*)(b−Ax∗)跟矩阵AAA的每一个列向量都垂直
设A=[a1a2...an]A=\begin{bmatrix}a_1&a_2&...&a_n \end{bmatrix}A=[a1​​a2​​...​an​​]𝑎𝑖表示矩阵A的第i个列向量,则
aiT(b−Ax∗)=0a_i^T(b-Ax^*)=0aiT​(b−Ax∗)=0
可得:AT(b−Ax∗)=0A^T(b-Ax^*)=0AT(b−Ax∗)=0
ATb=ATAx∗A^Tb=A^TAx^*ATb=ATAx∗
x∗=(ATA)−1ATbx^*=(A^TA)^{-1}A^Tbx∗=(ATA)−1ATb

里程计标定

  • 直接线性方法:通用性强,实现简单,精度不高
  • 基于模型的方法:精度高,实现复杂,特异性高
    这里介绍一下直接线性方法
    1.用激光雷达的scan-match数据作为真值μi∗\mu_i^∗μi∗​
    2.里程计测量得到的数据为μi\mu_iμi​
    3.假设成线性关系μ∗=X∗μi\mu^* = X∗\mu_iμ∗=X∗μi​
    其中:X=[x11x12x13x21x22x23x31x32x33]X=\begin{bmatrix} x_{11}&x_{12}&x_{13}\\ x_{21}&x_{22}&x_{23}\\ x_{31}&x_{32}&x_{33}\\ \end{bmatrix}X=⎣⎡​x11​x21​x31​​x12​x22​x32​​x13​x23​x33​​⎦⎤​
    转换方程得[μixμiyμiθ0000000000μixμiyμiθ00000000000μixμiyμiθ][x11⋮x33]=[μix∗μiy∗μiθ∗]\begin{bmatrix} \mu_{ix}&\mu_{iy}&\mu_{i\theta}&0&0&0&0&0&0&0\\ 0&0&0&\mu_{ix}&\mu_{iy}&\mu_{i\theta}&0&0&0&0\\ 0&0&0&0&0&0&0&\mu_{ix}&\mu_{iy}&\mu_{i\theta}\\ \end{bmatrix}\begin{bmatrix} x_{11}\\ \vdots\\ x_{33} \end{bmatrix}=\begin{bmatrix} \mu_{ix}^*\\ \mu_{iy}^*\\ \mu_{i\theta}^* \end{bmatrix}⎣⎡​μix​00​μiy​00​μiθ​00​0μix​0​0μiy​0​0μiθ​0​000​00μix​​00μiy​​00μiθ​​⎦⎤​⎣⎢⎡​x11​⋮x33​​⎦⎥⎤​=⎣⎡​μix∗​μiy∗​μiθ∗​​⎦⎤​
    其中A=[μixμiyμiθ0000000000μixμiyμiθ00000000000μixμiyμiθ]A=\begin{bmatrix} \mu_{ix}&\mu_{iy}&\mu_{i\theta}&0&0&0&0&0&0&0\\ 0&0&0&\mu_{ix}&\mu_{iy}&\mu_{i\theta}&0&0&0&0\\ 0&0&0&0&0&0&0&\mu_{ix}&\mu_{iy}&\mu_{i\theta}\\ \end{bmatrix}A=⎣⎡​μix​00​μiy​00​μiθ​00​0μix​0​0μiy​0​0μiθ​0​000​00μix​​00μiy​​00μiθ​​⎦⎤​
    x=[x11⋮x33]x=\begin{bmatrix} x_{11}\\ \vdots\\ x_{33} \end{bmatrix}x=⎣⎢⎡​x11​⋮x33​​⎦⎥⎤​b=[μix∗μiy∗μiθ∗]b=\begin{bmatrix} \mu_{ix}^*\\ \mu_{iy}^*\\ \mu_{i\theta}^* \end{bmatrix}b=⎣⎡​μix∗​μiy∗​μiθ∗​​⎦⎤​
slam传感器数据处理Ⅱ——里程计标定 用最小二乘法标定里程计信息 阅读详情

相关推荐

hdl_graph_slam实战:IMU、轮式里程计与单线激光雷达外参标定全流程

多传感器融合是机器人建图与定位的基础,而坐标系统一是其中最容易出错的环节。在SLAM系统中,IMU、底盘轮式里程计与单线激光雷达各自提供不同频率和特性的数据,如果外参不准,点云匹配和位姿预测会出现系统性偏差,导致地图重影、漂移甚至回环闭环失败。本文从外参标定的基本概念和原理出发,介绍重力对齐法、点云匹配精修、尺度因子求解等工程实践方法,并结合hdl_graph_slam给出完整的标定流程和验证标准。通过合理的静态TF配置和量化评估指标,可以快速排查建图与定位中的坐标问题,为多传感器融合的稳定运行打下可靠基础

weixin_34297704的博客 318

激光SLAM入门笔记(二):轮式里程计模型及标定

轮式里程计模型及标定模型两轮差分底盘的运动学模型航迹推算标定线性最小二乘的基本原理线性最小二乘的直线拟合线性最小二乘在里程计标定中的应用 模型 两轮差分底盘的运动学模型 航迹推算 标定 线性最小二乘的基本原理 线性最小二乘的直线拟合 线性最小二乘在里程计标定中的应用 ...

u010507357的博客 1万+

【低轨】Starlink星链-Ku波段下行信号信号结构解析

Starlink播发位于10.7~12.7GHz之间的下行信号,该信号的设计意图是用于宽带网络通信,但是,文章通过对该信号信号体制的详细分析,以及解调出所调制的完整码序列,为利用Starlink信号进行定位解算提供了必要条件。(注,码序列对应的是卫星版本0.9,1.0和1.5)

iseeinvisible的博客 6301

里程计的信息及对其标定(Odometry)

一、在ROS当中,里程计是一种利用从移动传感器获得的数据来估计物体位置随时间的变化而改变的方法。 二、而在ROS当中里程计信息可以分为两个部分:一个是位姿(位置和姿态),一个是速度(线速度和角速度)。 三、里程计可以从两个地方获取数据,一个是从安装在发动机和轮子上的编码器,编码器每转一圈会触发固定数量的ticks(通常会有几百或者几千个),从而记录对应轮子转了多少圈。加上预先知道的轮子的直径和轮间距,编码器就可以把记录的数据转化成用m来表示的轮子行驶的距离,或者用rad表示的轮子转动的角度。一个是从移动

qq_31239371的博客 3814

RACECAR底层平台安装:Jetson Nano+ROS Melodic全栈部署指南

移动机器人开发中,底层平台安装是将硬件转化为可编程移动平台的关键起点。其核心在于嵌入式系统、ROS中间件与传感器驱动的深度协同——需兼顾内核模块加载、GPIO/PWM精确控制、I2C设备初始化及ROS工作空间构建等多层技术耦合。尤其在竞速级小车如RACECAR场景下,Jetson Nano的硬件加速能力、MPU6050 IMU固件加载、TB6612FNG电机驱动配置等细节,直接决定运动控制精度与实时性。本文聚焦Ubuntu 18.04 + ROS Melodic + JetPack 4.4.1技术栈,覆盖从

weixin_32025789的博客 254

RT-Thread Studio与CubeMX联合编程(超级详细)

RT-Thread Studio与CubeMX联合编程 本文章参考以下文章: https://blog.youkuaiyun.com/qq_40824852/article/details/122596043 https://zhuanlan.zhihu.com/p/395106066 https://blog.youkuaiyun.com/m0_37697335/article/details/108890584 一、简介 经过上次对RT-Thread Studio的初步尝试,发现RT-Thread Studio中存在官方支

zhuzhu的博客 3万+

轮式里程计标定方法

机器人底盘运行的精度是衡量底盘的重要指标。底盘精度受里程计的走直线误差和转角误差影响。因此,需要对里程计的走直线和转角进行标定,尽量减小误差。 下面是标定步骤过程。 第一步:打开终端,给标定脚本赋予可执行权限 cd scripts/ sudo chmod +x ./* 第二步:连接好底盘,电脑端启动ros节点 rosrun rosserial_python serial_node.py 第三步:设定前进3米的目标,对走直线进行标定 roslaunch odometry_publisher check_ang

renmengqisheng的博客 2802

零基础搭建机械零件检测系统:基于YOLOv8的PySide6可视化开发全攻略

本文详细介绍了如何从零开始搭建基于YOLOv8的机械零件检测系统,涵盖环境配置、数据集准备、模型训练优化及PySide6可视化界面开发全流程。通过实战案例展示YOLOv8在工业检测中的高效应用,帮助开发者快速实现自动化零件检测解决方案。

weixin_28455801的博客 309

激光slam学习——第二章(里程计标定)习题

深蓝学院激光slam学习——第二章(里程计标定)习题题目描述可能出现的问题第二种解决思路:第三种解决思路: 题目描述 本次的作业为用直接线性方法来对机器人的里程计进行校正。 给出的文件中包含有本次作业使用的bag数据,路径为odom_ws/bag/odom.bag。 本次的作业中,需要实现三个函数,分别为: Main.cpp,第340行中的cal_delta_distance()函数,该函数的功能为给定两个里程计位姿,计算这两个位姿之间的位姿差。 Odom_Calib.cpp,第23行Add_Data()

lievech的博客 2827

Conda环境创建报错?教你快速解决Solving environment: failed和ResolvePackageNotFound问题

本文深入解析Conda环境创建中常见的'Solving environment: failed'和'ResolvePackageNotFound'报错原因,并提供从基础到高级的系统化解决方案。涵盖渠道配置、版本通配、环境文件编辑等实用技巧,帮助开发者快速解决conda环境创建问题,提升工作效率。

weixin_28677451的博客 258

Aurix TC3xx系列MCU ADC模块简介(一)

简单介绍英飞凌Aurix TC3xx系列单片机ADC模块的特点及内部结构。

m0_38045338的博客 6360

激光SLAM学习——机器人的里程计标定(直接线性方法)

激光SLAM学习——机器人的里程计标定(直接线性方法) 1 实践操作 1.1 本次的作业中,需要实现三个函数,分别为: Main.cpp ,第 358 行中的 cal_delta_distance()函数,该函数的功能为给定两个里程计位姿,计 算这两个位姿之间的位姿差。(路径:/odom_ws/src/calib_odom/src/main.cpp) //求解得到两帧数据之间的位姿差 //即求解当前位姿在上一时刻坐标系中的坐标 Eigen::Vector3d cal_delta_distance(Ei

weixin_48924581的博客 2117

innovus: 如何让两个generate clock balance skew group?

如题,在sdc约束中两个generate clock被设置到同一个clock group中,工具虽然会生成对应的两个skew group,但是阅读ccoot_spec发现工具并没有让两个skew group进行balance,这时就需要手动设置balance skew group。我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧?

m0_61544122的博客 4047

激光SLAM学习分享--里程计标定

1.基于模型的方法--线性最小二乘法。 2.代码实践 在odom_calib文件夹下打开终端,运行cmake . make进行编译,./odom_calib运行可执行文件。 3.代码展示。 odom_calib.cpp #include <string> #include <iostream> #include <fstream> #include <math.h> #include <vector> #i...

qq_51106967的博客 641

高通SDX35:SGMII接口PHY RTL8211FSI-CG驱动适配

高通SDX35 RTL8211F SGMII

不秃头的程序猿Gabriel的博客 785

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

激光slam:1里程计模型与标定

激光slam:1里程计模型与标定里程计模型与标定两轮差速底盘的运动学模型三轮差速底盘的运动学模型航迹推算最小二乘法最小二乘在里程计标定中的作用 里程计模型与标定 两轮差速底盘的运动学模型 差分模型:已知VR、VL、d 基本推导过程 三轮差速底盘的运动学模型 V1+V2+V3 = 0 航迹推算 最小二乘法 方程 求解 直线拟合 推导过程 最小二乘在里程计标定中的作用 2. ...

lievech的博客 510

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

激光SLAM理论与实践 第二次作业(里程计标定)

课程PPt和源码https://download.youkuaiyun.com/download/weixin_44023934/85491811

努力是明天快乐的源泉 1446

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

里程计运动模型及标定【激光slam(一)】

时,欠定方程组,方程组有无穷多解。时,超定方程组,方程组有通常无解。时,适定方程组,方程组有唯一解。无解,可以寻找最靠近真实解的解。最小二乘的求解:线性空间的角度。无解但是有最小二乘解。的每一个列向量都垂直。

qq_23022733的博客 163

激光SLAM里程计标定:从运动模型到实操避坑指南

在移动机器人定位与建图中,轮式里程计作为高频位姿来源,其精度直接影响激光SLAM前端配准的初始猜测质量。里程计标定的核心在于修正轮半径与轮距等参数,通过直线与旋转实验反推真实值,从而降低累积误差。标定后的里程计能为激光配准提供可靠初值,并与IMU、激光观测融合,提升建图鲁棒性。本文围绕差速底盘运动模型、标定流程及常见问题排查展开,帮助开发者从源头解决建图漂移问题。

weixin_29179311的博客 304

激光SLAM轮式里程计标定:从运动模型到参数实测的工程实践

在机器人定位与建图中,里程计是激光SLAM前端位姿估计的基础。其核心原理是通过编码器脉冲结合差速运动模型,递推计算机器人的位姿变化。准确的里程计标定能显著提升SLAM建图精度与回环检测效率,避免因轮半径、轮距等参数偏差导致的建图漂移。该技术广泛应用于差速底盘机器人、ROS/ROS2导航系统及多传感器融合场景。本文聚焦轮式里程计的数据处理与标定方法,详解运动模型、参数实测及常见问题,帮助开发者夯实激光SLAM的第一道基石。

weixin_32349093的博客 186

激光SLAM理论与实践(二)--传感器数据处理I:里程计运动模型及标定

第二章和第三章都是讲的传感器的数据处理,正如第一章所讲,数据的处理是非常重要的一个环节。 差分最核心的优势:便宜 差分模型是一个欠驱动系统:自由度有三个(x,y,θ),但是输入只有两个(左右轮)。这就导致了它的运动是耦合的,它的运动也只有圆弧运动(当r趋于无穷就是直线运动,当r趋于0就是旋转)。 以下是对两轮差速底盘模型的运动学方程的推到,基本的鹅高中物理知识,不再赘述(抓住左右轮角速度相等这个关键点)。 作业相关: 本次的作业为用直接线性方法来对机

weixin_43619346的博客 1121

激光SLAM中轮式里程计模型、误差分析与标定实践

在移动机器人定位与建图领域,里程计是提供运动估计的基础传感器。其核心原理是通过测量轮子旋转来计算机器人的位移和转向,为后续的状态估计提供初始约束。这项技术的核心价值在于,它为激光SLAM等算法提供了关键的运动先验信息,能显著提升位姿估计的收敛速度和全局一致性。在实际应用中,里程计广泛服务于扫地机器人、仓储AGV等地面移动平台。然而,轮式里程计存在固有的系统误差与非系统误差,例如轮半径不准和轮胎打滑,会导致估计结果随时间发散。因此,对其进行精确标定是提升整个SLAM系统性能的关键前置步骤。本文聚焦于轮式里程计

weixin_34315485的博客 349

【激光SLAM】里程计运动模型及标定

自由度为3(即X,Y,θ),但是驱动数只有2个(即VL,VR,左轮速度和右轮速度)。欠驱动系统造成差分模型的平移运动和旋转运动是耦合的,无法单独分解运动。差分底盘只能做一种运动——圆弧运动。对于纯旋转而言,r趋于0,实际上还是两个圆弧运动。,提高机器人导航的精度和可靠性。通过标定,可以确定里程计的误差模型和参数,从而对机器人的位移和姿态进行更准确的计算。Ax=b的每一行代表一个约束,列代表未知数的维数。表示激光雷达测得的第i帧与第j帧的相对位置关系,即u_i。同理,u_i则为由里程计测量得到的同一关系。

PuddleRubbish的博客 1087

slam入门2:轮式里程计与2D激光联合标定及里程计内参校准

一、参考论文(同一个作者的两篇论文): 1、Simultaneous maximum-likelihood calibration of odometry and sensor parameters (2008) 2、Simultaneous Calibration of Odometry and Sensor Parameters for Mobile Robots (2013) 二、开源...

Zkangsen的博客 7810

hdl_graph_slam外参标定实战:激光雷达、IMU与轮式里程计校准指南

在移动机器人感知系统中,多传感器融合是提升定位与建图鲁棒性的关键。激光雷达、IMU与轮式里程计各有优势,但坐标系不统一会导致数据无法对齐,进而引发地图重影、定位漂移等问题。外参标定的本质,是求解各传感器坐标系间的旋转和平移变换,其精度直接影响上层SLAM算法的效果。从直线行驶标定激光雷达到底盘的偏置与航向角,再到基于重力方向的IMU静态对齐和旋转激励法动态标定,工程实践中需结合物理安装、轮径校核与数据质量检查逐步精修。基于hdl_graph_slam开展移动机器人建图与定位时,妥善完成外参校准可显著提升回环

weixin_34408624的博客 334

激光SLAM中轮式里程计标定:从原理到实践,提升机器人定位精度

在移动机器人定位技术中,传感器融合是提升系统鲁棒性的核心方法。轮式里程计作为基础的航位推算传感器,通过编码器测量轮子转动来积分估计机器人位姿,其原理基于运动学模型,尤其以两轮差分驱动模型最为经典。该模型通过轮速和轮距计算机器人线速度与角速度,进而积分得到位移和航向。然而,模型依赖轮径、轮距等系统参数的准确性,参数误差会随时间累积导致严重漂移。因此,对轮式里程计进行精确标定具有重要技术价值,它能显著提升里程计数据的可靠性,为激光SLAM等多传感器融合系统提供稳定、低噪声的位姿先验信息。标定的核心是通过特定运动

weixin_34297704的博客 415
上一篇: 网络爬虫之Element的筛选
下一篇: 电商秒杀项目框架图
thirty.st
博客等级 码龄7年 22粉丝 35原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值