ROS源码分析-week9

2021SC@SDUSC

1. 本周工作目标

这周继续阅读ros导航部分的代码,希望能大致理解导航部分ros包的架构。结合实际情况,本周的工作目标如下:

  • 详细分析架构图

  • 根据架构图,分析各部分对应的具体的代码包

2. 导航架构图分析

首先复习一下上一章在wiki里发现的的架构图:

我们详细分析一下这张图的各个部分:

包名来源功能备注
move_base官方提供整合各种信息来源,用dijstra或者A*算法规划机器人运动路径
map_server官方提供为机器人提供地图信息地图信息需要预先建立
amcl官方提供在地图中对机器人进行定位基于粒子算法
odometry sources机器人平台提供提供机器人运动里程计信息
sensor sources机器人平台提供机器人的传感器信息(如激光雷达传感器、加速度传感器等)
base controller机器人平台提供让导航包控制机器人运动的一组接口

通过编写上面这张表格,我们对总体的包结构获得了基础的认识。

3. 把架构图落实到代码结构

下面我们需要阅读代码,把上面具体的各个部分落实到具体的代码仓库上。

首先是以上代码的内容都在github仓库navigation中,如下图:

 可以看见navigation这个仓库里面有不同的子文件夹,以move_base为例,点开子文件夹:

 发现每个子文件夹都是一个ros_package!

打开src,发现move_base包主要是用C++语言写的,主要是定义并实现了一个类(ros节点)。这个文件很长,足足有1000多行,以下是代码片段:

翻看其他的文件夹,发现也是大致是这样的状况,每个包裹专注它自己的部分,有一定的代码量,但是代码结构还是相对清晰的。

语言方面,我们看到仓库的语言分布:

 可见这个库比较基础和重要,对性能要求比较高,大多数包是用C++写的。

4. 总结

这就是ROS导航源码架构的初步分析,后续就可以把代码克隆到本地,通过vscode进行进一步的阅读、分析了。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值