大家好,我是拿笔小新的新。上课之前我们得明白学这门课能学到啥知识,以及学完了之后我们可以做个什么东西出来。这门课主要针对机械臂入门的学员,以实物制作为导向,需要的预备知识:很简单的线性代数矩阵知识以及windows下安装软件的能力,本门课的实现都是在电脑上完成的,不涉及单片机编程,我会给大家推荐现成的开源控制器。
你将用超短的时间学会:
除了机械臂本身,你还能学到许多超赞的技能:
是不是感觉知识太多了,还要些自己没有听过的名词,不着急,我后面马上就会用最通俗易懂的措辞来解释,你只用听完第一节课就明白这些复杂的名词与流程了。
最终,你将拥有一定的动手能力,能完全靠自己制作一个简单的视觉抓取机械臂实物(基于python语言),大致可以做到这个视频中一样:小憨机器人功能演示
我们首先来想想,如果你想牵你女朋友的手,是个怎么样的流程呢,眼睛得到女朋友手的位置——>把自己的手移动过去牵住。
咦,这好像有点不太对,喔,原来姿势也重要呀,还得需要一个合适的角度才行。物体在空间具有六个自由度,即沿x、y、z三个直角坐标轴方向的移动自由度和绕这三个坐标轴的转动自由度 。因此,要完全确定物体的“位置”,就必须清楚这六个自由度。我们把这六个自由度称为位姿,三维位置与三维姿态(旋转)。
现在拿起手机找到手机的这6个自由度。
那修改一下流程,眼睛得到女朋友手的位置与姿态——>把自己的手以合适的姿态移动过去牵住。
大功告成。
那我们回到视觉机械臂抓取上来:视觉感知到物体的位姿(三维的坐标与三维的角度)——>机械手末端执行器以适合的姿态到该位置抓取物体
注:姿态有时很重要,有时也没那么重要,甚至可以忽略,如抓取一个球的时候,反正得看具体的抓取需求,这个大家想清楚后根据自己的生活经验就能判断了。
那么,具体流程如下:
我们只需要解决上述几个难点,就可以实现整个流程,那么这些难点都需要什么知识来解决呢。
步骤2:目标检测
步骤3:相机成像原理、坐标变换、变换矩阵
步骤4:手眼标定、坐标变换、变换矩阵
步骤5:生活常识
步骤6:运动学逆解、坐标变换、变换矩阵
步骤7:路径规划
步骤8:机械臂通讯与控制
这就跟我上面所说的一大堆名词知识串起来了
一听这个课程的名字,我们就知道硬件需要相机以及一个机械臂,当然还需要控制器以及通讯模块。那我们该如何选择这些硬件呢。
首先是机械臂,一般我们要根据需求选择机械臂的载荷、工作范围、控制精度以及自由度,但由于价格的原因,我们这个课只能在淘宝上选择一些较实惠的机械臂模型来做演示,而淘宝上便宜的机械臂模型差不多有以下几种,这些机械臂几乎也没啥精度可言了,载荷也很小,工作范围一般看淘宝店家给的图纸然后就知道适不适合自己的使用场景了,下面主要讲一下自由度。
自由度:机械臂机架上有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模型,用矩阵对其进行求解,所以相对于几何法会需要更多的理论知识,但这种方法比较通用,有种一招吃遍机械臂运动学逆解的感觉。
控制器:
1、上位机:PC、单板机、树莓派等。用于读取大量数据的传感器数据如相机、雷达,做图像处理与大规模的数据运算。
2、下位机:单片机等IO口直接输出高低电平的设备。用于控制电机,读取低数据量传感器的数据。
一般来说,下位机控制机械臂的电机运动、上位机做图像处理、运动学逆解可用下位机做也可用上位机做。由于淘宝上买的控制板(下位机)自带舵机控制程序,只需要用上位机按照规约的格式传送数据到控制板就可以实现机械臂的电机控制了,所以我们可以将运动学逆解跟图像处理都用上位机做,不修改其下位机程序。
3、上下位机通讯:串口/蓝牙串口(对于上位机来说,这两种通讯方式是一样的) 、WIFI(一般不推荐,除非你要同时控制很多机械臂)
可选普通彩色摄像头、RGB-D摄像头,视工作环境而定
普通彩色摄像头(不可直接读出三维坐标):笔记本自带的,USB摄像头都行。买的时候需要注意一下驱动支持的系统
RGB-D摄像头(可直接读出某个像素的三维坐标):Kinect2.0、奥比中光3D摄像头、Intel RealSense系列
深度范围、资料够不够多、深度精度、分辨率、帧数、支持系统
下面贴一张Intel RealSense的参数表。
注: RGB-D摄像头容易受反射光与光照变换影响影响,可以选择双目相机,但双目相机的使用比RGB-D摄像头更加复杂,而且效果随物体纹理强弱影响,有需要的小伙伴可以自己去了解。
该教程的视频与源码:包括机械臂系统从上到下的梳理、机械臂的硬件、通讯与控制