1 概要
本篇是《python——VREP数字孪生四轴机械臂联合仿真》https://editor.youkuaiyun.com/md/?articleId=125154971的姊妹篇(上),主要解决的问题是如何通过python编程实现对vrep里uarm机械臂的在世界坐标系下的精准运动控制,即可以根据想要的坐标(x,y,z),使用机械臂逆解算法计算出uarm各个轴的旋转角度,并发送指令到vrep仿真模型,执行动作。本篇将分为两个部分:
(上)uarm机械臂的结构分析及逆解算式推导
本节将对uarm的结构进行分析,并进行几何简化,原理类似笔者之前所著的《对六自由度机械臂的运动控制及python实现(附源码)》https://mp.youkuaiyun.com/mp_blog/creation/editor/119819623,同时,绕开机器人传统复杂的空间变换矩阵运算,利用初中几何知识对机器人逆解算法进行推导。
(下)uarm机械臂运动控制程序的python实现
本节根据上节得到的逆解算式,用python、面向对象等知识,进行uarm控制程序的编程。为《python——VREP数字孪生四轴机械臂联合仿真》提供核心控制算法。
2 uarm机械臂的结构分析及逆解算式推导
2.1 uarm机械臂的结构分析
如下图所示,uarm机械臂是一个有四个旋转轴的机械臂,在工业制造领域有着非常广泛的应用,常用于产品的码垛、搬运等:
下面我们对uarm进行几何解析,首先看一张俯视图:
(1)俯视——水平面的运动投影
在vrep环境里面,所定义的坐标系为机械臂初始位置俯视投影在x轴轴上,机械臂的左侧为y轴正方向。其它轴不变,只是运动轴J1,则机械臂在x-y平面内做旋转运动,如果改变J2、J3的角度,在俯视图看来,投影的臂长L或增加或缩短,简化如下图所示:
(2)侧视——垂直平面的运动投影
这里所说的“侧视”投影面,是需要想象出来的,它是指机械臂左侧正对着L-Z平面看到的机械臂的投影,如下图:
我们的下面的算法将在这个面进行解析,我们通过绘制机械臂的主要机构,对这个机械臂的运动特点进行分析,画出如下稍微简单的结构:
上图可以看到,其实这个机械臂在侧视平面内的运动,是通过改变两根红色臂杆L1、Lq的旋转带动末端(或抓具)运动的,两根驱动的杆子又分别是两个电机J2、J3来驱动的。如下图:
上图把机械臂主要的部分“扣”了出来,左上角画出了只转动臂杆L1时出现的状态,可见,在一定的驱动杆Lq位置固定下,运动是有位置限制的(边界的),我们在python实现的时候要注意这一点,以免超出边界还再给电机发送指令导致电机过载(仿真环境还好,在实际机械臂中容易发生),运动L1后,机械臂的前后运动为主方向,变化比较大,相对地,上下运动为次要方向,变化幅度小。;同样的,右边是固定L1时,改变Lq,可以使机械臂末端主要进行上下运动,同样也存在边界状态。
以上是uarm机械臂的运动特点,需要注意的是,它还有一个连杆机构,如下图(红圈),其目的是使机械臂的末端抓具始终垂直于水平面,这是一个隐含条件:
最后,我们可以将机械臂侧视投影简化为(下图所示):由6跟杆组成包括(Lg、L0、L1、L2、L3、L4)、三个转轴(或关节,包括J1、J2、J3)的一个连杆结构,同时受到隐形的约束,抓具必须始终保持垂直状态。
Ps:此处去掉了对轴J4的考虑,因为我们用的是吸头,它的角度改变实际是没有用的。
2.2 uarm机械臂逆解公式推导
问题描述:
已知目标物体中心相对机械臂的位置坐标(x,y,z),求抓取该物体,所需的机械臂各旋转关节的角度各是多少(J1,J2,J3)?
求解问题得流程如下两步:
至此,当我们知道目标物体得坐标时(x,y,z),我们就可以通过以上的初高中几何知识计算出控制uarm机械臂的三个轴的角度值(J1,J2,J3)从而将机械臂的抓手送至目标位置,实现准确的抓取动作。
下一篇,我们将从0开始一步一步根据uarm的具体结构和参数,构建控制uram抓取的python核心算法程序