前言
随着计算机硬件发展的摩尔效应,计算机的硬件发展到了一个新的高峰,计算机硬件成本越来越低和性能越来越高,它推动了大数据和云计算的发展。从而使得机器学习中的深度学习获得了巨大进步。另一方面,由于冷战的结束,科技发展变得缓慢,计算机的集成电路,系统结构,编程语言方面并没有多少突破。以忆阻器为主的多进制计算机和以量子特性为原理的量子计算机,生物和硅片混合的生物计算机,既可以存储又可以计算的拟态计算机等下一代计算机尚未取得决定性突破。
深度学习使得计算机在语音,图像方面取得了大量进步,这也使得我们建造智能机器人成为了可能。深度学习技术极大了提升了智能机器人的性能,但是智能机器人的性能依然堪忧,现在我们只是在智能机器人上开始了万里长征的第一步。
机器人框架
就像游戏引擎,我们计算机程序员并没有足够的时间和精力完全重新写一个专门用于控制机器人的软件,所以我们中有些人会开发出一些具有通用的固定的控制通信调用的软件用于帮助我们进行控制机器人。我们只需要熟悉这些软件便可以在此基础上进行机器人开发,而不必完全开发一个新的软件。这些软件的集合就是引擎或者框架。
现代软件编程越来越注重开源代码、通用代码的共享、使用,从而使得系统设计人员有更多的精力关注用户体验、功能实用性、和新idea的实现。
现在机器人操作系统有基于window、Linux、Android的系统。欧美有一些基于window的机器人操作系统,但是尚不开放。日本人制作了许多Android机器人操作系统,但具体相关情况未知,只有一些留学的研究生和博士聊到过。ROS机器人操作系统是基于Linux的系统,是近几年兴起的机器人操作系统。由斯坦福大学在自己的第一代机器人操作系统上简化优化而来的机器人操作系统,已经在开源社区进行的开源。
如果我们想要自己写一个软件来管理我们自己的机器人,可以从平行结构的多线程任务处理,网络通信,底层硬件管理等角度,使用C#,Java,Python等编程语言调用操作系统结构写一个普通软件系统来辅助我们进行控制机器人,感受一下大佬的装逼风范。(垃圾作者怕了C++的指针海)
ROS机器人操作系统
ROS机器人操作系统是一种后操作系统软件,它可以提供一些操作系统服务,即具备一部分操作系统功能的软件平台,比如硬件设备管理,进程间消息通信以及数据包收发管理。ROS是操作系统一种分布式进程结构的操作系统。各个节点组成一种图状结构,每一个节点的进程能接受,发布信息,或者提供一些持续服务,存储各种信息(例如传感器数据,控制命令,状态报告,等),程序操作(图像识别,路径规划,语音识别等)。(摘自ROS官网以及Wiki)
但是由于系统过于复杂,以及版本更新频繁,所以在bug报错中,变得以上异常玄学。所以很多公司以及开发小组,使用一个大的软件框架来包含ROS这个小的系统,仅仅使用ROS来进行单片机以及Slam导航的控制,而用大的框架中其他模块来控制其他功能模块(详情参考RIMA2),来避免ROS系统中发生的问题对其他功能模块的影响。
ROS框架本身是开源的,不过ROS框架下的软件包栈是属于各个开发者的许可证。ROS系统是BSD开源许可证。在ROS官网以及GitHub上可以找到大量开源软件包可以供我们使用。
但是由于开源社区的通病以及ROS版本跟随Linux版本而推进的快速更新,这些软件包没有可靠的维护以及不确定的版本适应性。虽然开源社区一直提倡及时跟进和提供可靠有效的开源代码,但是由于公益性质的无报酬开放源代码行为没有持续的推动力,程序员也需要工作来获得所需的生活资料。所以这些软件包大多数都包含有bug,我们只能尽可能使用它们好的部分,拼凑出我们的机器人。