1. 背景
目前移动机器人已得到了大范围应用,无论是在大型商场还是银行都可以看到移动机器人身影。移动机器人主要是移动加决策,移动方式主要以轮式和足式,在商场见到的主要以轮式拟人的形态出现,足式的主要以动物形象为主,前段时间还看到了上海一个小区,机器人上绑着喇叭在小区跑,提示人们注意做好个人防范等。
目前在着手负责移动机器人操作系统相关的工作,系统在Android基础上搭载智能语音图像的AI能力,运动控制能力封装以及决策引擎。Robot OS整个架构设计围绕这些核心能力ß展开。
2. 系统设计准则
在和团队沟通出系统设计方案时,先定好设计准则,在我们上达成一致。
1.开放性:即整个Robot OS是开放的,而不是封闭的,允许安装第三方应用,所以要有以下能力:
1.有应用商店;
2.提供类似于小程序的开发平台;
3.AI与运动能力提供开放的接口和能力;
4.有平台化、生态化、商业化扩展能力。
2.扩展性:系统是可扩展,包括:
1.硬件扩展性;
2.软件系统扩展性;
3.场景扩展性;
3.灵活性:
1.配置灵活性;
2.场景组合灵活性;
3.流程可干预;
4.高性能:
1.交互延时;
2.CPU占用;
3.内存、网络、电量消耗
5.安全性:
1.防撞(日志可追溯);
2.防丢(远程定位、锁机);
3.防破解;
4.用户隐私保护;
6.高效性:
1.更新成本低;
2.开发成本低;
3.部署成本低;
4.调试成本。
目标达成共识后就开始对系统进行设计。
3. Android系统架构介绍
Android系统架构图:
其中我们可以看到:
1.Android 平台的基础是 Linux 内核。例如,Android Runtime (ART) 依靠 Linux 内核来执行底层功能,例如线程和低层内存管理。使用 Linux 内核可让 Android 利用主要安全功能,并且允许设备制造商为内核开发硬件驱动程序。
1.Android****专用驱动:Android Ashmen、Logger、Binder、Power Management、Low Memory Killer、PMEM(物理内存驱动)、USB Gadget、Ram Console、Time Device、Android Alarm
2.Android****设备驱动:Framebuff显示驱动、Event输入设备驱动、ALSA音频驱动、OSS音频驱动、v412摄像头驱动、MTD驱动、蓝牙驱动、WLAN设备驱动
2.硬件抽象层 (HAL) 提供标准接口,向更高级别的 Java API 框架展示设备硬件功能。HAL 包含多个库模块,其中每个模块都为特定类型的硬件组件实现一个接口,例如相机或蓝牙模块。当框架 API 要求访问设备硬件时,Android 系统将为该硬件组件加载库模块。
3.framework和应用层我们接触的比较多,容易理解,这里不做详细介绍。
在Android系统架构基础上封装出我们的Robot OS架构:
其中Service与Core核心层对应Androi的framework层。
4. 硬件架构设计
系统开发板是运行我们Robot OS的主板,通过网线与控制底盘运动的主板通信,扩展Robot OS的基础能力。
5. 模块设计
我们要在系统framework层实现语音,图像,运动相关服务,以及控制信令下发的指令接收分发服务,并未这些能力封装对应的应用层SDK,是接入SDK的APP可以与我们提供的核心能力服务通信。
这里把每个核心能力单独设计为一个独立进程的好处:
1.隔离性:一个模块崩溃不影响另外模块;
2.开放性:所有运行在我们机器上的应用都可以通过SDK调用这些核心算法与运动服务;
3.安全性:提供的SDK只是IPC客户端,核心算法能力在OS层,防止被破解;
4.高性能:多个应用使用一个能力,该能力只在系统存在一份既可,重用提高性能。
6. 业务架构设计
业务架构设计准则:
1.将业务平台化,相互独立;基础业务下沉,便于复用;
2.将核心业务和非核心业务分离
3.隔离不同类型业务
4.区分主流程和辅助流程
基于这些准则和OS提供的核心能力,可以快速开发基于特定场景的产品,快速迭代,快速交付。
7. 总结
本文介绍了Robot OS的核心能力及架构设计,包含硬件架构设计、业务架构设计,以及模块设计,并且介绍了Android系统整体架构分层。