现在用的最多的工业机器人,一般都是六轴的,但是最近推出来的人机协作机械臂,却有7个自由度,一直想不明白为什么。直到最近看到知乎上的一个问题:人的手臂(腕关节到肩关节)有几个自由度?才发现,原来7个自由度是对人手臂的真实还原。
人的手臂(腕关节到肩关节)有几个自由度?我想绝大部分人都没有想过,更别说去了解有哪几个自由度,即使是学工科的人,也未必能解释清楚。没想到知乎上居然有人把这个问题回答的这么专业有内涵,同时又那么有哲理,忍不住想要把这个答案分享一下。
回答这个问题的是知乎网友杨硕,答案如下:
实话说,我对robot manipulation还是挺熟的,但是楼上几个答案一眼看去都看不懂。不是黑,而是觉得对非专业人士来说不好理解。
我来尽量用通俗的语言解释一下。
首先,问题的答案是:数一下就行了啊!
7个自由度。
有人问5,6是不是一样的。5是拧钥匙时唯一要转动的关节,动力来自小臂两根桡骨的扭转;6是把鼠标放在桌面用手转时唯一要转动的关节,动力来自手腕的旋转。
至于为什么人手臂是7个自由度,而不是8个也不是6个,可能是因为上帝非常懂机器人控制,下面尽量简单地介绍一下。
首先介绍一个定理:
6个自由度的机械手,在空间中无法在保持末端机构的三维位置不变的情况下从一个构型变换到另一个构型。
这个定理乍一看很不好理解,可以考虑一个更简单的情况:
在这张图上,一个机器人的手臂由基座、两个关节、两根连接件构成(想象把一个圆规打开,然后把一端用手指捏住)。
请问我们能够把机器人在保持上部末端机构在平面上位置不变的情况下,从“lefty”这个状态扭到“righty”这个状态吗?
答案是不行的,不管怎么动两个关节,移动过程中末端机构的位置肯定是要变的。看官也可以拿两根笔在桌子上动一动试试。
同样地,一个6自由度的机械手,即使某两组构型对应的末端机构的三维位置相同,机械手在从一个构型移动到另一个构型的时候无法保持末端机构始终不动。
如果有人在电视里看过工业机器人焊东西的话,就会发现它在同一个位置焊接的时候,一会儿整个扭到这边,一会儿整个扭到那边,看起来非常酷炫的样子。
事实上这么做只是因为,虽然焊接只是想改变末端机构的朝向,而不改变末端机构的位置,但是由于定理的限制,它必须要往后退一些,然后各种扭,才能保证在移动末端机构的朝向的过程中不会撞到东西,因为移动的时候末端机构的三维位置一定会乱动。如果它能够随便转一点点就可以达到目的,还费那个力气酷炫地整体都转起来干啥……
而多了一个自由度以后就不一样了。
想想开门时拧钥匙的动作,这个情况下是人胳膊的末端机构(手)的三维位置没有变(始终在钥匙孔前),但是末端机构(手)的三维旋转变了(转动了钥匙)。人能够实现这个简单的动作,就是因为我们的胳膊有7个自由度。
说到这里,看官可能会看出来了,哎我懂了,我的末端机构有6个自由度(三维位置,三维旋转),而胳膊作为一个机械手,有7个自由度,这两个自由度好像说的不是一回事,但是数量上7-6=1,所以这1个自由度我能拿来拧钥匙。
如果上帝把我们的胳膊设计成6个自由度的话,人拧钥匙的动作一定会非常浮夸。大家可以在拧钥匙的时候不要转手腕,感受一下。
那么为什么不再多给我们一些自由度呢?
因为自由度越多,机械手刚性越差。如果我们的胳膊有8个自由度,那么受伤的概率会更加很多。虽然没有什么生物学研究证明这一点(世界上没有8个自由度的生物躯体),但是机器人的研究是可以证明这个问题的。