机器人学中运动规划算法中的RRT( Rapidly Exploring Random Trees 快速探索随机树)算法 ,这种机器人规划或寻路类算法也常归类为人工智能的子学科。
RRT算法步骤描述的是一个简单重复动作:
初始有一个起点S,一个终点E,一个世界W,一堆障碍物O,问题是找到W中一个路径Path从S到E,当然S,E,Path上面的点都不能在O中。
步骤:
1.构造一个RRT树T,开始只包含S作为树根节点;
2.在W上随机采样一个点X(Rand方法产生一个点),不能在O中;
3.找到T上距离X最近的点N;
4.连接N到X,以步长L在线段NX上产生点K,即NK长度等于L;
5.判断线段NK是否和障碍物O碰撞,如果碰撞则丢弃这次采样然后跳步骤2重复执行,否则将NK连接到N点,这样树T就长出了个树枝NK;
6.如果K已经到达终点E(在一定范围内靠近E),则树T上从S遍历到K的路径即是所求的Path,否则跳到步骤2重复执行
RRT算法不限于三维,特别是高维度空间,比如机械臂有n个关节那它就是在n维空间中运动,所以像OMPL这类基于采样的规划算法效果就比较好用的就比较多,实际实现有些变种,但是由于是随机算法每次执行结果Path都不一样。