机器人操作系统ROS

2014年我开始参与实验室的一个自然科学基金项目,从而接触了机器人操作系统(Robot Operating System, ROS),这真是个好东西,但在国内好像不是很普及。我很有可能是我们学校第一个使用ROS的人,还给院里做相关方向的同学做了简单的介绍。我的硕士毕业论文和机器人路径规划算法有关,用的软件平台就是ROS,为我的算法验证提供了极大的方便。

准确来讲,ROS是一个标准化的机器人软件框架,提供类似于操作系统的功能,比如硬件抽象、底层设备控制、进程间通信等。ROS将传感器、控制器、运动状态、规划目标、执行机构以及其他设备全部抽象成节点(Nodes),各个节点通过ROS的通信机制联系在一起,包括同步的通信方式——服务(Services),异步的通信方式——话题(Topics)。ROS是一个分布式架构,节点可以被独立地设计,在运行时松散地耦合。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知识也能够提高你的竞争力。

还是贴出付款码吧,没准真有人打赏呢!