大家好,我是拿笔小新的新。上课之前我们得明白学这门课能学到啥知识,以及学完了之后我们可以做个什么东西出来。这门课主要针对机械臂入门的学员,以实物制作为导向,需要的预备知识:很简单的线性代数矩阵知识以及windows下安装软件的能力,本门课的实现都是在电脑上完成的,不涉及单片机编程,我会给大家推荐现成的开源控制器。 你将用超短的时间学会: 除了机械臂本身,你还能学到许多超赞的技能:
如何优雅的使用anaconda使用python与各种软件包如何站在巨人的肩膀上为自己的机器人项目添砖加瓦——巧用开源代码github与码云的使用 机械臂方面的知识:了解各种机械臂与相机的选择最基本的视觉机械臂抓取的流程如何用串口与机械臂通讯坐标变换、变换矩阵DH参数法建立机械臂模型、几何法建立机械臂模型以及运动学正逆解3种常用自由度机械臂的使用(3、5、6DOF)opencv-python的简单使用以及简单的目标检测示例最简单的手眼标定是不是感觉知识太多了,还要些自己没有听过的名词,不着急,我后面马上就会用最通俗易懂的措辞来解释,你只用听完第一节课就明白这些复杂的名词与流程了。
最终,你将拥有一定的动手能力,能完全靠自己制作一个简单的视觉抓取机械臂实物(基于python语言),大致可以做到这个视频中一样:小憨机器人功能演示
2、抓取流程框架我们首先来想想,如果你想牵你女朋友的手,是个怎么样的流程呢,眼睛得到女朋友手的位置——>把自己的手移动过去牵住。
咦,这好像有点不太对,喔,原来姿势也重要呀,还得需要一个合适的角度才行。物体在空间具有六个自由度,即沿x、y、z三个直角坐标轴方向的移动自由度和绕这三个坐标轴的转动自由度 。因此,要完全确定物体的“位置”,就必须清楚这六个自由度。我们把这六个自由度称为位姿,三维位置与三维姿态(旋转)。 现在拿起手机找到手机的这6个自由度。
那修改一下流程,眼睛得到女朋友手的位置与姿态——>把自己的手以合适的姿态移动过去牵住。 大功告成。
那我们回到视觉机械臂抓取上来:视觉感知到物体的位姿(三维的坐标与三维的角度)——>机械手末端执行器以适合的姿态到该位置抓取物体 注:姿态有时很重要,有时也没那么重要,甚至可以忽略,如抓取一个球的时候,反正得看具体的抓取需求,这个大家想清楚后根据自己的生活经验就能判断了。 那么,具体流程如下:
我们只需要解决上述几个难点,就可以实现整个流程,那么这些难点都需要什么知识来解决呢。 步骤2:目标检测 步骤3:相机成像原理、坐标变换、变换矩阵 步骤4:手眼标定、坐标变换、变换矩阵 步骤5:生活常识 步骤6:运动学逆解、坐标变换、变换矩阵 步骤7:路径规划 步骤8:机械臂通讯与控制 这就跟我上面所说的一大堆名词知识串起来了
3、硬件简介一听这个课程的名字,我们就知道硬件需要相机以及一个机械臂,当然还需要控制器以及通讯模块。那我们该如何选择这些硬件呢。
3.1、机械臂选择首先是机械臂,一般我们要根据需求选择机械臂的载荷、工作范围、控制精度以及自由度,但由于价格的原因,我们这个课只能在淘宝上选择一些较实惠的机械臂模型来做演示,而淘宝上便宜的机械臂模型差不多有以下几种,这些机械臂几乎也没啥精度可言了,载荷也很小,工作范围一般看淘宝店家给的图纸然后就知道适不适合自己的使用场景了,下面主要讲一下自由度。
自由度:机械臂机架上有n个电机,就是n自由度机械臂,也叫n轴机械臂,记为n DOF。末端执行器上的不算!!!因为它不影响机械臂的运动学结果。 作为一个写代码的人,最基本的就是要明确一个任务的输入与输出,在控制机械臂的时候,我们的输入是每个电机旋转的角度j1,j2…,jn,我们的输出是机械臂末端执行器的位置(x,y,z)与姿态(α,β,γ),这就是机械臂运动学正解。如下式所示: 但我们一般在使用中是知道位姿(x,y,z,α,β,γ)想求出j1,j2…,jn,再去控制每个电机分别转动j1,j2…,jn然后到达这个位姿,这就是我们常说的机械臂逆运动学了。也就是说我们现在要解这个方程组。相信线代好的同学已经看出来了,要想这个方程组有解,自由度n得满足n>=6才行。最简单来说就是需要未知数的个数大于等于方程的个数。
3DOF 3DOF的机械臂不考虑姿态,只取了上面式子中的前3行出来,即:
这就实现了机械臂对范围内所有位置都有解(全解),一般末端执行器的姿态就是固定向下(由一个平行4连杆机构实现),这类机械臂适合用几何法求运动学逆解,所有在不需要考虑姿态的情况下,我们优先选择3DOF的机械臂,因为其比较简单,工业上也用得比较多。
5DOF 这两种机械臂可以简化成4自由度的机械臂再加一个控制末端执行器的翻转自由度,这类机械臂对范围内所有位置都有解,部分姿态也有解,在只考虑位置的情况下甚至一个位置能有很多解,一般都是先算出在只考虑位置的情况下的所有解,然后再从这些解里选择一个姿态较合适的解。
如用机械臂倒水那个3自由度的机械臂就做不了,因为举杯时要求机械臂的末端执行器(绿线标出)大概得保持水平。 其中做到保持水平这样前面4个自由度就可以了,最后还需要翻腕倒水呢,这里控制末端执行器的翻转自由度就起到了至关重要的作用。这也是我把这种机械臂简化成4自由度机械臂外加一个控制末端执行器的翻转自由度的原因,这里把它们分开既能简化运算,也方便翻转的时候好单独控制。 这类机械臂适合用几何法求运动学逆解,适合用于对姿态有要求,但对于姿态要求不高的场合。
6DOF 6DOF的机械臂理论上有范围内位姿的全解,一般工业上也用得比较多。这类机械臂不适合用几何法求运动学逆解,而要对其建立DH模型,用矩阵对其进行求解,所以相对于几何法会需要