机器人运动学笔记3——林沛群_林佩群机械臂-程序员宅基地

技术标签: 学习  

提示:本文上接 机器人运动学笔记2——林沛群


前言

本文将涉及到机器人学的轨迹规划相关内容。这些内容均来自学习过程中记录的笔记。笔记摘自台大机器人学之运动学——林沛群


一、机械手臂轨迹规划

1.1 机械手臂轨迹规划引言

  • 轨迹:机械手臂的末端在一段时间内的位置速度加速度情况。
  • 理想轨迹:光滑路径,速度加速度变化连续

1.2 Joint-Space下轨迹规划

步骤:

  1. 定义{T}刀具坐标系相对于{G}物体坐标系的起始点、过程点和终点,齐次变换矩阵为 T G T i {_T^G}T_i TGTi(包含移动转动自由度)
  2. T G T i {_T^G}T_i TGTi6个参数来表达   G X T = [   G P T   o r g R O T (   G K ^ T , θ ) ] {_\ ^G}X_T=\left[\begin{matrix}{_\ ^G}P_{T\ org}\\ROT({_\ ^G}{\hat{K}}_T,\theta)\\\end{matrix}\right]  GXT=[ GPT orgROT( GK^T,θ)](非rotation matrix的方式表达)
  3. 逆运动学:将手臂末端点状态转换到joint的状态:   G X T → Θ i {_\ ^G}X_T\rightarrow\Theta_i  GXTΘi
  4. 在joint空间下规划 Θ i \Theta_i Θi光滑轨迹(smooth trajectories)
  5. 正运动学:将joint状态转换到手臂末端状态,检查末端点在Cartesian-space下轨迹的可行性。
    在这里插入图片描述
    在这里插入图片描述

2.3 Cartesian-Space下轨迹规划

步骤:

  1. 定义{T}刀具坐标系相对于{G}物体坐标系的起始点、过程点和终点,齐次变换矩阵为 T G T i {_T^G}T_i TGTi(包含移动转动自由度)
  2. T G T i {_T^G}T_i TGTi6个参数来表达   G X T = [   G P T   o r g R O T (   G K ^ T , θ ) ] {_\ ^G}X_T=\left[\begin{matrix}{_\ ^G}P_{T\ org}\\ROT({_\ ^G}{\hat{K}}_T,\theta)\\\end{matrix}\right]  GXT=[ GPT orgROT( GK^T,θ)](非rotation matrix的方式表达)
  3. 对所有手臂末端点状态规划光滑轨迹
  4. 将规划好手臂末端点状态的轨迹点转换到joint状态:   G X T → Θ i {_\ ^G}X_T\rightarrow\Theta_i  GXTΘi
  5. 检查joint状态在Joint-space下轨迹的可行性

注释(采用笛卡尔坐标系下的轨迹规划):

  1. 具物理直观的轨迹
  2. 较高的运算负载

在这里插入图片描述

1.4 三次多项式(Cubic-Polynomials)

  • 轨迹:不同的轨迹区段 [ t i , t i + 1 ] \left[t_i,t_{i+1}\right] [ti,ti+1]以不同参数的函数来规划。
  • 光滑轨迹:需定义各函数的边界条件(包含位置速度 θ ( t i ) , θ ( t i + 1 ) , θ ˙ ( t i ) , θ ˙ ( t i + 1 ) \theta\left(t_i\right),\theta\left(t_{i+1}\right),\dot{\theta}\left(t_i\right),\dot{\theta}\left(t_{i+1}\right) θ(ti),θ(ti+1),θ˙(ti),θ˙(ti+1),4个条件,即 [ t i , t i + 1 ] \left[t_i,t_{i+1}\right] [ti,ti+1]轨迹中 t i t_i ti点所在位置和速度需要和 [ t i − 1 , t i ] \left[t_{i-1},t_i\right] [ti1,ti]轨迹规划的终点 t i t_i ti相等, t i + 1 t_{i+1} ti+1点同理)

在这里插入图片描述
上图右边表示各阶次多项式的命名方式。

求解cubic-polynomial:
通式: θ ( t ~ ) = a 0 + a 1 t + a 2 t 2 + a 3 t 3 \theta\left(\widetilde{t}\right)=a_0+a_1t+a_2t^2+a_3t^3 θ(t )=a0+a1t+a2t2+a3t3
四个未知数: a 0 , a 1 , a 2 , a 3 a_0,a_1,a_2,a_3 a0,a1,a2,a3
对每个区间: t ∈ [ t i , t i + 1 ] t\in\left[t_i,t_{i+1}\right] t[ti,ti+1]每一段的∆t可以不同,取决于过程点的设定
t ~ = t − t i \widetilde{t}=t-t_i t =tti 所以 t ~ ∣ t = t i = 0 \widetilde{t}|_{t=t_i}=0 t t=ti=0 t ~ ∣ t = t i + 1 = ∆ t = t i + 1 − t i > 0 \widetilde{t}|_{t=t_{i+1}}=∆t=ti+1-ti>0 t t=ti+1=t=ti+1ti>0
4个边界条件:
{ θ ( t ~ ∣ t = t i ) = θ i = a 0 θ ( t ~ ∣ t = t i + 1 ) = θ i + 1 = a 0 + a 1 ∆ t + a 2 ∆ t 2 + a 3 ∆ t 3 θ ˙ ( t ~ ∣ t = t i ) = θ ˙ i = a 1 θ ˙ ( t ~ ∣ t = t i + 1 ) = θ ˙ i + 1 = a 1 + 2 a 2 ∆ t + 3 a 3 ∆ t 2 \left\{\begin{matrix} \theta\left(\widetilde{t}|_{t=t_i}\right)=\theta_i=a_0\\\theta\left(\widetilde{t}|_{t=t_{i+1}}\right)=\theta_{i+1}=a_0+a_1∆t+a_2∆t^2+a_3∆t^3 \\\dot{\theta}\left(\widetilde{t}|_{t=t_i}\right)={\dot{\theta}}_i=a_1 \\\dot{\theta}\left(\widetilde{t}|_{t=t_{i+1}}\right)={\dot{\theta}}_{i+1}=a_1+{2a}_2∆t+3a_3∆t^2 \end{matrix}\right. θ(t t=ti)=θi=a0θ(t t=ti+1)=θi+1=a0+a1t+a2t2+a3t3θ˙(t t=ti)=θ˙i=a1θ˙(t t=ti+1)=θ˙i+1=a1+2a2t+3a3t2
最终求解: { a 0 = θ i a 1 = θ ˙ i a 2 = 3 ∆ t 2 ( θ i + 1 − θ i ) − 2 ∆ t θ ˙ i − 1 ∆ t θ ˙ i + 1 a 3 = − 2 ∆ t 3 ( θ i + 1 − θ i ) + 1 ∆ t 2 ( θ ˙ i + 1 − θ ˙ i ) \left\{\begin{matrix} a_0=\theta_i\\a_1={\dot{\theta}}_i \\a_2=\frac{3}{∆t^2}(\theta_{i+1}-\theta_{i})-\frac{2}{∆t}{\dot{\theta}}_i-\frac{1}{∆t}{\dot{\theta}}_{i+1} \\a_3=-\frac{2}{∆t^3}(\theta_{i+1}-\theta_{i})+\frac{1}{∆t^2}({\dot{\theta}}_{i+1}-{\dot{\theta}}_i) \end{matrix}\right. a0=θia1=θ˙ia2=t23(θi+1θi)t2θ˙it1θ˙i+1a3=t32(θi+1θi)+t21(θ˙i+1θ˙i)
矩阵的形式解: [ θ i θ i + 1 θ ˙ i θ ˙ i + 1 ] = [ 1 0 0 0 1 ∆ t ∆ t 2 ∆ t 3 0 1 0 0 0 1 2 ∆ t 3 ∆ t 2 ] [ a 0 a 1 a 2 a 3 ] \left[\begin{matrix}\begin{matrix}\theta_i\\\theta_{i+1}\\\end{matrix}\\\begin{matrix}{\dot{\theta}}_i\\{\dot{\theta}}_{i+1}\\\end{matrix}\\\end{matrix}\right]=\begin{bmatrix} 1 & 0 & 0 & 0\\ 1 & ∆t & ∆t^2 & ∆t^3 \\ 0 & 1 & 0 & 0\\ 0 & 1 & 2∆t & 3∆t^2 \end{bmatrix}\left[\begin{matrix}\begin{matrix}a_0\\a_1\\\end{matrix}\\\begin{matrix}a_2\\a_3\\\end{matrix}\\\end{matrix}\right] θiθi+1θ˙iθ˙i+1=11000t110t202t0t303t2a0a1a2a3
Θ = T 4 × 4 ( ∆ t ) ∙ A \Theta=T_{4\times4}(∆t)∙A Θ=T4×4(t)A
det ⁡ ( T 4 × 4 ) = − ∆ t 4 ≠ 0 可 逆 \det{\left(T_{4\times4}\right)}=-∆t^4≠0可逆 det(T4×4)=t4=0
A = T 4 × 4 − 1 ∙ Θ A=T_{4\times4}^{-1}\bullet\Theta A=T4×41Θ
[ a 0 a 1 a 2 a 3 ] = [ 1 0 0 0 0 0 0 1 − 3 ∆ t 2 3 ∆ t 2 − 2 ∆ t − 1 ∆ t 2 ∆ t 3 − 2 ∆ t 2 1 ∆ t 2 1 ∆ t 2 ] [ θ i θ i + 1 θ ˙ i θ ˙ i + 1 ] \left[\begin{matrix}\begin{matrix}a_0\\a_1\\\end{matrix}\\\begin{matrix}a_2\\a_3\\\end{matrix}\\\end{matrix}\right]=\begin{bmatrix} 1 & 0 & 0 & 0\\ 0 & 0 & 0 & 1\\ -\frac{3}{∆t^2} & \frac{3}{∆t^2} & -\frac{2}{∆t} & -\frac{1}{∆t}\\ \frac{2}{∆t^3} & -\frac{2}{∆t^2} & \frac{1}{∆t^2} & \frac{1}{∆t^2} \end{bmatrix}\left[\begin{matrix}\begin{matrix}\theta_i\\\theta_{i+1}\\\end{matrix}\\\begin{matrix}{\dot{\theta}}_i\\{\dot{\theta}}_{i+1}\\\end{matrix}\\\end{matrix}\right] a0a1a2a3=10t23t3200t23t2200t2t2101t1t21θiθi+1θ˙iθ˙i+1

1.5 多段Cubic-Polynomials

如何选择速度条件 θ ˙ i {\dot{\theta}}_i θ˙i θ ˙ i + 1 {\dot{\theta}}_{i+1} θ˙i+1

  1. 直接定义(不建议)
  2. 自动生成。如果 θ ˙ i {\dot{\theta}}_i θ˙i t i t_i ti前后变号,选择 θ ˙ i = 0 {\dot{\theta}}_i=0 θ˙i=0;如果 θ ˙ i {\dot{\theta}}_i θ˙i t i t_i ti前后不变号,选择平均值

在这里插入图片描述
规划速度使过程中加速度也连续(有效使用此可控变量):
 不同区段cubic-polynomial需要整合一起,一并求解。

加速度调控的例子:
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
上方示例的矩阵法求解:
在这里插入图片描述

1.6 N段路径的三次多项式(General Cubic Polynomials)

N段路径则有n个三次多项式,总共4N个未知参数。
4N个未知参数需要4N个方程求解。
在这里插入图片描述在这里插入图片描述

还需要2个条件(方程)有3种选择:
在这里插入图片描述
示例1(平面RRR手臂Cartesian-space):
求解步骤从左到右从上到下依次为,
在这里插入图片描述在这里插入图片描述
在这里插入图片描述在这里插入图片描述
示例2(平面RRR手臂joint-space):
求解步骤从左到右从上到下依次为,
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
当路径规划过程中需要规划位置速度加速度时将使用五次多项式。
在这里插入图片描述

二、含抛物线的线性函数

2.1 Linear Function with Parabolic Blends

使用该混合抛物线的线性函数的原因

  1. 许多任务中需要使用直线轨迹。
  2. 轨迹中包含多段直线轨迹,线段转折点速度不连续
  3. 解决方案:将直线段两端修正为二次方程式,让速度轨迹光滑。

规划方式:
在这里插入图片描述
上图中式②=①可得,
θ ¨ t b = θ ˙ t b = θ h − θ b t h − t b = θ f − θ 0 2 − ( θ 0 + 1 2 θ ¨ t b 2 ) t f 2 − t b = θ f − θ 0 − θ ¨ t b 2 t f − 2 t b \ddot{\theta}t_b={\dot{\theta}}_{t_b}=\frac{\theta_h-\theta_b}{t_h-t_b}=\frac{\frac{\theta_f-\theta_0}{2}-(\theta_0+\frac{1}{2}\ddot{\theta}{t_b}^2)}{\frac{t_f}{2}-t_b}=\frac{\theta_f-\theta_0-\ddot{\theta}{t_b}^2}{t_f-{2t}_b} θ¨tb=θ˙tb=thtbθhθb=2tftb2θfθ0(θ0+21θ¨tb2)=tf2tbθfθ0θ¨tb2
θ ¨ t b 2 − θ ¨ t f t b + ( θ f − θ 0 ) = 0 \ddot{\theta}{t_b}^2-\ddot{\theta}t_ft_b+(\theta_f-\theta_0)=0 θ¨tb2θ¨tftb+(θfθ0)=0
t b = θ ¨ t f − θ ¨ 2 t f 2 − 4 θ ¨ ( θ f − θ 0 ) 2 θ ¨ t_b=\frac{\ddot{\theta}t_f-\sqrt{ {\ddot{\theta}}^2{t_f}^2-4\ddot{\theta}(\theta_f-\theta_0)}}{2\ddot{\theta}} tb=2θ¨θ¨tfθ¨2tf24θ¨(θfθ0)
判别式内需为 θ ¨ 2 t f 2 − 4 θ ¨ ( θ f − θ 0 ) ≥ 0 \sqrt{ {\ddot{\theta}}^2{t_f}^2-4\ddot{\theta}(\theta_f-\theta_0)}≥0 θ¨2tf24θ¨(θfθ0) 0,所得 t b t_b tb才为实数:
θ ¨ ≥ 4 ( θ f − θ 0 ) t f 2 \ddot{\theta}\geq\frac{4(\theta_f-\theta_0)}{ {t_f}^2} θ¨tf24(θfθ0)
θ ¨ m i n = 4 ( θ f − θ 0 ) t f 2 {\ddot{\theta}}_{min}=\frac{4(\theta_f-\theta_0)}{ {t_f}^2} θ¨min=tf24(θfθ0)
加速度状态讨论:
1.如果 θ ¨ = θ ¨ m i n \ddot{\theta}={\ddot{\theta}}_{min} θ¨=θ¨min
t b = t f 2 = t h ⇒ t_b=\frac{t_f}{2}=t_h\Rightarrow tb=2tf=th无线性线段,两个抛物线曲线段相连,
t b t_b tb处: θ ˙ ( t b ) = θ ¨ t b = 4 ( θ f − θ 0 ) t f 2 t f 2 = 2 θ f − θ 0 t f \dot{\theta}\left(t_b\right)=\ddot{\theta}t_b=\frac{4(\theta_f-\theta_0)}{ {t_f}^2}\frac{t_f}{2}=2\frac{\theta_f-\theta_0}{t_f} θ˙(tb)=θ¨tb=tf24(θfθ0)2tf=2tfθfθ0
速度为和原本无规划直接相连的速度: θ ˙ = θ f − θ 0 t f \dot{\theta}=\frac{\theta_f-\theta_0}{t_f} θ˙=tfθfθ0相比为2倍。
2.如果 θ ¨ < θ ¨ m i n \ddot{\theta}<{\ddot{\theta}}_{min} θ¨<θ¨min
加速度不足,在 t b = t h t_b=t_h tb=th θ < θ h \theta<\theta_h θ<θh
导致 t h t_h th时抛物线和直线不连续。
在这里插入图片描述
在这里插入图片描述

2.2 多段Linear Function with Parabolic Blends

多个中间点的路径,此时每一段类比前一节的始末位置,只不过现在每一段的始末位置的速度不为0。
类似需要规划图中所示的路径,分为第一个线段部分,中间线段部分,最后一个线段部分
在这里插入图片描述
对于中间线段部分
在这里插入图片描述

上图中,
   t θ j t_{\theta_j} tθj t θ k t_{\theta_k} tθk表示到达点j和点k所在位置的时间
   t j t_j tj t k t_k tk表示点j和点k所在位置部分二次曲线段经历的时间,
   t j k t_{jk} tjk表示点j到点k路径中直线段经历的时间, t k l t_{kl} tkl同理,
   t d j k t_{djk} tdjk表示从点j到点k路径经历的时间。
对上图中j到k段和k到l段(或者说对于任意一段 θ i \theta_i θi θ i + 1 \theta_{i+1} θi+1区间):
Linea部分:
θ ˙ j k = θ k − θ j t d j k {\dot{\theta}}_{jk}=\frac{\theta_k-\theta_j}{t_{djk}} θ˙jk=tdjkθkθj θ ˙ k l = θ l − θ k t d k l {\dot{\theta}}_{kl}=\frac{\theta_l-\theta_k}{t_{dkl}} θ˙kl=tdklθlθk
Parabolic部分:
  方法一:设定加速度解时间
θ ¨ k = s i g n ( θ ˙ k l − θ ˙ j k ) ∣ θ ¨ k ∣ {\ddot{\theta}}_k=sign({\dot{\theta}}_{kl}-{\dot{\theta}}_{jk})\left|{\ddot{\theta}}_k\right| θ¨k=sign(θ˙klθ˙jk)θ¨k t k = θ ˙ k l − θ ˙ j k θ ¨ k t_k=\frac{ {\dot{\theta}}_{kl}-{\dot{\theta}}_{jk}}{ {\ddot{\theta}}_k} tk=θ¨kθ˙klθ˙jk
  上式中,
     ∣ θ ¨ k ∣ |{\ddot{\theta}}_k| θ¨k的大小时需要我们设定的参数,
     s i g n ( ) sign() sign()表示取符号操作,仅获取 θ ˙ k l − θ ˙ j k {\dot{\theta}}_{kl}-{\dot{\theta}}_{jk} θ˙klθ˙jk结果的符号。
  方法二:设定时间解加速度 θ ¨ k = θ ˙ k l − θ ˙ j k t k {\ddot{\theta}}_k=\frac{ {\dot{\theta}}_{kl}-{\dot{\theta}}_{jk}}{t_k} θ¨k=tkθ˙klθ˙jk
  上式中,
     t k t_k tk的大小时需要我们设定的参数。
  最后计算出直线部分经历的 t j k t_{jk} tjk时间,
t j k = t d j k − 1 2 t j − 1 2 t k t_{jk}=t_{djk}-\frac{1}{2}t_j-\frac{1}{2}t_k tjk=tdjk21tj21tk
对于第一个线段部分
在这里插入图片描述
上图中,
   t θ 1 t_{\theta_1} tθ1 t θ 2 t_{\theta_2} tθ2表示到达 θ 1 \theta_1 θ1和到达 θ 2 \theta_2 θ2时的时间,
   t 1 t_1 t1表示初始第一个线段二次曲线段经历的时间,
   θ 1 \theta_1 θ1的位置可以视为将整个起始点为 θ 0 \theta_0 θ0的轨迹在时间上向后平移了 t 1 2 \frac{t_1}{2} 2t1 θ 0 \theta_0 θ0所在的位置,目的时为了便于增加一段二次曲线缓加速部分。否则, θ 0 \theta_0 θ0 θ \theta θ轴上,则没有初始的二次曲线部分。
   t 12 t_{12} t12表示点1到点2路径中直线段经历的时间,
   t d 12 t_{d12} td12表示从起始位置到点2路径(二次曲线段+直线段)经历的时间。
方法一:设定加速度解时间
θ ¨ 1 = s i g n ( θ 2 − θ 1 ) ∣ θ ¨ 1 ∣ {\ddot{\theta}}_1=sign(\theta_2-\theta_1)\left|{\ddot{\theta}}_1\right| θ¨1=sign(θ2θ1)θ¨1
θ ˙ 12 = θ 2 − θ 1 t d 12 − 1 2 t 1 = θ ¨ 1 t 1 {\dot{\theta}}_{12}=\frac{\theta_2-\theta_1}{t_{d12}-\frac{1}{2}t_1}={\ddot{\theta}}_1t_1 θ˙12=td1221t1θ2θ1=θ¨1t1
1 2 θ ¨ 1 t 1 2 − t d 12 θ ¨ 1 t 1 + ( θ 2 − θ 1 ) = 0 \frac{1}{2}{\ddot{\theta}}_1t_1^2-t_{d12}{\ddot{\theta}}_1t_1+{(\theta}_2-\theta_1)=0 21θ¨1t12td12θ¨1t1+(θ2θ1)=0
t 1 = t d 12 − t d 12 2 − 2 ( θ 2 − θ 1 ) θ ¨ 1 t_1=t_{d12}-\sqrt{ {t_{d12}}^2-\frac{ {2(\theta}_2-\theta_1)}{ {\ddot{\theta}}_1}} t1=td12td122θ¨12(θ2θ1)
上式中,
   s i g n ( ) sign() sign()表示取符号操作,仅获取 θ 2 − θ 1 \theta_2-\theta_1 θ2θ1结果的符号,
   ∣ θ ¨ 1 ∣ |{\ddot{\theta}}_1| θ¨1的大小时需要我们设定的参数。
方法二:设定时间解加速度
θ ¨ 1 = θ 2 − θ 1 ( t d 12 − 1 2 t 1 ) 1 t 1 {\ddot{\theta}}_1=\frac{\theta_2-\theta_1}{(t_{d12}-\frac{1}{2}t_1)}\frac{1}{t_1} θ¨1=(td1221t1)θ2θ1t11
t 12 = t d 12 − t 1 − 1 2 t 2 t_{12}=t_{d12}-t_1-{\frac{1}{2}t_2} t12=td12t121t2
上式中,
   t 1 t_1 t1的大小时需要我们设定的参数,
   t 2 t_2 t2是点2所在部分的二次曲线段经历的时间。
对于最后一个线段部分
在这里插入图片描述
上图中:
   t θ n t_{\theta_n} tθn t θ n − 1 t_{\theta_{n-1}} tθn1表示到达 θ n \theta_n θn和到达 θ n − 1 \theta_{n-1} θn1时的时间,
   t n t_n tn表示最后一个线段二次曲线段经历的时间,
   θ n \theta_n θn的位置可以视为将整个终点为 θ f \theta_f θf的轨迹在时间上向前平移了 t n 2 \frac{t_n}{2} 2tn θ f \theta_f θf所在的位置,目的时为了便于增加一段二次曲线缓减速部分。否则, θ f \theta_f θf在整个轨迹的终点上,则没有最终的二次曲线部分。
   t ( n − 1 ) n t_{(n-1)n} t(n1)n表示点n-1到点n路径中直线段经历的时间,
   t d ( n − 1 ) n t_{d(n-1)n} td(n1)n表示从n-1到最终位置路径(二次曲线段+直线段)经历的时间。
方法一:设定加速度解时间
θ ¨ n = s i g n ( θ n − θ n − 1 ) ∣ θ ¨ n ∣ {\ddot{\theta}}_n=sign(\theta_n-\theta_{n-1})\left|{\ddot{\theta}}_n\right| θ¨n=sign(θnθn1)θ¨n
θ ˙ ( n − 1 ) n = θ n − θ n − 1 t d ( n − 1 ) n − 1 2 t n = θ ¨ n ( − t n ) {\dot{\theta}}_{(n-1)n}=\frac{\theta_n-\theta_{n-1}}{t_{d(n-1)n}-\frac{1}{2}t_n}={\ddot{\theta}}_n{(-t}_n) θ˙(n1)n=td(n1)n21tnθnθn1=θ¨n(tn)
1 2 θ ¨ n t n 2 − t d ( n − 1 ) n θ ¨ n t n − ( θ n − θ n − 1 ) = 0 \frac{1}{2}{\ddot{\theta}}_nt_n^2-t_{d\left(n-1\right)n}{\ddot{\theta}}_nt_n-{(\theta}_n-\theta_{n-1})=0 21θ¨ntn2td(n1)nθ¨ntn(θnθn1)=0
t n = t d ( n − 1 ) n − t d ( n − 1 ) n 2 − 2 ( θ n − θ n − 1 ) θ ¨ n t_n=t_{d(n-1)n}-\sqrt{ {t_{d(n-1)n}}^2-\frac{ {2(\theta}_n-\theta_{n-1})}{ {\ddot{\theta}}_n}} tn=td(n1)ntd(n1)n2θ¨n2(θnθn1)
上式中,
   s i g n ( ) sign() sign()表示取符号操作,仅获取 θ n − θ n − 1 \theta_n-\theta_{n-1} θnθn1结果的符号,
   ∣ θ ¨ n ∣ |{\ddot{\theta}}_n| θ¨n的大小时需要我们设定的参数。
方法二:设定时间解加速度
θ ¨ n = θ n − θ n − 1 ( t d 12 − 1 2 t n ) 1 − t n {\ddot{\theta}}_n=\frac{\theta_n-\theta_{n-1}}{(t_{d12}-\frac{1}{2}t_n)}\frac{1}{-t_n} θ¨n=(td1221tn)θnθn1tn1 t ( n − 1 ) n = t d ( n − 1 ) n − t n − 1 2 t n − 1 t_{(n-1)n}=t_{d(n-1)n}-t_n-{\frac{1}{2}t_{n-1}} t(n1)n=td(n1)ntn21tn1
上式中,
   t n t_n tn的大小时需要我们设定的参数,
   t n − 1 t_{n-1} tn1是点n-1所在部分的二次曲线段经历的时间。

2.3 Linear Function with Parabolic Blends注解

一、真实系统中可达到的加速度 θ ¨ \ddot{\theta} θ¨取决于许多因素
  1.马达规格
  2.手臂姿态:手臂在不同姿态下,各轴所需承载(如重力)的扭力不同
  3.手臂动态状态:手臂在不同动态下,各轴需承载惯性力不同
在这里插入图片描述
二、规划后轨迹未通过中间过程点
  仅加速度无限大时轨迹有通过中间过程点(via points)
  如果通过中间过程点为必须,需要建立伪中间过程点(pseudo via points) ,让原本的中间过程点落在直线段上。
在这里插入图片描述
三、若有Cartesian space 下有某些部分有直线轨迹的需求,轨迹规划需要在Cartesian space下进行。
四、编程里,仔细定义好某时间t所属的线段或曲线段。
在这里插入图片描述

2.4 Cartesian Space 下轨迹几何极限

一、中间某些区域无法到达。(在工作空间(work space)之外)
二、轨迹需要高加减速。(接近singular configuration)
三、针对特定起始和终点姿态,无法产生连续轨迹(几何上不可能)
如下图,除非 l 1 − l 2 = d l_1-l_2=d l1l2=d
在这里插入图片描述

2.5 回顾R-R-R机械臂(Revisit the RRR Manipulator)

在这里插入图片描述在这里插入图片描述
在这里插入图片描述在这里插入图片描述

总结

以上就是今天要讲的内容,本文是本人观看机器人运动学所作的笔记,本文主要包含轨迹规划部分。整个笔记到此都已经完结。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/z1153728179/article/details/124813984

智能推荐

mongodb 日期分组聚合_mongodb 聚合查询-按日期分组统计 和对应mongoTemplate写法-程序员宅基地

文章浏览阅读2.4k次。1.$match 定义查询条件db.collection.aggregate({"$match":{"merchno" : "1561985080187","createTime": {$lte:ISODate("2019-07-03T15:59:59.000Z"),$gte: ISODate("2019-07-02T16:00:00.000Z")}}})对应的mongoTemplate 写法Ag..._mongodb 按日期分组并统计数据求和,其中日期按自定义格式来定义

高通 msm平台GPIO相关的device tree设置 (device tree 操作实例1)-程序员宅基地

文章浏览阅读440次。转载于:http://blog.csdn.net/viewsky11/article/details/53402536GPIO相关的dvice tree设置和interrupt设置gpoi号以及gpio相关的属性设置以tsp的proxy_en端口为例:i2c@78b6000 { /* BLSP1 QUP2 */ compatible = "qcom,i2c-msm...

07.Vue3.x 实现一个完整的toDoList(待办事项) 【前面知识综合练习】_todo list :vue 待办事项-程序员宅基地

文章浏览阅读655次。一、Vue中集成Sass/Scss1.1 安装sass-loader node-sassnpm install -D sass-loader node-sass安装完启动项目如果出现"Syntax Error: TypeError: this.getOptions is not a function"的错误,可能是sass-loader版本太高卸载了重新安装低版本# 卸载当前sass-loadernpm uninstall --save sass-loader# 重新安装低版本npm _todo list :vue 待办事项

DOM操作中浏览器兼容问题_dom-to-image.min.js ie-程序员宅基地

文章浏览阅读177次。// 封装函数// myGetStyle 获取标签样式函数// @param object element 需要获取css样式的标签对象// @param string style 需要获取的css样式的属性// @return string 返回制订标签对象指定属性对应的属性值字符串// 可以兼容低版本IEL浏览器function myGetStyle(element,style){if(window.getComputedStyle){ // 转化为true 证明是标准浏览器._dom-to-image.min.js ie

学习笔记一:HotSpot中的一些概念_hotspot wizard-程序员宅基地

文章浏览阅读3.1k次,点赞2次,收藏6次。在 HotSpot 虚拟机中,对象在内存中存储的布局可以分为 3 块区域:对象头(Header)、实例数据(Instance Data)和对齐填充(Padding)。 实例数据部分是对象真正存储的有效信息,也是在程序代码中所定义的各种类型的字段内容。无论是从父类继承下来的,还是在子类中定义的,都需要记录下来。这部分的存储顺序会受到虚拟机分配策略参数(FieldsAllocationStyle)和_hotspot wizard

MySQL数据类型--浮点数类型和定点数类型_数据库里数据类型定点小数-程序员宅基地

文章浏览阅读7.8w次,点赞13次,收藏44次。MySQL中使用浮点数类型和定点数类型来表示小数。浮点数类型包括单精度浮点数(float型)和双精度浮点数(double型)。定点数类型就是decimal型。OK,现在我们来看看这几种数据类型的取值范围和存数的字节数。关于上表的解释:1,Decimal型的取值范围和double相同。但是decimal的有效取值范围由M和D决定,而且Decimal型的字节数是M+2。_数据库里数据类型定点小数

随便推点

Android点击事件之多点触摸与手势识别-程序员宅基地

文章浏览阅读2.7k次,点赞4次,收藏15次。前言最近遇到想要实现三指滑动监听的需求,实现代码不方便贴出来,但是思路还是可以记录一下。Muilti-touch 双指缩放探索首先要实现OnTouchListener接口,然后重写方法:public boolean onTouch(View v, MotionEvent event); 从这个方法中我们就可以获取实现两指缩放功能的全部信息。View v是触发事件的源,MotionEvent event即一个触摸事件。对屏幕的几乎所有操作都会触发事件,如点击、放开、滑动等。不同的

maven插件之maven之maven-surefire-plugin_the parameter forkmode is deprecated since version-程序员宅基地

文章浏览阅读6k次。1.maven-surefire-plugin是个什么鬼?如果你执行过 mvn test 或者执行其他maven命令时跑了测试用例,你就已经用过 maven-surefire-plugin 了。 maven-surefire-plugin 是maven里执行测试用例的插件,不显示配置就会用默认配置。这个插件的 surefire:test 命令会默认绑定maven执行的 test 阶段。_the parameter forkmode is deprecated since version 2.14. use forkcount and r

LCD 移植的那些坑-LCD屏幕配置常见的问题解决方案_lvds hspw-程序员宅基地

文章浏览阅读3.5k次,点赞3次,收藏34次。在使用飞凌嵌入式开发板过程中,关于LCD屏幕配置有一些常见的问题问题1,如何修改开机默认的屏幕尺寸?全平台都可以通过uboot的选择菜单来选择默认的显示,对应配置方式可以参阅对应平台的应用手册。i.MX6DL/i.MX6Q系列uboot已开源,可以通过直接修改uboot源码文件include/configs/mx6sabre_common.h(参考linux4.1.15内核版本)如果是客..._lvds hspw

街景字符编码识别项目学习笔记(三)_convnext能不能用作汉字识别-程序员宅基地

文章浏览阅读344次。学习目标:学习CNN基础和原理;使用Pytorch框架构建CNN模型,并完成训练1 卷积神经网络CNN1.1 CNN简介卷积神经网络(简称CNN)是是一类特殊的人工神经网络,是深度学习中重要的一个分支。它专门用来处理具有类似网格结构的数据,比如说时间序列数据(可以认为是在时间轴上有规律地采样形成的一维网格)以及图像数据(二维像素网格)。CNN在很多领域都表现优异,精度和速度比传统计算学习算法高很多。特别是在计算机视觉领域,CNN是解决图像分类、人脸识别、图像检索、物体检测和语义分割的主流模型。近._convnext能不能用作汉字识别

电子白板是什么?-程序员宅基地

文章浏览阅读469次。电子白板是汇集了尖端电子技术、软件技术等多种高科技手段研发的高新技术产品,它通过应用电磁感应原理,结合计算机和投影机,可以实现无纸化办公及教学。电子白板由普通白板发展而来,最早出现的电子白板为复印型电子白板,随着技术的发展及市场的需要,出现了交互式的电子白板。目前市场上这两种电子白板并存,以下分别介绍这两类电子白板。 复印式电子白板 所谓复印式电子白板即通过用户的简单操作便可将白板上书写的内容通过一定的方式扫描并打印出来。其功能完成过程与普通的复印过程一样,首先由图像传感器件对白板上的内容进行采集,采集信号_电子白板是什么

Mac OS下关闭本地TimeMachine备份节省磁盘空间_sudo tmutil disablelocal-程序员宅基地

文章浏览阅读4.5w次。当我们开启TimeMachine之后,在使用外置磁盘时会把备份资料放在外置磁盘上,但是某一天发现如下图所示的奇怪xian'x_sudo tmutil disablelocal