robotics library库是一个功能全面的,面向机械臂和机器人领域的运动规划碰撞检测开源仿真C++库,图形显示使用的是Coin3d,碰撞检测使用了很多像bullet,ode,solid,fcl等开源库,提供很多基于随机采样算法的运动规划算法实现,官网是 https://www.roboticslibrary.org/
其中create model页详细说明了怎么创建机械臂动力学模型,https://www.roboticslibrary.org/tutorials/create-a-robot-model/ ,包括:
Acquiring Kinematics Data
这一般在机械臂出厂图纸可以获取,包括各个关节的旋转角度范围
Denavit-Hartenberg Parameters
机械臂常见的就是DH参数
RL::MDL tree structure of the robot described in this tutorial, consisting of six revolute joints and seven links.
RL:MDL tree描述的一个六自由度机械臂的运动链
后面还有用实体建模工具建机械臂各个臂的几何模型,这个要转成vrml网格模型,由于机器人运动仿真的时候要实时的进行碰撞计算,这个几何模型要把实际的机械臂各个实体模型要包住才行。
最后就是场景描述文件,都是写在rlsg.xml和rlmdl.xml中,一个是场景描述,一个是运动模型描述,这样rlCoachMdl.exe才能读取它们对建模的机器人进行可视化,正运动学(forward kinematics,就是修改关节角度参数,计算出各个臂几何体的位置姿态),逆运动学(inverse kinematics ,就是已知机械臂末端位置姿态,计算解出各个臂各个关节是否有可能的位姿和关节角度值,可能有一个或者多个解,也可能没有解)。
robot model建出来了,可以用它的进行后续的规划
Specify a Path Planning Scenario
主要是围绕创建rlplan.xml文件,其中指定了机械臂的rlsg.xml.xml和rlmdl.xml模型文件,environment描述障碍物几何模型,机械臂的起点(start),这里的点由于机械臂有n个独立的关节参数,所以这里的点是向量(x0,x1x2,…xn-1)所以一般robot的解算空间都是三维以上,机器人运动规划问题都是高维问题,虽然robot是在三维中的,然后指定终点(goal),指定规划器(这里例子是prm 翻译过来叫概率路线图法)
然后到rl plan demo.exe就会等待解算,过一段时间,就出现一堆密密麻麻的线,找到一条path,机械臂就从起点运动起来,绕过障碍物,运动到终点。
由于目前机械臂运动规划算法大多是概率随机采样策略,所以两次规划的路线不一样,终点和障碍物情况对解算速度影响很大,特别密的障碍物可能很难找到一条路径,但是有时候人工以为找不到的算法反而能找到,规划(规划不限于路径,运动等,像社会经济,数学问题,推理,证明,下棋,不胜枚举…)问题也是人工智能方面的一个热难点的烧脑的学科领域。