目录
- 一、方法一:修改调用参数
- 二、方法二(推荐):修改源码
- 三、方法三(推荐):修改源码
一、方法一:修改调用参数 1.在ROS功能中,找到设置调用全局规划路径算法的
yaml文件
2.如图我的机器人中,设置全局路径规划算法的yaml文件是move_base_params.yaml
3.将文件中的
base_global_planner: "navfn/NavfnROS"
改为base_global_planner: "global_planner/GlobalPlanner"
文章图片
4.修改完后需要将编译好的
devel文件
删除,然后使用catkin_make
命令重新编译生成新的devel文件。不然有可能对于全局路径算法的修改不生效
。二、方法二(推荐):修改源码 1.在
navigation
元功能包中找到global_planner
功能包,进而找到其中planner_core.cpp
文件。2.如图所示红框内的代码,大概在
116行
左右,将这行代码的true
改为false
。文章图片
3.修改完后需要将编译好的
devel文件
删除,然后使用catkin_make
命令重新编译生成新的devel文件。不然有可能对于全局路径算法的修改不生效
。4.本人使用此方法时,可能会出现问题:
全局路径有时候可以规划成功,有时候不能规划成功,而且频繁发出警告。
文章图片
主要重复的问题代码为
[ERROR] [1614933280.932329604]: NO PATH!
[ERROR] [1614933280.932975937]: Failed to get a plan from potential when a legal potential was found. This shouldn't happen.
5.尝试解决报错
经过网上查找,发现此方法并
无作用
文章图片
三、方法三(推荐):修改源码 1.找到
planner_core.cpp
文件中的initialize
函数2.注释掉使用
Dijkstra
的部分,就可以使用A*
算法了。具体操作
:将②部分红框内if的上半部分代码全部注释掉,剩下绿框内的代码。3.①部分红框内的代码可以用打印信息
验证
是否使用的是dikstra全局路径算法,如果不是则使用的是A*算法文章图片
4.修改完后需要将编译好的
devel文件
删除,然后使用catkin_make
命令重新编译生成新的devel文件。不然有可能对于全局路径算法的修改不生效
。【搭建移动机器人|修改ROS中使用的全局规路径划算法——将dikstra修改为A*】注:
1.未经许可请勿转载
2.部分内容参考 link1
推荐阅读
- ROS|ROS kinetic自定义路径规划算法
- makefile|「技术人生」第8篇(如何画业务大图)
- java|java 调用电脑摄像头
- 思迈特软件2022全国渠道招募会西安站、厦门站圆满落幕!
- 阿里云|阿里云“大算力”支持嬴彻自动驾驶仿真提速 20 倍
- 自然语言处理|活动报名 | 保护儿童,保护未来!智源发布《面向儿童的人工智能北京共识》-2
- 中国最大AI预训练模型发布(113亿参数!北京智源研究院、阿里、清华等联手打造)
- 人工智能|对标GPT-3、AlphaFold,智源研究院发布超大规模智能模型系统“悟道1.0”
- 业界资讯|智源发布线虫生命模型,超级人脑有望在未来15-30年实现