学习笔记搜索

00.1|从三个数字开始:单位、向量与点乘叉乘

先回答一个问题:机器人到底往哪里走?

“速度是 2”并不完整:每秒两米还是两厘米?向北还是向下?本课只需要会四则运算。学习目标不是背符号,而是能把一个速度和一个力矩亲手算出来。

第一步:标量只要一个数,向量还需要方向

质量 m=20 kgm=20\ \mathrm{kg} 是标量。导航系 nn 的三根正轴依次指北、东、下,简称 NED。位置写成

pn=[2−13]m.p^n=\begin{bmatrix}2\\-1\\3\end{bmatrix}\mathrm m.

pp 表示位置,上标 nn 不是乘方,而是“这些数字按导航轴记账”。这表示从选定原点向北两米、向西一米、向下三米。下标 x,y,zx,y,z 表示第一、二、三分量;pxn=2 mp_x^n=2\ \mathrm m。机体系 bb 的正轴是前、右、下,简称 FRD。两种坐标系都是右手系,但“前”只有在机头朝北且水平时才等于“北”。

单位也是计算的一部分。速度 vv 乘时间 tt 才得到位移,不能把速度直接加到位置:

Δpn=vnΔt,[1−0.50]ms(2 s)=[2−10]m.\Delta p^n=v^n\Delta t, \qquad \begin{bmatrix}1\\-0.5\\0\end{bmatrix}\frac{\mathrm m}{\mathrm s} (2\ \mathrm s)=\begin{bmatrix}2\\-1\\0\end{bmatrix}\mathrm m.

Δ\Delta 表示“变化量”,Δt\Delta t 是经过的时间。只有单位相同、坐标系相同、物理含义相容的量才能逐分量相加。两个向量的加法就是三个普通加法。

第二步:长度不是把三个分量相加

向量 a=[ax,ay,az]Ta=[a_x,a_y,a_z]^T 中的 TT 是转置,把横写的一行变成竖写的一列。长度由三维勾股定理给出:

∥a∥=ax2+ay2+az2.\|a\|=\sqrt{a_x^2+a_y^2+a_z^2}.

双竖线表示长度,不是绝对值逐项相加。若位移 a=[3,4,0]T ma=[3,4,0]^T\ \mathrm m,长度为 5 m5\ \mathrm m。单位方向 d=a/∥a∥=[0.6,0.8,0]Td=a/\|a\|=[0.6,0.8,0]^T 无量纲,长度为一;零向量不能这样除,因为它没有确定方向。

第三步:点乘把“沿某方向有多少”算成一个数

对同一坐标系中的向量 a,ba,b,点乘定义为

aTb=axbx+ayby+azbz=∥a∥∥b∥cos⁡γ.a^Tb=a_xb_x+a_yb_y+a_zb_z=\|a\|\|b\|\cos\gamma.

γ\gamma 是两个非零向量的夹角。点乘结果是标量;垂直时为零,同向时为正。若力 F=[3,4,0]T NF=[3,4,0]^T\ \mathrm N,前向单位轴 ex=[1,0,0]Te_x=[1,0,0]^T,则 exTF=3 Ne_x^TF=3\ \mathrm N。若位移 s=[2,0,0]T ms=[2,0,0]^T\ \mathrm m,力恒定时做功 FTs=6 JF^Ts=6\ \mathrm J,因为只有沿位移的力做功。这里 J=N m\mathrm J=\mathrm{N\,m} 是焦耳。

第四步:矩阵只是同时执行几行“乘完再相加”

矩阵有行数和列数。AA 是 2×32\times3 矩阵、xx 是 3×13\times1 列向量时,内部的三相等,所以能相乘;结果为 2×12\times1:

Ax=[1200−13][214]=[1(2)+2(1)+0(4)0(2)−1(1)+3(4)]=[411].A x= \begin{bmatrix}1&2&0\\0&-1&3\end{bmatrix} \begin{bmatrix}2\\1\\4\end{bmatrix} =\begin{bmatrix}1(2)+2(1)+0(4)\\0(2)-1(1)+3(4)\end{bmatrix} =\begin{bmatrix}4\\11\end{bmatrix}.

同一个物理速度换坐标时用 vn=Rbnvbv^n=R_b^n v^b。RbnR_b^n 是三行三列、无量纲的旋转矩阵,下标是来源,上标是目标。水平机体朝东时,机体前、右、下分别指向东、南、下,因此三列为

Rbn=[0−10100001],Rbn[200]=[020].R_b^n=\begin{bmatrix}0&-1&0\\1&0&0\\0&0&1\end{bmatrix}, \qquad R_b^n\begin{bmatrix}2\\0\\0\end{bmatrix} =\begin{bmatrix}0\\2\\0\end{bmatrix}.

这不是把机器人转了一次,而是把同一条每秒两米的前向速度换一种记法。旋转前后长度都为二。

第五步:叉乘输出一个向量,解释转动趋势

点乘回答投影,叉乘回答两方向张成平面的法向及有向面积。先直接按分量计算,不必从行列式记忆:

a×b=[aybz−azbyazbx−axbzaxby−aybx]=[a]×b,[a]×=[0−azayaz0−ax−ayax0].a\times b= \begin{bmatrix}a_yb_z-a_zb_y\\a_zb_x-a_xb_z\\a_xb_y-a_yb_x\end{bmatrix} =[a]_\times b, \quad [a]_\times=\begin{bmatrix}0&-a_z&a_y\\a_z&0&-a_x\\-a_y&a_x&0\end{bmatrix}.

[a]×[a]_\times 不是新物理量,只是把“与 aa 叉乘”写成矩阵乘法。交换顺序会变号:b×a=−a×bb\times a=-a\times b。因此力矩必须是杆臂叉力,不能反过来。

在 FRD 中,推进器位于参考点前方 rb=[0.5,0,0]T mr^b=[0.5,0,0]^T\ \mathrm m,向右施力 Fb=[0,4,0]T NF^b=[0,4,0]^T\ \mathrm N:

Nb=rb×Fb=[000.5(4)]=[002]N m.N^b=r^b\times F^b= \begin{bmatrix}0\\0\\0.5(4)\end{bmatrix} =\begin{bmatrix}0\\0\\2\end{bmatrix}\mathrm{N\,m}.

NbN^b 是关于该参考点的力矩。正下轴力矩对应从上方看机头向右转。杆臂沿力的方向时,叉乘为零:推力可以很大,却不绕这个参考点产生力矩。

自检:先算再展开答案

  1. 00-V1(单位):速度 [0,0,0.3]T m/s[0,0,0.3]^T\ \mathrm{m/s} 持续 2 s2\ \mathrm s,NED 深度增加还是减少?位移多少?
  2. 00-V2(叉乘):rb=[0,0.2,0]T mr^b=[0,0.2,0]^T\ \mathrm m、Fb=[5,0,0]T NF^b=[5,0,0]^T\ \mathrm N,力矩是什么?
  3. 00-V3(矩阵):用上面的朝东旋转矩阵把 vb=[1,1,0]T m/sv^b=[1,1,0]^T\ \mathrm{m/s} 变为导航速度,并核对长度。
展开逐步答案

00-V1:向下为正,Δpn=[0,0,0.6]T m\Delta p^n=[0,0,0.6]^T\ \mathrm m,深度增加。00-V2:只有第三项非零,Nz=0(0)−0.2(5)=−1 N mN_z=0(0)-0.2(5)=-1\ \mathrm{N\,m},所以 Nb=[0,0,−1]T N mN^b=[0,0,-1]^T\ \mathrm{N\,m}。00-V3:逐行乘得 vn=[−1,1,0]T m/sv^n=[-1,1,0]^T\ \mathrm{m/s};前后长度均为 2 m/s\sqrt2\ \mathrm{m/s}。

下一步:变化率与一拍预测。应用入口:坐标与姿态、推进器几何。

本章编程练习

查看全部练习

仅保存在当前浏览器,可在学习记录页导出。