为ROS navigation功能包添加自定义的全局路径规划器(Global Path Planner)
来源:互联网 发布:万方数据库下载器 编辑:程序博客网 时间:2024/06/03 15:47
原链接:https://community.bwbot.org/topic/43
ROS 的navigation官方功能包提供了三种全局路径规划器:carrot_planner、global_planner、navfn。我们通常使用的是navfn,如果机器人执行一些特殊任务而navfn不支持的话就需要自己写一个全局路径规划区并注册到ROS系统。
ROS的全局路径规划器是以lib插件形式(pluginlib)存在的,通过配置move_base 中base_global_planner参数指定实际路径规划执行时采用的全局路径规划器,这种设计大大提高了navigation包的可扩展性。
ROS官网wiki有详细的教程指导大家如何为ROS添加自定义的全局路径规划器,操作步骤挺繁琐的,在了解原理之后我们其实可以用下文的偷懒方法实现自己的全局路径规划器。主要思路是:直接拷贝一份现成的全局路径规划器代码包,将软件包中的相关名字修改成想要的,最后实现下自己的makeplan方法即可。
1.从navigation包中拷贝carrot_planner文件夹下的所有内容到ROS源码工作目录。
以小强ROS机器人为例:cd Documents/ros/src/ 进入ROS源码工作目录cp -a navigation/carrot_planner test_planner 拷贝一份carrot_planner代码到test_planner文件夹下,test可以改成自己想要的任何名字,这个名字即为下文咱们自定义的全局规划器
2.开始修改名字,将拷贝的文件夹(test_planner)内的所有文件中的carrot字符换成test,包括文件名中的字符
需要修改内容的文件有:test_planner/include/carrot_planner/carrot_planner.htest_planner/src/carrot_planner.cpptest_planner/bgp_plugin.xmltest_planner/CMakeLists.txttest_planner/package.xml需要修改名字的文件有:test_planner/include/carrot_planner/carrot_planner.htest_planner/src/carrot_planner.cpp需要修改名字的文件夹有:include下的carrot_planner文件夹
3.尝试编译
以小强ROS机器人为例:cd Documents/ros/catkin_make
4.检查test_planner是否成功注册进ROS系统
rospack plugins --attrib=plugin nav_core正常的话会返回如下内容,可以查看到test_plannerrotate_recovery /home/xiaoqiang/Documents/ros/src/navigation/rotate_recovery/rotate_plugin.xmlbase_local_planner /home/xiaoqiang/Documents/ros/src/navigation/base_local_planner/blp_plugin.xmlglobal_planner /home/xiaoqiang/Documents/ros/src/navigation/global_planner/bgp_plugin.xmlnavfn /home/xiaoqiang/Documents/ros/src/navigation/navfn/bgp_plugin.xmlmove_slow_and_clear /home/xiaoqiang/Documents/ros/src/navigation/move_slow_and_clear/recovery_plugin.xmldwa_local_planner /home/xiaoqiang/Documents/ros/src/navigation/dwa_local_planner/blp_plugin.xmlclear_costmap_recovery /home/xiaoqiang/Documents/ros/src/navigation/clear_costmap_recovery/ccr_plugin.xmlcarrot_planner /home/xiaoqiang/Documents/ros/src/test_planner/bgp_plugin.xmltest_planner /home/xiaoqiang/Documents/ros/src/ test_planner/bgp_plugin.xml
5.根据自己的算法重写test_planner/src/test_planner.cpp中的makeplan方法,然后重新用catkin_make编译,至此咱们的全局路径规划器就打完收工了可以在move_base中使用了
6.在move_base节点中使用新建立的test_planner路径规划器
在move_base的启动launch文件节点中加入如下代码即可<param name="base_global_planner" value="test_planner/testPlanner"/>
阅读全文
0 0
- 为ROS navigation功能包添加自定义的全局路径规划器(Global Path Planner)
- ROS navigation planner--GlobalPlanner
- ros全局路径规划分享
- Linux中如何添加自己的路径为全局路径
- ROS Navigation-----导航功能包集设置和配置学习
- ROS专题----导航功能包navigation基础汇总
- ROS导航包navigation stack中关键包的作用
- 全局路径规划和局部路径规划的区别
- 添加 ros工作路径
- 在C++中为LUA添加PATH路径(搜索路径)
- 在C++中为LUA添加PATH路径(搜索路径)
- 自定义配置ros arduino bridge功能包集
- ROS导航功能包
- 为FckEditor增加插件,添加自定义的功能按钮ToolBarButton
- 为FckEditor添加自定义的用户上传目录功能!
- 使用自定义模板为Myeclipse添加新建Filter的功能
- ROS(indigo)RRT路径规划
- ROS(indigo)RRT路径规划
- 关于sdCard 路径
-  |"|&|<|>等html字符转义
- VC++获取本机所有IP和掩码信息
- C#设计模式总结
- UVA
- 为ROS navigation功能包添加自定义的全局路径规划器(Global Path Planner)
- 实例的生命周期
- 分类与聚类的区别
- 那些年Android黑科技②:欺骗的艺术
- 内容提供器访问Android数据库时候必须版本对应一致
- 设计模式之适配器模式的学习思考
- 芯片巨头英特尔放弃竞争迷你计算机市场
- QQWry.dat 数据写入
- 控件easyui-combobox动态设置默认值