赞
踩
规划适配器是 MoveIt 中的一个概念,可用于修改运动计划器的轨迹(预处理和/或后处理)。MoveIt 中现有计划适配器的一些示例包括 AddTimeParameterization、FixWorkspaceBounds、FixStartBounds、FixStartStateCollision、FixStartStatePathConstraints、CHOMPOptimizerAdapter 等!使用规划适配器的概念,可以在管道中使用多种运动规划算法来生成可靠的运动规划。例如,运动规划的轨迹包括由 OMPL 生成的初始规划轨迹,然后 CHOMP 对其进行优化,以生成可能比单独由 OMPL 或 CHOMP 生成的路径更好的运动轨迹。同样,使用规划适配器的概念,可以根据机器人所处的环境混合和匹配其他运动规划器。本部分提供了有关混合和匹配不同运动规划器的分步教程,并提供了有关何时使用哪些特定运动规划器的见解。参考moveit
在本节中,我们提供了混合和匹配不同运动规划器的不同方法。本教程的主要重点是 OMPL、CHOMP 和 STOMP,因为这些是 MoveIt 目前唯一支持的规划器。
本文表明,CHOMP可以作为其他计划算法获得的计划的后处理优化技术。意思就是说,使用其他规划算法对 CHOMP 产生一个初始的规划轨迹。然后,CHOMP利用这些初始的轨迹进一步优化,产生更好的轨迹。为此,请按照以下步骤操作:
1、在你的功能包中找到ompl_planning_pipeline.launch.xml文件。将其复制一份,并命名为ompl-chomp_planning_pipeline.launch.xml,编辑此文件,找到下面提到的行并将其更改为:
- <arg name="planning_adapters"
- value="default_planner_request_adapters/AddTimeParameterization
- default_planner_request_adapters/FixWorkspaceBounds
- default_planner_request_adapters/FixStartStateBounds
- default_planner_request_adapters/FixStartStateCollision
- default_planner_request_adapters/FixStartStatePathConstraints
- chomp/OptimizerAdapter" />
2、在ompl-chomp_planning_pipeline.launch.xml文件找到<rosparam command="load" file="$(find moveit_config)/config/ompl_planning.yaml"/>在这行下面添加下面的语句:
- <rosparam command="load" file="$(find panda_moveit_config)/config/chomp_planning.yaml"/>
- <rosparam command="load" file="$(find rml_63_moveit_config)/config/chomp_planning.yaml"/>
- <!-- override trajectory_initialization_method -->
- <param name="trajectory_initialization_method" value="fillTrajectory"/>
chomp_planning.yaml中的参数解释:可参考chomp
planning_time_limit | 优化器在终止之前找到解决方案所需的最长时间 |
max_iterations | 在优化时找到良好解决方案时可以采取的最大迭代次数 |
max_iterations_after_collision_free | 找到无冲突路径后要执行的最大迭代次数。 |
smoothness_cost_weight | smoothness_cost_weight参数控制其在CHOMP实际优化的最终成本中的权重。 |
learning_rate | 这是优化器用来找到局部/全局最小值同时降低总成本的学习率 |
smoothness_cost_velocity、smoothness_cost_acceleration、smoothness_cost_jerk | 与速度、加速度和加速度成本相关的变量。 |
ridge_factor | 例如:添加小噪声(例如,0.001)允许CHOMP以牺牲轨迹平滑度为代价避开障碍物。 |
use_pseudo_inverse | 是否启用伪逆计算 |
pseudo_inverse_ridge_factor | 如果启用了伪逆,则设置岭因子 |
joint_update_limit | 设置机器人关节的更新限制 |
collision_clearance | 为避开障碍物而需要保持的最小距离 |
collision_threshold | 为避免碰撞的碰撞阈值成本 |
use_stochastic_descent | 如果要在优化成本的同时使用随机下降,请将其设置为 true/false。在随机下降中,使用轨迹中的随机点,而不是所有轨迹点。这速度更快,并且保证收敛,但在最坏的情况下可能需要更多迭代。 |
max_recovery_attempts | 这是在首次尝试使用默认参数后,使用一组不同的参数运行 CHOMP 的最大次数。 |
trajectory_initializaiton_method | 此处可以为 CHOMP 提供轨迹的初始化类型。 提供了一个选项,用于从从现有运动规划器(如 OMPL)计算的路径初始化轨迹。
|
3、在进行这些必要的更改之后,打开终端并执行以下操作,启动机械臂的程序:
roslaunch moveit_config demo.launch
在“上下文”选项卡下的“运动规划”面板中选择 OMPL。通过移动末端执行器来设置所需的开始和目标状态。最后,单击“计划”按钮开始计划。规划器现在将首先运行 OMPL,然后在 OMPL 的输出上运行 CHOMP 以生成优化路径,如下图所示。
1、Moveit暂时还没有集成stomp,因此我么需要进行源码构建。
- cd ~/ws_moveit
- catkin clean
- source /opt/ros/noetic/setup.bash
- wstool set -t src stomp_ros https://github.com/ros-industrial/stomp_ros.git --git
- wstool update -t src stomp_ros
- wstool merge -t src src/stomp_ros/dependencies.rosinstall
- wstool update -t src stomp ros_industrial_cmake_boilerplate
- catkin build
2、在你的功能包中找到ompl_planning_pipeline.launch.xml文件。将其复制一份,并命名为ompl-chomp_planning_pipeline.launch.xml,编辑此文件,找到下面提到的行并将其更改为:
- <arg name="planning_adapters"
- value="default_planner_request_adapters/AddTimeParameterization
- default_planner_request_adapters/FixWorkspaceBounds
- default_planner_request_adapters/FixStartStateBounds
- default_planner_request_adapters/FixStartStateCollision
- default_planner_request_adapters/FixStartStatePathConstraints
- stomp_moveit/StompSmoothingAdapter" />
3、在ompl-chomp_planning_pipeline.launch.xml文件找到<rosparam command="load" file="$(find moveit_config)/config/ompl_planning.yaml"/>在这行下面添加下面的语句:
- <rosparam command="load" file="$(find panda_moveit_config)/config/chomp_planning.yaml"/>
- <rosparam command="load" file="$(find rml_63_moveit_config)/config/stomp_planning.yaml"/>
- <!-- override trajectory_initialization_method -->
- <param name="initialization_method" value="4"/>
stomp_planning.yaml中的参数解释: 可参考stomp
4、在进行这些必要的更改之后,打开终端并执行以下操作,启动机械臂的程序:
roslaunch moveit_config demo.launch
在“上下文”选项卡下的“运动规划”面板中选择 OMPL。通过移动末端执行器来设置所需的开始和目标状态。最后,单击“计划”按钮开始计划。规划器现在将首先运行 OMPL,然后在 OMPL 的输出上运行 STOMP 以生成优化路径。
本部分介绍了何时使用哪个规划器,以及在特定管道中使用某些规划请求适配器如何生成整体可靠的路径。在这里,我们考虑单独使用OMPL、STOMP、CHOMP,以产生从规划器获得的稳健、平滑的优化路径。对于每个规划器,都提供了一个基本的见解,使用户能够直观地在特定情况下使用特定的规划器。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。