《Modern Robotics》阅读笔记3——刚体的运动(三)

本文是《Modern Robotics》阅读笔记,聚焦刚体运动。先给出角速度定义,结合旋转方向与速率定义角速度;接着探讨其与旋转矩阵关系,在固定和体坐标系下推导旋转矩阵微分形式,得出旋转矩阵与角速度关系;最后强调对ωb的正确理解,指出ωs、ωb与坐标系选择无关。

《Modern Robotics》阅读笔记3——刚体的运动(三)

这篇文章主要讨论了角速度和旋转矩阵的表示方法。

1. 角速度定义

在这里插入图片描述

这幅图的左图中,坐标系{x^,y^,z^}\{\hat{x},\hat{y},\hat{z}\}{x^,y^,z^}绕着ω^\hat{\omega}ω^旋转,经过Δt\Delta{t}Δt的时间,旋转了Δθ\Delta{\theta}Δθ的角度。
假设Δt\Delta{t}Δt无限逼近于0,我们定义θ˙=ΔθΔt\dot{\theta}=\frac{\Delta{\theta}}{\Delta{t}}θ˙=ΔtΔθ为旋转的速率,结合旋转的方向ω^\hat{\omega}ω^,我们就可以定义角速度为:
ω=ω^θ˙\omega = \hat{\omega}\dot{\theta}ω=ω^θ˙

这幅图的右图,我们可以得到x^,y^,z^\hat{x},\hat{y},\hat{z}x^,y^,z^轴方向上的角速度:
x^˙=ω×x^y^˙=ω×y^z^˙=ω×z^ \begin{matrix} \dot{\hat{x}} = \omega \times \hat{x} \\ \\ \dot{\hat{y}} = \omega \times \hat{y} \\ \\ \dot{\hat{z}} = \omega \times \hat{z} \end{matrix} x^˙=ω×x^y^˙=ω×y^z^˙=ω×z^

2. 角速度与旋转矩阵的关系

到目前为止,我们并没有指定ω^\hat{\omega}ω^向量是在哪个坐标系下表示的,接下来我们要在具体的坐标系表示下讨论这件事了。

假设我们有一个固定坐标系{s}和一个体坐标系{b},旋转矩阵R(t)R(t)R(t)表示{b}系在{s}系下的姿态(这里主要是强调旋转矩阵是变化的),旋转方向ω^\hat{\omega}ω^在{s}系下的表示为ω^s\hat{\omega}_sω^s
其中,R(t)=Rsb(t)=[r1(t),r2(t),r3(t)]R(t)=R_{sb}(t)=[r_1(t),r_2(t),r_3(t)]R(t)=Rsb(t)=[r1(t),r2(t),r3(t)]r1(t)r_1(t)r1(t)代表{b}系的x轴在{s}系下的表示,r2(t),r3(t)r_2(t),r_3(t)r2(t),r3(t)分别代表y和z轴。

因为ωs\omega_sωsr1,r2,r3r_1,r_2,r_3r1,r2,r3都是{s}系下表示的向量,于是根据上面的公式:
r1˙=ωs×r1r2˙=ωs×r2r3˙=ωs×r3 \begin{matrix} \dot{r_1} = \omega_s \times r_1 \\ \\ \dot{r_2} = \omega_s \times r_2 \\ \\ \dot{r_3} = \omega_s \times r_3 \end{matrix} r1˙=ωs×r1r2˙=ωs×r2r3˙=ωs×r3
所以,旋转矩阵的微分形式就可以表达为:
R˙=[ωs×r1∣ωs×r2∣ωs×r3]=ωs×R=[ωs]R\dot{R}=[ \omega_s \times r_1 | \omega_s \times r_2 | \omega_s \times r_3 ]=\omega_s \times R=[\omega_s]RR˙=[ωs×r1ωs×r2ωs×r3]=ωs×R=[ωs]R

注:
为了消除这里的叉乘运算,我们可以引入一个新的概念。我们定义[ωs][\omega_s][ωs]为向量ωs∈R3\omega_s \in \mathbb{R^3}ωsR33×3的反对称矩阵,则有3\times 3的反对称矩阵,则有3×3ω×R=[ωs]R\omega \times R = [\omega_s]Rω×R=[ωs]R成立。
ω=[ω1,ω2,ω3]\omega=[\omega_1,\omega_2,\omega_3]ω=[ω1,ω2,ω3]时,
[ω]=[0−ω3ω2ω30−ω1−ω2ω10][\omega]=\left[ \begin{matrix} 0 & -\omega_3 & \omega_2 \\ \omega_3 & 0 & -\omega_1 \\ -\omega_2 & \omega_1 & 0 \end{matrix} \right][ω]=0ω3ω2ω30ω1ω2ω10

回到正题
所以,很显然:
[ωs]=R˙R−1[\omega_s]=\dot{R}R^{-1}[ωs]=R˙R1

现在我们得到了,旋转矩阵RRR和角速度[ωs][\omega_s][ωs]的关系。那么,如何求ωb\omega_bωbRRR的关系呢?

因为R∈SO(3)R\in SO(3)RSO(3),有如下关系式成立(读者可以自己证明):
R[ω]RT=[Rω]R[\omega]R^T=[R\omega]R[ω]RT=[Rω]

因为ωb=RsbTωs=RTωs\omega_b=R_{sb}^{T}\omega_s=R^T\omega_sωb=RsbTωs=RTωs,所以:
[ωb]=[RTωs]=RT[ωs]R=RT(R˙RT)R=RTR˙=R−1R˙\begin{aligned}\left[\omega_{b}\right] &=[R^{T} \omega_{s}] \\ &=R^{T}\left[\omega_{s}\right] R \\ &=R^{T}(\dot{R} R^{T}) R \\ &=R^{T} \dot{R}=R^{-1} \dot{R} \end{aligned}[ωb]=[RTωs]=RT[ωs]R=RT(R˙RT)R=RTR˙=R1R˙

于是,我们就得到了ωb\omega_bωbRRR的关系。

3. 对于角速度的理解

上文中提到的ωb\omega_bωb,不能理解为当前的运动相对于体坐标系{b}的角速度。而应该理解为,当前运动相对于一个与体坐标系{b}完全对齐的静止坐标系的角速度。

另外,值得注意,ωs\omega_sωs完全不取决于{b}系如何选择,ωb\omega_bωb也完全不取决于{s}系如何选择。

本篇文章结束。

注:为了更好的阅读体验,避免文章过长,原本一章的内容被拆分成了多篇文章。

<think> 嗯,用户这次的需求很明确,是要查找Coursera平台上"现代机器人学"专项课程第门关于机器人动力学的具体内容。从用户引用的站内文档来看,ta可能正在系统学习机器人学相关知识,特别是对AI Agent在机器人控制中的应用感兴趣。 用户特意强调了要参考"现代机器人"课程体系,说明ta需要的是结构化学习资料。根据我对该专项课程的了解,第门课确实是动力学的核心内容。不过用户没有说明具体想了解课程的哪个方面,是教学大纲、参考书籍还是编程作业?考虑到机器人动力学的数学门槛较高,用户可能是想提前了解课程难度。 注意到用户引用的术语表中提到了"传感器融合"和"决策模型",虽然这些属于第一二门课的内容,但动力学课程中的牛顿-欧拉方程正是实现这些功能的基础。在课程推荐部分应该强调这种知识衔接性。 用户似乎习惯接受系统化的知识呈现方式,上次回复关于ROS和SLAM的内容时ta没有追问,这次可以继续提供模块化的课程信息。不过要避免直接复制粘贴课程描述,重点提炼机器人动力学特有的知识点,比如空间向量刚体动力学的关联。 特别要注意的是,用户引用的文档提到"Python源代码"和"数学模型",说明ta关注实践应用。回复中应该突出课程里的Matlab/Mathematica实例,并补充说明这些工具如何帮助理解动力学方程——毕竟用代码实现牛顿-欧拉递归算法是这门课的亮点。 </think> 以下是关于Coursera平台《现代机器人学》专项课程**第门《机器人动力学》**的核心内容梳理及学习资源指引: --- ### **课程核心内容** 1. **刚体运动动力学** - 牛顿-欧拉方程推导 - 旋转惯量矩阵惯性张量 - 空间力向量(wrench)的数学表示:$\mathcal{F}_b = [f_b, \tau_b]^T$ $$ \mathcal{F}_b = \begin{bmatrix} f_b \\ \tau_b \end{bmatrix} \in \mathbb{R}^6 $$ 2. **机器人动力学建模** - **逆向动力学**:给定关节运动($q, \dot{q}, \ddot{q}$),计算关节力矩 $\tau$ ```python # 伪代码示例:牛顿-欧拉递归算法 def inverse_dynamics(q, qd, qdd, gravity): tau = np.zeros(len(q)) # 前向传递(计算连杆速度/加速度) for i in range(1, len(q)): v_i = v_prev + joint_velocity(qd[i]) a_i = a_prev + gravity + joint_acceleration(qdd[i]) # 后向传递(计算关节力) for i in range(len(q)-1, -1, -1): F_i = I_i * a_i + ... # 牛顿-欧拉方程 tau[i] = F_i.dot(joint_axis) return tau ``` - **正向动力学**:给定力矩 $\tau$,求解 $\ddot{q}$ $$ M(q)\ddot{q} + C(q, \dot{q})\dot{q} + g(q) = \tau $$ 其中 $M(q)$ 为质量矩阵,$C$ 为科氏力项,$g$ 为重力项[^1]。 3. **动力学特性优化** - 质量矩阵的正定性对称性证明 - 动力学模型的参数辨识(如最小惯性参数集) - 基于动力学的控制方法(如计算力矩控制) --- ### **关键公式模型** | **模型** | **公式** | |-------------------|--------------------------------------------------------------------------| | **牛顿-欧拉方程** | $ \mathcal{F} = \mathcal{G} \dot{\mathcal{V}} - \text{ad}_{\mathcal{V}}^T \mathcal{G} \mathcal{V} $ | | **关节空间动力学**| $ \tau = M(q)\ddot{q} + h(q, \dot{q}) $ | | **末端执行器动力学**| $ \mathcal{F}_{\text{tip}} = \Lambda(q) \dot{\mathcal{V}} + \eta(q, \dot{q}) $ | --- ### **课程配套资源** 1. **教材** - 必读:课程配套教材《Modern Robotics: Mechanics, Planning, and Control》第8章 - 重点例题:8.1.3(平面2R机械臂动力学推导) 2. **编程作业** - 使用MATLAB或Mathematica实现: - 牛顿-欧拉逆向动力学算法 - 连杆惯性参数辨识实验 - 示例仓库:[Modern Robotics Code Library](https://github.com/NxRLab/ModernRobotics) 3. **工具推荐** - **机器人动力学仿真**:MATLAB Robotics System Toolbox, PyBullet - **符号计算**:Mathematica/SymPy(用于推导复杂动力学方程) --- ### **实际应用场景** 1. **工业机器人**:动力学前馈控制提升轨迹跟踪精度 2. **外骨骼设计**:基于逆动力学计算人体关节力矩负荷 3. **太空机械臂**:微重力环境下的自适应动力学补偿 --- ### **学习建议** 1. **前置知识要求**: - 线性代数(尤其是空间变换) - 完成本专项课程的前两门《机器人运动学》《机器人控制》 2. **难点突破**: - 理解**空间向量(Spatial Vector)** 的物理意义 - 掌握**递归算法**在动力学计算中的应用 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值