玩嗨 OpenHarmony:基于 OpenHarmony 的智能助老服务机器人

玩嗨 OpenHarmony:基于 OpenHarmony 的智能助老服务机器人

原文引自电子发烧友论坛 HarmonyOS技术社区 《基于OpenHarmony的智能助老服务系统》

1. 项目的背景

针对人口老龄化日趋严重的背景,助老服务机器人应运而生,利用助老服务机器人 能够辅助照料老年人的生活起居,从而帮助青年人减轻照顾老人的压力,是在人口老龄 化背景下的探索与创新。

近年来,发达国家相继推出机器人产业的重要战略与政策,如德国的工业 4.0,日本的机器人战略,美国的先进制造伙伴计划等等。中国也制定了把机器人作为十个重点发展领域之一的《中国制造 2025》战略。机器人产业的快速兴起并获得显著进步,为服务机器人产业提供了稳定的发展基础平台。

服务机器人的稳步发展,提供了养老服务机器人与老年人交流、互动、陪伴等基本功能的关键技术基础,日本是较早研发养老服务机器人的国家之一,根据日本贸易工业部等组织预测,到 2035年,日本护理机器人的预期市场将超过 4000 亿日元(约 207 亿人民币),可以预见,未来生活陪伴型服务机器人、医疗护理型机器人将成为养老服务市场的生力军。

中国养老服务机器人产业方兴未艾,市场前景广阔。各国著名养老服务机器人企业纷纷看好中国养老服务机器人市场。日本大型产业用生产商安川电机已经盯上了中国养老服务机器人市场,确定与中国家电生产商美的集团合作与销售医疗护理机器人,研发具有高品质、高性能优势的适应中国老人特点的护理机器人。美国直观外科(Intuitive Surgical )器械公司的达芬奇手机机器人正在加速抢滩中国。中国内地和香港配置的 69 台达芬奇机器人,占 其在全球销售量比例的 2%;2016 年 11 月,中国大陆地区完成达芬奇收受 2017 例,手 术数量遥遥领先其他国家。2016-2030 年,中国失能老人将以年均 7.73%的速度从 2375 万增加到 6741 万人,随着养老服务机器人的亮相及其极具示范性的功能展示,失能老 人群体对医疗服务的需求将十分庞大。

2. 项目简介

2.1 项目描述

本项目将设计一款用于家用和养老机构的助老服务机器人。该服务机器人能实现在 养老机构内自主导航、语音识别、信息储存、人员搭载、物品运输、生命体征监测以及每日定时供药等日常看护工作。该系统核心辅以相应的软硬件设计而成的,内置强大的数据库存储查询系统,方便医护人员实时查询每位老人的基本信息和健康状况。除此之外,机器人体内设计有自动供药装置,可实现自动为老人提供准确配药、按时出药、提醒出药的三大服务。这一功能在降低医护人员工作强度的同时有效减少人员间的接触, 还能极大程度降低传染性疾病的传染风险。同时,此机器人还有心理咨询和心理健康检测的功能。团队在搜集开源数据库并建立子的数据库后,把心理咨询、老年生活照料作为对话服务的主题内容,建立一个面向将抗服务的“对话机器人助理”。

先看照片和视频:

2.2 机器人机械结构设计

助老服务机器人主要应用于家庭环境中,要能实现正常的基本功能,能够实现自主 移动、灵活地转向等。机器人能完成这些任务不仅需要很好的技术支持,更重要的是良好的机械结构,不仅如此,机械结构的设计也决定了一个产品能否实现或超预期实现预 设功能,因为一切的上层软硬件都是基于机械结构本体这一前提来完成的。本篇论文总体机械结构设计所使用的 3D 建模软件是 SolidWorks 2020,具有强大的作图功能,有很多的组件。该软件操作比较简单,功能能够满足绝大多数的机械结构设计需要,操作页面也符合大部分人的习惯,下图便是助老服务机器人的总体机械结构设计。

总体机械结构主要包含了两个主动轮和一个从动轮 (万向轮) 、激光雷达、六自由 度机械臂、RGBD 深度相机和机器人底盘驱动板等,通过底盘固定连接各个部分,从而使其配合工作,达到助老服务机器人的设计要求。

2.3 系统架构图设计

3. 项目可行性研究

助老服务机器人最主要的两大核心是底盘和路径规划。其中,底盘的设计,我们选择了 一体化伺服轮毂,它取代了传统的电机+减速机+编码器+轮胎+车轮的多部件方案,单独 的轮毂既是行走车轮又是伺服电机,应用在家庭助老服务机器人上可以促使机器人更 好、更快的完成所下达的任务。伺服轮毂的优点在于没有减速机,减小了轮毂占用空间, 而且安装起来较为方便,最重要的是可以直接消除减速机带来的噪声。

首先,建立出机器人运动时的底盘车轮运动模型,该模型用X-Y 坐标系建立,如下图所示:

在描述图中定义之前,要清楚航向角的概念,坐标系中的航向角的表示方式是轮子的质心速度与 X 轴的夹角。现在将上图中的描述定义如下:

  • L:两轮之间的距离
  • r:车轮转弯的半径
  • θ1:车轮轴心连线与 X 轴的夹角
  • θ3:相邻时刻两轮子航向角的增量
  • θ1 = θ2 = θ3

假如我们假设初始状态下的离零点近的车轮为左轮,另一个车轮为右轮,并做如下定义:

  • A Xl, Yl :左轮的坐标
  • B Xr, Yr :右轮的坐标
  • M x, y :两轮轴线的中点
  • ω:车轮的角速度,ω1 为左轮角速度,ω2 为右轮角速度,顺时针为正
  • V:车轮的线速度,VA为左轮线速度,VB为右轮线速度
  • R:两个车轮的半径
  • θ:X 轴单位向量旋转的角度,逆时针旋转为正方向

那么根据几何三角关系可以得出:

定义 B 点的线速度为VB,β为 X 轴单位向量旋转β角度后跟向量BC平行所得。那么再次 根据几何关系可以得出:

定义 A 点的线速度为VA,η为 X 轴单位向量旋转η角度后跟向量AD平行所得,同理可得出:

并且也可以得出 M(x,y)点的速度值为:

假设移动机器人移动到 t 时刻时,左轮的角速度为ωt1, 右轮的角速度为ωt2,那么有 t 时刻 M 的线速度为:

4.  机器人路径规划研究

4.1 路径规划算法研究与分析

路径规划技术是移动机器人的核心问题,也是移动机器人自己实现自主行走的必要条件和前提,主要研究如何使移动机器人在不发生碰撞的情况下从起始位置移动到指定 的目标位置。为了安全高效地到达目标位置,移动机器人需要一种高效的路径规划算法, 因为所生成的路径质量对于机器人的应用和移动影响很大。基于移动机器人对环境理解 情况可以将路径规划算法划分为三个类型:基于环境的路径规划算法、基于地图知识的 路径规划算法和基于完备性的路径规划算法,如下图所示:

移动机器人要想移动到一个指定的目标点,主要依靠的是路径规划技术。一般而言, 机器人的自动规划路径的导航规划层一共可以分为行为执行层、全局路径规划层和本地 路径规划层三层。其中全局规划路径相对于其他两种来说效果较好,结果较为准确,当机器人环境信 息完全已知的情况下,常用该方法规划路径。全局路径规划有明显的不足之处:只有在 确认了机器人所在环境的信息的前提下,它才能找到最理想的路线,如果所处环境发生 了变动,全局路径规划是无法做到准确规划路径的,得到的结果虽然全局性强,但是有 较差的噪声鲁棒性和较高的环境模型的误差。有一点值得说明,由于机器人在全局路径 规划下的路径是预先确定好的,机器人是不需要具备很优秀的实时计算能力的。

相比于全局路径规划来讲,局部路径规划对于外部环境条件并不依赖,即使机器人 完全不知道所处的外部环境,局部路径规划也能很好地工作。因此,对于它来说更重要 的是考虑的是机器人当前的环境数据信息,通过高实时运算能力来提高机器人的对障碍 物的躲避能力。这种规划在工作时要收集所处外界环境的信息数据,同时更新环境模型 的动态信息,所以机器人系统必须要具备高速的信息运算能力以及处理数据信息的能力。尽管如此,相比于全局路径规划的完全已知环境的条件,局部路径规划在该方面还

是处于劣势,无法使规划结果达到最佳,甚至有可能无法规划出完整的路径,但优点是 对环境模型的误差和噪声鲁棒性较高。

一般来讲,适用于全局路径规划的方法是同时也适用于局部路径规划,但如果想将 局部路径规划的方法应用到全局路径规划上,还需要进一步的改进,两者的区别如表 4 所示。两者也可以一起工作,这会使路径规划更加准确,更加有效。

4.2 Dijkstra 算法

在全局路径规划算法中,Dijkstra 算法和 A*算法比较成熟和高效,从而被用户广 泛使用。下面首先介绍 Dijkstra 算法。

Dijkstra 算法是由荷兰计算机科学家 E.W.Dijkstra 于 1956 年提出,因此也叫迪 杰斯特拉算法,在寻找机器人移动到所有其他节点的路径中寻找一个节点的最短路径时 常用到这个算法。Dijkstra 算法不仅在最短路径算法中非常有代表性,还是贪心算法 中的一种。它可以得到移动机器人从一个节点到所有其他点的最短路径。该算法主要是 从起点处开始向外扩延,一直扩延到最终目标点为止,并通过权重边与节点的关系构成 完整的一个路径网络图。该算法有很多变体,最原始的 Dijkstra 算法用于寻找两个顶 点之间的最短路径,但是现在主要用于生成最短路径树,通过将起始顶点固定住,找到 一个节点到图中所有其他节点的最短路径的方法。除了移动机器人路径规划外,该算法 还常用作路由算法或其他图形搜索算法的子模块之一。在该算法中,G 是一个带权重的有向图,s 是源点(起点),v 代表 G 中所有顶点的 集合,(u,v)代表顶点 u 到 V 点的路径连接,w(u,v)代表顶点 u 和 v 点之间的非负 权重,其中,边权重表示复杂网络中的边权重用于表示边两端节点之间相互关系的强度,在无权网络中,每条边代表的节点之间的关系是一样的。算法是通过为每个顶点 u 保留 当前为止找到的从点 s 到点 v 的最短的路径来工作。起始时,起点 s 的路径权重值被赋 值为零,即 d[s] = 0。假如存在着一个边为(s,u),能够直接到达顶点 u,则要将 w (s,u)赋给 d[v],同时其他所有 s 不能径直到达的顶点的线路路径长度被表示为无穷 大,这表示了当前到达这些顶点的路径是无法获得的。当 Dijkstra 算法结束后,用 d[v] 存储从 s 到 u 的最短路径,若是路径不存在,则 d[v]=∞[28]。

4.3 A*算法

另外一种算法是由 Dijkstra 算法发展而来,被称为 A算法,也叫 A-Star 算法, 是在静态路网中求解最短路径最有效的一种直接搜索方法。在寻找最佳路径算法中通常 要考虑选择路径的成本,而这种算法与寻找最优树的算法类似,即从可以通过的路径中 找到那条路径成本最便宜的那一条。一般而言在寻路时每条路径的路径成本已经是固定 了的,但是当使用 A算法时,沿着不同路径的路径成本是启发式寻路的本质。值得一 提的是,同一个节点的路径成本不一定相同。通过这种寻路方式,首先将实际问题中的 元素抽象的表示为矩阵等规则图形,这种实际的元素不仅可以是在路径规划时出现的障 碍物,也可以是起点或者目标点所处的位置。通过这种方式模拟寻路过程的基本思想是 将起点位置作为中点,周围相邻的八个点用指针指向它,与此同时在周围点内选择最佳 的路径点,并将其他没有指针关系的周围点通过指针指向它,然后以此点作为中心向外 寻路,如果在寻路的过程发现周围点中有目标点,则用指针连接起来,通过指针的一一 连接,最后通输出这些点就是要寻找的路径。

最初研究时,为了提高算法的运行效率对该算法做了一些改进,这个改进了的算法 核心思想是将寻找路径问题分为了两种情况进行搜索,即在最初搜索路径的时候,A* 算法将默认使用起点和终点直线的方向来扩展子目标点。当遇到障碍物时,会立即启动 A算法,开始路径的规划。与此同时,A算法会搜索并查找从目标点到起点的路径。与 其他算法不同的是,从目标点和起点寻找路径时,放弃了邻居扩展规则,直接进行搜索, 结果会变得较为理想化,提高了该算法的效率。该算法适用于障碍物数量少而且地图总 体尺度大的情况,一旦用在障碍物数量很多并且地图复杂程度高时,该算法的表现便不 尽人意。随着时间推移,为了能使 A算法适用于一个城市面积大小的地图,提出了分 层机制的想法。顾名思义,该方法的思想是:将一个城市大小的面积用分层机制分成若 干层,其次通过 A算法分别对划分完的每一层地图进行单独的路径规划,然后用递归的思想进行排列,从而找到两点之间最合适的路径。这种方法不仅降低了计算的规模, 还有效地提高了算法的运行效率,但是也存在一些缺陷,由于扩展的规则路径有很大的 限制,无法对相邻的路径点进行优化,这就导致了最后结果的路径质量变差。

4.4 Dijkstra 算法与 A*算法的比较

Dijkstra 算法与 A*算法都是解决最短路径问题的常用算法,下面列出了两种算法不同特点:

  • Dijkstra 算法是贪心算法中的一种,计算的是从源点到所有其他点最短路径的长度,而 A*算法则是关注点到点的最短路径(包括具体的路径)。
  • Dijkstra 算法建立在更抽象的图论层次上,A*算法可以更容易地用于游戏地图寻径等应用。
  • Dijkstra 算法是一种发散搜索,它本质是广度优先搜索,因此时间复杂度和空间复杂度相对较高。A*算法是一种深度优先算法,对于路径上的点,不仅记录点到原点的路径成本,还计算从当前点到目标点的预期路径成本。
  • 如果只是比较路径的长度而不需要特定的路径时, Dijkstra 算法是更好的选择,有着较高的准确度。而且 A*算法在目标点较多时会带来繁琐的函数和大量重复的数据。

5. SLAM 定位与地图构建

5.1 SLAM 技术探讨

现如今比较成熟的 SLAM (编者注:Simultaneous localization and mapping 同步定位与地图构建的英文缩写)技术主要分为两种:激光 SLAM(Lidar SLAM)和视觉 SLAM(VisualSLAM)。激光 SLAM 与视觉 SLAM 的区别在于采用的传感器,前者使用的是激光 雷达,而后者使用的是深度相机或深度摄像头。

一直以来,激光 SLAM 与视觉 SLAM 的性能优劣都有很大的争议,有些人喜欢视觉定 位与建图,有些人喜欢激光雷达定位与建图,下面如表 5列出了两者的特点以及优缺点:

根据上表也能看出,在路径规划方面采用较多的是激光 SLAM 技术。相比于视觉 SLAM 来讲,它产生的误差少,而且发展较快、比较成熟,能够很好地应用到大部分的真实环 境下,也是由于激光 SLAM 是目前性能最稳定的定位导航方法,这就促使了它理所应当 的成为了当代的主流。激光雷达分为室内使用与室外使用,当激光雷达用于室内的时候, 构建地图一般是基于二维平面;当激光雷达用于室外的时候,构建地图一般是基于三维空间。

激光雷达建图是一个反复的过程,在移动机器人运动过程中,首先会通过IMU(编者注:Inertial measurement unit 惯性测量单元的英文缩写)结合所对应的编码器获得里程计的信息,从而估计机器人的运动模型,然 后通过激光雷达中获得的传感器数据产生观测模型,经过观测模型对运动模型的比对和 矫正,从而得到移动机器人的真实环境中的精确定位,最后结合数据构建出栅格地图, 以此反复若干次,最终将会构建出整个真实地图。

5.2 激光 SLAM 流程介绍
  • 里程计标定
    • 机械标称值不代表实际值,实际误差可能较大;
    • 里程计的精度对于机器人定位和建图至关重要;
  • 激光雷达运动畸变去除
    • 激光雷达采集一帧的数据需要时间,机器人在这段时间内的运动会导致畸变;
    • 运动畸变会影响匹配精度;
  • 帧间匹配–核心部分
    • ICP: 迭代最近邻、PI-ICP 点到线迭代最近邻、NICP 法向量迭代最近邻;
    • CSM(编者注:Canonical Scan Matcher 标准扫描匹配的英文缩写): 暴力迭代;
    • NDT: Normal Distance Transform;
    • Optimization-Based;
    • Feature-Based;从视觉得到启发,LOAM 系列。
  • 回环检测
  • 后端优化
    • 高斯牛顿
    • Levenberg-Marquardt  (LM)
  • 输入输出
  • 输入:(1)IMU数据;(2)里程计数据;(3)2D激光雷达数据;
  • 输出:(1)占用栅格地图 2D SLAM;(2)点云地图 3D SLAM;(3)机器人的轨迹或者位置图
5.3 激光雷达的选择

家庭助老服务机器人用到的激光雷达是 LIDAR RPLIDAR-A1,一款思岚科技的产品, 性能可以满足室内机器人的 SLAM 技术要求且性价比高,如下图所示:

该激光雷达采用的是激光三角测距技术,其原理是激光信号以一定的入射角照射到 被测物体表面后产生反射,反射光斑经过光学透镜在 CCD 传感器上成像。当被测物体沿 激光方向发生移动时,CCD 上的光斑产生移动,可由光斑移动距离计算出被测物体与基 线的距离值。由入射光、反射光构成一个三角形,基于三角关系,可计算出目标物体与 雷达的相对方位角度值和距离值,如下图所示。

6. 本方案的应用价值

我国总人口数不断增长,但 16-59 岁劳动年龄人口数量却呈现下滑态势,2019 年 我国劳动年龄人口数量减少至 8.96 万亿人。持续下跌的劳动人口总数,使得我国劳动 成本开始攀升。因此,增加服务机器人在多领域中的应用以替代人工正成为当前我国较 新的发展趋势。

本文介绍的助老服务机器人已具有定位与地图构建(SLAM)、路径规划与自主导航 等功能,但在语音识别、人机交互等方面还有较大的进步空间。当前很多的助老服务机 器人产品还处于比较“被动”的阶段,只能简单地作为一款辅助工具来运用。未来,随 着医疗机器人与人工智能、脑机交互、5G 网络、AR/VR、大数据等前沿技术深入融合, 有望提升机器人与老年人之间的交互水平,并对数据、物体和环境等有更精准的感知, 甚至进一步拓展为“医疗+助老”机器人。目前,相关领域的助老服务机器人产品基本都比较“庞大”和“笨重”,主要应用 于一些比较宏观的场景。而我们此次设计的机器人体积较小,运行噪音几乎没有,且设 计成本较低,更容易被普通家庭所接受,进一步实现了服务机器人的小型化、柔性化和 大众化。同时,我也希望未来能够进一步完善其功能,早日投入商业使用,真正为老年人生活提供帮助。

写在最后

我们最近正带着大家玩嗨OpenHarmony。如果你有好玩的东东,欢迎投稿,让我们一起嗨起来!有点子,有想法,有Demo,立刻联系我们:

合作邮箱:zzliang@atomsource.org