【现代机器人学】基于指数积的机械臂正运动学

前言:对于一个开链机器人而言,末端执行器的位置和姿态可以通过关节角唯一确定出来。正运动学的问题就是当给定各关节位置,求出附着在末端执行器上的物体坐标系的位姿。
描述正运动学的方法主要是DH参数法,它是在每个关节上建立坐标系,通过坐标系的平移旋转,即矩阵的乘积来求得相对于基坐标系的末端位姿。
指数积(Product of Exponential,POE)的方法近些年才开始流行,成为新颖的建模方法。POE公式直接来自刚体运动的指数坐标表示,它无须建立连杆坐标系,只有基坐标系和末端坐标系是必需的,且它们可以任意选择。

注:以下专业名词的含义及相关公式可参考我的另一篇博客:
现代机器人学名词概念


一.指数积公式

1.1 第一种表达形式:相对基坐标系的螺旋轴

空间刚体位移Chasles-Mozzi定理:任何刚体运动都可通过绕空间某一固定螺旋轴 S S S的运动来实现。
隐藏在POE公式背后的关键是:将每个关节的螺旋运动施加给后面的杆。为应用POE公式,首先需选择基坐标系 { s } \left\{ s \right\} {s}和末端坐标系 { b } \left\{ b \right\} {b},并将机器人置于初始位置(或零位,即所有关节变量初值为0),每个关节正向位移的方向指定。令 M ∈ S E ( 3 ) M\in SE\left( 3 \right) MSE(3)表示末端坐标系相对于基坐标系的初始位形(机器人处于初始位置时)。
假定关节n对应的关节变量为 θ n \theta _n θn,末端坐标系M的位移可写成 T ( θ ) = e [ S n ] θ n M T\left( \theta \right) =e^{\left[ S_n \right] \theta _n}M T(θ)=e[Sn]θnM
式中, T ∈ S E ( 3 ) T\in SE\left( 3 \right) TSE(3)为末端的新位形, S n = ( ω n , ν n ) S_n=\left( \omega _n,\nu _n \right) Sn=(ωn,νn)为表示在基坐标系中的关节n的旋量坐标, w n ∈ R 3 w_n\in R^3 wnR3是沿关节轴正向的单位向量, v n = − w n × q n v_n=-w_n\times q_n vn=wn×qn q n q_n qn为关节轴上任一点,坐标值在基坐标系中进行度量。
若我们假设关节n-1也发生变化,则在以上的位移上再乘以矩阵指数 e [ S n − 1 ] θ n − 1 e^{\left[ S_{n-1} \right] \theta _{n-1}} e[Sn1]θn1,按此推理,当所有的关节变量 ( θ 1 , ⋯   , θ n ) \left( \theta _1,\cdots ,\theta _n \right) (θ1,,θn)都发生变化时,应满足

T ( θ ) = e [ S 1 ] θ 1 ⋯ e [ S n − 1 ] θ n − 1 e [ S n ] θ n M T\left( \theta \right) =e^{\left[ S_1 \right] \theta _1}\cdots e^{\left[ S_{n-1} \right] \theta _{n-1}}e^{\left[ S_n \right] \theta _n}M T(θ)=e[S1]θ1e[Sn1]θn1e[Sn]θnM
上述方程就是对于n自由度开链机器人正向机器人正向运动学的指数积公式。其中的所有螺旋轴都是基于基坐标系的表示。

计算步骤
一.当机器人处于初始位置时,末端位形 M ∈ S E ( 3 ) M\in SE\left( 3 \right) MSE(3)

二.当机器人处于初始位置时,相对基坐标系的螺旋轴 S 1 , ⋯ S n S_1,\cdots S_n S1,Sn,对应各个关节的螺旋运动;

三.关节变量 ( θ 1 , ⋯   , θ n ) \left( \theta _1,\cdots ,\theta _n \right) (θ1,,θn)

1.2 第二种表达形式:相对末端坐标系的螺旋轴

T ( θ ) = M e [ β 1 ] θ 1 ⋯ e [ β n − 1 ] θ n − 1 e [ β n ] θ n T\left( \theta \right) =Me^{\left[ \beta _1 \right] \theta _1}\cdots e^{\left[ \beta _{n-1} \right] \theta _{n-1}}e^{\left[ \beta _n \right] \theta _n} T(θ)=Me[β1]θ1e[βn1]θn1e[βn]θn
上式是指数积公式的另一种表达形式,其中的关节角表示成机器人处于零位时各螺旋轴相对于末端坐标系(物体坐标系)的旋量坐标 β i \beta _i βi ,它也被称为指数积公式的物体坐标系表示形式。其中 [ β i ] = [ A d M − 1 ] S i , i = 1 , ⋯   , n \left[ \beta _i \right] =\left[ Ad_{M^{-1}} \right] S_i,i=1,\cdots ,n [βi]=[AdM1]Si,i=1,,n

算例:对于6R开链机器人的正向运动学

第一步:当机器人位于初始位形时,建立基坐标系 { s } \left\{ s \right\} {s}和末端坐标系 { b } \left\{ b \right\} {b},旋转轴作为 z z z轴,坐标系的建立满足右手定则,此时可以得到末端位姿矩阵 M = [ R P 0 1 ] ∈ S E ( 3 ) M=\left[ \begin{matrix} R& P\\ 0& 1\\ \end{matrix} \right] \in SE\left( 3 \right) M=[R0P1]SE(3)式中,R为末端坐标系相对于基坐标系的姿态变化,P为末端坐标系原点在基坐标系中的位移表示。
末端坐标系姿态任意选择,这里使末端坐标系姿态和 M M M相同,即 M = [ 1 0 0 − 0.0261 0 1 0 − 1.1863 0 0 1 − 0.6540 0 0 0 1 ] M=\left[ \begin{matrix} 1& 0& 0& -0.0261\\ 0& 1& 0& -1.1863\\ 0& 0& 1& -0.6540\\ 0& 0& 0& 1\\ \end{matrix} \right] M= 1000010000100.02611.18630.65401
第二步:建立每个关节的螺旋轴,同样的,旋转轴作为 z z z轴,此时可写出每个螺旋轴相对于基坐标系的单位向量 w ^ \hat{w} w^
这里选择 [ w 1 ⋯ w 6 ] = [ 0 0 0 0 − 1 − 1 1 0 0 − 1 0 0 0 1 0 0 0 1 ] \left[ w_1\cdots w_6 \right] =\left[ \begin{matrix} 0& 0& 0\\ 0& -1& -1\\ 1& 0& 0\\ \end{matrix}\begin{matrix} -1& 0& 0\\ 0& 1& 0\\ 0& 0& 1\\ \end{matrix} \right] [w1w6]= 001010010100010001

第三步:选择六个关节轴上的任一点 q 1 ⋯ q 6 q_1\cdots q_6 q1q6,为方便计算,我们将这些点选为螺旋轴与连杆的重合点,即将六个关节上的点分别作为 q 1 ⋯ q 6 q_1\cdots q_6 q1q6
这里选择 [ q 1 ⋯ q 6 ] = [ 0 − 0.1573 − 0.2037 0 0.0653 − 0.5483 0 0 − 0.0165    − 0.1518 − 0.1081 − 0.0261 − 0.7154 − 0.6714 − 1.1863 − 0.3140 − 0.6685 − 0.6540 ] \left[ q_1\cdots q_6 \right] =\left[ \begin{matrix} 0& -0.1573& -0.2037\\ 0& 0.0653& -0.5483\\ 0& 0& -0.0165\\ \end{matrix}\,\, \begin{matrix} -0.1518& -0.1081& -0.0261\\ -0.7154& -0.6714& -1.1863\\ -0.3140& -0.6685& -0.6540\\ \end{matrix} \right] [q1q6]= 0000.15730.065300.20370.54830.01650.15180.71540.31400.10810.67140.66850.02611.18630.6540

再根据公式 v n = − w n × q n v_n=-w_n\times q_n vn=wn×qn,即可计算得到六个线速度 v n v_n vn
第四步:有了以上的数据,再根据指数坐标公式运算得到矩阵指数 e [ S ] θ e^{\left[ S \right] \theta} e[S]θ,详细公式可参考我的文前的链接文章。到此即可得到指数积公式 T ( θ ) = e [ S 1 ] θ 1 ⋯ e [ S n − 1 ] θ n − 1 e [ S n ] θ n M T\left( \theta \right) =e^{\left[ S_1 \right] \theta _1}\cdots e^{\left[ S_{n-1} \right] \theta _{n-1}}e^{\left[ S_n \right] \theta _n}M T(θ)=e[S1]θ1e[Sn1]θn1e[Sn]θnM

在这里插入图片描述

最后说明一点:这里的关节角是指机器人从初始位置实际转动的角度,而不是机器人此刻的角度,因为对于一些工业机器人而言有的初始关节角是90°。

个人对POE指数积建模与DH参数法的理解:POE指数积建模需要扎实的数学几何知识,它的建模过程相比DH参数法要简单一些,因为它不必考虑首尾之间的坐标系应该怎么建立,而是确定螺旋轴方向和确定螺旋轴上的一点位置即可。它们之间的联系是指数积方法在确定螺旋轴方向的同时隐含了对连杆转角的确定,确定螺旋轴上的一点时隐含了对连杆长度的确定,总的来说,大同小异,但指数积方法更新颖,更灵活。

  • 6
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
在MATLAB机器人工具箱中,可以使用ikine()函数来求解机械的逆运动学问题。逆运动学是指在已知末端工具坐标系相对于基坐标系的位姿时,计算出能够达到该位姿的机械关节角度。通过设置初始关节角坐标,可以隐式地控制机械运动学配置。同时,MATLAB机器人工具箱还提供了直线轨迹和圆弧轨迹规划的功能,可以实现机械的路径规划。因此,MATLAB机器人工具箱提供了全面的解决方案,可以用于机械运动学解决。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [matlab机器人工具箱实现机械直线轨迹&圆弧轨迹规划(带sw模型+matlab程序+报告)](https://download.csdn.net/download/yjw0911/85243870)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [matlab 机器人工具箱4-机械运动学](https://blog.csdn.net/weixin_34032649/article/details/115881871)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值