Robot OS系统架构设计

·  阅读 824
Robot OS系统架构设计

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第20天,点击查看活动详情

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系统架构图:

image-20220422221156854.png

其中我们可以看到:

  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架构:

image-20220422221424532.png

其中Service与Core核心层对应Androi的framework层。

4. 硬件架构设计

image-20220422221649095.png

系统开发板是运行我们Robot OS的主板,通过网线与控制底盘运动的主板通信,扩展Robot OS的基础能力。

5. 模块设计

image-20220422221833956.png

我们要在系统framework层实现语音,图像,运动相关服务,以及控制信令下发的指令接收分发服务,并未这些能力封装对应的应用层SDK,是接入SDK的APP可以与我们提供的核心能力服务通信。

这里把每个核心能力单独设计为一个独立进程的好处:

1.隔离性:一个模块崩溃不影响另外模块;

2.开放性:所有运行在我们机器上的应用都可以通过SDK调用这些核心算法与运动服务;

3.安全性:提供的SDK只是IPC客户端,核心算法能力在OS层,防止被破解;

4.高性能:多个应用使用一个能力,该能力只在系统存在一份既可,重用提高性能。

6. 业务架构设计

image-20220422222440649.png

业务架构设计准则:

  1. 将业务平台化,相互独立;基础业务下沉,便于复用;

  2. 将核心业务和非核心业务分离

  3. 隔离不同类型业务

  4. 区分主流程和辅助流程

基于这些准则和OS提供的核心能力,可以快速开发基于特定场景的产品,快速迭代,快速交付。

7. 总结

本文介绍了Robot OS的核心能力及架构设计,包含硬件架构设计、业务架构设计,以及模块设计,并且介绍了Android系统整体架构分层。

分类:
Android
标签:
分类:
Android
标签:
收藏成功!
已添加到「」, 点击更改