ompl

目录

OMPL

OMPL设置

ompl_planning.yaml 文件中的参数

Projection Evaluator

Enforce Planning in Joint Space

Other Settings

Smoothing Paths 平滑路径

Determinism

OMPL Optimization Objectives

Post-Processing Smoothing 后处理平滑


OMPL

开源运动规划库(The Open Motion Planning Library)是最先进的基于采样的运动规划算法的强大集合,是MoveIt中的默认规划器。

OMPL设置

在机器人moveit_config包中的ompl_planning.yaml文件中找到这些设置。

ompl_planning.yaml 文件中的参数

longest_valid_segment_fraction

它定义了用于碰撞检测机器人动作的离散化并极大地影响基于OMPL的解决方案的性能和可靠性。在这种情况下,运动可以看作是图中两个节点之间的一条边,其中节点是沿着轨迹的路点。OMPL中的默认运动碰撞检查器只是将边缘离散化为多个子状态以进行碰撞检查。目前OMPL / MoveIt中没有连续冲突检查,尽管这是当前讨论的一个领域。

具体来说,longest_valid_segment_fraction是机器人状态空间的一小部分,如果机器人当前没有碰撞,我们假设机器人可以在保持无碰撞的同时行进。例如,如果longest_valid_segment_fraction = 0.01,那么我们假设如果两个节点之间的一条边小于状态空间的1/100,那么我们不需要明确地检查沿着该边缘的任何子状态,只需要检查它连接的两个节点。

maximum_waypoint_distance

动态重新配置文件中,maximum_waypoint_distance定义了用于碰撞检查的机器人运动的相同离散化,但它在绝对水平上进行,而不是使用状态空间的分数。例如,如果maximum_waypoint_distance = 0.1,如果一条边比状态空间距离短0.1,那么我们不会明确检查沿该边的任何子状态。

如果同时longest_valid_segment_fractionmaximum_waypoint_distance被设置,则选择产生最保守的离散(在一个会产生在给定的边缘最状态到冲突检查)的变量中。

设置longest_valid_segment_fraction(或maximum_waypoint_distance)太低,碰撞检查/运动规划将非常慢。设置得太高,在小或狭窄物体周围会错过碰撞。此外,高冲突检查分辨率将导致路径平滑器输出难以理解的运动,因为它们能够“捕获”无效路径,然后尝试通过在其周围采样来修复它们,但是不完美。

此处记录了此参数对两个MoveIt教程示例的影响的快速分析。

Projection Evaluator

projection_evaluator可以在关节或连杆的列表来近似配置空间的覆盖范围。

Enforce Planning in Joint Space

取决于MoveIt在问题表示joint space关节空间cartesian space笛卡尔空间选择的规划问题。设置组参数enforce_joint_model_state_space会使用关节空间执行所有规划。

默认情况下,带有方向路径约束的规划请求在笛卡尔空间中采样,以便调用IK作为生成采样器。

通过执行关节空间,规划过程将使用拒绝抽样来查找有效请求。请不要认为这会大大增加计划时间。

Other Settings

根据您使用的规划器,其他设置可用于调整/参数扫描。这些设置的默认值在MoveIt Setup Assistant中自动生成,并列在ompl_planning.yaml文件中 - 建议您调整它们。

Smoothing Paths 平滑路径

在这里,我们讨论了改进OMPL中间接,非优化路径的常见问题的各种方法。我们鼓励核心开发人员和研究人员帮助改进OMPL和MoveIt代码库,以便这不再是一个常见问题,而是更多解决问题。

Determinism

OMPL中的规划者本质上是具有概率性的,并不总是返回相同的解决方案。其他库(如基于搜索的规划库(SBPL),在给定相同环境,起始和目标的情况下,提供了确定性结果,你将始终获得相同的路径。SBPL是基于Astar的,因此你将获得最佳结果,直至你选择的搜索分辨率。然而,SBPL有很多缺点,例如难以调优特殊的hueristics。

OMPL Optimization Objectives

作为OMPL规划库一部分的多个规划人员能够针对指定的优化目标进行优化。本教程描述了配置这些目标所需的步骤。目前在MoveIt中显示的渐近最优规划器是:

  • RRT*
  • PRM*

OMPL中的其他优化规划器,但尚未在MoveIt中显示:

  • LazyPRM*
  • RRT#
  • RRTX
  • Informed RRT*
  • Batch Informed Trees (BIT*)
  • Lower Bound Tree RRT (LBTRRT)
  • Sparse Stable RRT
  • Transition-based RRT (T-RRT)
  • SPARS
  • SPARS2
  • FMT*
  • CForest

并提供以下优化目标:

  • PathLengthOptimizationObjective(默认)
  • MechanicalWorkOptimizationObjective
  • MaximizeMinClearanceObjective
  • StateCostIntegralObjective
  • MinimaxObjective

这些优化目标的配置可以在ompl_planning.yaml中完成。将名称为optimization_objective的参数添加为配置参数。参数的值设置为所选优化目标的名称。例如,要使用MaximizeMinClearanceObjective配置RRTstar,ompl_planning.yaml中的planner条目将如下所示:

RRTstarkConfigDefault :
    type : geometric :: RRTstar 
    optimization_objective : MaximizeMinClearanceObjective 
    范围: 0.0 
    goal_bias : 0.05 
    delay_collision_checking : 1

有关OMPL最佳规划器的更多信息,请参阅OMPL - 最佳规划文档

Post-Processing Smoothing 后处理平滑

注意,平滑有助于减少间接路径的数量有限。注意,这里我们讨论仅基于几何(运动学)的平滑。速度/加速度/加加速度平滑在其他地方处理,请参阅时间参数化

你可以通过增加计划时间来调整MoveIt在平滑上花费的时间。在找到初始计划之后但在allowed_planning_time用尽之前的剩余时间将用于平滑。MoveIt还进行路径杂交,采用N个不同规划运行的最佳部分并将它们拼接在一起。因此,num_planning_attempts也会影响质量。

虽然目前没有显示在MoveIt(TODO)的顶层,但可以通过在model_based_planning_context.cpp中将简化持续时间设置为0(无限制)来实现更平滑。这将启用OMPL的simplifyMax()函数

除了内部OMPL平滑器之外,最近已经做出了使用STOMP / CHOMP进行后处理的努力。看这篇博文

 

 

 

 

 

 

 

 

安装OMPL(Open Motion Planning Library)库可以根据操作系统的不同选择不同的方法。以下是一些常用的安装方式: ### 在Windows上使用vcpkg安装OMPL 可以使用`vcpkg`工具来安装OMPL库,这是一个流行的C++库管理器。确保已经下载并配置好了`vcpkg`后,运行以下命令: ```bash .\vcpkg.exe install ompl --triplet=x64-windows ``` 这条命令会安装适用于x64架构Windows平台的OMPL库[^1]。 ### 在Ubuntu上安装OMPL 对于Ubuntu用户,可以通过脚本直接安装OMPL。如果想要从GitHub获取最新版本的OMPL,可以使用提供的安装脚本: ```bash ./install-ompl-ubuntu.sh --github ``` 此命令将安装OMPL的主分支版本,这可以与其他标志结合使用[^2]。 ### 从源码编译安装OMPL 如果你需要特定版本的OMPL或者希望对构建过程有更多的控制权,则可以从源代码进行编译。通常步骤如下: 1. 获取源代码:可以通过访问OMPL的官方网站或其GitHub仓库来下载。 2. 解压文件:如果是压缩包形式下载,请解压到合适的目录。 3. 创建构建目录:进入OMPL源码目录,并创建一个用于构建的子目录,例如`build`。 4. 使用CMake配置项目:在构建目录中运行`cmake ..`以生成Makefile。 5. 编译和安装:执行`make`命令开始编译,完成后用`sudo make install`来安装。 请确保在安装过程中满足所有依赖项的要求。对于某些功能可能还需要额外的库支持,比如FCL(Flexible Collision Library),它可以通过类似的方式安装: ```bash .\vcpkg.exe install fcl --triplet=x64-windows ``` 同样地,对于Ubuntu系统,也可以通过相应的包管理器或者从源码编译的方式来安装这些依赖库[^1]。 ### 注意事项 - 安装前请确认你的开发环境已经正确设置,包括编译器等必要的开发工具。 - 如果是首次安装,请参考官方文档获取最新的安装指南和支持信息。 - 对于更详细的安装选项和高级配置,请查阅OMPL的官方文档。 以上就是几种常见的OMPL库安装方法。根据自己的操作系统和个人偏好选择合适的方法进行安装。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值