当前位置: 首页 > article >正文

02- 三自由度串联机械臂运动学分析

  在前文,已经验证三自由度机械臂在静止状态下,不同方法得到的末端点P的位置坐标值是一致的,此文将简单介绍一下三自由度机械臂正运动学、逆运动学分析。

2.1 正运动学


  给出三自由度机械臂三个关节的运动曲线,让机械臂运动,得到末端点P的位置曲线。两个关节角度变化如下所示:


  让机械臂按照上述关节角度曲线运动,对比几种方法计算的末端点P的位置曲线。

1.RT & MDH & MATLAB对比

  采用前文所述的机器人工具箱(RT)、改进DH法(MDH)和几何法(MATLAB),根据上文的关节角度轨迹,计算机械臂末端点P的位置变化曲线。三种方法的结果如下图所示:

  为了更方便对比不同方法的计算结果,分别对RT&MDH、RT&MATLAB计算的结果进行作差,具体如下:

  RT和MDH计算结果的差值:

  RT和MATLAB计算结果的差值:

  可以看到,RT、MDH和MATLAB这三种方法计算的结果十分接近,误差几乎为零!

2.RT和Simscape对比

  以机器人工具箱(RT)为基准,与Simscape仿真结果进行对比。在Simscape中进行运动学仿真,如下所示:

  采集末端点P的位置曲线,与RT计算的结果进行对比,如下所示:

  RT和Simscape计算结果的差值:

  可以看出,利用Simscape进行运动学仿真,其仿真结果准确性较高。

2.2 逆运动学

  常学常新!笔者对于逆运动学求解一直很抵触,因为涉及多解以及三角函数的求解,这都是我所欠缺的。对于本节的内容,笔者卡顿了很久,但也学到了一些知识。

  在开始逆运动学求解前,笔者想给大家介绍一下 a t a n ( ) atan() atan()函数以及 a t a n 2 ( ) atan2() atan2()函数。 a t a n ( y x ) atan(\frac { y } { x }) atan(xy)函数的输出范围时 [ − π 2 , π 2 ] [-\frac{\pi}{2},\frac{\pi}{2}] [2π,2π],也就是点只会落在第四象限和第一象限; a t a n 2 ( y , x ) atan2(y,x) atan2(y,x)函数的作用就是将输出范围扩展到 [ − π , π ] [-\pi,\pi] [π,π],即四个象限都可,具体的转换公式如下:

  以下开始三自由度串联机械臂的逆运动学求解:给定末端点P的位置坐标 ( x p , y p , z p ) (x_p,y_p,z_p) (xpypzp),求解三自由度机械臂的关节角度 ( θ 1 , θ 2 , θ 3 ) (\theta_1,\theta_2,\theta_3) (θ1θ2θ3)

1.公式推导

  通过前文分析,存在公式如下:

注意联合式子(1)和(2)可以求解出 θ 1 \theta_1 θ1,如下所示:

这里要根据 x p x_p xp y p y_p yp的值分情况讨论:

(1)当 x p = 0 x_p=0 xp=0,且 y p = 0 y_p=0 yp=0

  点P在 z 0 z_0 z0轴上。在该情况下,当 θ 2 \theta_2 θ2 θ 3 \theta_3 θ3确定时, θ 1 \theta_1 θ1可以取任意值,末端点P的坐标都不变。此时,存在式子:

(2)当 y p ≠ 0 y_p\neq0 yp=0

  在该情况下, θ 1 = a t a n 2 ( y p , x p ) \theta_1=atan2(y_p,x_p) θ1=atan2(yp,xp)。此时,存在式子:

(3)当 x p ≠ 0 x_p\neq0 xp=0

  在该情况下, θ 1 = a t a n 2 ( y p , x p ) \theta_1=atan2(y_p,x_p) θ1=atan2(yp,xp),为唯一值。此时,存在式子:

  在上面确定 θ 1 \theta_1 θ1的情况下,根据下式来求解 θ 2 \theta_2 θ2 θ 3 \theta_3 θ3

其中:

  将上面两式平方相加,可得:

简化为:

解得:

又由于:

  基于此,解得 θ 3 \theta_3 θ3为:

  当得到 θ 3 \theta_3 θ3后,回到公式:

  展开该公式:

也可以写成:

其中:

  为了求解方程,对 n 1 n_1 n1 n 2 n_2 n2进行变量替换,令:

注意:这里要分情况讨论一下,因为可能存在 n 1 n_1 n1 n 2 n_2 n2同时为0的情况。当 θ 3 = π \theta_3=\pi θ3=π,且 L 1 = L 2 L_1=L_2 L1=L2时,才能满足 n 1 n_1 n1 n 2 n_2 n2同时为0的情况,此时, θ 2 \theta_2 θ2取任意值。在该情况下,点A和点P重合,如下几类构型:

从上面也可以看出,若机械臂 L 1 ≠ L 2 L_1 \neq L_2 L1=L2,则不会存在 n 1 n_1 n1 n 2 n_2 n2同时为0的情况。

  当 n 1 n_1 n1 n 2 n_2 n2不同时为0时,可得:

也即:

  据此,可以解得 θ 2 \theta_2 θ2为:

注意:在 n 1 n_1 n1 n 2 n_2 n2不同时为0的情况下, M M M z p − d 1 z_p-d_1 zpd1也不可能同时为0,此时 a t a n 2 ( ) atan2() atan2()函数有确定的解。

  运动学逆解终于结束了!!!感觉能力有限,可能还有遗漏的地方,请多多指出。

2.验证

  **验证轨迹1:**让三自由度串联机械臂末端点P在空间中画出螺旋轨迹,如下所示:

  按照上一节的公式进行逆运动学计算,算出来了两组解,如下图所示:

  为了验证逆运动学是否正确,将算出来的结果再代入正运动学中,看求解出来的末端点P的轨迹曲线是否为上述的螺旋形轨迹。根据两组解来进行正运动学计算,结果如下所示:

  可以看出,理论值(给出的螺旋轨迹)和验证值(利用两组解,按照正运动学计算末端点P的轨迹)重合度较高。为了更为直观的观察前后结果,这里通过对坐标值进行作差来进行观察,结果如下所示:

  由图可知,在螺旋轨迹中,通过逆运动学可算出来两组解。利用这两组解进行正运动学计算,得到的末端点轨迹与给出的圆形轨迹误差几乎为零!!

  **验证轨迹2:**让三自由度串联机械臂末端点P在空间中画8字曲线,如下所示:

  同理,按照上一节的公式进行逆运动学计算,算出来了两组解,如下图所示:

  同理,为了验证逆运动学是否正确,将算出来的结果再代入正运动学中,看求解出来的末端点P的轨迹曲线是否为上述的空间8字轨迹。根据两组解来进行正运动学计算,结果如下所示:

  可以看出,理论值(给出的空间8字轨迹)和验证值(利用两组解,按照正运动学计算末端点P的轨迹)重合度较高。为了更为直观的观察前后结果,这里通过对坐标值进行作差来进行观察,结果如下所示:

  由图可知,在空间8字轨迹中,通过逆运动学可算出来两组解。利用这两组解进行正运动学计算,得到的末端点轨迹与给出的空间8字轨迹误差几乎为零!!

3.小结

  对该三自由度串联机械臂而言,进行逆运动学求解有两组解,且通过本文验证实验表明,所推导的逆运动学公式准确性较高!!
  我是木头人,以上全是个人见解,有问题请大家评论区指出,大家共同进步!!


http://www.kler.cn/a/471618.html

相关文章:

  • STM32——系统滴答定时器(SysTick寄存器详解)
  • 使用Llama 3.1创建合成数据集以调优你的大型语言模型
  • STM32-WWDG/IWDG看门狗
  • 【微服务】7、分布式事务
  • 算法5--位运算
  • 性能测试01|性能测试理论
  • 【MySQL系列文章】Linux环境下安装部署MySQL
  • Quartz如何实现分布式调度
  • 4. 多线程(2)---线程的状态和多线程带来的风险
  • 如何用代码提交spark任务并且获取任务权柄
  • 大数据技术(八)—— HBase数据读写流程和Api的使用
  • uniapp打包到宝塔并发布
  • 使用python将自己的程序封装成API
  • 使用Python实现医疗物联网设备:构建高效医疗监测系统
  • 快速排序进阶版(加入插入排序提高其性能)
  • 【代码随想录】刷题记录(93)-无重叠区间
  • Requests-数据解析bs4+xpath
  • UWB实操:用信号分析仪(频谱分析仪)抓取UWB频域的图像
  • 【JMeter】多接口关联
  • es 3期 第22节-Bucket特殊分桶聚合实战
  • 【往届已EI检索】第五届智慧城市工程与公共交通国际学术会议(SCEPT 2025)
  • 在 PhpStorm 中配置命令行直接运行 PHP 的步骤
  • 后端开发入门超完整速成路线(算法篇)
  • 计算机网络:无线网络
  • 矩阵和向量点乘叉乘元素乘
  • ue5 替换角色的骨骼网格体和动画蓝图