资讯 机器人
此为临时链接,仅用于文章预览,将在时失效

听说现在协作机器人很火,所以我也做了1/7个

作者:qqfly
2017/01/06 17:04

雷锋网(公众号:雷锋网)按:本文作者qqfly,上海交通大学机器人所博士生,本科毕业于清华大学机械工程系,主要研究方向机器视觉与运动规划,会写一些好玩的内容在微信公众号:Nao(ID:qRobotics)。

「协作机器人」应该算是2016年机器人领域的一个重要关键词,我们一起来聊一聊,最后还有一个好玩的视频,大家可以看看。

当然,这里我不想去过多的讨论什么是协作机器人,我只关心怎么做。如果对其定义不清楚的,可以查看一篇不错的文章《What Does Collaborative Robot Mean ?

协作机器人的研究点

协作机器人的主要目的是要让人能与机器人协同工作

听说现在协作机器人很火,所以我也做了1/7个

传统的机器人由于无法感知到人的存在,如果与人发生碰撞还是很危险的。

所以,协作机器人的一大研究点就是机械臂与人的碰撞检测

听说现在协作机器人很火,所以我也做了1/7个

说到这点,就不禁让我想到当年看 Sami Haddadin 在德国宇航中心DLR时发布的视频。(当然,他现在跑去做了个Franka,也很厉害。)

然后下面这个是高(zuo)阶(si)玩法:

听说现在协作机器人很火,所以我也做了1/7个

视频在这里:

   

当然,现在已经入坑运动规划了,不可能再去做这个。但是,我还是好奇这么好玩的功能是怎么做出来的。

虽然各种论文里也都或多或少会提及他们的算法,但一直只看论文总感觉差点意思。

这时候应该列出一大堆论文 

但是我就不。

协作机器人的实际操作过程

纸上得来终觉浅,绝知此事要躬行。所以,我决定尝试做一个。哦,不,1/7个(单关节)。

首先,在实验室小伙伴们的帮助下,搭了一个实验平台

听说现在协作机器人很火,所以我也做了1/7个

大概就是一个交流电机带着一个灰铸铁做的连杆。控制器采用的是实时操作系统RTX,然后用EtherCAT进行通信。

经过调研,要做这种能检测碰撞的协作机器人,基本的思路就是建立机器人动力学模型,之后对比真实力矩与动力学计算力矩,从而判断是否碰撞。

测量力矩的话,我们就直接通过驱动器反馈的电流估计好了。传说中的 Sensor-less Collision Detection,瞬间有种很厉害的感觉。

听说现在协作机器人很火,所以我也做了1/7个

这个动力学就不细说了。我们可以得到上面这个动力学公式,大概就是一个质量项,一个重力项。(直驱就先不考虑摩擦力了)。参数的话,直接从SolidWorks中读取就好了。

于是,我画出了测量力矩与计算力矩的曲线:

听说现在协作机器人很火,所以我也做了1/7个

嗯,误差50%

听说现在协作机器人很火,所以我也做了1/7个

看来,这里需要做一下参数辨识。

于是,我打开了本科毕设论文。

听说现在协作机器人很火,所以我也做了1/7个

幸好本科做了点微小的工作,现在直接就在这1/7个机器人上用了起来。

听说现在协作机器人很火,所以我也做了1/7个

动力学参数辨识后的效果果然不错,误差立马降到了8%内。

有了精确的动力学模型,就可以开始实(zuo)验(si)了。

首先,要测试碰撞的效果,就是用各种物品去碰运行的机器:

听说现在协作机器人很火,所以我也做了1/7个

危险动作,请勿模仿。后果可能变得跟下面这个木棒一样:

听说现在协作机器人很火,所以我也做了1/7个

画出真实力矩、计算力矩与它们的差值如下:

听说现在协作机器人很火,所以我也做了1/7个

看来,碰撞对力矩的影响还是很明显的。那么,我们很容易就能检测到机械臂是否发生碰撞。

第二步,我们就是要让机械臂在碰撞之后停止运动

听说现在协作机器人很火,所以我也做了1/7个

效果不错,一张纸就能让机械臂停止运动。

但是,我们看前面 Haddadin 的视频,机械臂在检测到碰撞后并不是立马停止运行的,而是进行重力补偿模型(zero-G mode)。

听说现在协作机器人很火,所以我也做了1/7个

如上图,Haddadin 的论文中说,检测到碰撞后让机械臂进入重力补偿模式的方法(图中Strategy 2)的接触力最小,对人的影响也最小。

好吧,既然大神这么说了,我也就这样做做看。

但是,我的动力学模型并不是非常准确,没法做到完全的 zero-G,我这里的做法是用在碰撞后采用“重力补偿+小增益PD控制”的方法,这样应该可以达到类似效果。

听说现在协作机器人很火,所以我也做了1/7个

嗯,效果也不错。

不过,既然我可以将机械臂的刚度降到这么低,那岂不是可以做拖动示教(Hand Guiding)了?

听说现在协作机器人很火,所以我也做了1/7个

所有视频在这里:

   

当然,真的要在多轴机器人上实现这些功能还是比较复杂的。其中,最复杂的一个就是摩擦力了,我们并不知道摩擦力的具体模型,这样就没法进行辨识补偿了。

我这里给大家看个极端的例子:100kg负载,86减速比(行星齿轮)。

听说现在协作机器人很火,所以我也做了1/7个

然后,我用同样的方法做动力学参数辨识。如果不考虑摩擦力的话,辨识结果如下图:

听说现在协作机器人很火,所以我也做了1/7个

机构的动力学模型完全没法拟合出力矩曲线。说明在这种情况下,摩擦力是没办法忽略的。

但是,即使我想把摩擦力辨识出来,尝试过几种摩擦力经验公式,也没办法完全消除误差。

听说现在协作机器人很火,所以我也做了1/7个

这就是为什么现在绝大多数协作机器人都必须加关节力矩传感器,这样就能跳过传动系统,减小摩擦力的影响。

最后,奉劝大家一句:摩擦力的话,入坑需谨慎

最最后,把 Sami Haddadin 的完整视频放在这里:

    

文章点评
相关文章