2021SC@SDUSC
ROS简介
ROS即Robot Operating System,虽名为操作系统,但实际是用于编写机器人程序的、具有高度灵活性的软件架构(framework),其不同的库可以用在Java、C++等不同语言进行编写,并方便地进行通信与合作,这也使得ROS能够进行高效的复用。
ROS以通信为核心,每个通信节点(rosnode)承担一定的工作,在核心节点rosmaster中注册,并通过rosmaster的中介来互相通信。节点的通信方式分为两种,一种是Topic,某一通信节点可以向rosmaster传递消息,由rosmaster广播给其他节点,而不关心是否有节点接收或回复该消息;另一种是service,某一通信节点向rosmaster提供某种服务,当其他节点需要该服务时,就与之进行通信,并即时将服务的结果传递回该节点(一问一答机制)。
ROS的功能就是通过丰富的节点来实现(类似于Java/Python中的库),提供定位、导航、地图、坐标系等关键功能的节点是ROS最重要的节点。
小组分工
我们小组所选题目为ROS-讯飞智能车,经过商议,我们计划先进行ROS重点源代码的分析,再根据进度加入对常用rosnode的分析,如定位、导航等。
其中,在ROS源代码分析阶段,我们又分为两小组,平行进行分析研究。@qzyj99 和@seaofbits 分析C++版本,@CD P R 和我分析Java版本。此外,由于@CD P R 和我是初次接触ROS,对其具体内容了解有限,因此我们计划先用一至两周的时间学习ROS网课,对系统有较为全面的了解之后,再进行源代码分析。
在对ROS源代码的重点部分分析完毕后,我们四人将再次分工,共同分析一至两个重要的rosnode,加强对ROS的认识,也为将来的使用和创新打下基础。
分析计划
按照教学计划,除去本篇综述之外,我们应当在10月4日—12月28日的13周内每周提交一次博客,记录分析结果。目前大致计划如下:
第1篇——观看古月居相关网课,根据学习内容写博文。
第2-8篇——分工合作,分析ROS源代码,写博文。
ROS_java包括以下几个package,总计约220个java文件:
我们将重点对internal、master和node进行阅读和分析。
第9-13篇——分工合作,研究分析一至两个重要的rosnode。经过小组成员商议,我们认为rosnode中的内容可能对数学功底要求较高,分析起来难度较大,因此目前还没有更详细的计划,具体内容要在ROS源代码分析接近尾声时再进行规划。
总结
本次课程是我第一次通过阅读源代码来学习一个全新的架构,也是我第一次接触ROS这样相对完整、标准的成体系的程序。对ROS的Java代码进行大致浏览后,虽然不懂的内容还是很多,但心中也隐约有了轮廓。希望通过本次ROS源代码的学习,能够对ROS有深刻的理解,进而掌握ROS的应用、rosnode的开发与创新,并在将来的学习和赛事中不断实践,真正提高自己的能力。



