自制机械臂,需要掌握的知识大致有:
科普:机械臂
自由度
DH变换
在相邻两个关节(自由度)之间存在一个连杆。机械臂主要包含关节和连杆两部分。
另外,需要注意的是,有时,在一个关节处会存在多个自由度。其中一个典型的例子是人的肩膀,人的肩膀可以在xyz三个方向转动,因而,在一个关节处具有三个自由度。这时我们认为两个自由度之间连杆长度为0。
接下来的讨论,我们认为每个关节仅具有一个自由度,关节和自由度是等同的。
每个关节可以运行的范围称为其位形空间(Configuration Space),并不是所有的关节都可以进行360角度旋转,每个关节都有其运行范围。举例来说,人类手臂的旋转范围不超过200°。关节运行范围可能有执行机构能力、伺服电机最大角度以及物体的阻碍等进行限制。下图是一个位形空间的例子,每一个关节都在图中标明了其运行范围。
如果机械臂放置在一个电销电话平台上,那么机械臂的自由度将会增加。
工作空间:
假设每个关节运行最大角度为180°。为了得到其工作空间,首先我们将于末段相连的连杆旋转180°,得到下图:
然后,将机械臂的基座旋转180°,得到最终结果如下:
通过改变连杆的长度,我们可以改变机械臂工作空间的尺寸,但形状维持不变。对于工作空间外的物体,机械臂无法触及。下面使一些常用的机械臂的工作空间的例子:
三维直角坐标工作空间机械臂.
圆柱型工作空间机械臂
球形工作空间机械臂
铰链式机械臂
电销电话机械臂
电销电话机械臂是机械臂的一种特殊情况,其包含一个传统的机械臂和一个电销电话平台,如下图,假设电销电话平台为差分驱动方式,机械臂包含5个自由度,那么电销电话机械臂共有7个自由度。
关节受力分析:
对机械臂进行受力分析的目的在于选择合适的电机。选择电机时,我们需要保证不仅使得电机能够支撑整个机械臂的重量,还要保证其具有完成要求任务的能力。
受力分析的第一步是绘制机械臂的结构图,如下图:
然后我们需要确定如下参数:
1. 每个连杆的重量;2.每个关节质量;3.机械臂负载质量;4,每个连杆的长度;
接下来我们开始计算每个驱动机构所需要的转矩:
其中,转矩=力*力臂;
如上图中关节1,其需要驱动连杆W1,W2,关节W4,负载W3,因而,其要求转矩为:
M1=L1/2*W1+L1*W4+(L1+L2/2)*W2+(L1+L3)*W3
对于关节2,其需要驱动连杆W2,负载W3,因而,其要求转矩为:
M2=L2/2*W2+L3*W3
从上式可以看出,对于每增加一个关节,那么转矩计算公式复杂度大量增加。连杆长度越短,那么电机需要转矩越小。
正向运动分析:
正向运动分析指的是给定各个关节角度和各个连杆长度,确定机械臂末段方向和位置。
以下图机械臂为例,给定各个关节角度和各个连杆长度,计算末段位置。
假设机械臂基座坐标记作x=0,y=0,第一步我们需要确定每个关节坐标。
关节J1:x0=0,y0=L0;
关节J2:x1=L1*cos(psi),y1=L1*sin(psi);
关节J3: x2=L2*sin(theta),y2=L2*cos(theta);
机械臂末段位置为:
x0+x1+x2,y0+y1+y2;
机械臂末段角度为:theta+psi
逆向运动学:
逆向运动学是正向运动学的相反过程,即根据末段位置,确定各个关节角度。举例来说,机械臂看到了一份报纸,想要抓住它,那么应该如何操纵机械臂各个关节呢?
相对于正向运动学,逆向运动学要复杂的多,一般可以根据几何关系得到。对于前述的机械臂,其逆向运动学方程如下:
psi=arccos((x^2+y^2-La^2-L2^2)/(2*L1*L2));
theta=arcsin((y*(L1+L2*c2)-x*L2*s2)/(x^2+y^2));
其中:
c2=(x^2+y^2-L1^2-L2^2)/(2*L1*L2);
s2=sqrt(1-c2^2)
那么为什么逆运动学计算会如此复杂呢?
首先,对于一个特定的机械臂机器人系统,可能有很多种方式达到给定位置,因而,这时就需要确定一个最优的方式(基于最省力,路程最近等等)。
其次,对于一个特定的机械臂,如果目标在工作空间之外,那么逆运动学将没有结果。
奇异性,如果在运动过程中,要求某一点的加速度为无穷大,那么由于电机出力限制,机械臂也无法完成任务,达到给定点。
最后,随着机械臂自由度增加,逆运动学计算量指数增加,计算复杂度非常大。
轨迹规划:
轨迹规划同样是一个非常复杂的过程,这里我们将仅仅做一些初步的解释。
假设在机械臂的工作空间内有一点,那么机械臂通过什么样的轨迹运行至该点呢?
这里,我们假定机械臂为三维空间内运动的电销电话机械臂。机械臂的末段将会跟随电销电话平台的电销电话遍历整个空间,那么,怎么才能保证机械臂能够避开所有的障碍物呢?
假设我们需要机械臂绘制一条直线,那么机械臂应该怎么做?此时,我们应该在直线上分别取很多点,然后使得机械臂末段依次通过这些点,同样,采用这种方法,机械臂不仅可以绘制直线,也可以绘制曲线。
在一些专业的机械臂上,我们只需要给定机械臂的出发点和终止点,然后告诉机械臂以何种方式到达(最快时间、最短距离等),机械臂会按照其轨迹规划算法,完成机械臂路径的规划。
机械臂末段转速:
同样,机械臂末段转速的计算也非常复杂,这里仅给出一些基本的方法。
计算机械臂末段转速最简单的方法是假定机械臂末段围绕一个半径为r的圆柱旋转,机械臂末段沿y方向旋转,因而,机械臂末段速度为:
机械臂末端速度=2*pi*r*转速;
但是,需要注意的是,机械臂末段并不仅仅围绕基座做旋转运动,而是可以在各个方向运动,机械臂末段可以沿直线、曲线或者任意轨迹动作。
在操作机械臂时,任意两点之间最快的路径通常不是直线。假设两个机械臂关节采用不同的驱动电机或者负载不同,那么它们的最大转速也就不同。因而,当操纵机械臂从一点运动到另一点时,我们有两个选择,1.使得机械臂末段沿直线行走。2.使得机械臂的每个关节都采用其最大转速行走-可能会导致机械臂末段在两点之间摆动前进。
在下面的图形中,假设机械臂的末段需要从蓝色点运行至红色点。在上面的轨迹规划方法中,机械臂末段沿直线行走,在下面的轨迹规划方法中,机械臂末段按照最短时间运行。
可以看到,两者的运行轨迹完全不同,那么哪种方法更好呢?
这取决于很多因素机器人系统,假如机械臂的负载较重,那么我们希望机械臂运行距离越短越好;而如果机械臂负载较轻,那么此时我们希望机械臂运行越快越好。
现在,我们假设我们希望机械表末段以一定的转速旋转,那么关节处需要多大的转矩呢?
同样,以下面的机械臂结构图为例:
假设我们希望机械臂关节J0能够在2s内完成180°旋转,那么关节J0处需要多大的转矩呢?
首先,关节J0的旋转不受重力的影响,因而我们只需要考虑惯量和转矩。转矩计算公式如下:
转矩=转动惯量*角加速度;
将其应用到我们这里得到;
转矩=(质量*力臂^2)*(转速变化/时间);
其中:
转速变化=转速1-转速0;
转速=角度变化/时间;
上面的计算过程比较复杂,其中同样采用的方法为雅可比矩阵计算方法。
机械臂下垂:
机械臂下垂是机械臂设计中面临的一个常见的问题。通常发生在,当机械臂连杆较长时,机械臂的弯曲。因而,当设计机械臂时,应该尽量采用轻质材料。如果有条件,可以做一下有限元分析。
另外,在设计过程中,尽量把电机等较重的元器件靠近基座。可以考到,在许多工业机械臂中,为了将电机靠近记作,中间关节通常采用皮带传动方法传递动力。
传感器:
大部分的机械臂仅仅有内部传感器,如编码器等。但是,随着机器人的发展,现在越来越多的视频、图像、触觉等传感器被应用于机械臂中。
一个没有视觉传感器的机械臂就像一个闭着眼睛的艺术家。采用一些基本的视觉反馈,机械臂可以在任意两点之间电销电话而不用其固定的坐标系。
触觉传感器:触觉传感器往往在机械臂环路中有人的参与,触觉感知可以通过一种特殊的手套或者一个小型化的模型实现。手术机器人、助残机器人往往有触觉传感器的参与。
接触传感器:接触传感器可以通过检测接触传感器电流或者电压的大小判断机械臂是否已经成功拿到物体或者是否与物体接触过紧或者过松。
参考:
举个例子:
下面这个视频是YouTube上的“零基础入门学用Arduino教程 MeArm篇”教学视频,视频中也说明了制作这个机械臂需要掌握的知识:
播放暂停进入全屏退出全屏00:0000:00重播请刷新试试
最后的成果如下图:
所以,具备了以上基础知识,购买相应器材,再根据网上的教程是可以DIY出自己的机械臂的。