精华内容
下载资源
问答
  • 用瞬心法求平面运动刚体上各点的加速度用瞬心法求平面运动刚体上各点的加速度用瞬心法求平面运动刚体上各点的加速度
  • 算法思路在大地坐标系中,刚体上任意点A的位置可以下式表示: R=R0+r(1)R=R_0+r \tag 1 其中R0R_0表示刚体上的基点O在大地坐标系的位置, rr表示向量OA−→−\overrightarrow{OA}在大地坐标系中的坐标。 假设刚体...

    算法思路

    在大地坐标系中,刚体上任意点A的位置可以下式表示:

    R=R0+r(1)

    其中 R0 表示刚体上的基点O在大地坐标系的位置, r 表示向量OA在大地坐标系中的坐标。
    假设刚体上有个固连坐标系,那么 R 也可以表示为
    R=R0+Tρ(2)

    其中 T 表示固连坐标系相对于大地坐标系的方向余弦矩阵。ρ表示 OA 在固连坐标系中的坐标。将上式求两阶导
    a=a0+T¨ρ(3)

    假设 a0 T¨ 都是未知的,就有12个未知量。只需要知道4个点的坐标以及它们的加速度,利用方程(3),就可以完全确定这12个未知量。

    样例

    在ADAMS中建立了一个刚体,上面有6个标记点,其中5个用于计算(多余4个点,可以做最小二乘拟合),剩下的一个点作为验证
    这里写图片描述

    程序

    % 点的坐标,需要4个点(任意坐标系,可以是固连或者大地坐标系)
    % 对于有多于4个点的情况,利用伪逆,计算得到最小二乘解
    % 在ADAMS中建立样例,取坐标和加速度
    
    point1 = [
    %   103.6157     340.1818     28.9743
        -46.2203     347.0594     30.3414
        38.3051    231.4121    -104.823
        -5.4705    159.0944   -43.8787
        -64.2436    225.1557    96.2762];
    point = [
    %   100     350    0
        -50    350   0
        40.97   196.67    -83.69
        0   150   0
        -63  260.32    106.40
        -150  250   0];
    
    % 每个点的加速度,相对于大地坐标系
    acc = [
    %   -0.3808   -276.9834    142.8849
        5.1513   -256.189    172.1333
        38.5448    398.8363    123.7429
        -3.5535    393.7675    -232.1496
        -50.8528   -168.3864   -347.8126
        5.409   86.118   -5.6344];
    
    %%
    syms a11 a12 a13 a21 a22 a23 a31 a32 a33;
    A = [a11 a12 a13
        a21 a22 a23
        a31 a32 a33];
    syms ax ay az;
    a0 = [ax
        ay
        az];
    a0 = repmat(a0, 1, 5);
    
    f1 = a0 + A * point' - acc';
    vars = [
        a11
        a12
        a13
        a21
        a22
        a23
        a31
        a32
        a33
        ax
        ay
        az];
    [A0, b0] = equationsToMatrix(f1, vars);
    
    rlt = pinv(A0) * b0;
    rlt = eval(rlt);
    
    a11 = rlt(1);
    a12 = rlt(2);
    a13 = rlt(3);
    a21 = rlt(4);
    a22 = rlt(5);
    a23 = rlt(6);
    a31 = rlt(7);
    a32 = rlt(8);
    a33 = rlt(9);
    ax = rlt(10);
    ay = rlt(11);
    az = rlt(12);
    
    A = [a11 a12 a13
        a21 a22 a23
        a31 a32 a33];
    a0 = [ax
        ay
        az];
    
    % 样例
    p_e = [100     350    0];
    % a_e = [-0.3808   -276.9834    142.8849];
    a_e = a0 + A * p_e';

    运行结果
    a_e =
    -0.3806
    -276.9849
    142.8870

    展开全文
  • 刚体速度只有在选定坐标系时才有谈论意义,比如一台小车可以看作是一个刚体,其有三个传感器,Camera有一个速度,IMU有一个速度,轮子有一个速度,首先它们的速度是不同的(比如把地球看作一个刚体,地心的速度...

    参考:《A Mathematical Introduction to Robotic Manipulation》

    疑问:

    • 刚体的速度只有在选定坐标系时才有谈论意义,比如一台小车可以看作是一个刚体,其上有三个传感器,Camera有一个速度,IMU有一个速度,轮子有一个速度,首先它们的速度是不同的(比如把地球看作一个刚体,地心的速度与地球表面的速度是不同的),那么这些速度的关系是什么呢?
    • VIO中为何不使用Camera系而是IMU作为body系,如果使用Camera作为body系,IMU的测量值(角速度和加速度)要如何转化到Camera坐标系下?

    1. 转动速度

    刚体上任意一点 q q q在空间坐标系中的运动轨迹为:
    q a ( t ) = R a b ( t ) q b \mathbf{q}_{a}(t)=\mathbf{R}_{a b}(t) \mathbf{q}_{b} qa(t)=Rab(t)qb

    其中,A为空间坐标系,B为物体坐标系,坐标 q b \mathbf{q}_b qb是在物体坐标系中固定不变的,该点在空间坐标系中的速度为:
    v q a ( t ) = d d t q a ( t ) = R ˙ a b ( t ) q b \mathbf{v}_{\mathbf{q}_{a}}(t)=\frac{d}{d t} \mathbf{q}_{a}(t)=\dot{\mathbf{R}}_{a b}(t) \mathbf{q}_{b} vqa(t)=dtdqa(t)=R˙ab(t)qb

    因此, R a b \mathbf{R}_{a b} Rab将一点的刚体坐标变换为该点的空间速度,类似 R a b \mathbf{R}_{a b} Rab这种表示需要九个参数,不是很方便,转换成下面的简洁形式:
    v q a ( t ) = R ˙ a b ( t ) R a b − 1 ( t ) R a b ( t ) q b v_{q_{a}}(t)=\dot{R}_{a b}(t) R_{a b}^{-1}(t) R_{a b}(t) q_{b} vqa(t)=R˙ab(t)Rab1(t)Rab(t)qb

    我们已经知道 R ˙ a b ( t ) R a b − 1 ( t ) ∈ so ⁡ ( 3 ) \dot{R}_{a b}(t) R_{a b}^{-1}(t) \in \operatorname{so}(3) R˙ab(t)Rab1(t)so(3),是反对陈矩阵,记为:
    ω ^ a b s : = R ˙ a b R a b − 1 \widehat{\omega}_{a b}^{s}:=\dot{R}_{a b} R_{a b}^{-1} ω abs:=R˙abRab1

    其中, ω ^ a b s \widehat{\omega}_{a b}^{s} ω abs表示 b b b系在 a a a系下的速度在空间坐标系下的表示,描述为物体相对空间坐标系A的瞬时角速度

    1.1 刚体上一点的速度(A系与B系之间只有纯旋转运动)
    图片名称

    现在就可以使用物体的瞬时角速度来表示一点的速度,如下:
    v q a ( t ) = ω ^ a b s R a b ( t ) q b = ω a b s ( t ) × q a ( t ) v_{q_{a}}(t)=\widehat{\omega}_{a b}^{s} R_{a b}(t) q_{b}=\omega_{a b}^{s}(t) \times q_{a}(t) vqa(t)=ω absRab(t)qb=ωabs(t)×qa(t)

    对应的物理含义为:刚体的转速与刚体上一点到坐标系原点的距离的叉乘即为这一点的瞬时速度, q b q_{b} qb这个向量的长度越长,速度就越大,反之亦然,当长度为0时(该点与坐标系原点重合时),速度为0

    这样,只要知道物体的瞬时角速度和物体坐标上任意一点的位置,就可以得到该点在空间坐标下的速度

    1.2 (瞬时)