MoveIt! 学习笔记15 - OMPL planner(OMPL规划器)

此博文主要是用来记录ROS-Kinetic 中,用于机器人轨迹规划的MoveIt功能包的学习记录。 

英文原版教程见此链接:http://docs.ros.org/en/kinetic/api/moveit_tutorials/html/doc/time_parameterization/time_parameterization_tutorial.html

中文教程转载至:https://blog.csdn.net/ssw_1990/article/details/104099989

Open Motion Planning Library是一个强大的集合,最先进的采样为基础的运动规划算法,在MoveIt中是默认规划器。有关更多信息,请参见项目网页

一.OMPL Settings
在这里,回顾了OMPL的重要配置设置。这些设置通常可以在ompl_planning.yaml文件中找到。该文件位于robots moveit_config包中。
1.Longest Valid Segment Fraction
longest_valid_segment_fraction定义了用于碰撞检查的机器人运动的离散化,极大地影响了基于OMPL的解决方案的性能和可靠性。在这种情况下,可以将运动看作图中两个节点之间的边,其中节点是沿着轨迹的路径点。OMPL中的默认运动碰撞检查器只是将边缘离散化成许多子状态来进行碰撞检查。OMPL/MoveIt中没有当前可用的连续冲突检查,尽管这是当前讨论的一个领域。
具体来说,longest_valid_segment_fraction是机器人状态空间的一部分,考虑到机器人当前没有发生碰撞,假设机器人可以在保持无碰撞的情况下旅行。例如,如果longest_valid_segment_fraction=0.01,那么假设如果两个节点之间的边小于状态空间的百分之一,那么不需要明确地检查沿该边的任何子状态,只需检查它连接的两个节点。
除了ompl_planning中的longest_valid_segment_fraction参数之外。在动态重新配置文件中还可以找到maximum_waypoint_distance。maximum_waypoint_distance定义了用于碰撞检查的机器人动作的相同离散化,但是它是在绝对级别上进行的,而不是使用状态空间的分数。例如,如果maximum_waypoint_distance=0.1,那么如果一条边的状态空间距离小于0.1,那么不会显式地检查沿这条边的任何子状态。
如果设置了longest_valid_segment_fraction和maximum_waypoint_distance,则选择产生最保守离散化的变量[在给定边缘上生成最多的碰撞检查状态的变量]。
设置longest_valid_segment_fraction[或maximum_waypoint_distance]太低,碰撞检查/运动规划将非常缓慢。如果设置得太高,就会错过小或窄物体周围的碰撞。此外,高碰撞检查分辨率将导致路径平滑器输出难以理解的运动,因为它们能够捕获无效的路径,然后试图通过采样来修复它们,但并不完美。
快速分析该参数对两个MoveIt的影响,这里提供了一些教程示例。
2.Projection Evaluator
projection_evaluator可以获取一个节点或链接列表,以近似于配置空间的覆盖范围。此设置被KPIECE、BKPIECE、LBKPIECE和PDST等规划者使用。有关更多信息,请阅读相应的出版物。
3.Enforce Planning in Joint Space
根据规划问题的运动,在joint space和cartesian space之间进行问题表示。设置组参数enforce_joint_model_state_space可以强制所有计划使用joint space。
在默认情况下,带有方向路径约束的规划请求在cartesian space中采样,以便调用IK作为生成采样器。
通过强制joint space,规划过程将使用拒绝抽样来发现有效的请求。请不要认为这可能会大大增加计划时间。
4.Other Settings
根据使用的规划器,可以使用其它设置进行调优/参数扫描。这些设置的默认值是在MoveIt Setup Assistant中自动生成的和列在ompl_planning.yaml文件-鼓励去调整它们。

二.OMPL Optimization Objectives
作为OMPL规划库一部分的几个规划人员能够对指定的优化目标进行优化。本教程描述了配置这些目标所需的步骤。最优的规划者,目前暴露在MoveIt是:
1.geometric::RRTstar
2.geometric::PRMstar
以下优化目标是可用的:
1.PathLengthOptimizationObjective [Default]
2.MechanicalWorkOptimizationObjective
3.MaximizeMinClearanceObjective
4.StateCostIntegralObjective
5.MinimaxObjective
这些优化目标的配置可以在ompl_planning.yaml中完成。将名为optimization_objective的参数添加为配置参数。将参数的值设置为所选优化目标的名称。例如,要配置RRTstar来使用MaximizeMinClearanceObjective,即ompl_planning.yaml中的planner条目看起来像:

RRTstarkConfigDefault:
    type: geometric::RRTstar
    optimization_objective: MaximizeMinClearanceObjective
    range: 0.0
    goal_bias: 0.05
    delay_collision_checking: 1
  • RRTstarkConfigDefault:
        type: geometric::RRTstar
        optimization_objective: MaximizeMinClearanceObjective
        range: 0.0
        goal_bias: 0.05
        delay_collision_checking: 1

参考文献:
[1]OMPL Planner:http://docs.ros.org/kinetic/api/moveit_tutorials/html/doc/ompl_interface/ompl_interface_tutorial.html

猜你喜欢

转载自blog.csdn.net/weixin_42503785/article/details/111998912
今日推荐