一门课的笔记,自用。整理出来当做给自己留个纪念
协方差矩阵一定是半正定的
已知 x ‾ \underline{x} x和它的期望 μ ‾ \underline{\mu} μ,则的协方差矩阵为 E [ ( x ‾ − μ ‾ ) ( x ‾ − μ ‾ ) T ] E[(\underline{x} - \underline{\mu})(\underline{x} - \underline{\mu})^T] E[(x−μ)(x−μ)T],对于任意向量 y ‾ \underline{y} y有:
y ‾ T Σ y ‾ = E [ y ‾ T ( x ‾ − μ ‾ ) ( x ‾ − μ ‾ ) T y ‾ ] = E [ ( ( x ‾ − μ ‾ ) T y ‾ ) T ( ( x ‾ − μ ‾ ) T y ‾ ) ] = E [ ∣ ∣ ( x ‾ − μ ‾ ) T y ‾ ∣ ∣ 2 ] ≥ 0 \underline{y}^T\Sigma\underline{y} = E[\underline{y}^T (\underline{x} - \underline{\mu})(\underline{x} - \underline{\mu})^T \underline{y}] = E[((\underline{x} - \underline{\mu})^T \underline{y})^T ((\underline{x} - \underline{\mu})^T \underline{y})] = E[||(\underline{x} - \underline{\mu})^T \underline{y}||^2] \geq 0 yTΣy=E[yT(x−μ)(x−μ)Ty]=E[((x−μ)Ty)T((x−μ)Ty)]=E[∣∣(x−μ)Ty∣∣2]≥0
期望与协方差的基础知识
①如果 z ‾ = A x ‾ \underline{z} = A \underline{x} z=Ax,那么就有 E ( z ‾ ) = A ∗ E ( x ‾ ) , C z = A ∗ C x ∗ A T E(\underline{z}) = A*E(\underline{x}),C_z =A*C_x *A^T E(z)=A∗E(x),Cz=A∗Cx∗AT
②如果有 b ‾ 为 定 量 \underline{b}为定量 b为定量,那么 E ( x ‾ + b ‾ ) = E ( x ‾ ) + b ‾ , C o v ( x ‾ + b ‾ ) = C x E(\underline{x}+\underline{b}) = E(\underline{x})+\underline{b},Cov(\underline{x}+\underline{b}) =C_x E(x+b)=E(x)+b,Cov(x+b)=Cx
③如果 y ‾ \underline{y} y不确定而且和 x ‾ \underline{x} x相互独立,那么 C o v ( x ‾ , y ‾ ) = E ( ( x ‾ − E ( x ‾ ) ) ( y ‾ − E ( y ‾ ) ) ) = 0 Cov(\underline{x},\underline{y}) = E((\underline{x} - E(\underline{x})) (\underline{y} - E(\underline{y}))) = 0 Cov(x,y)=E((x−E(x))(y−E(y)))=0,并且还满足:
E ( x ‾ + y ‾ ) = E ( x ‾ ) + E ( y ‾ ) , C o v ( x ‾ + y ‾ ) = C x + C y E(\underline{x}+\underline{y}) = E(\underline{x})+E(\underline{y}), Cov(\underline{x}+\underline{y}) = C_x + C_y E(x+y)=E(x)+E(y),Cov(x+y)=Cx+Cy
随机变量的独立性
两个随机变量 a ‾ \underline{a} a和 b ‾ \underline{b} b,如果有 P ( b ‾ ∣ a ‾ ) ≠ P ( b ‾ ) P(\underline{b}|\underline{a}) \neq P(\underline{b}) P(b∣a)=P(b),那么这两个变量就不是相互独立的。
如果 a ‾ \underline{a} a和 b ‾ \underline{b} b是互相独立的,那么有 C o v ( a ‾ , b ‾ ) = 0 Cov(\underline{a},\underline{b}) = 0 Cov(a,b)=0
C o v ( A a ‾ , B b ‾ ) = A C o v ( a ‾ , b ‾ ) B T Cov(A \underline{a}, B \underline{b}) = ACov(\underline{a},\underline{b}) B^T Cov(Aa,Bb)=ACov(a,b)BT
C o v ( a ‾ + b ‾ , c ‾ ) = C o v ( a ‾ , c ‾ ) + C o v ( b ‾ , c ‾ ) Cov(\underline{a}+\underline{b}, \underline{c}) = Cov( \underline{a}, \underline{c}) + Cov(\underline{b}, \underline{c}) Cov(a+b,c)=Cov(a,c)+Cov(b,c)
求点到直线的距离
直线的表达形式为Ax + By + C = 0时,点到直线的距离公式为:
如果直线方程已经经过归一化,那么这条直线的法向量就是(A,B).
矩阵的秩是什么?满秩是什么意思?
the number of linearly independent rows or columns in a matrix
满秩矩阵是判断一个矩阵是否可逆的充分必要条件。
怎么证明矩阵B ≥ \geq ≥ 矩阵A
B-A是半正定的即可
什么是定位?
determination of the location of moving object step by step
什么是位姿和状态?
pose: position&orientation (+uncertainty)
– 2D pose: 朝向可以用一个角度值表示
– 3D pose: 朝向可以用旋转矩阵,欧拉角,四元数表示
status: 可以有位置、速度等
不确定度的表示方法
区间表示,概率密度函数,期望和协方差矩阵
怎么对一个协方差矩阵(方阵)A(或者说是不确定度)进行可视化:elliptic with Eigendecomposition
这个地方,如果换一个角度,可以理解为画出所有的 x ‾ \underline{x} x,使得有 x ‾ T ∗ A ∗ x ‾ = 1 \underline{x}^T*A*\underline{x} = 1 xT∗A∗x=1。其实就是画出Mahalanobis距离为1的地方。
能影响到定位方法的因素: accuracy, latenz, sampling rate, affected range
理想的汽车:
汽车本身可视为刚体,轮子可以是驱动/不驱动的,轮子可以是固定或者绕z轴旋转的
理想的车轮:
圆形车轮,已知半径,与地面只有一个接触点,x和y方向没有滑移,有垂直的转向轴经过接触点和rollaxis(平行于下方坐标系的x方向)
什么是速度瞬心ICR?
刚体做平面运动时,瞬时速度为0的某一点,此时,物体上的其他点可以看作在绕其做纯旋转运动。
对于车轮,每个轮子的瞬心都在它的roll axis上;轮子的速度是一致的consistent with rotation around ICR
1个交点:绕着这个ICR旋转,有arch trajectory弧线轨迹;平行线:直线轨迹;多个交点:不能运动
需要考虑的坐标系有哪些?坐标系之间的转换关系?
已知P在R坐标系中的位姿为 [ R x p , R y p , R θ p ] [^Rx_p, ^Ry_p, ^R\theta_p] [Rxp,Ryp,Rθp],R在世界坐标系中的位姿为 [ w x R , w y R , w θ R ] [^wx_R, ^wy_R, ^w\theta_R] [wxR,wyR,wθR],求P在世界坐标系中的位姿:
图示 | 计算 |
---|---|
如果已知P在R坐标系中的速度信息,还可以求出P在世界坐标系中的速度信息:
[ w x ˙ p w y ˙ p w θ ˙ p ] = T [ R x ˙ p R y ˙ p R θ ˙ p ] \begin{bmatrix} ^w\dot{x}_p \\ ^w\dot{y}_p \\ ^w\dot{\theta}_p \end{bmatrix} = T \begin{bmatrix} ^R\dot{x}_p \\ ^R\dot{y}_p \\ ^R\dot{\theta}_p \end{bmatrix} ⎣⎡wx˙pwy˙pwθ˙p⎦⎤=T⎣⎡Rx˙pRy˙pRθ˙p⎦⎤
两轮运动学
一般来说,两轮的模型可以分成differential drive(这个模型是没有转向角的,差速驱动differential drive利用左右轮的速度差异来旋转,如平衡车)和 wheels with steering wheel. 这两种模型的输入向量可以为:
>> wheels with steering wheel
>> Differential drive
已知两个左右车轮的速度,求点F的速度和角速度,然后可以求出世界坐标系下的F的速度信息。
为了把一个时间连续的运动模型近似成时间离散的模型,可以有三种方法。假设已知初始位置 x 0 = x ( t 0 ) x_0 = x(t_0) x0=x(t0),求整条轨迹。下面先给出三种方法的粗略对比,然后再给出一些计算过程。
通过一块一块piecewise的绕着ICR的运动来离散化:通过很多个小圆弧拼接起来进行近似。在 t k t_k tk和 t k + 1 t_{k+1} tk+1之间时,ICR是不变的,此时每一段轨迹都是小圆弧
解析式的时间离散:就是利用的在时间间隔内积分 x ‾ k + 1 = x ‾ k + ∫ t k t k + 1 f ( x ‾ ( t ) , μ k ) d t \underline{x}_{k+1} = \underline{x}_k + \int^{t_{k+1}}_{t_k} f(\underline{x}(t), \mu_k) dt xk+1=xk+∫tktk+1f(x(t),μk)dt
显式欧拉法:
x ‾ k + 1 = x ‾ k + x ˙ ‾ k Δ t k = x ‾ k + f ( x ‾ k , v ‾ k , α ‾ k ) Δ t k \underline{x}_{k+1} = \underline{x}_{k} + \underline{\dot{x}}_{k} \Delta t_k = \underline{x}_{k} + f(\underline{x}_k, \underline{v}_k, \underline{\alpha}_k ) \Delta t_k xk+1=xk+x˙kΔtk=xk+f(xk,vk,αk)Δtk
隐式欧拉法,是一个非线性的系统,可以用高斯牛顿等方法求解:
x ‾ k + 1 = x ‾ k + x ˙ ‾ k + 1 Δ t k = x ‾ k + f ( x ‾ k + 1 , v ‾ k + 1 , α ‾ k + 1 ) Δ t k \underline{x}_{k+1} = \underline{x}_{k} + \underline{\dot{x}}_{k+1} \Delta t_k = \underline{x}_{k} + f(\underline{x}_{k+1}, \underline{v}_{k+1}, \underline{\alpha}_{k+1} ) \Delta t_k xk+1=xk+x˙k+1Δtk=xk+f(xk+1,vk+1,αk+1)Δtk
接着前面differential drive的例子,原来时间连续的运动方程可以变为:
经过前面的离散化,可以把运动方程写为 x ‾ k + 1 = x ‾ k + f ( x ‾ k , u ‾ k ) Δ t k = g ( x ‾ k , u ‾ k ) \underline{x}_{k+1} = \underline{x}_{k} + f(\underline{x}_k, \underline{u}_k) \Delta t_k=g(\underline{x}_k, \underline{u}_k) xk+1=xk+f(xk,uk)Δtk=g(xk,uk),但是这个形式还是非线性的!所以还需要进行线性化。
方法:围绕 x ‾ ^ k , u ‾ ^ k \hat{\underline{x}}_k, \hat{\underline{u}}_k x^k,u^k进行线性化
前提:g( . . .)是可微分的differentiable而且可以忽略不计非线性的余量
不确定度怎么通过一个线性、时间离散的运动方程进行传播?需要参考最前面关于期望协方差的基础知识。已知状态向量和输入向量的期望和协方差矩阵,而且两者互相独立。而且有 x ‾ k + 1 = A x ‾ k + B u ‾ k \underline{x}_{k+1} = A \underline{x}_{k} + B \underline{u}_{k} xk+1=Axk+Buk,那么有:
x ‾ ^ k + 1 = A x ‾ ^ k + B u ‾ ^ k C k + 1 x = A C k x A T + B C k u B T \hat{\underline{x}}_{k+1} = A \hat{\underline{x}}_{k} +B\hat{\underline{u}}_{k}\\ C_{k+1}^x = AC_k^xA^T + B C_k^u B^T x^k+1=Ax^k+Bu^kCk+1x=ACkxAT+BCkuBT
Statische Lokalisierung的问题描述:已知路标的全局位置,物体的传感器测到的到路标的位置(路标在物体坐标系的位置),求物体的全局位置。注意这里只是针对某一个时刻进行求解。
优点:误差不会被传播
缺点:需要infrastruktur
可以用到的传感器?
– ToF:GPS,ToF相机,laserscanner,ultraschall,lidar
– visual:彩色相机,红外相机(可以使用marker,arucos,QR等)
– Radar
– signal strength:WLAN,Bluetooth
基础概念
残差:状态和估计值的偏差
误差:状态和真值的偏差
什么是测量模型?
y ‾ = h ( x ‾ ) + v \underline{y} = h(\underline{x}) + v y=h(x)+v
Statische Lokalisierung的过程和举例:
在有了一个测量结果+已知观测到的路标的绝对位置后,就可以估计出物体的位置;往往会采用多次这个过程,融合多次估计的结果。
>> 举例:非线性的例子Trilateration,线性的例子distance to wall
Trilateration:此处含有模长的计算,是非线性的
根据到墙面的举例进行定位:已知的是墙面所代表的直线方程normallform(已经归一化了,所以可以按照下图这么求距离),S表示的是距离值。
可以看到,这里的状态 x ‾ \underline{x} x就是一个2维的向量,而给出了4个方程,所以超定了,可以使用最小二乘法进行求解(这样就可以用到所有的4组数据)
最小二乘法为什么使用了平方:因为平方可以消除误差正负方向上的差异,单纯的只比较长度。
Batch和Recursive的比较:
Batch法所有的测量值必须要一次全部获得。因为batch的最小二乘法,随着维度的增加,内存消耗会增大(所有的测量值都要存储)(每一次都要重新计算,已知了前100个状态,想求x_101的话,还要全部重新求一次),而且计算的时候复杂度也会越来越大(计算H^T W^(-1) H时会更加复杂)。但是递归式的方法的复杂度就是常数级别的。
LSQ-Schätzer für lineare Messabbildungen in geschlossener Form: Blockweise Methode
思路:对于线性最小二乘法的形式,用一阶导等于0来求出最小值的位置。
注意:
法一:使用逆的形式。直接按照定义展开之后就可以获得
法二:接着法一,继续化简。使用sherman-morrison-woodbury公式展开第m+1估计值的期望和协方差矩阵的逆:
()
()
W m + 1 − 1 , W m + 1 , C m + 1 − 1 , C m + 1 W_{m+1}^{-1}, W_{m+1},C_{m+1}^{-1}, C_{m+1} Wm+1−1,Wm+1,Cm+1−1,Cm+1在迭代最小二乘法中表示什么意思?
W m + 1 − 1 W_{m+1}^{-1} Wm+1−1是 y ‾ m + 1 \underline{y}_{m+1} ym+1的权重
W m + 1 W_{m+1} Wm+1可以表示为一种 y ‾ m + 1 \underline{y}_{m+1} ym+1的不确定度
C m + 1 − 1 C_{m+1}^{-1} Cm+1−1是 x ‾ m + 1 ^ \hat{\underline{x}_{m+1}} xm+1^的权重
C m + 1 C_{m+1} Cm+1也是一种 x ‾ m + 1 ^ \hat{\underline{x}_{m+1}} xm+1^的不确定度
假设场景为:我们是按照先后顺序每一次获取一组测量数据(niedrige Bandbreite)
对于batch的方法,可以等待数据,直到第m次,有 H 1 : m H_{1:m} H1:m满秩(这里也可以理解为,前面m组的测量的总维度大于等于估计量 x ‾ k \underline{x}_k xk的维度)。在定位的过程中,可以得到一些中间结果。已知 y 1 : m ‾ , \underline{y_{1:m}}, y1:m,H_{1:m} , , ,W_{1:m}^{-1}$,求第m+1次的估计值。
使用边界条件,假设初始的协方差矩阵(不确定度)非常大,会有 C 0 − 1 ≈ 0 ‾ C_0^{-1} \approx \underline{0} C0−1≈0, x 0 ‾ \underline{x_0} x0的值可以随便给。在获得了测量值 y 1 ‾ \underline{y_1} y1之后,初始状态值会跳向靠近测量结果的附近。
这个方法在 H 1 H_1 H1矩阵不是满秩的时候,即 H 1 T W 1 − 1 H 1 H_1^TW_1^{-1}H_1 H1TW1−1H1不可逆的时候也可以更新!
举例:
这里根据前面迭代最小二乘的两种推导方式,也有两种不同的初始化方法。(逆&没有逆)
法一:已知 x ‾ m \underline{x}_m xm,其协方差矩阵的逆是 C m − 1 C_m^{-1} Cm−1,还有测量值 y ‾ m + 1 \underline{y}_{m+1} ym+1,其权重矩阵 W m + 1 − 1 W_{m+1}^{-1} Wm+1−1,矩阵 H m + 1 H_{m+1} Hm+1
这样初始化后,之后求出来的就是:
法二:已知 x ‾ m \underline{x}_m xm,其协方差矩阵是 C m C_m Cm,还有测量值 y ‾ m + 1 \underline{y}_{m+1} ym+1,以及矩阵 W m + 1 W_{m+1} Wm+1,矩阵 H m + 1 H_{m+1} Hm+1
可以发现, C m C_m Cm是越来越小的(估计值的不确定度)
两种迭代方式的对比:
法一:线性化,然后再从起始点用迭代细化???这里就是使用泰勒展开的方法??
法二:把h()转换为线性的形式,这里举了一个例子:通过距离测量对点状物体进行定位时,如何将非线性测量方程转换为线性测量方程
法一是用两组测量量相减,得到线性化的结果。缺点是,方程数量比使用的测量组数少了1个,对于2维的状态量,就需要至少三组测量结果
法二是用了平方消元法,令状态量的平方和为一个新变量 r 2 r^2 r2,然后再求解这个 r 2 r^2 r2的值。这个方法的优点:对于2维状态量,只需要至少两个测量。
随着测量数目的增大,不确定度会越来越小。这里给出了一个1D的例子和普适的推导。
1D举例: 待估变量的期望就是测量值的平均值,期望为 1 m σ 2 \frac{1}{m} \sigma^2 m1σ2,这里的 σ 2 \sigma^2 σ2是测量值的方差。所以求出来的估计量的方差是小于测量值的。测量次数越多,方差越小。
普遍形式:
测量量 y ‾ \underline{y} y的协方差矩阵为 C y C_y Cy,那么就有:
E ( x ‾ L S Q ) = x ‾ ^ = ( H T W − 1 H ) − 1 H T W − 1 ⏟ K ∗ y ‾ C o v ( x ‾ L S Q ) = C x = K ∗ C y ( K ∗ ) T E(\underline{x}^{LSQ}) = \hat{\underline{x}} = \underbrace{(H^T W^{-1} H)^{-1} H^T W^{-1}}_{K^*} \ \ \underline{y} \\ \\ Cov(\underline{x}^{LSQ}) = C_x = K^*C_y (K^*)^T E(xLSQ)=x^=K∗ (HTW−1H)−1HTW−1 yCov(xLSQ)=Cx=K∗Cy(K∗)T
特殊情况:当 W − 1 = I n , C y = σ 2 I W^{-1} = I_n, C_y = \sigma^2 I W−1=In,Cy=σ2I时,有
C o v ( x ‾ L S Q ) = ( H T H ) − 1 H T σ 2 I H ( H T H ) − 1 = σ 2 ( H T H ) − 1 Cov(\underline{x}^{LSQ}) = (H^T H)^{-1} H^T \sigma^2 I H (H^T H)^{-1} \\ \\ = \sigma^2 (H^T H)^{-1} Cov(xLSQ)=(HTH)−1HTσ2IH(HTH)−1=σ2(HTH)−1
什么是Dynamische Lokalisierung:在两个时间点之间对状态使用运动方程进行预测(koppelnavigation),然后对当前时间点使用测量映射关系来修正结果(statistische Lokalisierung)。以这种交替的状态进行
基础概念
系统噪音(过程噪声):预测过程中的噪音,表示建模误差。可以和计算机舍入误差(比如说用了浮点,那么会引入1e-7的误差项)、模型的线性化程度、离散化引入误差有关;如果还有输入u的话,输入的误差也会考虑到这里。
测量噪声:校准过程(测量方程)中的这个噪声的协方差矩阵等于测量值噪声的协方差矩阵,跟选取与传感器的特性有关。
Dynamische Lokalisierung的问题描述
这里就是有预测和校正两个过程。
这里给了一个matlab的例子,小车是匀速直线运动,可以通过nichtinformatives vorwissen的方法来最终估计出较准确的状态量。
以上过程中要注意的一个地方,在修正步骤的时候,其实可以有naive和迭代两类方法。问题描述如下:
直觉上来说,可以使用以下两步,但是这个方法需要 H k H_k Hk是满秩的:
当 H k H_k Hk不能满秩的时候,就用迭代的方式,也就是在statistische Lokailisierung中涉及到的第二种迭代方式。
这两种方法的对比:
Filterschritt ohne Vorwissen | Filterschritt mit Vorwissen-> Kalman Filterschritt |
---|---|
预测之后不确定度会变大,但是滤
波后会变小。很多步之后,总体来说会变小。
无偏性unbiasedness:估计器的一种属性property。对于一个估计器,如果它的期望值和真值是一样的,那么就可以说这个估计器是无偏的。
什么是BLUE或者说BLES? Beste linear erwartungswertreuen Schaetzer
Batch求解的LSQ,令 W k = C x y W_k = C^y_x Wk=Cxy时,是最好的线性无偏估计器。因为这种方法,有最小的协方差矩阵(与其他线性无偏估计器相比)
注意!!LSQ with W k = C x y W_k = C^y_x Wk=Cxy 并不是最好的线性估计器。因为有的估计器可以是有偏的,但是有更小的协方差矩阵。比如:
A:batch LSQ with W k = C k y W_k = C^y_k Wk=Cky has the ‘minimal’ covariance matrix under all linear unbiased estimator.
证明过程:假设一个线性/映射估计器,用无偏的形式代入,注意下面的 K k L S Q K_k^{LSQ} KkLSQ和卡尔曼滤波里的K不是一个东西。
想要一个估计器无偏,就要满足 E ( x ‾ k e ) = E ( x ‾ k e ) = E ( x ‾ k ) = x ‾ k ^ E(\underline{x}^e_k) = E(\underline{x}_k^e) = E(\underline{x}_k) = \hat{\underline{x}_k} E(xke)=E(xke)=E(xk)=xk^
接下来就可以把batch求解LSQ的结果代入矩阵K中,这里就可以发现,这个线性估计器一定是无偏的。为了证明是BLUE,就还要检查协方差矩阵是最小的,即对于其他估计器都有, C o v ( x ‾ k e ) ≥ C o v ( x ‾ k L S Q ) Cov(\underline{x}_k^e) \geq Cov(\underline{x}_k^{LSQ}) Cov(xke)≥Cov(xkLSQ)。在计算上面两个协方差的时候就要把 W k = C k y W_k = C_k^y Wk=Cky带进去,就可以证明出 C o v ( x ‾ k L S Q ) Cov(\underline{x}_k^{LSQ}) Cov(xkLSQ)是最小的。
先上表格总结需要满足的条件:
Filterschritt ohne Vorwissen | Fusionierung | Rekursive |
---|---|---|
前面两条和在一起可以是一个optimale Filterschritt.
Fusionierung mit LSQ:照猫画虎第一条,把测量映射都变成1,测量量的协方差矩阵也都变成估计量的协方差矩阵。套进去求解出来的 x ‾ L S Q \underline{x}^{LSQ} xLSQ就是最好的线性无偏估计器的结果(就是协方差矩阵加权的形式,分子是错开对应的)。注意这里必须要有不同的估计量之间是独立的,权重矩阵是个对角阵。
这里也可以看一下如果是一般形式的线性估计器,需要达到什么条件才可以变成BLUE:
上面证明了无偏,下面来证明协方差最小**(协方差矩阵的迹最小时,有 K o p t K_{opt} Kopt)**:
求解出来 K o p t = C 2 x ( C 1 x + C 2 x ) − 1 = K 1 L S Q K_{opt} = C^x_2 (C_1^x + C_2^x)^{-1} = K_1^{LSQ} Kopt=C2x(C1x+C2x)−1=K1LSQ,根据无偏要满足的要求就有 K 2 = I − K 1 = K 2 L S Q K_2 = I - K_1 = K_2^{LSQ} K2=I−K1=K2LSQ
Rekursive LSQ的证明
无偏的部分:可以得到 K k 1 + K k 2 H k = I K_k^1 + K_k^2H_k = I Kk1+Kk2Hk=I,是满足下面的结论的。
求协方差最小:这里取了一个模长为1的列向量。为了最小化函数,用了一阶导等于0的方法。求出来的 K k o p t = K k r e k K_k^{opt} = K_k^{rek} Kkopt=Kkrek
线性、时间离散的运动方程的预测+迭代的Filterschritt就是卡尔曼滤波器
卡尔曼滤波器的复杂度不会随着时间或者测量量数量的增加而增加,预测和估计时,都只会使用期望和协方差矩阵来存储信息,并将其传递到下一个步骤进行处理。参考期望和协方差矩阵的维度。
测量值之间或者估计值之间的依赖性(不独立)从何而来?
有了相互依赖的关系的话,协方差矩阵就会变为:
C o v ( [ a b ] ) = [ C a C a b C b a C b ] Cov(\begin{bmatrix} a \\ b \end{bmatrix}) = \begin{bmatrix} C_a & C_{ab} \\ C_{ba} & C_b \end{bmatrix} Cov([ab])=[CaCbaCabCb]
如果忽略数据的依赖关系,会有什么后果?
举个例子,在BLUE时,我们要使用测量值的协方差矩阵作为测量误差的协方差,如果此时我们忽略了数据之间的依赖关系,只使用对角阵作为测量误差的协方差矩阵(简化了矩阵),那么想有BLUE的条件就是不成立的,也就是说我们此时只能得到次优的结果。
举例:如果使用了相关的数据,可以得到一个更小的协方差矩阵,但是这个矩阵的结果是错误的!!要参考Folie的例子。
什么是SLAM
simultaneous localization and mapping
通过landmark来定位机器人
通过机器人实时的位置来定位landmark
SLAM的挑战在哪里
landmark也成为了状态量的一部分,复杂度,就是O(landmark数量的^3)
通常来说,都是非线性的
通常都有数据关联问题:如果不知道测量值y_k是从哪个landmark测出来的,要怎么办呢?
–法一:naive:找到和测量值距离最近的landmark,但是这种方法没有到考虑不确定度
–法二:使用Mahalanobis距离。最小化残差
没有绝对的起始位置
所有的landmark都是相互关联的correlate。如果L1可以通过L6进行correct,那么所有的Landmark都可以被修正,而且整体的不确定度会变小。loop closure
在没有landmark的情况下,相当于是纯koppelnavigation, 不确定度就会一直增加且without limits. 只有在有新landmark被观察到的时候才能同时更新位姿和landmark(之前观测到的也会被korrected)的位置。
为什么估计的地标位置之间的依赖关系在这里很重要?
如果可以形成回环,就可以减小整体的误差。
SLAM可以分为online SLAM和full SLAM。online的只会估计当前机器人的位置和路标的位置,full的会估计整个轨迹,修正之前的所有机器人位置和路标位置。Online SLAM的初始化如下。预测步骤中,协方差矩阵C,路标对应的方差是0, 因为路标是固定不动的。
使用泰勒展开在 x ‾ k 0 \underline{x}_k^0 xk0处线性化,然后按照Block的方法求解。注意: x ‾ ^ k 0 \hat{\underline{x}}_k^0 x^k0要尽可能靠近 x ‾ ^ k \hat{\underline{x}}_k x^k
线性化之后,使用迭代的方式(EKF)
如果碰到在 x ‾ k P \underline{x}_k^P xkP点附近线性化程度不好的情况,为了过更加准确,可以使用UKF
或者可以用迭代的方式,即使用非线性最小二乘求解:高斯牛顿法。NLSQ的初值 x ‾ ^ k 0 \hat{\underline{x}}_k^0 x^k0选择非常重要,最好是离 x ‾ k w a h r \underline{x}_k^{wahr} xkwahr很近。一般来说,NLSQ不是最优的,但是也足够好了。当然,这个方法也可能陷入局部最小值。