传感器数据处理笔记

[复制链接]
发表于 2025-5-5 05:15:54 | 显示全部楼层 |阅读模式
里程计模子:


  • 两轮差分地盘的运动学模子
  • 三轮全向底盘的运动学模子
  • 航迹推算(Dead Reckoning)
里程计标定


  • 线性最小二乘的基本原理
  • 最小二乘的直线拟合
  • 最小二乘在里程计标定中的应用
差分底盘的优势就是:


  • 布局简朴
  • 自制(2个电机)
  • 模子简朴
两轮差分地盘的运动学模子:
欠驱动系统:xy                                   θ                              \theta                  θ三个自由度,vl和vr(两个xx)(意味着运动是耦合的)
(相关过程直接省略)使用的是                                                        V                               L                                                 r                               −                               d                                            =                                              V                               R                                                 r                               +                               d                                                 \frac{V_L}{r-d}=\frac{V_R}{r+d}                  r−dVL​​=r+dVR​​然后得到                                   r                         =                                                          v                                  R                                          +                                           v                                  L                                                                        v                                  R                                          −                                           v                                  L                                                       d                              r=\frac{v_R+v_L}{v_R-v_L}d                  r=vR​−vL​vR​+vL​​d
公式:
                                                                                       v                                                                                                          =                                                                                        v                                                 R                                                              +                                                               v                                                 L                                                                          2                                                                                                                                                          ω                                                                                                          =                                                                                        v                                                 R                                                              −                                                               v                                                 L                                                                                          2                                              d                                                                                                                                 \begin{align} \mathbf{v} &= \frac{v_R + v_L}{2} \\ \omega &= \frac{v_R - v_L}{2d} \end{align}                     vω​=2vR​+vL​​=2dvR​−vL​​​​
从上面两式解出                                              v                            R                                  ,                                    v                            L                                       v_R,\,v_L                  vR​,vL​ :
                                         {                                                                                                             v                                              R                                                          =                                           v                                           +                                           ω                                            d                                           ,                                                                                                                                                       v                                              L                                                          =                                           v                                           −                                           ω                                            d                                           .                                                                                              \begin{cases} v_R = v + \omega\,d,\\ v_L = v - \omega\,d. \end{cases}                     {vR​=v+ωd,vL​=v−ωd.​
三轮全向底盘

具有以下的特点:


  • 任何方向平移
  • 全驱动系统: 3个自由度xy                                        θ                                  \theta                     θ 和 v1、v2、v3输入–》可以向任意方向运动
  • 可进行运动学分解

分解的方法就是假设只有一个方向

第一个:直接相加
第二个:是第一个的矩阵形式
第三个:第二个的逆矩阵
运动学预测(Prediction)——从增量到全局位姿



  • 概述
在移动呆板人导航与定位中(如 EKF、粒子滤波等),预测步调就是把呆板人在自身坐标系下测得的运动增量                                    (                         d                         x                         ,                         d                         y                         ,                         d                         θ                         )                              (dx,dy,d\theta)                  (dx,dy,dθ),转换到全局坐标系并更新全局位姿                                    (                         x                         ,                         y                         ,                         θ                         )                              (x,y,\theta)                  (x,y,θ)。

  • 坐标系与示意图

    1. markdown复制编辑     机器人自身坐标系             全局坐标系
    2.         ▲ y_body                    ▲ Y
    3.         │                          /
    4.         │                        /
    5.         │                      /
    6.         └───► x_body        ●───► X
    复制代码

    • 自身坐标系:呆板人车体前进方向为                                                                x                                                   b                                        o                                        d                                        y                                                                   x_{body}                           xbody​,左侧为                                                                y                                                   b                                        o                                        d                                        y                                                                   y_{body}                           ybody​。
    • 全局坐标系:环境中的固定参考系,呆板人初始位姿为                                                   (                                  x                                  ,                                  y                                  ,                                  θ                                  )                                          (x,y,\theta)                           (x,y,θ)。

  • 运动增量与同质变换

    呆板人在自身坐标系下运动一小段距离,测得增量向量
                                                       Δ                                               p                                                   b                                        o                                        d                                        y                                                           =                                               [                                                                                                                     d                                                    x                                                                                                                                                                        d                                                    y                                                                                                                                                                        d                                                    θ                                                                                                                ]                                              .                                          \Delta \mathbf{p}_{body} = \begin{bmatrix} dx \\ dy \\ d\theta \end{bmatrix}.                           Δpbody​=                 ​dxdydθ​                 ​.
    要将它叠加到全局位姿,使用 3×3 同质坐标变换:
    $$
    T(\theta) ;=;
    \begin{bmatrix}
    \cos\theta & -\sin\theta & 0\[4pt]
    \sin\theta & ;\cos\theta & 0\[4pt]
    0 & 0 & 1
    \end{bmatrix},
    \quad
    \begin{bmatrix} x’ \ y’ \ \theta’ \end{bmatrix}


    \begin{bmatrix} x \ y \ \theta \end{bmatrix}
    ;+;
    T(\theta),\Delta \mathbf{p}_{body}.
                                                       展开即得:                                          展开即得:                           展开即得:
    \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}.
    $$

    • 第一行                                                                x                                     ′                                              =                                  x                                  +                                  cos                                  ⁡                                  θ                                  ⋅                                  d                                  x                                  −                                  sin                                  ⁡                                  θ                                  ⋅                                  d                                  y                                          x' = x + \cos\theta\cdot dx - \sin\theta\cdot dy                           x′=x+cosθ⋅dx−sinθ⋅dy
    • 第二行                                                                y                                     ′                                              =                                  y                                  +                                  sin                                  ⁡                                  θ                                  ⋅                                  d                                  x                                  +                                  cos                                  ⁡                                  θ                                  ⋅                                  d                                  y                                          y' = y + \sin\theta\cdot dx + \cos\theta\cdot dy                           y′=y+sinθ⋅dx+cosθ⋅dy
    • 第三行                                                                θ                                     ′                                              =                                  θ                                  +                                  d                                  θ                                          \theta' = \theta + d\theta                           θ′=θ+dθ

  • 旋转矩阵详解

    同质矩阵                                              T                               (                               θ                               )                                      T(\theta)                        T(θ) 中的前 2×2 子矩阵
                                                       R                                  (                                  θ                                  )                                  =                                               [                                                                                                                     cos                                                    ⁡                                                    θ                                                                                                                                              −                                                    sin                                                    ⁡                                                    θ                                                                                                                                                                        sin                                                    ⁡                                                    θ                                                                                                                                                                 cos                                                    ⁡                                                    θ                                                                                                                ]                                                      R(\theta)= \begin{bmatrix} \cos\theta & -\sin\theta\\ \sin\theta & \;\cos\theta \end{bmatrix}                           R(θ)=[cosθsinθ​−sinθcosθ​]

    • 用途:将自身坐标系下的平移增量                                                   (                                  d                                  x                                  ,                                  d                                  y                                               )                                     T                                                      (dx,dy)^T                           (dx,dy)T 旋转到全局坐标系下。
    • 逆变换:若要把全局系增量映回自身系,使用                                                                R                                                   −                                        1                                                           =                                               R                                     T                                                      R^{-1}=R^T                           R−1=RT:
    $$
    R(\theta)^{-1}
    =R(\theta)^T


    \begin{bmatrix}
    \cos\theta & \sin\theta\
    -\sin\theta & \cos\theta
    \end{bmatrix}.
    $$

  • 含噪声的运动模子

    现实丈量与执行存在误差,引入高斯噪声向量                                              ε                               =                               [                                           ε                                  x                                          ,                                           ε                                  y                                          ,                                           ε                                  θ                                                      ]                                  T                                                 \varepsilon=[\varepsilon_x,\varepsilon_y,\varepsilon_\theta]^T                        ε=[εx​,εy​,εθ​]T:
    $$
    \Delta \mathbf{p}_{body}^{noisy}


    \begin{bmatrix} dx \ dy \ d\theta \end{bmatrix}
    +
    \begin{bmatrix}\varepsilon_x\\varepsilon_y\\varepsilon_\theta\end{bmatrix}.
                                                       完备预测更新为:                                          完备预测更新为:                           完备预测更新为:
    \begin{bmatrix} x’ \ y’ \ \theta’ \end{bmatrix}


    \begin{bmatrix} x \ y \ \theta \end{bmatrix}
    +
    T(\theta),\Delta \mathbf{p}_{body}^{noisy}.
    $$
里程计标定

使用线性最小二乘法进行标定

对于差别规模关系的线性方程组                                    A                         x                         =                         b                              A x = b                  Ax=b,常用的求解或近似方法如下:

  • 适定方程组(                                        m                            =                            n                                  m = n                     m=n)


  • 矩阵可逆(                                             det                               ⁡                               A                               ≠                               0                                      \det A \neq 0                        detA=0)时
                                                       x                                  =                                               A                                                   −                                        1                                                           b                                          x = A^{-1} b                           x=A−1b
    大概更稳固地用 LU 分解QR 分解等数值方法直接求解。
  • 矩阵不可逆(                                             det                               ⁡                               A                               =                               0                                      \det A = 0                        detA=0)时
    退化为欠定/超定的情形,见下面。

  • 欠定方程组(                                        m                            <                            n                                  m < n                     m<n,方程少于未知数)


  • 无穷多解:通解可以写成
                                                       x                                  =                                               x                                     0                                              +                                  N                                  (                                  A                                  )                                  ,                                          x = x_0 + N(A),                           x=x0​+N(A),
    其中                                                          x                                  0                                                 x_0                        x0​ 是任意一个特解,                                             N                               (                               A                               )                                      N(A)                        N(A) 是齐次解空间(维度                                              n                               −                               m                                      n-m                        n−m)。
  • 最小范数解(最常用)
    取唯一的 “最小二乘范数” 解(Moore–Penrose 伪逆),即
                                                                    x                                     ∗                                              =                                               A                                     T                                              (                                  A                                               A                                     T                                                           )                                                   −                                        1                                                           b                                  ,                                          x^* = A^T (A A^T)^{-1} b,                           x∗=AT(AAT)−1b,
    它也是所有解中                                              ∥                               x                               ∥                                      \|x\|                        ∥x∥ 最小者。

  • 超定方程组(                                        m                            >                            n                                  m > n                     m>n,方程多于未知数)


  • 无精确解:通常不存在满足所有方程的                                              x                                      x                        x。
  • 最小二乘解
    求解
                                                                                  min                                        ⁡                                                  x                                              ∥                                  A                                  x                                  −                                  b                                               ∥                                     2                                              ,                                          \min_x \|A x - b\|^2,                           xmin​∥Ax−b∥2,
    通解为正规方程
                                                                    A                                     T                                              A                                   x                                  =                                               A                                     T                                              b                                             ⟹                                                          x                                     ∗                                              =                                  (                                               A                                     T                                              A                                               )                                                   −                                        1                                                                        A                                     T                                              b                                  .                                          A^T A\,x = A^T b \quad\Longrightarrow\quad x^* = (A^T A)^{-1} A^T b.                           ATAx=ATb⟹x∗=(ATA)−1ATb.
    在数值上,推荐使用 QR 分解SVD 求解最小二乘,以包管稳固性。



  •                                         m                            =                            n                                  m=n                     m=n:直接求逆或分解;
  • $m:参数化通解,常取伪逆给出最小范数解;
  •                                         m                            >                            n                                  m>n                     m>n:最小二乘,正规方程或分解方法。

一样平常来说通解是                                             x                            ∗                                  =                         (                                   A                            T                                  A                                   )                                       −                               1                                                      A                            T                                  b                         .                              x^* = (A^T A)^{-1} A^T b.                  x∗=(ATA)−1ATb.但是会出现一些问题

  • 超定方程组(                                        m                            >                            n                                  m>n                     m>n,方程多于未知数)


  • 最小二乘解
                                                                    x                                     ∗                                              =                                  (                                               A                                     T                                              A                                               )                                                   −                                        1                                                                        A                                     T                                              b                                          x^* = (A^T A)^{-1} A^T b                           x∗=(ATA)−1ATb
  • 数值问题

    • 条件数放大:                                                  κ                                  (                                               A                                     T                                              A                                  )                                  ≈                                  κ                                  (                                  A                                               )                                     2                                                      \kappa(A^TA)\approx\kappa(A)^2                           κ(ATA)≈κ(A)2,小的浮点误差被平方放大,解可能极不准确。
    • 对                                                        b                                              b                              b 的微小扰动敏感:当                                                   b                                  →                                  b                                  +                                  δ                                  b                                          b\to b+\delta b                           b→b+δb 时,                                                               x                                     ∗                                                      x^*                           x∗ 的变化往往远大于                                                   δ                                  b                                          \delta b                           δb。
    •                                                                      A                                        T                                                  A                                              A^TA                              ATA 不可逆或病态:若                                                   A                                          A                           A 列不满秩,                                                               A                                     T                                              A                                          A^TA                           ATA 奇异;即便可逆,也可能因病态(高条件数)而不可靠。

  • 改进方法

    • QR 分解:令                                                        A                                     =                                     Q                                     R                                              A=Q R                              A=QR,解                                                        R                                      x                                     =                                                   Q                                        T                                                  b                                              R\,x=Q^T b                              Rx=QTb,避免直接构造并求逆                                                                      A                                        T                                                  A                                              A^TA                              ATA。
    • SVD/伪逆:                                                       A                                     =                                     U                                     Σ                                                   V                                        T                                                           A=U \Sigma V^T                              A=UΣVT,取
                                                                                  x                                           ∗                                                      =                                        V                                                        Σ                                           +                                                                      U                                           T                                                      b                                        ,                                                  x^* = V\,\Sigma^+\,U^T b,                                 x∗=VΣ+UTb,
      可处理秩亏且更稳固。
    • 正则化(Ridge)
                                                                                  x                                           ∗                                                      =                                        (                                                       A                                           T                                                      A                                        +                                        λ                                        I                                                       )                                                           −                                              1                                                                                    A                                           T                                                      b                                        ,                                                     λ                                        >                                        0                                                  x^* = (A^T A + \lambda I)^{-1}A^T b,\quad \lambda>0                                 x∗=(ATA+λI)−1ATb,λ>0
      对抗病态与噪声。



免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
继续阅读请点击广告

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
回复

使用道具 举报

© 2001-2025 Discuz! Team. Powered by Discuz! X3.5

GMT+8, 2025-7-18 21:03 , Processed in 0.246785 second(s), 33 queries 手机版|qidao123.com技术社区-IT企服评测▪应用市场 ( 浙ICP备20004199 )|网站地图

快速回复 返回顶部 返回列表