【机器人学】串联机械臂连杆的速度及加速度推导

2023-11-26 14:59

本文主要是介绍【机器人学】串联机械臂连杆的速度及加速度推导,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1. 反对称矩阵及其性质

定义一个( n n n× n n n)的矩阵 S \textbf{S} S,如果满足 S + S T = O \textbf{S}+\textbf{S}^T=\textbf{O} S+ST=O,则矩阵 S \textbf{S} S被称为反对称矩阵。
对于三维向量 a = ( a x , a y , a z ) T \textbf{a}=(a_x, a_y,a_z)^T a=(ax,ay,az)T,定义其对应的反对称矩阵 S ( a ) \textbf{S}(a) S(a)为如下形式: S ( a ) = [ 0 − a z a y a z 0 − a x − a y a x 0 ] \textbf{S}(\bf{a})=\begin{bmatrix} 0 & -a_z & a_y\\ a_z & 0 & -a_x\\ -a_y & a_x & 0\\ \end{bmatrix} S(a)=0azayaz0axayax0反对称矩阵具有以下几个性质:

  1. S ( α a + β b ) = α S ( a ) + β S ( b ) , a , b ∈ R 3 \textbf{S}(α\textbf{a}+β\textbf{b})=α\textbf{S}(\textbf{a})+β\textbf{S}(\textbf{b}),\bf{a},\bf{b}\in{\bf{R}^3} S(αa+βb)=αS(a)+βS(b)a,bR3
  2. S ( a ) p = a × p , a , p ∈ R 3 \textbf{S}(\textbf{a})\textbf{p}=\textbf{a}×\textbf{p},\textbf{a},\textbf{p}\in{\textbf{R}^3} S(a)p=a×pa,pR3
  3. RS ( a ) R T = S ( Ra ) , a ∈ R 3 , R ∈ S O ( 3 ) \textbf{R}\textbf{S}(\textbf{a})\textbf{R}^T=\textbf{S}(\textbf{Ra}),\textbf{a}\in{\textbf{R}^3},\textbf{R}\in{SO}(3) RS(a)RT=S(Ra)aR3RSO(3)
  4. X T SX = 0 , X ∈ R n \textbf{X}^T\textbf{S}\textbf{X}=0,\textbf{X}\in{\textbf{R}^n} XTSX=0XRn

习惯上使用符号 S O ( n ) {SO}(n) SO(n)表示 n n n阶的 n × n {n}\times{n} n×n的特殊正交群。对于任意的 R ∈ S O ( n ) \bf{R}\in{SO(n)} RSO(n),以下性质成立:

  • R T = R − 1 ∈ S O ( n ) \bf{R}^T=\textbf{R}^{-1}\in{SO(n)} RT=R1SO(n)
  • R \bf{R} R 的各列(各行)也是相互正交的
  • R \bf{R} R 的各列(各行)都是单位向量
  • d e t ( R ) = 1 det(\textbf{R})=1 det(R)=1

2. 旋转矩阵的导数

考虑时变的旋转矩阵 R ( t ) \textbf{R}(t) R(t),基于 R ( t ) \textbf{R}(t) R(t)的正交性有: R ( t ) R ( t ) T = I (2-1) \textbf{R}(t)\textbf{R}(t)^T=\textbf{I} \tag{2-1} R(t)R(t)T=I(2-1)求上式关于时间的导数有: R ˙ ( t ) R ( t ) T + R ( t ) R ˙ ( t ) T = O (2-2) \dot\textbf{R}(t)\textbf{R}(t)^T+\textbf{R}(t)\dot\textbf{R}(t)^T=\textbf{O} \tag{2-2} R˙(t)R(t)T+R(t)R˙(t)T=O(2-2) S ( t ) = R ˙ ( t ) R ( t ) T (2-3) \textbf{S}(t)=\dot\textbf{R}(t)\textbf{R}(t)^T \tag{2-3} S(t)=R˙(t)R(t)T(2-3)由于 S ( t ) + S T ( t ) = O (2-4) \textbf{S}(t)+\textbf{S}^T(t)=\textbf{O} \tag{2-4} S(t)+ST(t)=O(2-4)因此 S \textbf{S} S为(3×3)的反对称矩阵。将公式(2-3)两边同时右乘 R ( t ) \textbf{R}(t) R(t),有 R ˙ ( t ) = S ( t ) R ( t ) (2-5) \dot\textbf{R}(t)=\textbf{S}(t)\textbf{R}(t) \tag{2-5} R˙(t)=S(t)R(t)(2-5) R ( t ) \textbf{R}(t) R(t)对时间的导数可以表示成 R ( t ) \textbf{R}(t) R(t)自身的函数。
————————————————————————
R ( t ) \textbf{R}(t) R(t)对时间的导数 R ˙ ( t ) \dot\textbf{R}(t) R˙(t)写成以下形式: R ˙ ( t ) = S ( ω ( t ) ) R ( t ) (2-5) \dot\textbf{R}(t)=\textbf{S}(\textbf{ω}(t))\textbf{R}(t) \tag{2-5} R˙(t)=S(ω(t))R(t)(2-5)其中 S ( ω ( t ) ) \textbf{S}(ω(t)) S(ω(t))是反对称矩阵,为了证明向量 ω ( t ) \textbf{ω}(t) ω(t) t t t时刻旋转坐标系相对于固定坐标系的角速度。考虑固连在一个移动坐标系上的点 p p p,点 p p p相对于固定坐标系的坐标可以由 p 1 = R p 0 \textbf{p}_1=\textbf{R}\textbf{p}_0 p1=Rp0,对该表达式求微分,可以得到: d d t p 1 = R ˙ p 0 = S ( ω ) R p 0 = ω × R p 0 = ω × p 1 \frac{d}{dt}\textbf{p}_1=\dot\textbf{R}\textbf{p}_0=\textbf{S}(\textbf{ω})\textbf{R}\textbf{p}_0=\textbf{ω}\times\textbf{R}\textbf{p}_0=\textbf{ω}\times\textbf{p}_1 dtdp1=R˙p0=S(ω)Rp0=ω×Rp0=ω×p1上式表明向量 ω ( t ) \textbf{ω}(t) ω(t)就是传统意义上的角速度向量。

3. 连杆速度

3.1. 通用连杆线速度推导

考虑具有开式运动链的机械手的通用连杆 i i i。连杆 i i i连接关节 i i i和关节 i + 1 i+1 i+1,坐标系 i i i固连于连杆 i i i,且其原点在关节 i i i的轴上,坐标系 i + 1 i+1 i+1的原点在关节 i + 1 i+1 i+1的轴上,如图。

P i \textbf{P}_i Pi P i + 1 \textbf{P}_{i+1} Pi+1分别为坐标系 i i i和坐标系 i + 1 i+1 i+1在基坐标系 O o \textbf{O}_o Oo中的位置向量。令 r i , i + 1 i \textbf{r}_{i,i+1}^i ri,i+1i为坐标系 i + 1 i+1 i+1的原点关于坐标系 i i i的位置在坐标系 i i i中的表示。令 R i 0 \textbf{R}_i^0 Ri0 为坐标系 i i i相对于基坐标系 O o \textbf{O}_o Oo的旋转矩阵。因此有以下关系成立: P i + 1 0 = P i 0 + R i 0 r i , i + 1 i (3-1) \textbf{P}_{i+1}^0=\textbf{P}_i^0+\textbf{R}_i^0\textbf{r}_{i,i+1}^i\tag{3-1} Pi+10=Pi0+Ri0ri,i+1i(3-1)结合反对称矩阵的相关性质对上式求导有: P ˙ i + 1 0 = P ˙ i 0 + R ˙ i 0 r i , i + 1 i + R i 0 r ˙ i , i + 1 i = P ˙ i 0 + S ( ω i 0 ) R i 0 r i , i + 1 i + R i 0 r ˙ i , i + 1 i = P ˙ i 0 + ω i 0 × R i 0 r i , i + 1 i + R i 0 r ˙ i , i + 1 i = P ˙ i 0 + ω i 0 × r i , i + 1 0 + R i 0 r ˙ i , i + 1 i (3-2) \begin{aligned} \dot\textbf{P}_{i+1}^0&=\dot\textbf{P}_i^0+\dot\textbf{R}_i^0\textbf{r}_{i,i+1}^i+\textbf{R}_i^0\dot\textbf{r}_{i,i+1}^i\\ &=\dot\textbf{P}_i^0+\textbf{S}(\textbf{ω}_i^0)\textbf{R}_i^0\textbf{r}_{i,i+1}^i+\textbf{R}_i^0\dot\textbf{r}_{i,i+1}^i\\ &=\dot\textbf{P}_i^0+\textbf{ω}_i^0\times\textbf{R}_i^0\textbf{r}_{i,i+1}^i+\textbf{R}_i^0\dot\textbf{r}_{i,i+1}^i\\ &=\dot\textbf{P}_i^0+\textbf{ω}_i^0\times\textbf{r}_{i,i+1}^0+\textbf{R}_i^0\dot\textbf{r}_{i,i+1}^i\\ \end{aligned}\tag{3-2} P˙i+10=P˙i0+R˙i0ri,i+1i+Ri0r˙i,i+1i=P˙i0+S(ωi0)Ri0ri,i+1i+Ri0r˙i,i+1i=P˙i0+ωi0×Ri0ri,i+1i+Ri0r˙i,i+1i=P˙i0+ωi0×ri,i+10+Ri0r˙i,i+1i(3-2) v i + 1 0 = v i 0 + ω i 0 × r i , i + 1 0 + v i , i + 1 0 (3-3) \begin{aligned} \textbf{v}_{i+1}^0&=\textbf{v}_i^0+\textbf{ω}_i^0\times\textbf{r}_{i,i+1}^0+\textbf{v}_{i,i+1}^0\\ \end{aligned}\tag{3-3} vi+10=vi0+ωi0×ri,i+10+vi,i+10(3-3)其中 v i , i + 1 0 \textbf{v}_{i,i+1}^0 vi,i+10表示以基坐标系 O o \textbf{O}_o Oo为参考,坐标系 i + 1 i+1 i+1的原点相对于坐标系 i i i的原点的移动速度。

3.2. 通用连杆角速度推导

考虑以下旋转矩阵的转换关系: R i + 1 0 = R i 0 R i + 1 i \textbf{R}_{i+1}^0=\textbf{R}_{i}^0\textbf{R}_{i+1}^i Ri+10=Ri0Ri+1i求其关于时间的导数: R ˙ i + 1 0 = R ˙ i 0 R i + 1 i + R i 0 R ˙ i + 1 i \dot\textbf{R}_{i+1}^0=\dot\textbf{R}_{i}^0\textbf{R}_{i+1}^i+\textbf{R}_{i}^0\dot\textbf{R}_{i+1}^i R˙i+10=R˙i0Ri+1i+Ri0R˙i+1i S ( ω i + 1 0 ) R i + 1 0 = S ( ω i 0 ) R i 0 R i + 1 i + R i 0 S ( ω i , i + 1 i ) R i + 1 i \textbf{S}(\textbf{ω}_{i+1}^0)\textbf{R}_{i+1}^0=\textbf{S}(\textbf{ω}_{i}^0)\textbf{R}_{i}^0\textbf{R}_{i+1}^i+\textbf{R}_{i}^0\textbf{S}(\textbf{ω}_{i,i+1}^i)\textbf{R}_{i+1}^i S(ωi+10)Ri+10=S(ωi0)Ri0Ri+1i+Ri0S(ωi,i+1i)Ri+1i S ( ω i + 1 0 ) R i + 1 0 = S ( ω i 0 ) R i + 1 0 + R i 0 S ( ω i , i + 1 i ) ( R i 0 ) T R i 0 R i + 1 i \textbf{S}(\textbf{ω}_{i+1}^0)\textbf{R}_{i+1}^0=\textbf{S}(\textbf{ω}_{i}^0)\textbf{R}_{i+1}^0+\textbf{R}_{i}^0\textbf{S}(\textbf{ω}_{i,i+1}^i)(\textbf{R}_i^0)^T\textbf{R}_i^0\textbf{R}_{i+1}^i S(ωi+10)Ri+10=S(ωi0)Ri+10+Ri0S(ωi,i+1i)(Ri0)TRi0Ri+1i S ( ω i + 1 0 ) R i + 1 0 = S ( ω i 0 ) R i + 1 0 + R i 0 S ( ω i , i + 1 i ) ( R i 0 ) T R i + 1 0 \textbf{S}(\textbf{ω}_{i+1}^0)\textbf{R}_{i+1}^0=\textbf{S}(\textbf{ω}_{i}^0)\textbf{R}_{i+1}^0+\textbf{R}_{i}^0\textbf{S}(\textbf{ω}_{i,i+1}^i)(\textbf{R}_i^0)^T\textbf{R}_{i+1}^0 S(ωi+10)Ri+10=S(ωi0)Ri+10+Ri0S(ωi,i+1i)(Ri0)TRi+10 S ( ω i + 1 0 ) = S ( ω i 0 ) + R i 0 S ( ω i , i + 1 i ) ( R i 0 ) T \textbf{S}(\textbf{ω}_{i+1}^0)=\textbf{S}(\textbf{ω}_{i}^0)+\textbf{R}_{i}^0\textbf{S}(\textbf{ω}_{i,i+1}^i)(\textbf{R}_i^0)^T S(ωi+10)=S(ωi0)+Ri0S(ωi,i+1i)(Ri0)T S ( ω i + 1 0 ) = S ( ω i 0 ) + S ( R i 0 ω i , i + 1 i ) \textbf{S}(\textbf{ω}_{i+1}^0)=\textbf{S}(\textbf{ω}_{i}^0)+\textbf{S}(\textbf{R}_{i}^0\textbf{ω}_{i,i+1}^i) S(ωi+10)=S(ωi0)+S(Ri0ωi,i+1i) S ( ω i + 1 0 ) = S ( ω i 0 ) + S ( ω i , i + 1 0 ) \textbf{S}(\textbf{ω}_{i+1}^0)=\textbf{S}(\textbf{ω}_{i}^0)+\textbf{S}(\textbf{ω}_{i,i+1}^0) S(ωi+10)=S(ωi0)+S(ωi,i+10) S ( ω i + 1 0 ) = S ( ω i 0 + ω i , i + 1 0 ) \textbf{S}(\textbf{ω}_{i+1}^0)=\textbf{S}(\textbf{ω}_{i}^0+\textbf{ω}_{i,i+1}^0) S(ωi+10)=S(ωi0+ωi,i+10)从而可以将连杆 i + 1 i+1 i+1的角速度表示为连杆 i i i的角速度以及连杆 i + 1 i+1 i+1关于连杆 i i i的角速度的函数: ω i + 1 0 = ω i 0 + ω i , i + 1 0 (3-4) \textbf{ω}_{i+1}^0=\textbf{ω}_{i}^0+\textbf{ω}_{i,i+1}^0\tag{3-4} ωi+10=ωi0+ωi,i+10(3-4)

3.3. 不同关节类型的连杆速度

对于移动关节 (i+1) \textbf{(i+1)} (i+1)而言,坐标系 i + 1 i+1 i+1关于坐标系 i i i的方向不变,因此有 ω i , i + 1 0 = 0 \textbf{ω}_{i,i+1}^0=0 ωi,i+10=0 ω i + 1 0 = ω i 0 + ω i , i + 1 0 = ω i 0 \textbf{ω}_{i+1}^0=\textbf{ω}_{i}^0+\textbf{ω}_{i,i+1}^0=\textbf{ω}_{i}^0 ωi+10=ωi0+ωi,i+10=ωi0进一步,线速度为 v i , i + 1 0 = d ˙ i + 1 z i + 1 \textbf{v}_{i,i+1}^0=\dot{d}_{i+1}\textbf{z}_{i+1} vi,i+10=d˙i+1zi+1 v i + 1 0 = v i 0 + ω i 0 × r i , i + 1 0 + v i , i + 1 0 = v i 0 + ω i 0 × r i , i + 1 0 + d ˙ i + 1 z i + 1 \begin{aligned} \textbf{v}_{i+1}^0&=\textbf{v}_i^0+\textbf{ω}_i^0\times\textbf{r}_{i,i+1}^0+\textbf{v}_{i,i+1}^0\\ &=\textbf{v}_i^0+\textbf{ω}_i^0\times\textbf{r}_{i,i+1}^0+\dot{d}_{i+1}\textbf{z}_{i+1}\\ \end{aligned} vi+10=vi0+ωi0×ri,i+10+vi,i+10=vi0+ωi0×ri,i+10+d˙i+1zi+1
对于旋转关节 (i+1) \textbf{(i+1)} (i+1)而言,角速度满足以下关系 ω i , i + 1 0 = θ ˙ i + 1 z i + 1 \textbf{ω}_{i,i+1}^0=\dot{θ}_{i+1}\textbf{z}_{i+1} ωi,i+10=θ˙i+1zi+1 ω i + 1 0 = ω i 0 + ω i , i + 1 0 = ω i 0 + θ ˙ i + 1 z i + 1 \textbf{ω}_{i+1}^0=\textbf{ω}_{i}^0+\textbf{ω}_{i,i+1}^0=\textbf{ω}_{i}^0+\dot{θ}_{i+1}\textbf{z}_{i+1} ωi+10=ωi0+ωi,i+10=ωi0+θ˙i+1zi+1关节 i + 1 i+1 i+1的运动引起了坐标系 i + 1 i+1 i+1相对于坐标系 i i i的旋转,但坐标系 i + 1 i+1 i+1的原点相对于坐标系 i i i的原点并没有发生移动,移动速度为0,因此对于线速度有以下关系 v i , i + 1 0 = 0 \textbf{v}_{i,i+1}^0=0 vi,i+10=0 v i + 1 0 = v i 0 + ω i 0 × r i , i + 1 0 \textbf{v}_{i+1}^0=\textbf{v}_i^0+\textbf{ω}_i^0\times\textbf{r}_{i,i+1}^0\\ vi+10=vi0+ωi0×ri,i+10

下文中在表示有关坐标系0时,将省略上标“0”.

综上,结合式(3-2),(3-3),可得到如下的速度表达式 ω i + 1 = { ω i + θ ˙ i + 1 z i + 1 , if  J i + 1 is revolute ω i , if  J i + 1 is prismatic (3-5) \textbf{ω}_{i+1} = \begin{cases} \textbf{ω}_{i}+\dot{θ}_{i+1}\textbf{z}_{i+1}, & \text{if $J_{i+1}$ is revolute} \\ \textbf{ω}_{i}, & \text{if $J_{i+1}$ is prismatic} \end{cases}\tag{3-5} ωi+1={ωi+θ˙i+1zi+1,ωi,if Ji+1 is revoluteif Ji+1 is prismatic(3-5) v i + 1 = { v i + ω i × r i , i + 1 , if  J i + 1 is revolute v i + ω i × r i , i + 1 + d ˙ i + 1 z i + 1 , if  J i + 1 is prismatic (3-6) \textbf{v}_{i+1} = \begin{cases} \textbf{v}_i+\textbf{ω}_{i}\times\textbf{r}_{i,i+1}, & \text{if $J_{i+1}$ is revolute} \\ \textbf{v}_i+\textbf{ω}_{i}\times\textbf{r}_{i,i+1}+\dot{d}_{i+1}\textbf{z}_{i+1}, & \text{if $J_{i+1}$ is prismatic} \end{cases}\tag{3-6} vi+1={vi+ωi×ri,i+1,vi+ωi×ri,i+1+d˙i+1zi+1,if Ji+1 is revoluteif Ji+1 is prismatic(3-6)
对上述的速度表达式两边同时左乘 R 0 i + 1 \textbf{R}_0^{i+1} R0i+1,可推导出相邻坐标系之间的速度转换关系: ω i + 1 i + 1 = { R i i + 1 ω i i + θ ˙ i + 1 z i + 1 i + 1 , if  J i + 1 is revolute R i i + 1 ω i i , if  J i + 1 is prismatic (3-7) \textbf{ω}_{i+1}^{i+1} = \begin{cases} \textbf{R}_i^{i+1}\textbf{ω}_{i}^{i}+\dot{θ}_{i+1}\textbf{z}_{i+1}^{i+1}, & \text{if $J_{i+1}$ is revolute} \\ \textbf{R}_i^{i+1}\textbf{ω}_{i}^{i}, & \text{if $J_{i+1}$ is prismatic} \end{cases}\tag{3-7} ωi+1i+1={Rii+1ωii+θ˙i+1zi+1i+1,Rii+1ωii,if Ji+1 is revoluteif Ji+1 is prismatic(3-7) v i + 1 i + 1 = { R i i + 1 ( v i i + ω i i × r i + 1 i ) , if  J i + 1 is revolute R i i + 1 ( v i i + ω i i × r i + 1 i ) + d ˙ i + 1 z i + 1 i + 1 , if  J i + 1 is prismatic (3-8) \textbf{v}_{i+1}^{i+1} = \begin{cases} \textbf{R}_i^{i+1}(\textbf{v}_i^i+\textbf{ω}_{i}^i\times\textbf{r}_{i+1}^i), & \text{if $J_{i+1}$ is revolute} \\ \textbf{R}_i^{i+1}(\textbf{v}_i^i+\textbf{ω}_{i}^i\times\textbf{r}_{i+1}^i)+\dot{d}_{i+1}\textbf{z}_{i+1}^{i+1}, & \text{if $J_{i+1}$ is prismatic} \end{cases}\tag{3-8} vi+1i+1={Rii+1(vii+ωii×ri+1i),Rii+1(vii+ωii×ri+1i)+d˙i+1zi+1i+1,if Ji+1 is revoluteif Ji+1 is prismatic(3-8)

4. 连杆加速度

关节 i + 1 i+1 i+1旋转关节 ω i + 1 i + 1 = R i i + 1 ω i i + θ ˙ i + 1 z i + 1 i + 1 \textbf{ω}_{i+1}^{i+1}=\textbf{R}_i^{i+1}\textbf{ω}_{i}^{i}+\dot{θ}_{i+1}\textbf{z}_{i+1}^{i+1} ωi+1i+1=Rii+1ωii+θ˙i+1zi+1i+1,求其关于时间的导数: ω ˙ i + 1 i + 1 = R i i + 1 ω ˙ i i + θ ¨ i + 1 z i + 1 i + 1 + θ ˙ i + 1 z ˙ i + 1 i + 1 = R i i + 1 ω ˙ i i + θ ¨ i + 1 z i + 1 i + 1 + θ ˙ i + 1 S ( ω i i + 1 ) z i + 1 i + 1 = R i i + 1 ω ˙ i i + θ ¨ i + 1 z i + 1 i + 1 + θ ˙ i + 1 ( R i i + 1 ω i i × z i + 1 i + 1 ) = R i i + 1 ω ˙ i i + θ ¨ i + 1 z i + 1 i + 1 + R i i + 1 ω i i × θ ˙ i + 1 z i + 1 i + 1 (4-1) \begin{aligned} \dot\textbf{ω}_{i+1}^{i+1 }&=\textbf{R}_i^{i+1}\dot\textbf{ω}_{i}^{i}+\ddot{θ}_{i+1}\textbf{z}_{i+1}^{i+1}+\dot{θ}_{i+1}\dot\textbf{z}_{i+1}^{i+1}\\ &=\textbf{R}_i^{i+1}\dot\textbf{ω}_{i}^{i}+\ddot{θ}_{i+1}\textbf{z}_{i+1}^{i+1}+\dot{θ}_{i+1}\textbf{S}(\textbf{ω}_{i}^{i+1})\textbf{z}_{i+1}^{i+1}\\ &=\textbf{R}_i^{i+1}\dot\textbf{ω}_{i}^{i}+\ddot{θ}_{i+1}\textbf{z}_{i+1}^{i+1}+\dot{θ}_{i+1}(\textbf{R}_i^{i+1}\textbf{ω}_{i}^i\times\textbf{z}_{i+1}^{i+1})\\ &=\textbf{R}_i^{i+1}\dot\textbf{ω}_{i}^{i}+\ddot{θ}_{i+1}\textbf{z}_{i+1}^{i+1}+\textbf{R}_i^{i+1}\textbf{ω}_{i}^i\times\dot{θ}_{i+1}\textbf{z}_{i+1}^{i+1}\\ \end{aligned}\tag{4-1} ω˙i+1i+1=Rii+1ω˙ii+θ¨i+1zi+1i+1+θ˙i+1z˙i+1i+1=Rii+1ω˙ii+θ¨i+1zi+1i+1+θ˙i+1S(ωii+1)zi+1i+1=Rii+1ω˙ii+θ¨i+1zi+1i+1+θ˙i+1(Rii+1ωii×zi+1i+1)=Rii+1ω˙ii+θ¨i+1zi+1i+1+Rii+1ωii×θ˙i+1zi+1i+1(4-1)

关节 i + 1 i+1 i+1旋转关节 v i + 1 i + 1 = R i i + 1 ( v i i + ω i i × r i + 1 i ) \textbf{v}_{i+1}^{i+1}=\textbf{R}_i^{i+1}(\textbf{v}_i^i+\textbf{ω}_{i}^i\times\textbf{r}_{i+1}^i) vi+1i+1=Rii+1(vii+ωii×ri+1i),求其关于时间的导数: v ˙ i + 1 i + 1 = R i i + 1 ( v ˙ i i + ω ˙ i i × r i + 1 i + ω i i × r ˙ i + 1 i ) = R i i + 1 ( v ˙ i i + ω ˙ i i × r i + 1 i + ω i i × S ( ω i i ) r i + 1 i ) = R i i + 1 ( v ˙ i i + ω ˙ i i × r i + 1 i + ω i i × ( ω i i × r i + 1 i ) ) (4-2) \begin{aligned} \dot\textbf{v}_{i+1}^{i+1}&=\textbf{R}_i^{i+1}(\dot\textbf{v}_{i}^{i}+\dot\textbf{ω}_{i}^{i}\times\textbf{r}_{i+1}^{i}+\textbf{ω}_{i}^{i}\times\dot\textbf{r}_{i+1}^{i})\\ &=\textbf{R}_i^{i+1}(\dot\textbf{v}_{i}^{i}+\dot\textbf{ω}_{i}^{i}\times\textbf{r}_{i+1}^{i}+\textbf{ω}_{i}^{i}\times\textbf{S}(\textbf{ω}_{i}^{i})\textbf{r}_{i+1}^{i})\\ &=\textbf{R}_i^{i+1}(\dot\textbf{v}_{i}^{i}+\dot\textbf{ω}_{i}^{i}\times\textbf{r}_{i+1}^{i}+\textbf{ω}_{i}^{i}\times(\textbf{ω}_{i}^{i}\times\textbf{r}_{i+1}^{i}))\\ \end{aligned}\tag{4-2} v˙i+1i+1=Rii+1(v˙ii+ω˙ii×ri+1i+ωii×r˙i+1i)=Rii+1(v˙ii+ω˙ii×ri+1i+ωii×S(ωii)ri+1i)=Rii+1(v˙ii+ω˙ii×ri+1i+ωii×(ωii×ri+1i))(4-2)

关节 i + 1 i+1 i+1移动关节 ω i + 1 i + 1 = R i i + 1 ω i i \textbf{ω}_{i+1}^{i+1}=\textbf{R}_i^{i+1}\textbf{ω}_{i}^{i} ωi+1i+1=Rii+1ωii,求其关于时间的导数: ω ˙ i + 1 i + 1 = R i i + 1 ω ˙ i i (4-3) \dot\textbf{ω}_{i+1}^{i+1}=\textbf{R}_i^{i+1}\dot\textbf{ω}_{i}^{i}\tag{4-3} ω˙i+1i+1=Rii+1ω˙ii(4-3)

关节 i + 1 i+1 i+1移动关节 v i + 1 i + 1 = R i i + 1 ( v i i + ω i i × r i + 1 i ) + d ˙ i + 1 z i + 1 i + 1 \textbf{v}_{i+1}^{i+1}=\textbf{R}_i^{i+1}(\textbf{v}_i^i+\textbf{ω}_{i}^i\times\textbf{r}_{i+1}^i)+\dot{d}_{i+1}\textbf{z}_{i+1}^{i+1} vi+1i+1=Rii+1(vii+ωii×ri+1i)+d˙i+1zi+1i+1,求其关于时间的导数: v ˙ i + 1 i + 1 = R i i + 1 ( v ˙ i i + ω ˙ i i × r i + 1 i + ω i i × r ˙ i + 1 i ) + d ¨ i + 1 z i + 1 i + 1 + d ˙ i + 1 z ˙ i + 1 i + 1 = R i i + 1 ( v ˙ i i + ω ˙ i i × r i + 1 i + ω i i × ( S ( ω i i ) r i + 1 i + d ˙ i + 1 z i + 1 i ) ) + d ¨ i + 1 z i + 1 i + 1 + d ˙ i + 1 ( S ( ω i i + 1 ) z i + 1 i + 1 ) = R i i + 1 ( v ˙ i i + ω ˙ i i × r i + 1 i + ω i i × ( ω i i × r i + 1 i ) ) + R i i + 1 ( ω i i × d ˙ i + 1 z i + 1 i + 1 ) + d ¨ i + 1 z i + 1 i + 1 + d ˙ i + 1 ( R i i + 1 ω i i × z i + 1 i + 1 ) = R i i + 1 ( v ˙ i i + ω ˙ i i × r i + 1 i + ω i i × ( ω i i × r i + 1 i ) ) + ( ω i + 1 i + 1 × d ˙ i + 1 z i + 1 i + 1 ) + d ¨ i + 1 z i + 1 i + 1 + ( ω i + 1 i + 1 × d ˙ i + 1 z i + 1 i + 1 ) = R i i + 1 ( v ˙ i i + ω ˙ i i × r i + 1 i + ω i i × ( ω i i × r i + 1 i ) ) + d ¨ i + 1 z i + 1 i + 1 + 2 ω i + 1 i + 1 × d ˙ i + 1 z i + 1 i + 1 (4-4) \begin{aligned} \dot\textbf{v}_{i+1}^{i+1}&=\textbf{R}_i^{i+1}(\dot\textbf{v}_{i}^{i}+\dot\textbf{ω}_{i}^{i}\times\textbf{r}_{i+1}^{i}+\textbf{ω}_{i}^{i}\times\dot\textbf{r}_{i+1}^{i})+\ddot{d}_{i+1}\textbf{z}_{i+1}^{i+1}+\dot{d}_{i+1}\dot\textbf{z}_{i+1}^{i+1}\\ &=\textbf{R}_i^{i+1}(\dot\textbf{v}_{i}^{i}+\dot\textbf{ω}_{i}^{i}\times\textbf{r}_{i+1}^{i}+\textbf{ω}_{i}^{i}\times(\textbf{S}(\textbf{ω}_{i}^{i})\textbf{r}_{i+1}^{i}+\dot{d}_{i+1}\textbf{z}_{i+1}^{i} ))+\ddot{d}_{i+1}\textbf{z}_{i+1}^{i+1}+\dot{d}_{i+1}(\textbf{S}(\textbf{ω}_{i}^{i+1})\textbf{z}_{i+1}^{i+1})\\ &=\textbf{R}_i^{i+1}(\dot\textbf{v}_{i}^{i}+\dot\textbf{ω}_{i}^{i}\times\textbf{r}_{i+1}^{i}+\textbf{ω}_{i}^{i}\times(\textbf{ω}_{i}^{i}\times\textbf{r}_{i+1}^{i}))+\textbf{R}_i^{i+1}(\textbf{ω}_i^i\times\dot{d}_{i+1}\textbf{z}_{i+1}^{i+1})+\ddot{d}_{i+1}\textbf{z}_{i+1}^{i+1}+\dot{d}_{i+1}(\textbf{R}_i^{i+1}\textbf{ω}_{i}^i\times\textbf{z}_{i+1}^{i+1})\\ &=\textbf{R}_i^{i+1}(\dot\textbf{v}_{i}^{i}+\dot\textbf{ω}_{i}^{i}\times\textbf{r}_{i+1}^{i}+\textbf{ω}_{i}^{i}\times(\textbf{ω}_{i}^{i}\times\textbf{r}_{i+1}^{i}))+(\textbf{ω}_{i+1}^{i+1}\times\dot{d}_{i+1}\textbf{z}_{i+1}^{i+1})+\ddot{d}_{i+1}\textbf{z}_{i+1}^{i+1}+(\textbf{ω}_{i+1}^{i+1}\times\dot{d}_{i+1}\textbf{z}_{i+1}^{i+1})\\ &=\textbf{R}_i^{i+1}(\dot\textbf{v}_{i}^{i}+\dot\textbf{ω}_{i}^{i}\times\textbf{r}_{i+1}^{i}+\textbf{ω}_{i}^{i}\times(\textbf{ω}_{i}^{i}\times\textbf{r}_{i+1}^{i}))+\ddot{d}_{i+1}\textbf{z}_{i+1}^{i+1}+2\textbf{ω}_{i+1}^{i+1}\times\dot{d}_{i+1}\textbf{z}_{i+1}^{i+1}\\ \end{aligned}\tag{4-4} v˙i+1i+1=Rii+1(v˙ii+ω˙ii×ri+1i+ωii×r˙i+1i)+d¨i+1zi+1i+1+d˙i+1z˙i+1i+1=Rii+1(v˙ii+ω˙ii×ri+1i+ωii×(S(ωii)ri+1i+d˙i+1zi+1i))+d¨i+1zi+1i+1+d˙i+1(S(ωii+1)zi+1i+1)=Rii+1(v˙ii+ω˙ii×ri+1i+ωii×(ωii×ri+1i))+Rii+1(ωii×d˙i+1zi+1i+1)+d¨i+1zi+1i+1+d˙i+1(Rii+1ωii×zi+1i+1)=Rii+1(v˙ii+ω˙ii×ri+1i+ωii×(ωii×ri+1i))+(ωi+1i+1×d˙i+1zi+1i+1)+d¨i+1zi+1i+1+(ωi+1i+1×d˙i+1zi+1i+1)=Rii+1(v˙ii+ω˙ii×ri+1i+ωii×(ωii×ri+1i))+d¨i+1zi+1i+1+2ωi+1i+1×d˙i+1zi+1i+1(4-4)
综上,可得到如下的加速度表达式 ω ˙ i + 1 i + 1 = { R i i + 1 ω ˙ i i + θ ¨ i + 1 z i + 1 i + 1 + R i i + 1 ω i i × θ ˙ i + 1 z i + 1 i + 1 , if  J i + 1 is revolute R i i + 1 ω ˙ i i , if  J i + 1 is prismatic \dot\textbf{ω}_{i+1}^{i+1} = \begin{cases} \textbf{R}_i^{i+1}\dot\textbf{ω}_{i}^{i}+\ddot{θ}_{i+1}\textbf{z}_{i+1}^{i+1}+\textbf{R}_i^{i+1}\textbf{ω}_{i}^i\times\dot{θ}_{i+1}\textbf{z}_{i+1}^{i+1}, & \text{if $J_{i+1}$ is revolute} \\ \textbf{R}_i^{i+1}\dot\textbf{ω}_{i}^{i}, & \text{if $J_{i+1}$ is prismatic} \end{cases} ω˙i+1i+1={Rii+1ω˙ii+θ¨i+1zi+1i+1+Rii+1ωii×θ˙i+1zi+1i+1,Rii+1ω˙ii,if Ji+1 is revoluteif Ji+1 is prismatic v ˙ i + 1 i + 1 = { R i i + 1 ( v ˙ i i + ω ˙ i i × r i + 1 i + ω i i × ( ω i i × r i + 1 i ) ) , if  J i + 1 is revolute R i i + 1 ( v ˙ i i + ω ˙ i i × r i + 1 i + ω i i × ( ω i i × r i + 1 i ) ) + d ¨ i + 1 z i + 1 i + 1 + 2 ω i + 1 i + 1 × d ˙ i + 1 z i + 1 i + 1 , if  J i + 1 is prismatic \dot\textbf{v}_{i+1}^{i+1} = \begin{cases} \textbf{R}_i^{i+1}(\dot\textbf{v}_{i}^{i}+\dot\textbf{ω}_{i}^{i}\times\textbf{r}_{i+1}^{i}+\textbf{ω}_{i}^{i}\times(\textbf{ω}_{i}^{i}\times\textbf{r}_{i+1}^{i})), & \text{if $J_{i+1}$ is revolute} \\ \textbf{R}_i^{i+1}(\dot\textbf{v}_{i}^{i}+\dot\textbf{ω}_{i}^{i}\times\textbf{r}_{i+1}^{i}+\textbf{ω}_{i}^{i}\times(\textbf{ω}_{i}^{i}\times\textbf{r}_{i+1}^{i}))+\ddot{d}_{i+1}\textbf{z}_{i+1}^{i+1}+2\textbf{ω}_{i+1}^{i+1}\times\dot{d}_{i+1}\textbf{z}_{i+1}^{i+1}, & \text{if $J_{i+1}$ is prismatic} \end{cases} v˙i+1i+1={Rii+1(v˙ii+ω˙ii×ri+1i+ωii×(ωii×ri+1i)),Rii+1(v˙ii+ω˙ii×ri+1i+ωii×(ωii×ri+1i))+d¨i+1zi+1i+1+2ωi+1i+1×d˙i+1zi+1i+1,if Ji+1 is revoluteif Ji+1 is prismatic

这篇关于【机器人学】串联机械臂连杆的速度及加速度推导的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/425890

相关文章

uva 10014 Simple calculations(数学推导)

直接按照题意来推导最后的结果就行了。 开始的时候只做到了第一个推导,第二次没有继续下去。 代码: #include<stdio.h>int main(){int T, n, i;double a, aa, sum, temp, ans;scanf("%d", &T);while(T--){scanf("%d", &n);scanf("%lf", &first);scanf

使用WebP解决网站加载速度问题,这些细节你需要了解

说到网页的图片格式,大家最常想到的可能是JPEG、PNG,毕竟这些老牌格式陪伴我们这么多年。然而,近几年,有一个格式悄悄崭露头角,那就是WebP。很多人可能听说过,但到底它好在哪?你的网站或者项目是不是也应该用WebP呢?别着急,今天咱们就来好好聊聊WebP这个图片格式的前世今生,以及它值不值得你花时间去用。 为什么会有WebP? 你有没有遇到过这样的情况?网页加载特别慢,尤其是那

有关机械硬盘的基础知识

1,机械硬盘的品牌   目前市场中常见的笔记本电脑的机械硬盘品牌主要有希捷、西部数据、三星等。   2,机械硬盘的容量   硬盘容量,即硬盘所能存储的最大数据量。虽然笔记本电脑硬盘的容量会因单位密度的提升而增加,不过和台式电脑的大容量比起来,笔记本电脑硬盘的容量仍然落后许多。笔记本电脑的硬盘除了对磁盘有体积较小和数量较少的要求之外,对功耗、耐用程度、抗震性及成本等的考虑,也让笔记

关于一次速度优化的往事

来自:hfghfghfg, 时间:2003-11-13 16:32, ID:2292221你最初的代码 Button1 34540毫秒 5638毫秒  Button2 我的代码 这个不是重点,重点是这个  来自:hfghfghfg, 时间:2003-11-13 16:54, ID:22923085528毫秒 不会吧,我是赛杨1.1G  128M内存  w2000, delphi6  128M

【Rust光年纪】Rust 机器人学库全景:功能、安装与API概览

机器人学+Rust语言=无限可能:六款库带你开启创新之旅! 前言 随着机器人技术的快速发展,对于机器人学领域的高效、可靠的编程语言和库的需求也日益增加。本文将探讨一些用于 Rust 语言的机器人学库,以及它们的核心功能、使用场景、安装配置和 API 概览,旨在为机器人学爱好者和开发人员提供参考和指导。 欢迎订阅专栏:Rust光年纪 文章目录 机器人学+Rust语言=无限可能:

【无线通信发展史⑧】测量地球质量?重力加速度g的测量?如何推导单摆周期公式?地球半径R是怎么测量出来的?

前言:用这几个问答形式来解读下我这个系列的来龙去脉。如果大家觉得本篇文章不水的话希望帮忙点赞收藏加关注,你们的鼓舞是我继续更新的动力。 我为什么会写这个系列呢? 首先肯定是因为我本身就是一名从业通信者,想着更加了解自己专业的知识,所以更想着从头开始了解通信的来源以及在每一个时代的发展进程。 为什么会从头开始写通信? 我最早是学习了中华上下五千年,应该说朝代史,这个算个人兴趣,从夏

CF #278 (Div. 2) B.(暴力枚举+推导公式+数学构造)

B. Candy Boxes time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output 题目链接: http://codeforces.com/contest/488/problem/B There

HDU2524(规律推导)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2524 解题思路: 暴力推出矩阵,以n = 2 , m = 4为例: 1 3  6  10 3 9 18 30 可以发现第一行和第一列都是有规律的,彼此相差2、3、4·····,其他元素为相应行第一个元素乘以第一列元素的积。预处理之后,我们O(1)就可以输出g[n][m]的值。 另外,

Ural1209(数学推导)

题目链接:点击打开链接 解题思路: 此题甚好。推导公式,首先观察序列110100100010000·····,我们把为1的下标单独拿出来看。依次为1、2、4 、7、 11·····,可以分解为1+(0) 、1+(0+1)、1+(0+1+2)、1+(0+1+2+3)、1+(0+1+2+3+4),可以推导出规律1 + x * (x - 1) / 2。 那么对于每个n,我们只要判断是否存在x

ACM比赛中如何加速c++的输入输出?如何使cin速度与scanf速度相当?什么是最快的输入输出方法?

在竞赛中,遇到大数据时,往往读文件成了程序运行速度的瓶颈,需要更快的读取方式。相信几乎所有的C++学习者都在cin机器缓慢的速度上栽过跟头,于是从此以后发誓不用cin读数据。还有人说Pascal的read语句的速度是C/C++中scanf比不上的,C++选手只能干着急。难道C++真的低Pascal一等吗?答案是不言而喻的。一个进阶的方法是把数据一下子读进来,然后再转化字符串,这种方法传说中