5-DOF机械臂课程设计(一)之正逆运动学

基本要求

​ 开发上位机程序,要求有良好的界面,能提供关节空间下和笛卡尔坐 标下表示的目标位姿点和中间若干经过点的输入功能,进行轨迹规划, 并控制机械臂沿轨迹运动,最终完成目标抓取的任务。

基本概念

连杆长度 :2个相邻关节轴线之间的距离

连杆扭角 :2个相邻关节轴线之间的角度

连杆偏距 :2个关节坐标系的X轴之间的距离

关节角度 :关节变量 计算时需要加初始角度偏移

关节坐标系的建立

​ 根据《机器人学导论》的内容,建立坐标系的规则如下:

  1. 坐标系Z轴确定规则:

    如果关节是旋转的,Z轴按右手定则大拇指指向为正方向。
    如果关节是滑动的,Z轴沿直线运动方向的正方向。
    连杆长度D为关节变量。

  2. X轴确定规则:
    1)情况1:两关节Z轴既不平行也不相交
    取两Z轴公垂线方向作为X轴方向。
    2)情况2:两关节Z轴平行
    此时,两Z轴之间有无数条公垂线,可挑选与前一关节的公垂线的一条公垂线
    3)情况3:两关节Z轴相交
    取两条Z轴的叉积方向作为X轴(叉积:向量积)

  3. Y轴确定原则:右手定则

最终建立的机械臂坐标系如下图:

正运动学求解

DH参数表的建立

根据上述坐标系的建立,可以得到DH参数表如下:

i α i − 1 \alpha_{i-1} αi1 a i − 1 a_{i-1} ai1 d i d_i di θ i \theta_i θi
10080 θ 1 \theta_1 θ1
2 π / 2 \pi/2 π/2100 θ 2 + π / 2 \theta_2+\pi/2 θ2+π/2
301050 θ 3 \theta_3 θ3
4096-11 θ 4 \theta_4 θ4
5 π / 2 \pi/2 π/2060 θ 5 + π / 2 \theta_5+\pi/2 θ5+π/2
600950

根据书本中公式, i i − 1 T { }_{i}^{i-1} T ii1T的一般表达式如公式(1)所示:
i i − 1 T = [ c θ i − s θ i 0 a i − 1 s θ i c α i − 1 s θ i c α i − 1 − s α i − 1 − s α i − 1 d i s θ i s α i − 1 c θ i s α i − 1 c α i − 1 c α i − 1 d i 0 0 0 1 ] { }_{i}^{i-1} T=\left[\begin{array}{cccc} c \theta_{i} & -s \theta_{i} & 0 & a_{i-1} \\ s \theta_{i} c \alpha_{i-1} & s \theta_{i} c \alpha_{i-1} & -s \alpha_{i-1} & -s \alpha_{i-1} d_{i} \\ s \theta_{i} s \alpha_{i-1} & c \theta_{i} s \alpha_{i-1} & c \alpha_{i-1} & c \alpha_{i-1} d_{i} \\ 0 & 0 & 0 & 1 \end{array}\right] ii1T= cθisθicαi1sθisαi10sθisθicαi1cθisαi100sαi1cαi10ai1sαi1dicαi1di1
可以计算得到工具坐标系相对于固定坐标系的位置和姿态,如下列所示
6 0 T = 1 0 T ⋅ 2 1 T ⋅ 3 2 T ⋅ 4 3 T ⋅ 5 4 T ⋅ 6 5 T { }_{6}^{0} T={ }_{1}^{0} T \cdot{ }_{2}^{1} T \cdot{ }_{3}^{2} T \cdot{ }_{4}^{3} T \cdot{ }_{5}^{4} T \cdot{ }_{6}^{5} T 60T=10T21T32T43T54T65T

逆运动学求解

将工具坐标系相对于固定坐标系的位姿齐次矩阵, 转化成笛卡尔坐标形式, 姿态 采用绕定轴 X-Y-Z 旋转 (RPY 角) 的形式描述, 其转化过程可描述如下:
B A T = [ B A R B A P 0 0 0 ] { }_{B}^{A} T=\left[\begin{array}{cc} { }_{B}^{A} R & { }_{B}^{A} P \\ 0 & 0 & 0 \end{array}\right] BAT=[BAR0BAP00]
其中,
B A R = [ r 11 r 12 r 13 r 21 r 22 r 23 r 31 r 32 r 33 ] B A P = [ x y z ] { }_{B}^{A} R=\left[\begin{array}{lll} r_{11} & r_{12} & r_{13} \\ r_{21} & r_{22} & r_{23} \\ r_{31} & r_{32} & r_{33} \end{array}\right]{ }_{B}^{A} P=\left[\begin{array}{l} x \\ y \\ z \end{array}\right] BAR= r11r21r31r12r22r32r13r23r33 BAP= xyz
其转化为 R P Y R P Y RPY 角对应的公式为:
{ θ = − a sin ⁡ ( r 31 ) ψ = atan ⁡ 2 ( r 32 / cos ⁡ ( θ ) , r 33 / cos ⁡ ( θ ) ) ϕ = atan ⁡ 2 ( r 21 / cos ⁡ ( θ ) , r 11 / cos ⁡ ( θ ) ) \left\{\begin{array}{c} \theta=-a \sin \left(r_{31}\right) \\ \psi=\operatorname{atan} 2\left(r_{32} / \cos (\theta), r_{33} / \cos (\theta)\right) \\ \phi=\operatorname{atan} 2\left(r_{21} / \cos (\theta), r_{11} / \cos (\theta)\right) \end{array}\right. θ=asin(r31)ψ=atan2(r32/cos(θ),r33/cos(θ))ϕ=atan2(r21/cos(θ),r11/cos(θ))
对应的笛卡尔坐标为:
 Carte  = [ x , y , z , θ , ψ , ϕ ] \text { Carte }=[x, y, z, \theta, \psi, \phi]  Carte =[x,y,z,θ,ψ,ϕ]
已知工具坐标系末端相对于固定坐标系的位置和姿态, 通过几何法对机械臂 的各关节角度进行求解。首先可以直接确定第一个关节和第五个关节的角度值, 第一 个关节的角度可以通过 x \mathrm{x} x y \mathrm{y} y 直接确定, 第四个关节的角度值等于 ϕ \phi ϕ, 即
θ 1 = atan ⁡ 2 ( y , x ) θ 5 = ϕ \begin{gathered} \theta_{1}=\operatorname{atan} 2(y, x) \\ \theta_{5}=\phi \end{gathered} θ1=atan2(y,x)θ5=ϕ
由于该机械辟只有五个自由度, 最后一个关节为空制夹爪的末端, 所以首先要对 工具坐标系末端相对于固定坐标系的位置进行处理, 分别减去夹爪在 x 、 y 、 z x 、 y 、 z xyz​​ 方向上的分量,如下所示:

对于剩下的三个关节,求解其角度值可以看作是已知第三连杆的位姿求解平面三连杆中三个关节的角度值,其中,第三连杆末端的位置为 x 1 , y 1 ) x_1, y_1) x1,y1)​ ,倾斜角度为 ψ \psi ψ​ 。三连杆分别对应的角度为 θ 1 ′ , θ 2 ′ , θ 3 ′ \theta_1',\theta_2',\theta_3' θ1,θ2,θ3​,

对于三连杆所在的平面,有如下几何关系:
x 1 = l 1 ⋅ cos ⁡ θ 1 ′ + l 2 ⋅ cos ⁡ ( θ 1 ′ + θ 2 ′ ) + l 3 ⋅ cos ⁡ ( θ 1 ′ + θ 2 ′ + θ 3 ′ ) y 1 = l 1 ⋅ sin ⁡ θ 1 ′ + l 2 ⋅ sin ⁡ ( θ 1 ′ + θ 2 ′ ) + l 3 ⋅ sin ⁡ ( θ 1 ′ + θ 2 ′ + θ 3 ′ )  令  m = l 1 ⋅ cos ⁡ ψ − x 1 , n = l 2 ⋅ sin ⁡ ψ − y 1 ,  对于  θ 1  有  θ 1 = ( l 1 ⋅ cos ⁡ θ 1 ′ + m ) 2 + ( l 1 ⋅ sin ⁡ θ 1 ′ + n ) 2 ( θ 1 ′ + θ 2 ′ ) = ( l 1 ⋅ cos ⁡ ( θ 1 ′ + θ 2 ′ ) + m ) 2 + ( l 1 ⋅ sin ⁡ ( θ 1 ′ + θ 2 ′ ) + n ) 2  进而有,  m ⋅ cos ⁡ θ 1 ′ + n ⋅ sin ⁡ θ 1 ′ = k 1 k 1 = l 2 2 − l 1 2 − m 2 − n 2 2 l 1 m ⋅ cos ⁡ ( θ 1 ′ + θ 2 ′ ) + n ⋅ sin ⁡ ( θ 1 ′ + θ 2 ′ ) = k 2 k 1 = l 1 2 − l 2 2 − m 2 − n 2 2 l 2 \begin{gathered} x_{1}=l_{1} \cdot \cos \theta_{1}{ }^{\prime}+l_{2} \cdot \cos \left(\theta_{1}{ }^{\prime}+\theta_{2}{ }^{\prime}\right)+l_{3} \cdot \cos \left(\theta_{1}{ }^{\prime}+\theta_{2}{ }^{\prime}+\theta_{3}{ }^{\prime}\right) \\ y_{1}=l_{1} \cdot \sin \theta_{1}{ }^{\prime}+l_{2} \cdot \sin \left(\theta_{1}{ }^{\prime}+\theta_{2}{ }^{\prime}\right)+l_{3} \cdot \sin \left(\theta_{1}{ }^{\prime}+\theta_{2}{ }^{\prime}+\theta_{3}{ }^{\prime}\right) \\ \text { 令 } m=\mathrm{l}_{1} \cdot \cos \psi-x_{1}, n=\mathrm{l}_{2} \cdot \sin \psi-y_{1}, \text { 对于 } \theta_{1} \text { 有 } \\ \qquad \begin{array}{c} \theta_{1}=\left(l_{1} \cdot \cos \theta_{1}{ }^{\prime}+m\right)^{2}+\left(l_{1} \cdot \sin \theta_{1}{ }^{\prime}+n\right)^{2} \\ \left(\theta_{1}{ }^{\prime}+\theta_{2}{ }^{\prime}\right)=\left(l_{1} \cdot \cos \left(\theta_{1}{ }^{\prime}+\theta_{2}{ }^{\prime}\right)+m\right)^{2}+\left(l_{1} \cdot \sin \left(\theta_{1}{ }^{\prime}+\theta_{2}{ }^{\prime}\right)+n\right)^{2} \\ \text { 进而有, } \\ m \cdot \cos \theta_{1}{ }^{\prime}+n \cdot \sin \theta_{1}{ }^{\prime}=k_{1} \\ k_{1}=\frac{l_{2}^{2}-l_{1}^{2}-m^{2}-n^{2}}{2 l_{1}} \\ m \cdot \cos \left(\theta_{1}{ }^{\prime}+\theta_{2}{ }^{\prime}\right)+n \cdot \sin \left(\theta_{1}{ }^{\prime}+\theta_{2}{ }^{\prime}\right)=k_{2} \\ k_{1}=\frac{l_{1}^{2}-l_{2}^{2}-m^{2}-n^{2}}{2 l_{2}} \end{array} \end{gathered} x1=l1cosθ1+l2cos(θ1+θ2)+l3cos(θ1+θ2+θ3)y1=l1sinθ1+l2sin(θ1+θ2)+l3sin(θ1+θ2+θ3)  m=l1cosψx1,n=l2sinψy1, 对于 θ1  θ1=(l1cosθ1+m)2+(l1sinθ1+n)2(θ1+θ2)=(l1cos(θ1+θ2)+m)2+(l1sin(θ1+θ2)+n)2 进而有mcosθ1+nsinθ1=k1k1=2l1l22l12m2n2mcos(θ1+θ2)+nsin(θ1+θ2)=k2k1=2l2l12l22m2n2

 令  b 1 = − 2 ⋅ n ⋅ k 1 , c 1 = k 1 2 − m 2 , Δ 1 = b 1 2 − 4 ⋅ a ⋅ c 1 ,  当  Δ 1 < 0  时, 则表示出现   非实数解的情况, 此时机械臂对于输入的笛卡尔坐标工作空间不可达。同理, 令  b 2 = − 2 ⋅ n ⋅ k 2 , c 2 = k 2 2 − m 2 , Δ 2 = b 2 2 − 4 ⋅ a ⋅ c 2 ,  当  Δ 2 < 0  时, 则表示工作空间不可   达。  \begin{aligned} &\text { 令 } b_{1}=-2 \cdot n \cdot k_{1}, c_{1}=k_{1}^{2}-m^{2}, \Delta_{1}=\mathrm{b}_{1}^{2}-4 \cdot a \cdot c_{1}, \text { 当 } \Delta_{1}<0 \text { 时, 则表示出现 } \\ &\text { 非实数解的情况, 此时机械臂对于输入的笛卡尔坐标工作空间不可达。同理, 令 } b_{2}= \\ &-2 \cdot n \cdot k_{2}, c_{2}=k_{2}^{2}-m^{2}, \Delta_{2}=\mathrm{b}_{2}^{2}-4 \cdot a \cdot c_{2}, \text { 当 } \Delta_{2}<0 \text { 时, 则表示工作空间不可 } \\ &\text { 达。 } \\ \end{aligned}   b1=2nk1,c1=k12m2,Δ1=b124ac1,  Δ1<0 则表示出现  非实数解的情况此时机械臂对于输入的笛卡尔坐标工作空间不可达。同理 b2=2nk2,c2=k22m2,Δ2=b224ac2,  Δ2<0 则表示工作空间不可  达。 

根据书本公式[1],可以解得
θ 1 ′ = atan ⁡ 2 ( n , m ) ± atan ⁡ 2 ( a − k 1 2 ) , k 1 ) θ 1 ′ + θ 2 , = atan ⁡ 2 ( n , m ) ± atan ⁡ 2 ( a − k 2 2 ) , k 2 ) \begin{aligned} &\left.\theta_{1}^{\prime}=\operatorname{atan} 2(n, m) \pm \operatorname{atan} 2\left(a-k_{1}^{2}\right), k_{1}\right) \\ &\left.\theta_{1}{ }^{\prime}+\theta_{2},=\operatorname{atan} 2(n, m) \pm \operatorname{atan} 2\left(a-k_{2}{ }^{2}\right), k_{2}\right) \end{aligned} θ1=atan2(n,m)±atan2(ak12),k1)θ1+θ2,=atan2(n,m)±atan2(ak22),k2)
最终,根据 θ 1 ′ + θ 2 ′ + θ 3 = ψ \theta_1'+\theta_2'+\theta_3=\psi θ1+θ2+θ3=ψ可以求解出平面三连杆中各个关节的倾斜角度。

多解下解的选取

​ 平面三连杆在求解时会出现多解的情况,经过思考分析,对多解情况提出了一种可行的方案,如下图所示

上式的 θ 1 ′ \theta_1' θ1有两组解,由于机械臂的臂长 l 1 l_1 l1 l 2 l_2 l2的长度不同,所以会有:
θ 11 + θ 12 > θ 21 + θ 22 \theta_{11}+\theta_{12}>\theta_{21}+\theta_{22} θ11+θ12>θ21+θ22
此处 θ 22 < 0 \theta_{22}<0 θ22<0, 并且 θ 21 > θ 11 \theta_{21}>\theta_{11} θ21>θ11, 由此关系可以对两组解进行区分。
则可以求出机械臂第 2、3、4 关节的角度
θ 2 = θ 1 ′ − 90 θ 3 = θ 2 ′ θ 4 = θ 3 ′ \begin{gathered} \theta_{2}=\theta_{1}^{\prime}-90 \\ \theta_{3}=\theta_{2}^{\prime} \\ \theta_{4}=\theta_{3}^{\prime} \end{gathered} θ2=θ190θ3=θ2θ4=θ3
最终可得机械臂逆运动学的解
 JVar  = [ θ 1 , θ 2 , θ 3 , θ 4 , θ 5 ] \text { JVar }=\left[\theta_{1}, \theta_{2}, \theta_{3}, \theta_{4}, \theta_{5}\right]  JVar =[θ1,θ2,θ3,θ4,θ5]

源码下载

多功能视觉引导5-DOF机械臂实现

  • 5
    点赞
  • 45
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Rosen.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值