现代机器人学:角速度

在了解角速度这块的时候,有必要了解一些基础的知识;

反对称矩阵

AT=AA^T=-A

称其为反对称矩阵,将向量表示成反对称矩阵如下

[ω]=[0ω3ω2ω30ω1ω2ω10][\omega]=\begin{bmatrix} 0 & -\omega_3 & \omega_2\\ \omega_3 & 0 & -\omega_1\\ -\omega_2 & \omega_1 & 0 \end{bmatrix}

后面用符号**[x]**来表示向量x的反对称矩阵,将所有的3*3反对称矩阵称为so(3), 其中so表示反对称矩阵,定义如下

so(n)={SRn×n:ST=S}so(n)=\left\{S\in\mathbb{R}^{n\times n}:S^T=-S\right\}

其中反对称矩阵so(3)称为SO(3)群的李代数,SO表示特殊正交(special orthogonal)的意思, 特殊在detR=+1,用于表示空间中的旋转矩阵,其SO的定义如下

SO(n)={RRn×n:RRT=I,detR=+1}SO(n)=\left\{R\in\mathbb{R}^{n\times n}:RR^T=I,\det R=+1\right\}

角速度表示

R可以表示空间中的旋转,那如果想知道空间旋转的角速度,是不是直接求导就行了?和他提出的疑问是一样的

姿态可以用旋转矩阵 RR 表示,但角速度不能直接简单地写成 R˙\dot{R},因为 RR 有 9 个元素,而角速度只需要 3 个量来描述。

当然不能直接求导,因为矩阵里面有9个变量,只希望用三个变量来表示角速度,我们知道,角速度可以通过一个旋转轴和对应的旋转速度来表示

空间角速度

这里假设了旋转轴为ωs\omega_s , 是一个相对于惯性坐标系,也可以称之为静止坐标系,为了单位的统一,这里可以假设旋转轴为单位旋转向量,其中单位向量的识别符为在上面加个帽子,即ω^s\hat{\omega}_s ,用单位旋转轴乘以其速率,即可得到角速度向量ωs\omega_s ,即

ωs=θ˙ω^s\omega_s=\dot{\theta}\,\hat{\omega}_s

这样坐标系{b}在绕这个轴旋转时,其x轴方向将相对于s坐标系画一个圆,

不难得到,坐标系{b}的三个轴的速度可以表示为

x˙b=ωs×xb,y˙b=ωs×yb,z˙b=ωs×zb\dot{x}_b=\omega_s\times x_b,\qquad \dot{y}_b=\omega_s\times y_b,\qquad \dot{z}_b=\omega_s\times z_b

利用括号运算符(表示叉乘), 通过上式,就可以直接得到如下关系式了(比直接看机器人操作的数学导论更容易理解,那书中就直接定义了,也没给出解释,搞得有点懵)

R˙sb=[x˙by˙bz˙b]=[ωs]Rsb\dot{R}_{sb}=\begin{bmatrix}\dot{x}_b&\dot{y}_b&\dot{z}_b\end{bmatrix}=[\omega_s]R_{sb}

空间旋转轴的表示方法

相对于s坐标系的旋转矩阵一般可以省略下标,通过以上推导,就不难得到第一个重要的公式,即

[ωs]=R˙RT[\omega_s]=\dot{R}R^T

当然,这里给出的角速度是相对于空间坐标系的,当然可以相对于物体坐标系,通过下标对消规则,ωb\omega_b 可以表示为

ωb=Rbsωs=RsbTωs\omega_b=R_{bs}\omega_s=R_{sb}^T\omega_s

下面得到第二个重要公式前,需要知道一个定理,即

R[ω]RT=[Rω]R[\omega]R^T=[R\omega]

这样不难推导出第二个重要公式,即

[ωb]=[RTωs]=RT[ωs]R=RT(R˙RT)R=RTR˙[\omega_b]=[R^T\omega_s]=R^T[\omega_s]R=R^T(\dot{R}R^T)R=R^T\dot{R}

物体角速度的解释

值得注意的是:ωb\omega_b并不是相对动坐标系的角速度;确切地说,ωb\omega_b 表示的是相对静坐标系{b}的角速度,{b}只是与运动刚体随动坐标系瞬时重合。另外还需要注意一点,这里无论对 R˙\dot{R} 左乘还是右乘 RTR^T 都会得到有关角速度的一个反对称矩阵,只是相对的坐标系不同。

更容易理解的推导

根据坐标变换公式:

ps=Rpbp_s=Rp_b

对上式左右同时求导:

p˙s=R˙pb+Rp˙b\dot{p}_s=\dot{R}p_b+R\dot{p}_b

因为 p是附着在刚体上的, 所以p相对于刚体坐标系下的速度为0,故有

p˙s=R˙pb=R˙R1ps\dot{p}_s=\dot{R}p_b=\dot{R}R^{-1}p_s

可以看出 R˙\dot{R}R1R^{-1} 将点的位置变成了点的线速度。又有角速度和线速度的公式:

p˙s=[ωs]ps\dot{p}_s=[\omega_s]p_s

所以有空间角速度

[ωs]=R˙R1=R˙RT[\omega_s]=\dot{R}R^{-1}=\dot{R}R^T

对于自己而言,这种方式推导出的结果,记忆效果最佳;

参考

[1] 现代机器人学

[2] 机器人学笔记——中科院软件所

algorithms axis-angle bang-bang bode calibration chrome cmake cmakelists cnn colcon conan control cpp cpu d435i data_struct db design-pattern dots economics eigen factory-pattern fcpx figure finance forge fov gazebo gdb git gnu ibus interest isaac gym isaaclab kdl latex launch learning-notes legged locomotion legged-robot life linux mac math matlab matrix memory mlp money motion-control motor moveit mpc mujoco network ocs2 ode operator optimal algorithm optimal-control perf performance personal-finance ppo profiling python qos quadrotor realsense reinforcement learning rnn robot robotics ros ros2 rtb security shell simulation stl thread tools twist ubuntu uml unitree urdf vae valgrind vcxsrv velocity vim web wifi work wsl 中文输入 交叉编译 依赖管理 分支管理 四足机器人 实验诊断 强化学习 机器人视觉 构建系统 深度学习 深度相机 点云 版本控制 神经网络 训练曲线 输入法 配置类 飞控
知识共享许可协议