首页 > 其他分享 >基于似然场的全局定位

基于似然场的全局定位

时间:2024-03-18 22:11:08浏览次数:29  
标签:定位 partial boldsymbol Delta frac 全局 pi theta 似然场

似然场法定位检测

似然场最小二乘问题构建

机器人Robot在地图World中的位姿表示为\(\boldsymbol{x}\),激光雷达扫描得到的点云表示为\(\{p_i^R\}\),其中\(^R\)表示在机器人坐标系下的坐标,\(_i\)表示点云中第i个点。

\[\boldsymbol{x}=[x, y, \theta]^{\rm{T}} \]

那么,点云中机器人坐标系下的某个扫描点\(\boldsymbol{p}_i^B\)的距离与角度为\(r_i\),\(\rho_i\),那么根据当前激光的位姿,可以将它转换到世界坐标系下:

\[p_i^W=[x+r_i\cos(\rho_i+\theta),y+r_i\sin(\rho_i+\theta)]^\top \]

下面思考这样一个问题:

理论上我们应该已知点云\(\{p_i^R\}\),如何求解机器人在地图World中的位姿\(x\),使得点云上所有的点经过变换后,都在地图上对应位置的黑线上?
对于机器人一帧扫描得到的点云,我们能否建立一个最小二乘的优化问题,使得点云中的每个点与地图中的对应点之间的距离最小?通过这样子就可以让扫描得到的点云都尽量的落到地图黑线上。

采用高斯似然场法将扫描数据与栅格地图进行配准。

似然场围绕每一个 地图边界点 产生,随距离增大而逐渐增大,其范围和衰减过程可自行定义。(从图中的表现为图像灰度代表值,黑色为0,白色为1,其余为0-1),我们暂且先把这个场定义为似然场\(\pi\)。

似然场中的读数可直接作为配准时的目标函数,也即要求某个扫描点\(p_i^R\),经机器人位姿\(\boldsymbol{x}\)变换后,得到世界坐标系上的点\(p_i^W\),同时,存在一个世界坐标系下的似然场\(\pi\)。这个点落在似然场\(\pi\)中的读数为\(\pi(p_i^W)\)

于是机器人位姿\(x\),可通过优化问题得到,最小二乘问题构建如下,其中n为点云中点的个数,\(\boldsymbol{p}_i^W\)为点云中第i个点在世界坐标系下的坐标,\(\|\cdot\|_2\)为L2范数,欧氏距离.

\[\boldsymbol{x}^*=\arg\min_{x}\sum_{i=1}^n\|\pi(\boldsymbol{p}_i^W)\|_2^2 \]

π 函数对位姿\(x\)的雅可比矩阵可由链式求导法则

\[\frac{\partial\pi}{\partial\boldsymbol{x}}=\frac{\partial\pi}{\partial\boldsymbol{p}_i^W}\frac{\partial\boldsymbol{p}_i^W}{\partial\boldsymbol{x}} \]


对于:\(\frac{\partial\pi}{\partial p_{i}^{W}}\)
似然场是以图像形式储存,因此必须对\(\boldsymbol{p}^W_i\)按照某种分辨率进行采样,设\(\boldsymbol{p}^W_i\)到图像坐标\(\boldsymbol{p}^f_i\)的转换关系为
​$$p_i^f=\alpha p_i^W+c$$
α 表示缩放系数,\(\boldsymbol{c}\)表示距离图像中心的偏移量。

坐标系转换为:Robot 坐标系 --> World 坐标系 --> 似然场坐标系 那么

\[\frac{\partial\pi}{\partial\boldsymbol{p}_i^W}=\frac{\partial\pi}{\partial\boldsymbol{p}_i^f}\frac{\partial\boldsymbol{p}_i^f}{\partial\boldsymbol{p}_i^W}=\alpha[\Delta\pi_x,\Delta\pi_y]^\top \]

其中\(\frac{\partial\pi}{\partial p_{i}^{f}}=[\Delta\pi_{x},\Delta\pi_{y}]^{\top}\)为似然场在图像上的梯度。


对于:\(\frac{\partial\boldsymbol{p}_i^W}{\partial\boldsymbol{x}}\)
这里\(\boldsymbol{x}\)描述了世界坐标系 W 下机器人位姿。

\[\boldsymbol{x}=[x, y, \theta]^{\rm{T}} \]

我们设机器人坐标系下的某个扫描点\(\boldsymbol{p}_i^B\)的距离与角度为\(r_i\),\(\rho_i\),那么根据当前激光的位姿,可以将它转换到世界坐标系下:

\[p_i^W=[x+r_i\cos(\rho_i+\theta),y+r_i\sin(\rho_i+\theta)]^\top \]

那么

\[\frac{\partial\boldsymbol{p}_i^W}{\partial\boldsymbol{x}}=\begin{bmatrix}1&0\\0&1\\-r_i\sin(\rho_i+\theta)&r_i\cos(\rho_i+\theta)\end{bmatrix}^T\in\mathbb{R}^{2\times3} \]


从而得到最终的偏导公式

\(\left.\frac{\partial\pi}{\partial\boldsymbol{x}}=\frac{\partial\pi}{\partial\boldsymbol{p}_i^W}\frac{\partial\boldsymbol{p}_i^W}{\partial\boldsymbol{x}}=\alpha\left[\begin{matrix}\Delta\pi_x,\Delta\pi_y\end{matrix}\right.\right]\begin{bmatrix}1&0&-R_i\sin(\rho_i+\theta)\\0&1&R_i\cos(\rho_i+\theta)\end{bmatrix}=[\alpha\Delta\pi_x,\alpha\Delta\pi_y,-\alpha\Delta\pi_xR_i\sin(\rho_i+\theta)+\alpha\Delta\pi_y,R_i\cos(\rho_i+\theta)]\)


最小二乘问题的高斯牛顿求解

高斯—牛顿迭代法的基本思想是使用泰勒级数展开式去近似地代替非线性回归模型,然后通过多次迭代,多次修正回归系数,使回归系数不断逼近非线性回归模型的最佳回归系数,最后使原模型的残差平方和达到最小。

对于一个非线性最小二乘问题:

\[x^{*} = arg \, \min\limits_{x} \frac{1}{2} || f(x) ||^2 \]

高斯牛顿的思想是把\(f(x)\)利用泰勒展开,取一阶线性项近似。

\[f(x + \Delta x) = f(x) + f^\prime (x) \Delta x = f(x) +J(x) \Delta x \]

带入到上式,得,其中\(J(x)\)代表雅可比也就是一阶导:

\[\frac{1}{2} || f(x + \Delta x) ||^2 = \frac{1}{2}(f(x)^Tf(x) + 2f(x)^TJ(x) \Delta x + \Delta x^TJ(x)^TJ(x) \Delta x) \]

对上式求导,令导数为0:

\[J(x)^TJ(x) \Delta x = -J(x)^Tf(x) \]

令\(H = J^TJ \quad B = -J^Tf\)

\[H\Delta x = B \]

求解,便可以获得调整增量\(Δx\)。这要求\(H\)可逆(正定),但实际情况并不一定满足这个条件,因此可能发散,另外步长\(Δx\)可能太大,也会导致发散,这个也就是config中的移动限制

标签:定位,partial,boldsymbol,Delta,frac,全局,pi,theta,似然场
From: https://www.cnblogs.com/darkarc/p/18081246

相关文章

  • Eplan插件 - 修改全局栅格
    前言在工作中,经常使用到窗口宏,尤其是在驱动器比较多的时候,可能一连几十页都是伺服驱动器,但是由于窗口宏是从其他地方获取而来。而窗口宏的制作者使用了过大或过小的栅格就会出现画图连接不齐的情况,那么就需要手动修改栅格的大小。在Eplan中默认修改的是当前页面的栅格。在页数很......
  • 配置全局变量直接调用函数
    配置全局变量直接调用函数目的想要在项目中使用defs.utills.getFunction()的方式,直接调用我们的函数,不再使用import的方式进行导入,直接在工程化上做手脚进行自动导入解决。过程首先我们在我们的项目框架src/目录下定义一个全局的utill文件,这个我们可以分类型创建文件夹、......
  • python做了一个极简的栅格地图行走机器人,到底能干啥?[第五弹]——解锁蒙特卡洛定位功能
    目录1、前言2、增加的功能3、主要算法python实现3.1定义一个地图和固定标签3.2定义一个粒子3.3定义一个粒子管理类3.4定义粒子运动模型3.5定义观测模型3.6定义权重计算3.6更新粒子重采样4总结5、python源码1、前言在现代科技的普及下,人们对于机器人的兴趣与期待日......
  • 详细了解前端中css的相对定位和绝对定位
    序言:今天要说的是前端中css经常使用的相对定位和绝对定位,相信你在看完这篇文章后,对它的使用,以及它们出现的各种嵌套都会了如指掌,得心应手。目录概念理解:1、对相对定位的概念理解2、对绝对定位的概念理解应用实践:1、在相对定位方框体内的其他方框的定位情况分析:<1>在相......
  • 【滤波跟踪】基于Huber函数和最大相关熵的抗差滤波算法实现GNSS导航定位粗差处理结合
     ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,代码获取、论文复现及科研仿真合作可私信。......
  • CSS的五种定位方式
    一、静态定位static (1)HTML元素默认情况下的定位方式为static(静态)。 (2)静态定位的元素不受 top、bottom、left和right属性的影响。 (3)position:static;的元素不会以任何特殊方式定位;它始终根据页面的正常流进行定位。二、相对定位relative (1)相对定位相对的是它原......
  • 滴水逆向笔记系列-win32总结2-45.esp寻址_定位回调函数-46.子窗口_消息处理函数-47.资
    第四十五课win32esp寻址_定位回调函数自己vs编译的exe入口函数好像和课程视频哩的vc6不一样,没办法跟着视频走,可以用课件里给的作业exe勉强跟着视频学,前面的都差不多,课件下载地址:https://www.bcdaren.com/video/videoPlay/3303185150621818881.win32应用程序入口识别没加过壳......
  • Linux第79步_使用自旋锁保护某个全局变量来实现“互斥访问”共享资源
    自旋锁使用注意事项:自旋锁保护的“临界区”要尽可能的短。因此,在open()函数中申请“spinlock_t自旋锁结构变量”,然后在release()函数中释放“spinlock_t自旋锁结构变量”,这种方法就行不通了。如果使用一个变量“dev_stats”来表示“共享资源的使用标志”,则“dev_stats>0”,......
  • 【WPF】设置全局样式
    目的:创建一个资源字典,然后自动引入到各个Window或UserControl中,可以随意使用。方式:创建Style文件夹在Style文件夹内创建一个ButtonStyleStyle.xaml的资源字典示例如下:<ResourceDictionaryxmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"......
  • 滴水逆向笔记系列-PE总结4-31.重定位表-32.IAT表_导入表-33.绑定导入表
    第三十一课重定位表一.引入重定位表1.程序加载过程程序加载后,操作系统会给程序分4GB虚拟内存,先装载自身的.exe:如先把ipmsg.exe拉伸贴到ImageBase(0x00400000),分配空间大小为SizeOfImage(0x3D000)但并不是所有文件的ImageBase都是0x400000,这个值是可以修改的:打开VC->右键你的......