universal robot机器人有多少种逆解?

现在用ros里逆解的方法,得到8组解,但是感觉不够,想知道到底有多少种解?
已邀请:

四谎记丶

赞同来自:

1、UR到底有几组逆解?
回答:8组。
之前推导过UR的运动学,这里简单列一下。

D-H之类可以看上图(网图)。
简单推导过程如下


2、3、4关节是个平面三自由度机构,因此也有两组解(见下图图示)

因此,UR的逆解数量总共就只有2×2×2=8组。
ROS里面的八组应该是采用IKFast求的解析解。

2、逆解不够用
这个不够用是什么意思?为什么需要更多组逆解?
6自由度机械臂的逆解数量就是有限的(6-6空间非线性映射),这也是为什么现在越来越多7-dof机械臂被发布出来,虽然7-dof机械臂增加了逆解计算难度,但是却拓展了机械臂的应用场合。
当然,还有一个小trick,你可以把自己的任务空间降维。例如对于拧螺钉任务,机械臂末端绕着螺钉的姿态并不会影响工作效果;对于端水的任务,围绕重力方向的旋转不会影响任务执行。因此,你求逆解的时候末端笛卡尔位姿只有五个约束,你可以求取到无数组逆解。

猫旅人

赞同来自:

fly qq的答案说的基本够了,我补充一点。

UR每个关节可以转两圈(-360° - + 360°),但肘关节因为碰撞实际上只能转一圈。因此8个基本解中的每一个解,还可以通过翻转任意关节360度得到32个额外解,极端情况下会有更多。这样算来会有非常多的解。

mifan

赞同来自:

国外的一个证明:https://smartech.gatech.edu/bitstream/handle/1853/50782/ur_kin_tech_report_1.pdf
其次代码方面,github上UR官方代码也有相应的解析解的求解实现:
https://github.com/ros-industrial/universal_robot/blob/kinetic-devel/ur_kinematics/src/ur_kin.cpp
其里面对于有多少解,也有一个答案:

通常Moveit!解这个是KDL, universal_robot 提供轮相应的UR5KinematicsPlugin插件
但是这些都是单解,多解的接口目前我是没有找到(有时候分析机器人需要找多个构型进行分析),
所以我把其中部分代码抽了出来,弄了一个求出所有解的程序,各位有兴趣可以看我的github:
pyni/ur_inverse_solutions效果如下(我这个没有考虑UR自身碰撞,所以最后两个要舍去):

来时路

赞同来自:

我们机器人团队发表过UR机器人运动学和奇异性分析论文,单纯每个关节有几个解是不科学的,UR机器人的8组解应该表现在6个关节的关系,而且解的个数和奇异性是一一对应的,这样理解串联机器人运动学逆解感觉会深刻且简单。在关节角度表达式中,除号和±号的零值处正是机构产生奇异和导致附近多解的数学原因。以下是我的UR机器人运动学和奇异性分析,欢迎大家吐槽



樱花妖

赞同来自:

UR机器人由于满足Pieper准则,可以直接求出解析解,如果把每个关节的转动范围限制限制在 [-pi,pi), 其逆解一共有八组。如果扩大关节的运动范围,逆解的数量也会相应增加。

andrew

赞同来自:

楼上说的很好,学习了。
补充一点,不是所有的点都有8组逆解。在某些边界位置,比如关节角均为0时(0,2*pi),解析逆解为6个。代码源于ur_kinematics。

如有问题欢迎指正。
另有个疑问,楼上有用户说ur每个关节可以转正负2*pi;那么在上图的情况中,既然(0,0,0,0,0,0)是解之一,那么(2*pi,2*pi,2*pi,2*pi,2*pi,2*pi)为何不是解之一?

要回复问题请先登录注册