返回

Moviet更换默认规划器KDL为Trac-Ik

人工智能

众所周知,Movelt中内置了多种运动规划求解器,如RRTconnect,RRTstar,BK-planner以及Trac-Ik,其中RRTconnect,RRTstar,BK-planner都是基于KDL库,利用随机采样(Sampling)在配置空间(Configuration Space)中进行搜索,而后者Trac-Ik则是利用动力学和几何模型在关节空间(Joint Space)中进行搜索。

Trac-Ik是针对机械臂冗余度的的求解器,基于Jacobian Transpose算法。优点是:1、适用于冗余机器手;2、不引入随机采样,算法是确定的,可用于近实时应用;3、比基于配置空间的求解器快。

KDL属于刚性规划,属于基于配置空间(Configuration Space)的规划方法,在考虑物体的形状和碰撞物形状的情况下,找到能满足运动学约束的路径,通过此路径规划出的运动轨迹是“理论上无碰撞”的。

简单来说,KDL和Trac-Ik都属于moveit中的规划算法,KDL为基于随机采样的算法,由于其是针对非冗余机械臂,存在步长问题,尤其在狭窄空间中,易陷入局部最优,所以若涉及到狭窄环境或者机械臂具有冗余度,建议使用Trac-Ik进行运动规划。

那接下来就来介绍一下如何将Movelt中的默认规划器从KDL更换为Trac-Ik,共分为6个步骤:

  1. 打开终端,编辑ompl_planning.yaml文件

sudo vim /opt/ros/kinetic/share/moveit_core/config/ompl_planning.yaml

  1. 在yaml文件中添加以下内容
ompl:
  planners:
    ompl_interface/OMPLTrajOptPlanner:
      default: false
    ompl_interface/OMPLRRTConnectPlanner:
      default: false
    ompl_interface/OMPLRRTstarPlanner:
      default: false
    ompl_interface/BKPIECE1Planner:
      default: false
    ompl_interface/BKPIECETimeOptimalPlanner:
      default: false
    ompl_interface/BKPIECENodeGenerator:
      default: false
    ompl_interface/OMPLSimpleSetup:
      default: false
    ompl_interface/OMPLRRTConnect:
      default: false
    ompl_interface/OMPLRRTstar:
      default: false
    ompl_interface/BKPIECE:
      default: false
    ompl_interface/BKPIECETimeOptimal:
      default: false
    ompl_interface/BKPIECENodeGenerator:
      default: false
    moveit_simple_controller_manager/OMPLSimpleSetup:
      default: false
    moveit_simple_controller_manager/OMPLRRTConnect:
      default: false
    moveit_simple_controller_manager/OMPLRRTstar:
      default: false
    moveit_simple_controller_manager/BKPIECE:
      default: false
    moveit_simple_controller_manager/BKPIECETimeOptimal:
      default: false
    moveit_simple_controller_manager/BKPIECENodeGenerator:
      default: false
  1. 在yaml文件中添加以下内容
ompl:
  planners:
    trac_ik_planners/TracIKOMPLPlanner:
      default: true
  1. 保存并关闭yaml文件

  2. 在终端中重启MoveIt!服务

sudo service moveit restart

  1. 测试新的规划器

好了,以上就是如何将Movelt中的默认规划器从KDL更换为Trac-Ik的方法,希望对大家有所帮助。