如何部署sbpl_lattice_planner

SBPL Lattice规划算法

sbpl全局规划算法是由迈克尔·菲利普斯开发的一中实验性质的全局规划器,适用于ROS环境下的导航包,并适配nav_core中指定的nav_core::BaseGlobalPlanner接口。因此该规划器可用作move_base的全局规划器。该规划器会通过一系列的“运动基元”来生成从机器人当前位置到所需的目标位置的路径。规划包括x、y、theta三个维度,所以生成出的路径相对平滑。该规划器可选用ARA*(Anytime Repairing A*)规划器和AD*(Dynamic A*)规划器来生成路径。

如何部署sbpl_lattice_planner

SBPL库安装

首先我们先要安装算法所依赖的外部库SBPL,从github上下载后,可通过apt的方式

sudo apt-get install ros-indigo-sbpl

若要通过离线安装包的方式可以先从  https://github.com/sbpl/sbpl.git 上下载SBPL Library

或者使用

git clone https://github.com/sbpl/sbpl.git

打开下载下来的文件的根目录,用彼岸准的CMake命令的方式构建SBPL库:

mkdir build && cd build
cmake .. && make

安装结束后,可以把sbpl库设置到你的ubuntu环境中去,方便调用:

sudo make install

以上就完成了sbpl库的安装。

安装SBPL_Lattice_Planner

通过github下载好ros-planning/navigation_experimental的项目,即为SBPL路径规划器了

下载好的package navigation_experimental-indigo-devel放入工作空间中的src文件夹,使用catkin_make进行编译

安装完后,source 工作空间下的 devel/setup即可。可以通过

rospack plugins --attrib=plugin nav_core

进行查看,可以看到现编已经成功的添加了sbpl规划器相关的组件了。

如何配置规划器参数及launch启动文件

参数解释

  • planner_type
    参数类型:string
    默认:ARAPlanner
    描述:指定要使用的规划器,可以再ARA和AD Planner之间切换选择。

  • allocated_tome
    参数类型:double
    默认值:10
    描述:基于规划器解决路径问题的时间。如果规划器在指定时间内找到相应的路径后仍有剩余时间,规划器将用剩余的时间来改进解决方案,直到其达到最优解或知道时间用完(以先到者为准)。

  • initial_epsilon
    参数类型:double
    默认:3.0
    描述:启发式的值在第一次搜索时按比例缩放。此值必须大于或等于 1。此值越大,搜索越容易找到解决方案(如果 epsilon 大于 1,则可能是次优的结果)。在第一次搜索之后,规划器会继续减少 epsilon 值,直到它为 1(最优搜索)。

  • environment_type
    参数类型:string
    默认:XYThetaLattice
    描述:正在搜索的环境类型。目前,XYThetaLattice 是唯一受支持的环境。

  • forward_search
    参数类型:bool
    默认:false
    描述:搜索的方向。如果您使用 AD*,您应该使用反向搜索来加快重新计划时间。对于 ARA*,使用哪个方向并不重要。false:正向;true:反向

  • primitive_filename
    参数类型:string
    默认:
    描述:运动图元文件的路径。必须由用户指定,以便规划器工作。SBPL 包中的 matlab/mprim/pr2.mprim 中有一个示例运动原语文件。如果想生成自己的运动原语文件以匹配机器人的运动学或地图分辨率,SBPL 包中的 matlab/mprim/ 中有个 genmprim*.m 脚本可以用于生成自定义的运动基元文件。

  • force_scratch_limit 
    参数类型:int
    默认:500
    描述:该参数仅在使用 AD* 时才生效。自上次生成规划以来至少有设置的值得数量的地图单元发生了变化,则规划器将不会再继续使用以前的搜索信息,而是从头开始规划搜索。

  • nominalvel_mpersecs 
    参数类型:double
    默认值:0.4
    描述:机器人的线速度,以米/秒为单位

  • timetoturn45degsinplace_secs
    参数类型:double
    默认值:0.6
    描述:机器人在原地转 45 度所需的时间(以秒为单位)。

  • lethal_obstacle
    参数类型:无符号字符
    默认值:20
    描述:规划器的代价地图中障碍物的代价。成本图中的所有其他值都会相应地缩放。障碍物成本在 costmap2d 中最大,因此通过将此参数设置为低于其障碍物阈值的值,我们可以获得不那么苛刻且更合理的障碍物填充。这将使规划器更有可能选择穿过更狭窄的区域,例如门口。

nav_comme_param.yaml配置

controller_frequency: 25.0
planner_frequency: 0.0
planner_patience: 0.01
recovery_behavior_enabled: false
clearing_rotation_allowed: false
base_local_planner: pose_follower/PoseFollower
base_global_planner: SBPLLatticePlanner

Launch启动文件设置

<launch>
    <param name="/use_sim_time" value="true"/>
    <!-- sbpl map server -->
    <node name="map_server" pkg="map_server" type="map_server" args="$(find move_robot)/map/navigation.yaml" output="screen" />

    <!-- include file="$(find amcl)/examples/amcl_diff.launch" /-->
    <node pkg="move_base" type="move_base" respawn="false" name="move_base" output="screen">
        <!-- sbpl params -->
        <param name="SBPLLatticePlanner/primitive_filename" value="$(find move_robot)/matlab/mprim/pr2.mprim" />
        <rosparam file="$(find sbpl_lattice_planner)/launch/move_base/sbpl_global_params.yaml" command="load" />
        <!-- normal params -->
        <rosparam file="$(find move_robot)/launch/nav_common_params.yaml" command="load" />
        <rosparam file="$(find move_robot)/launch/costmap_common_params.yaml" command="load" ns="global_costmap" />
        <rosparam file="$(find move_robot)/launch/costmap_common_params.yaml" command="load" ns="local_costmap" />
        <rosparam file="$(find move_robot)/launch/local_costmap_params.yaml" command="load" />
        <rosparam file="$(find move_robot)/launch/global_costmap_params.yaml" command="load" />
        <rosparam file="$(find move_robot)/launch/base_local_planner_params.yaml" command="load" />
        <rosparam file="$(find move_robot)/launch/global_planner_params.yaml" command="load" />
    </node>
</launch>

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值