Moviet更换默认规划器KDL为Trac-Ik
2023-10-24 22:09:09
众所周知,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个步骤:
- 打开终端,编辑ompl_planning.yaml文件 :
sudo vim /opt/ros/kinetic/share/moveit_core/config/ompl_planning.yaml
- 在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
- 在yaml文件中添加以下内容 :
ompl:
planners:
trac_ik_planners/TracIKOMPLPlanner:
default: true
-
保存并关闭yaml文件 。
-
在终端中重启MoveIt!服务 :
sudo service moveit restart
- 测试新的规划器 。
好了,以上就是如何将Movelt中的默认规划器从KDL更换为Trac-Ik的方法,希望对大家有所帮助。