导航包Navigation最全完整解析(一): 软件包关系梳理

本文主要解析ROS navigation的kinetic-devel分支,探讨其软件包的功能分类,重点分析move_base在导航框架中的核心地位,以及如何通过数据传输接口维持运行。同时,文章预告将深入源码解析,并展示2D地图和代价地图的应用效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

navigation包目前常用的主要有kinetic-devel和melodic-devel两种分支; 在本次讨论中主要针对kinetic-devel版本进行解读.

对navigation的两种分支做一个简单的对比:

1. melodic在kinetic的基础上淘汰了tf的使用,替换成了tf2;
2. melodic在某些Velocity参数设置做了一些相应的修改,参数名等方面;
3. costmap2D上增加了某些细节;
4. 在核心算法上好像并没有做出太大改进;
5. 如果后续发现新的不同,将在此补充, 若大家有新的发现也欢迎留言告诉我.

1. 软件包按功能分类

先请大家看一张navigation库中各个软件包的调用关系图:

在这里插入图片描述

然后再给出navigation库中所包含软件的树状图(仅目录)如下:

"注意: 在后续的阐述中全部采用序号来代替相对应的软件包名称"

├── 1. amcl
├── 2. base_local_planner
├── 3. carrot_planner
├── 4. clear_costmap_recovery
├── 5. costmap_2d
├── 6. dwa_local_planner
├── 7. fake_localization
├── 8. global_planner
├── 9. map_server
├── 10. move_base
├── 11. move_slow_and_clear
├── 12. nav_core
├── 13. navfn
├── 14. navigation
├──     README.md
├── 15. robot_pose_ekf
├── 16. rotate_recovery
└── 17. voxel_grid


从上可以看出一共有17个软件包, 其中:
(1715)为提高机器人定位辅助包 ;9)为加载和保存地图辅助包 ;
(41116)为导航修复辅助包(ps: 当机器人出现意外无法到达指定位置时所采取的修复行为)(17)为体素定义辅助包。

除了上述辅助包之外, 剩下的都是核心软件包, 主要包括以下几种:
核心控制枢纽软件包: 10 (move_base)
中间中转站(数据交换接口): 5(costmap2d)12(nav_vore)
全局路径规划器: 3813
局部路径规划器: 26

从上面两种图形展示中可以看出, navigation包的核心就是10(move_base), 它通过两个核心数据传输接口5、12来维护整个导航框架的运行.

2. 软件包的安装和测试

省略,该步骤比较简单,我已经移植了多个版本平台(arm64/32, AMD64)都没有什么问题,所以在这里就不啰嗦了,大家如果安装有什么问题可以留言告诉我.

3. 源码深入解析前奏

深入剖析navigation库,这个库用起来简单,但学习下来用到了好多c++的高级知识点和ROS的一些消息传递方式,真不是那么容易就能完全掌握的…

在深入剖析代码前,最好能够理解基础语言(C++/ROS)的一些语法

  • ROS语法
1. ROS-Topic的订阅和发布
2. ROS-msg的高级创建和使用 	(专栏后续单独介绍)
3. ROS-srv的高级创建和使用     (专栏后续单独介绍)
4. actionlib 		        (专栏后续单独介绍)
5. pluginlib           	    (专栏后续单独介绍)
6. tf库                      (专栏后续单独介绍)
7. ROS的消息打印种类           (专栏后续单独介绍)
  • C++语法
1. 共享指针
2. 线程锁
3. 多线程并行
4. 虚函数
5. enum 枚举

4. 结果对比及展示

  • 2D-栅格地图

在这里插入图片描述

  • 局部代价和全局代价地图

具体代码的详细解析,和分层次介绍函数的调用关系,修改核心函数参数,提高算法执行效率请期待后续文章。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱发呆de白菜头

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值