Robotics Notes
拉格朗日动力学模型
1. 简介:
拉格朗日动力学的基础是系统能量对系统变量及时间的变分。
对于复杂系统的分析上其要比“牛顿-欧拉”简单。
2. 建模步骤:
1)选择广义坐标
待写
2)计算拉格朗日函数:
首先,定义系统的动能为 K K K,势能为 P P P,然后拉格朗日函数定义为:
L = K − P L=K-P L=K−P
对于机器鱼而言,由于重力 G G G等于其浮力 B B B,因此总势能 P = 0 P=0 P=0
3)利用Euler-Lagrange方程写出运动方程
定义 F i F_i Fi为产生线运动的所有外力之和,定义 T i T_i Ti为产生转动的所有外力矩之和,则根据Euler-Lagrange方程可得:
[ F i T i ] = d d t ( ∂ L ∂ q ˙ i ) − ∂ L ∂ q i \begin{bmatrix}F_i\\T_i\end{bmatrix}=\frac{d}{dt}(\frac{\partial L}{\partial \dot q_i})-\frac{\partial L}{\partial q_i} [FiTi]=dtd(∂q˙i∂L)−∂qi∂L
3. 后续分析
3.1 雅可比矩阵(Jacobian Matrix)
雅可比矩阵源自于关节微分运动,主要解决的是:“如何通过各关节的运动变化求出未端的广义速度”,即Jacobian Matrix反映的是:关节变化 Δ Q i \Delta Q_i ΔQi与末端变化 Δ X \Delta X ΔX的关系。
原理上,可以从 X = f ( q ) X=f(q) X=f(q)上推导,即对 X X X的每一项进行全微分,有:
Δ x 1 = ∂ f 1 ∂ q 1 ⋅ Δ q 1 + ∂ f 1 ∂ q 2 ⋅ Δ q 2 + ⋯ + ∂ f 1 ∂ q n ⋅ Δ q n Δ x 2 = ∂ f 2 ∂ q 1 ⋅ Δ q 1 + ∂ f 2 ∂ q 2 ⋅ Δ q 2 + ⋯ + ∂ f 2 ∂ q n ⋅ Δ q n . . . Δ x m = ∂ f m ∂ q 1 ⋅ Δ q 1 + ∂ f m ∂ q 2 ⋅ Δ q 2 + ⋯ + ∂ f m ∂ q n ⋅ Δ q n \begin{aligned} &\Delta x_{1}= \frac{\partial f_{1}}{\partial q_{1}}\cdot\Delta q_{1}+\frac{\partial f_{1}}{\partial q_{2}}\cdot\Delta q_{2}+\cdots+\frac{\partial f_{1}}{\partial q_{n}}\cdot\Delta q_{n} \\ &\Delta x_{2}= \frac{\partial f_{2}}{\partial q_{1}}\cdot\Delta q_{1}+\frac{\partial f_{2}}{\partial q_{2}}\cdot\Delta q_{2}+\cdots+\frac{\partial f_{2}}{\partial q_{n}}\cdot\Delta q_{n} \\ \\ &\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad...\\ \\ &\Delta x_{m}= \frac{\partial f_{m}}{\partial q_{1}}\cdot\Delta q_{1}+\frac{\partial f_{m}}{\partial q_{2}}\cdot\Delta q_{2}+\cdots+\frac{\partial f_{m}}{\partial q_{n}}\cdot\Delta q_{n} \end{aligned} Δx1=∂q1∂f1⋅Δq1+∂q2∂f1⋅Δq2+⋯+∂qn∂f1⋅ΔqnΔx2=∂q1∂f2⋅Δq1+∂q2∂f2⋅Δq2+⋯+∂qn∂f2⋅Δqn...Δxm=∂q1∂fm⋅Δq1+∂q2∂fm⋅Δq2+⋯+∂qn∂fm⋅Δqn
写成矩阵的形式,可表示为:
Δ X = [ ∂ f 1 ∂ q 1 ∂ f 1 ∂ q 2 ⋯ ∂ f 1 ∂ q n ∂ f 2 ∂ q 1 ∂ f 2 ∂ q 2 ⋯ ∂ f 2 ∂ q n ⋮ ⋮ ⋱ ⋮ ∂ f m ∂ q 1 ∂ f m ∂ q 2 ⋯ ∂ f m ∂ q n ] Δ Q = J Δ Q \Delta\mathrm{X}=\begin{bmatrix}\frac{\partial f_1}{\partial q_1}&\frac{\partial f_1}{\partial q_2}&\cdots&\frac{\partial f_1}{\partial q_n}\\\frac{\partial f_2}{\partial q_1}&\frac{\partial f_2}{\partial q_2}&\cdots&\frac{\partial f_2}{\partial q_n}\\\vdots&\vdots&\ddots&\vdots\\\frac{\partial f_m}{\partial q_1}&\frac{\partial f_m}{\partial q_2}&\cdots&\frac{\partial f_m}{\partial q_n}\end{bmatrix}\Delta\mathrm{Q}=J\Delta Q ΔX= ∂q1∂f1∂q1∂f2⋮∂q1∂fm∂q2∂f1∂q2∂f2⋮∂q2∂fm⋯⋯⋱⋯∂qn∂f1∂qn∂f2⋮∂qn∂fm ΔQ=JΔQ
其中,可以看出:
① 矩阵的行数 = X X X的项数 = 末端自由度的数量
② 矩阵的列数 = 广义坐标 Q Q Q维数 = 关节数
3.1.1 求解过程
① 计算连杆间的齐次变换矩阵: i − 1 T i = [ n o a p ] ^{i-1}T_{i}=\begin{bmatrix}n&o&a&p\end{bmatrix} i−1Ti=[noap]
② 计算末端到前述各连杆的变换矩阵: 0 T 6 , 1 T 6 , . . . , 5 T 6 ^0T_6,^1T_6 ,..., ^5T_6 0T6,1T6,...,5T6
③ 由坐标系{T}和基坐标系间微分运动的坐标变换关系,计算 T J T_J TJ:
T D = [ n x n y a x ( p × n ) x ( p × n ) y ( p × n ) z o x o y o z ( p × 0 ) x ( p × o ) y ( p × o ) z a x a y a z ( p × a ) x ( p × a ) y ( p × a ) z 0 0 0 n x n y a x 0 0 0 o x o y o z 0 0 0 a x a y a z ] D = T J D ^TD=\begin{bmatrix}\mathrm{n}_\mathrm{x}&\mathrm{n}_\mathrm{y}&\mathrm{a}_\mathrm{x}&\left(\mathrm{p}\times\mathrm{n}\right)_\mathrm{x}&\left(\mathrm{p}\times\mathrm{n}\right)_\mathrm{y}&\left(\mathrm{p}\times\mathrm{n}\right)_\mathrm{z}\\\mathrm{o}_\mathrm{x}&\mathrm{o}_\mathrm{y}&\mathrm{o}_\mathrm{z}&\left(\mathrm{p}\times0\right)_\mathrm{x}&\left(\mathrm{p}\times\mathrm{o}\right)_\mathrm{y}&\left(\mathrm{p}\times\mathrm{o}\right)_\mathrm{z}\\\mathrm{a}_\mathrm{x}&\mathrm{a}_\mathrm{y}&\mathrm{a}_\mathrm{z}&\left(\mathrm{p}\times\mathrm{a}\right)_\mathrm{x}&\left(\mathrm{p}\times\mathrm{a}\right)_\mathrm{y}&\left(\mathrm{p}\times\mathrm{a}\right)_\mathrm{z}\\0&0&0&\mathrm{n}_\mathrm{x}&\mathrm{n}_\mathrm{y}&\mathrm{a}_\mathrm{x}\\0&0&0&\mathrm{o}_\mathrm{x}&\mathrm{o}_\mathrm{y}&\mathrm{o}_\mathrm{z}\\0&0&0&\mathrm{a}_\mathrm{x}&\mathrm{a}_\mathrm{y}&\mathrm{a}_\mathrm{z}\end{bmatrix}D=T_JD TD= nxoxax000nyoyay000axozaz000(p×n)x(p×0)x(p×a)xnxoxax(p×n)y(p×o)y(p×a)ynyoyay(p×n)z(p×o)z(p×a)zaxozaz D=TJD
T D = [ R T − R T S ( p ) 0 R T ] D ^TD=\begin{bmatrix}R^T&&-R^TS(p)\\0&&R^T\end{bmatrix}D TD=[RT0−RTS(p)RT]D
其中,反对称矩阵 S ( p ) S(p) S(p)定义为:
S ( p ) = [ 0 − p z p y p z 0 p x − p y p x 0 ] \mathrm{S(p)=\begin{bmatrix}0&-p_z&p_y\\p_z&0&p_x\\-p_y&p_x&0\end{bmatrix}} S(p)= 0pz−py−pz0pxpypx0
④ 写出雅可比矩阵,原则为:
若关节
i
i
i为直线运动,则取
T
J
T_J
TJ的第3列作为J的第
i
i
i列;
若关节
i
i
i为旋转运动,则取
T
J
T_J
TJ的第6列作为J的第
i
i
i列;
3.1.2 示例
线速度累加
则:
3.1.3 应用1——静力变换
雅可比矩阵跟机器人的构型有关,机器人的构型发生变化,雅可比矩阵也会发生变化。所以为了实时求得关节力矩,需要实时重新计算雅可比矩阵。
如果已知任一坐标系 B {B} B相对于参考坐标系的齐次变换矩阵:
T = [ n o a p ] T=\begin{bmatrix}n&o&a&p\end{bmatrix} T=[noap]
若再有表用在物体上相对于参考坐标系的力:
F = [ f m ] F=\begin{bmatrix}f\\m\end{bmatrix} F=[fm]
则可以不通过雅可比矩阵得到该力在坐标系 B B B下等效的力和力矩:
B f x = n ⋅ f B f γ = o ⋅ f B f z = a ⋅ f B m x = n ⋅ [ ( f × p ) + m ] B m γ = o ⋅ [ ( f × p ) + m ] B m z = a ⋅ [ ( f × p ) + m ] \begin{aligned} &{}^{B}f_{x}=n\cdot f \\ &{}^{B}f_{\gamma}=o\cdot f \\ &{}^{B}f_{z}=a\cdot f \\ &^Bm_x=n\cdot[(f\times p)+m] \\ &^Bm_\gamma=\boldsymbol{o}\cdot[(\boldsymbol{f}\times\boldsymbol{p})+\boldsymbol{m}] \\ &^Bm_z=a\cdot[(f\times p)+m] \end{aligned} Bfx=n⋅fBfγ=o⋅fBfz=a⋅fBmx=n⋅[(f×p)+m]Bmγ=o⋅[(f×p)+m]Bmz=a⋅[(f×p)+m]