ROS源码分析
写在前面
很久就有写ROS源码分析的想法。2014年最初接触ROS,当时中文资料比较少,基本只有一本红皮的ROS介绍,内容大多是对ROS官方wiki的翻译,版本也跟不上ROS官方发布的速度。因此开始刷官方wiki教程。官方教程简单形象,原理与例子结合,至今我仍然认为是入门ROS的不二之选。
刷完教程后,出于工作需要(主要在ROS实时性方面),开始阅读ROS的核心代码。ROS的代码量并不大,结构也比较清楚,虽然可以用来参考学习的资料完全没有,并且本人也非计算机专业出身,C++功底并不深,但结合实际使用效果勉强啃得动。当时觉得如果有个参考的资料,讲讲每个文件是干什么,每个函数是什么功能,那学习起来就方便多了。但是并没有。
如今两年过去了,机器人行业越来越火,ROS也逐渐成为机器人软件平台的事实标准,但依然没有人对ROS的源码进行分析。仔细想想,这种状况也算是正常的,毕竟使用ROS的人一般只关注ROS带来的简单的接口、丰富的调测试工具、多语言多平台的支持以及海量开源代码包,而对于ROS到底如何实现这些并不关心。同时ROS当前的主要受众还是学术界,更强调新研究、新算法的快速部署,对调度、通信的性能并不特别关注。而国外的ROS的开发者和维护者本身对ROS特别熟悉,没有必要专门花心思在介绍ROS内部的实现机制上。
那么分析ROS的源码到底有没有用呢?如果你是一个ROS的使用者,只是用ROS的包进行学术研究和算法验证,那么分析ROS源码的用处并不大。分析ROS源码能够让你更清楚ROS的用法,在出现某些错误时能够更快速的定位问题,但也仅此而已。对于你的目标,分