里程计、推算定位与视觉里程计

本文介绍了里程计和视觉里程计的基本原理和技术细节。里程计是利用传感器数据估计机器人位置变化的方法,常用于机器人导航。视觉里程计则通过分析图像序列来确定机器人的位姿变化,提高了导航精度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

以下内容翻译自wiki百科。

里程计Odometry):原文链接在此:http://en.wikipedia.org/wiki/Odometry

里程计是一种利用从移动传感器获得的数据来估计物体位置随时间的变化而改变的方法。该方法被用在许多种机器人系统(轮式或者腿式)上面,来估计,而不是确定这些机器人相对于初始位置移动的距离。这种方法对由速度对时间积分来求得位置的估计时所产生的误差十分敏感。快速、精确的数据采集,设备标定以及处理过程对于高效的使用该方法是十分必要的。

假设一个机器人在其轮子或腿关节处配备有旋转编码器等设备,当它向前移动一段时间后,想要知道大致的移动距离,借助旋转编码器,可以测量出轮子旋转的圈数,如果知道了轮子的周长,便可以计算出机器人移动的距离。

假设有一个简单的机器人,配备有两个能够前后移动的轮子,这两个轮子是平行安装的,并且相距机器人的中心的距离是相等的。假如每个电机都配备有一个旋转编码器,我们便可以计算出任意一个轮子向前或向后移动一个单位时,机器人中心实际移动的距离。该单位长度为轮子周长的某一比例值,该比例依赖于编码器的精度。

假设左边的轮子向前移动了一个单位,而右边的轮子保持静止,则右边的轮子可以被看做是旋转轴,而左边的轮子沿顺时针方向移动了一小段圆弧。因为我们定义的单位移动距离的值通常都很小,我们可以粗略的将该段圆弧看做是一条线段。因此,左轮的初始与最终位置点,右轮的位置点就构成一个三角形A。

同时,机器人中心的初始与最终位置点,以及右轮的位置点,也构成了一个三角形B。由于机器人中心到两轮子的距离相等,同时,两三角形共用以右轮位置为顶点的角,故三角形A,B相似。在这种情况下,机器人中心位置的改变量为半个单位长度。机器人转过的角度可以用正弦定理求出。

推算定位dead reckoning):原文链接在此:http://en.wikipedia.org/wiki/Dead_reckoning

在导航系统中,推算定位(DR)是一个借助于先前已知位置,以及估计出的速度随时间的变化量来推导出当前位置的过程。尽管最初的推算定位方法在目前的导航系统中已不再使用,但是,现今流行的惯性导航系统,也是依赖于推算定位来估计物体位置的。

推算定位方法的一个劣势在于其计算出的新的位置值仅仅借助前一步的值推导出来,位置估计的误差和不确定性是累积的,因此,其推导出的值的误差和不确定性随着时间的增加而增长。

推算定位方法也被一些低端的、对任务要求不是非常苛刻,约束(时间、重量)较多的机器人系统所采用。它经常被用来降低自主移动机器人对传感技术的依赖,例如,超声传感器,GPS,线性或者旋转编码器等,这可以大大降低机器人成本,计算复杂度,并能够重复使用。由于板载CPU的计算性能有较大差距,应用环境有所不同,需要推算的距离范围从几毫米到数千米不等,这依赖于机器人的运行时间,移动速度,移动的距离以及其他一些因素。处于这样的原因,许多自主移动机器人都装备有定位传感器,如上面列出的一些。

视觉里程计Visual Odometry):http://en.wikipedia.org/wiki/Visual_odometry

在机器人学与计算机视觉领域,视觉里程计是一个通过分析相关图像序列,来确定机器人位置和朝向的过程。

在导航系统中,里程计(odometry)是一种利用致动器的移动数据来估算机器人位置随时间改变量的方法。例如,测量轮子转动的旋转编码器设备。里程计总是会遇到精度问题,例如轮子的打滑就会导致产生机器人移动的距离与轮子的旋转圈数不一致的问题。当机器人在不光滑的表面运动时,误差是由多种因素混合产生的。由于误差随时间的累积,导致了里程计的读数随着时间的增加,而变得越来越不可靠。

视觉里程计是一种利用连续的图像序列来估计机器人移动距离的方法。视觉里程计增强了机器人在任何表面以任何方式移动时的导航精度。

视觉里程计算法:

大多数现有的视觉里程计算法都是基于以下几个步骤:

1、图像获取:单目照相机、双目照相机或者全向照相机;

2、图像校正:使用一些图像处理技术来去除透镜畸变;

3、特征检测:确定感兴趣的描述符,在帧与帧之间匹配特征并构建光流场;

(1)、使用相关性来度量两幅图像间的一致性,并不进行长时间的特征跟踪;

(2)、特征提取、匹配(Lucas–Kanade method);

(3)、构建光流场;

4、检查光流场向量是否存在潜在的跟踪误差,移除外点;

5、由光流场估计照相机的运动;

(1)、可选方法1:使用卡尔曼滤波进行状态估计;

(2)、可选方法2:查找特征的几何与3D属性,以最小化基于相邻两帧之间的重投影误差的罚函数值。这可以通过数学上的最小化方法或随机采样方法来完成;

6、周期性的重定位跟踪点;


### 轮式里程计的工作原理 轮式里程计是一种广泛应用于移动机器人中的传感器系统,主要用于通过测量车轮的旋转来估算机器人的位移和姿态变化[^2]。其实现依赖于几个核心要素: #### 1. **基本参数定义** - 左右轮的转角 $\theta_l$ 和 $\theta_r$ 是由编码器测得的关键数据。 - 转角的变化量可以通过时间间隔内的增量计算得到: $$ \Delta \theta_l = \frac{\text{左轮脉冲数}}{\text{每圈脉冲数}} $$ $$ \Delta \theta_r = \frac{\text{右轮脉冲数}}{\text{每圈脉冲数}} $$ 这些角度变化可以进一步转化为线速度和角速度。 #### 2. **线速度角速度计算** 利用左右轮的角度变化以及已知的几何参数(如轮距 $L$ 和轮半径 $R$),可分别计算出机器人的线速度 $v$ 和角速度 $\omega$: $$ v = \frac{R}{2} (\Delta \theta_l + \Delta \theta_r) $$ $$ \omega = \frac{R}{L} (\Delta \theta_r - \Delta \theta_l) $$ 上述公式展示了如何从机械结构出发,将物理信号转换为运动学变量。 #### 3. **位姿更新** 基于前述的速度信息,可通过积分的方式实时更新机器人的位置 $(x, y)$ 及朝向 $\phi$: $$ x_{new} = x_{old} + v \cdot \cos(\phi) \cdot \Delta t $$ $$ y_{new} = y_{old} + v \cdot \sin(\phi) \cdot \Delta t $$ $$ \phi_{new} = \phi_{old} + \omega \cdot \Delta t $$ 此过程即所谓的航迹推算 (Dead Reckoning),它是轮式里程计的核心功能之一[^1]。 #### 4. **误差分析补偿** 尽管理论模型简洁明了,实际应用中不可避免存在累积误差。主要来源包括但不限于滑移效应、地面不平整等因素引起的偏差。因此,在 SLAM 系统中通常会结合其他传感器(如激光雷达)的数据对里程计的结果进行校正[^3]。 ```python import numpy as np def compute_odometry(delta_theta_left, delta_theta_right, wheel_radius, axle_length, dt): """ 计算轮式里程计的位姿变化 参数: delta_theta_left(float): 左轮角度变化(弧度) delta_theta_right(float): 右轮角度变化(弧度) wheel_radius(float): 轮子半径(m) axle_length(float): 轴距(m) dt(float): 时间步长(s) 返回: tuple: 新的位置(x,y),方向(phi)(m,m,radian) """ # 计算线速度和角速度 linear_velocity = 0.5 * wheel_radius * (delta_theta_left + delta_theta_right) angular_velocity = (wheel_radius / axle_length) * (delta_theta_right - delta_theta_left) # 更新位姿 phi_new = angular_velocity * dt dx = linear_velocity * np.cos(phi_new) * dt dy = linear_velocity * np.sin(phi_new) * dt return dx, dy, phi_new ``` ### 结合SLAM的应用场景 在 SLAM 中,轮式里程计作为初始估计提供粗略轨迹,而高精度传感器则负责修正这一路径上的偏误。例如,通过优化算法调整里程计内部参数(如轮距和轮半径),从而提高整体系统的鲁棒性和准确性。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值