机器人操作系统ROS

2014年我开始参与实验室的一个自然科学基金项目,从而接触了机器人操作系统(Robot Operating System, ROS),这真是个好东西,但在国内好像不是很普及。

我很有可能是我们学校第一个使用ROS的人,还给院里做相关方向的同学做了简单的介绍。我的硕士毕业论文和机器人路径规划算法有关,用的软件平台就是ROS,为我的算法验证提供了极大的方便。

准确来讲,ROS是一个标准化的机器人软件框架,是运行在操作系统上的一个库(library),提供类似于操作系统的功能,由此而得名。ROS的最主要目的是实现代码复用。我在做算法验证时,硬件驱动、基础算法都有现成的,我只是将全局路径规划器替换成我自己的算法,还能在图形化的调试界面上看到效果。总体来说,ROS有如下的优点:

  1. 有现成的硬件抽象和进程间通信机制,能将主要的精力放在算法实现上
  2. 硬件驱动、基础算法资源丰富,节省大量时间
  3. 同时支持运行效率高的C++和开发效率高的Python
  4. 包管理工具、图形化调试工具等一应俱全

也有很多不足:

  1. 对Ubuntu系统和软件库的版本依赖太重,经常出现编译错误
  2. bug很多,比如网络连接不稳定
  3. 网络上的软件包质量良莠不齐
  4. 学习门槛高,需掌握Linux、C++、Python、cmake等工具的使用

总体来看,ROS非常适合做算法验证,离工业应用还有很大的距离。国内高校的用户正在快速增加,生态也越来越好,是机器人方向必学的工具。ROS最好的入门材料是官方网站上的教程,进阶可以阅读ROS by Example这本书,网络上有pdf供下载。哪怕你以后不做机器人相关的方向,在使用过程中学习到的Linux/C++/Python知识也能够提高你的竞争力。