• teb_local_planner安装及使用


    teb_local_planner的详尽资料(包括安装及导航,参数调节等)请参考其ros官方文档:http://wiki.ros.org/teb_local_planner和http://wiki.ros.org/teb_local_planner/Tutorials。

    teb_local_planner的github源码:https://github.com/rst-tu-dortmund/teb_local_planner。

    一、作用机制

            teb_local_planner将navigation里的base_local_planner替换,故其作用机制和base_local_planner一样为ros的plugin机制。plugin的使用可以参考:http://www.cnblogs.com/W-chocolate/p/4328725.html。

            

    二、teb_local_planner的安装步骤如下(注意ros为kenetic版):

            1、安装依赖:

                  rosdep install teb_local_planner


             2、从github上下载源码:https://github.com/rst-tu-dortmund/teb_local_planner

             3、放入工作空间的/src文件夹中

            4、catkin_make -DCATKIN_WHITELIST_PACKAGES=“源码存放的文件夹名字”(单独编译teb_local_planner)

             5、查看teb_local_planner的plugin是否安装完成

                  rospack plugins --attrib=plugin nav_core

                  如果能查询到teb_local_planner,则表明以及准备就绪。

           值得一提的是,teb_local_planner源码中关于plugin的配置文件均已写好,直接编译源码就能完成plugin的注册及插入,非常方便。
    三、使用

             1、新建teb_local_planner配置文件teb_local_planner_params.yaml

                  在此我偷了个懒,直接从tutorials中下载:

                  git clone https://github.com/rst-tu-dortmund/teb_local_planner_tutorials.git

                  在/cfg中找到所需的teb_local_planner_params.yaml。由于使用机器人odom为差动模式的,故选取diff_drive中的。

            2、将teb_local_planner_params.yaml和navigation中其他的配置文件(如costmap_common_params.yaml等)放在一起,方便查阅调用。个人习惯如此,也可以不放在一起。

             3、在启动navigation的launch文件中load上述配置文件

          <node pkg="move_base" type="move_base" respawn="false" name="move_base" output="screen">
             ...
            <rosparam file="$(find my_robot_name_2dnav)/base_local_planner_params.yaml" command="load" />
             ...
          </node>

             4、在启动navigation的launch文件中声明base_local_planner采用先前注册的plugin

          <node pkg="move_base" type="move_base" respawn="false" name="move_base" output="screen">
            ...
            <param name="base_local_planner" value="teb_local_planner/TebLocalPlannerROS" />
            ...
          </node>

                    当然也可以选择在move_base_params.yaml中声明。

              5、启动navigation,在rviz中将三条path调出来,即可观察机器人导航过程中规划路径的变化。

           此外,可以通过rosrun rqt_reconfigure rqt_reconfigure动态调节参数使机器人导航性能达到最佳。关于参数调节的方法请参考其ros官方文档。实际使用的经历来看,采用从teb_local_planner_tutorials下载下来的默认参数达到的性能已经远优于原始navigation中的路径规划算法的性能。我认为teb_local_planner的应用价值非常大。
     
    四、异常处理

     

    原因是相关库没有安装好,根据提示把库安装好就可以使用了。
    解决办法,比较懒,没有一个个试试,所以直接都安装了,有兴趣的小伙伴可以尝试分部分,O(∩_∩)O哈哈~

    sudo apt install ros-kinetic-mbf-costmap-core ros-kinetic-mbf-costmap-nav ros-kinetic-move-base-flex ros-kinetic-move-base-to-manip ros-kinetic-moveit-kinematics ros-kinetic-moveit-ros-manipulation ros-kinetic-moveit-ros-move-group ros-kinetic-moveit-ros-perception ros-kinetic-moveit-ros-planning ros-kinetic-moveit-ros-planning-interface ros-kinetic-moveit-ros-warehouse ros-kinetic-assisted-teleop ros-kinetic-carrot-planner ros-kinetic-dwa-local-planner ros-kinetic-global-planner ros-kinetic-goal-passer ros-kinetic-move-slow-and-clear ros-kinetic-navigation ros-kinetic-navigation-experimental ros-kinetic-navigation-layers ros-kinetic-navigation-stage ros-kinetic-navigation-tutorials ros-kinetic-pose-follower ros-kinetic-range-sensor-layer ros-kinetic-roomba-stage ros-kinetic-sbpl-lattice-planner ros-kinetic-sbpl-recovery ros-kinetic-social-navigation-layers ros-kinetic-twist-recovery ros-kinetic-assisted-teleop ros-kinetic-carrot-planner ros-kinetic-dwa-local-planner ros-kinetic-global-planner ros-kinetic-goal-passer ros-kinetic-move-slow-and-clear ros-kinetic-navigation ros-kinetic-navigation-experimental ros-kinetic-navigation-layers ros-kinetic-navigation-stage ros-kinetic-navigation-tutorials ros-kinetic-pose-follower ros-kinetic-range-sensor-layer ros-kinetic-roomba-stage ros-kinetic-sbpl-lattice-planner ros-kinetic-sbpl-recovery ros-kinetic-social-navigation-layers ros-kinetic-twist-recovery ros-kinetic-assisted-teleop ros-kinetic-carrot-planner ros-kinetic-dwa-local-planner ros-kinetic-global-planner ros-kinetic-goal-passer ros-kinetic-move-slow-and-clear ros-kinetic-navigation ros-kinetic-navigation-experimental ros-kinetic-navigation-layers ros-kinetic-navigation-stage ros-kinetic-navigation-tutorials ros-kinetic-pose-follower ros-kinetic-range-sensor-layer ros-kinetic-roomba-stage ros-kinetic-sbpl-lattice-planner ros-kinetic-sbpl-recovery ros-kinetic-social-navigation-layers ros-kinetic-twist-recovery ros-kinetic-cost-map ros-kinetic-cost-map-demos ros-kinetic-cost-map-ros ros-kinetic-cost-map-visualisations ros-kinetic-costmap-prohibition-layer ros-kinetic-grid-map-costmap-2d ros-kinetic-grid-map-cv ros-kinetic-grid-map-ros ros-kinetic-grid-map-visualization

     

  • 相关阅读:
    Pascal 语言中的关键字及保留字
    单元文件结构
    在 case 语句中使用字符串-转
    程序流程的辅助控制-转
    XE版本 InputQuery 可以同时填多个输入值
    转:Delphi 6 实用函数
    转:Delphi 函数大全
    d 属性: 赋予字段执行动作的能力
    Json格式示意图
    转:虚拟方法跳过父类继承调用祖父类的代码 --值得试一试
  • 原文地址:https://www.cnblogs.com/long5683/p/11404576.html
Copyright © 2020-2023  润新知