首页 › 具身智能 › 02-机器人基础和控制、手眼协调 › 03机器人动力学

03机器人动力学

1. 简介​

动力学研究机器人运动与产生该运动所需的力/力矩之间的关系。它分为:​

•

正动力学: 给定力矩,计算加速度/运动轨迹。​

•

逆动力学: 给定运动轨迹(位置、速度、加速度),计算所需关节力矩(用于控制)。​

最常用的建模方法是 拉格朗日法 (Euler-Lagrange),它基于能量守恒。​

2. 核心公式​

拉格朗日函数 ​定义为系统总动能 ​与总势能 ​之差:​

​​

动力学方程(欧拉-拉格朗日方程):​

​​

最终通常整理为标准的机器人在动力学形式:​

​​

​: 惯性矩阵 (Mass Matrix)​

​: 科里奥利力和离心力项​

​: 重力项​

3. 架构流程 (Mermaid)​

​

代码块​

Plain Text

graph TD​

Start[定义系统参数: 质量m, 长度l, 惯量I] --> Energy[计算能量]​

Energy --> K[动能 Kinetic Energy]​

Energy --> P[势能 Potential Energy]​

K & P --> L[构造拉格朗日函数 L = K - P]​

L --> EL_Eq[应用欧拉-拉格朗日方程]​

EL_Eq --> Derive[符号推导/微分]​

Derive --> Torque[获得力矩方程 Tau]​

Torque --> Matrix[整理为 M, C, G 矩阵形式]​

​

4. Python 代码验证 (SymPy 符号推导)​

动力学推导非常繁琐,使用 Python 的符号计算库 sympy 可以完美演示这一过程。以下演示推导一个简单单摆的动力学方程。​

​

代码块​

Python

import sympy as sp​

​

# 1. 定义符号​

t = sp.symbols('t')​

m, l, g = sp.symbols('m l g', real=True, positive=True)​

theta = sp.Function('theta')(t) # 关节角度随时间变化​

​

# 定义速度 (theta_dot) 和 加速度 (theta_ddot)​

theta_dot = theta.diff(t)​

theta_ddot = theta_dot.diff(t)​

​

# 2. 计算能量​

# 动能 K = 1/2 * m * v^2。对于单摆,v = l * angular_velocity​

v = l * theta_dot​

K = sp.Rational(1, 2) * m * v**2​

​