项目背景
基于中国机器人及人工智能大赛助老类服务机器人试题,为满足家庭对家居环境检测及家居智能化控制的需要,设计一款以智能家居为平台搭建的助老服务机器人。在设计及产品调试的过程中,有效地提高学生的动手操作能力、综合能力及创新能力。
在中国,2020年我国65岁以上老龄人口达到1.91亿,占总人口比重为13.5%,全球每4个老年人中就有一个中国人。预计2057年中国65岁以上人口达4.25亿人的峰值,占总人口比重32.9%-37.6%。同时年轻人面对生活及工作的压力,能够陪伴和照顾老人的时间很少,因此,助老服务机器人在家居智能控制和安全监护中扮演着越来越重要的角色。
对于已经相当成熟的工业机器人来说,服务机器人是近年来的机器人学研究应用的一个热门领城,具有自主移动能力的助老服务机器人,可以辅助独居老人完成一些操作和安全监护,使得老年人的生活更加安全和便利。
总体设计
1.硬件设计
本机器人控制器主机采用Mini Computer,我们对Raspberry Pi 4B开发板也进行了部分功能实践,可以根据性能需求、功耗、性价比等因素综合考虑选择合适的主机。控制电机的动板采用ArduinoMega2560,采用USB接口的核心电路板,搭载ATmega2560芯片,具有54路数字输入输出和大量IO口,方便二次拓展开发。
图2-1 硬件模块总览
2.系统设计
助老服务机器人总体系统分为三层,如图2-2所示。
图2-2 总体系统设计框架
硬件层,机器人采用麦克纳姆轮三轮机械模型平台,Intel控制器与激光雷达和深度相机串口通信,完成环境采集相关工作;Arduino开发板与IMU、里程计和电机串口通信完成运动控制相关工作。硬件层实时进行采集、提取、传输和控制等处理,接收到由Arduino控制器直接传入计算机内的里程计、IMU等信息数据,处理和完成对整个导航网络的监控算法程序。Arduino控制器还会实时根据由来自主机控制器传发回来的电机速度数据信息,来快速生成控制驱动平台电机的运动PWM波控制信号。并且能够实现对IMU数据、编码器数据等一些硬件数据信息进行分析以及处理。
驱动层,包含激光雷达驱动、相机驱动、IMU传感器驱动单元、电机控制驱动等。对一些传感器模块中的传感器原始硬件数据进行处理,保持传感器与传感器上位机系统之间稳定的数据通信以及数据实时传输。
处理中心层,工作主要包括感器信息实时采集、导航算法实时运行分析及电机控制。其中导航定位算法,主要在运行在ROS系统中。在ROS导航中,在建图、定位和路径规划这三个核心方面主要进行导航算法进行优化。机器人导航算法主要在控制器Intel模块中实现运行,Arduino实现控制机器人的电机运动。
三、 功能设计
该助老服务机器人与物联网智能家居实现互联互通,可实时对家中多个房间的室内环境状况进行监测,并可自由控制或人机语音交互执行命令,调整家居环境舒适情况,解决了老年人对家居环境控制不便的实际需求。
图3-1 整体功能结构图
在客厅,机器人可自主检测室外光照度情况,语音播报光照度数值,根据光照度数据,进行分析判断,并自主对室内灯光与窗帘实现控制。让用户在居家生活中,不仅可以在光照过强时进行遮光调整,以免强光刺激眼睛形成光污染;光照适中时,打开窗帘关闭电灯,节约电能;光源较暗时及时补充光源。控制流程图见下图3-2所示
图 客3-2厅控制流程图
在卧室,此物联网模块具备环境值检测传感器,可自主检测卧室内温湿度情况,语音播报温湿度数值。检测到温湿度值过高或过低时,机器人自主对卧室内空调/风扇实现控制,保持卧室舒适的生活环境。卧室智能控制流程图如图3-3所示。
图3-3 卧室控制流程图
在厨房,机器人能够自主检测室内二氧化碳情况,语音播报二氧化碳浓度。物联网模块可与烟雾报警器和水位探测器协同工作,当检测到烟雾或漏水时,机器人主动对厨房内电磁阀实现控制,避免危险发生和带来不必要的财产损失。厨房控制流程图如图3-4所示。
图3-4 厨房控制流程图
此外,机器人使用ROS操作系统完成任务,能够高效快速开展工作。能够完整的构建出室内地图,实现语音命令及语音对话功能,未来可以不断增加机器人学习能力,通过口令帮助老年人实现更多的服务,给老年人生活带来更多方便。
在我国,意外跌倒已成为65岁以上老年人意外伤害死亡的“头号杀手”,此机器人具有老人的跌倒智能监护功能,如下图3-5所示,在检测到有老人跌倒后,即刻捕捉实时照片,给家人发送手机短信通知和照片告知家人,亦可接入社区服务中心推送求救短信。
伴随着垃圾分类在各地的落地普及,老年群体把生活垃圾弄混弄错的情况时有发生,老年人通过机器人图像识别功能,可以获得各类垃圾的处理建议,方便老年人积极参与垃圾分类,共同建设美丽家园。
图3-5 智能图像识别流程图
此外助老机器人为居家养老提供智能、舒适的生活照护,可广泛应用于养老院和家庭中,能够陪伴老人和控制智能家居,同时最大化地保障老人的安全。
四、 核心技术
助老服务机器人的工作空间范围与老年人的活动范围是一致的。因此,机器人设计过程中,需要考虑机器人在室内各种典型复杂情况下运行的灵活性;同时还需要在机器人的功耗、电池续航能力、负载能力、稳定性和机器人重量等指标之间进行平衡。在大多数任务场景中,机器人需要交互的过程中自主地完成移动和执行命令,因此避免碰撞老人,保障其运行过程中的安全性也显得尤为重要。
同时,此机器人结合人工智能技术,基于Paddle Detection目标检测,实现老人姿态识别,并通过云短信平台发送求救短信;为协助老人正确处理生活分类,基于Paddle Clas图片分类技术,可通过图片识别出垃圾的处理建议,对环境保护有一定的积极影响。
1.移动平台
底盘是机器人传感器和机器人主机的主要载体,也是移动机器人的基本形式。移动机器人通常可以采用轮式和足式进行移动,通过电机驱动轮子移动的机器人即轮式机器人,通过仿生式的多足关节移动的机器人即多足机器人。由于多足机器人控制非常复杂,轮式机器人可以满足家用机器人的应用需求,也是本助老服务机器人底盘的最佳选择。
轮式机器人底盘按照转向方式的不同,可以分为两轮差速模型、四轮差速模型、阿克曼模型、全向模型等,两轮差速模型、四轮差速模型、阿克曼模型也称为运动受约束模型,全向模型为运动不受约束模型。
考虑家居环境,本机器人采用全向模型中的滚柱90°型麦克纳姆轮,如图4-1所示,在固定轮子边缘方向位置上,小辊子按与固定该固定车轮中轴线成一个90°的安装方向来做依次安装。当麦克纳姆轮滚动时,小辊子还会产生的一个侧轴向的旋转运动,在一个二维平面内自动完成车轮全方位的快速移动。
图4-1滚柱90°型麦克纳姆轮
三轮全向轮的结构设计,需要三个轮子每两个轮子之间相差120度,车轮的安装方式决定了运动学模型。利用运动学分析,可以得出机器人运动过程中各类参数的变化规律和相互之间的关系,对这些参数进行控制,才能使机器人在我们的控制下进行移动。一般的安装结构都是如下图4-2所示安装方式,底盘可以是三角形也可以是圆形,如下图4-3所示。
图4-2安装结构设计图 图4-3 圆形底盘图
2.ROS导航
助老服务机器人能够实现自主移动,多点导航与路径规划是关键技术。ROS导航框架如图4-4所示,在Navigation框架中,move_base负责机器人的运动规划,通过接收map_server的全局地图和感知模块的激光雷达点信息进行运动规划。机器人躲避障碍物,偏离最优路径,由本地规划器完成,本地规划器实时规划避障路径,还会努力让机器人沿着全局路径运动,也就是规划机器人每时每刻的运动速度,速度通过cmd_vel发送给底盘,底盘中的驱动就会控制机器人的电机按照某一速度运动,从而带动机器人向目标前进。
amcl是基于雷达的全新定位算法,就像是手机的GPS功能一样,持续为导航提供机器人的位姿信息,里程计也可以定位,但是有累积误差,因此两者的结合会达到更好的效果。
图4-4 ROS导航框架
3.物联网控制
LoRa是semtech公司开发的一种低功耗局域网无线标准,其名称“LoRa”是远距离无线电(LongRangeRadio),它最大特点就是在同样的功耗条件下比其他无线方式传播的距离更远,实现了低功耗和远距离的统一,它在同样的功耗下比传统的无线射频通信距离扩大3-5倍。
物联网Lora传感器、控制盒,采用STM32单片机控制,例如DHT11模块可测得温湿度数据,通过STM32模数转换器,将模拟信号转为数字信号,再将结果通过Lora串口模块传给ROS机器人操作系统,通过对环境监测结果的分析,将结果转发给对应地址的物联网控制盒,STM32接收到控制指令,控制对应的继电器闭合,从而达到家电控制的效果,智能家居控制模式如图4-5所示。
图4-5 智能家居控制模式图
4.多点导航与物联网联调
对于多个目标点的导航,需要将导航目标点的信息在一次导航结束之后,自动发布给move_base节点。在本设计中,采用Python语言编写了一个程序用于存储目标点的信息,并用rosrun命令来运行它。如图4-6为该程序的流程图。在程序一开始,用户将所有目标点的位置信息与航向四元数信息输入程序。位置信息指的是目标点的坐标,航向四元数信息指的是机器人在目标点车头朝向的方向。配置好目标点的导航信息后,程序开始等待订阅move_base节点信息,延时60秒之后若还没有连接上,则在终端向用户显示“can not connect to movd_base!”如成功连接到,则开始等待用户通过rviz界面给定机器人初始位姿信息,至此完成初始化部分的工作。
图4-6 多点导航初始化流程图
获得初始位置姿态信息之后,机器人便开始前往之前设定好的第i个目标点,与此同时,程序开始通过计算下位机反馈的里程计信息,实时判断是否到达目标点,如图4-7为多点导航流程图,当机器人成功到达目标点的范围之内,IOT_net节点接收到IOT_cmd话题消息,通过无线串口与物联网控制盒建立通信,获取环境检测值并发送控制命令,并通过speaker节点进行语音播报,节点关系如图4-8所示。
图4-7 多点导航流程图
图4-8 物联网联调关系图
助老服务机器人能够实现客厅、卧室、厨房的巡检,具体功能实现见表4-1所示,运行效果如图4-9所示。
表4-1 物联网功能表
场景 | 操作 | 传感器 | |
---|---|---|---|
客厅 | 光照过亮 | 关闭窗帘,关闭电灯 | 光照传感器 |
光照适中 | 打开窗帘,关闭电灯 | ||
光照过暗 | 关闭窗帘,打开电灯 | ||
卧室 | 温湿度过高 | 打开风扇 | 温湿度传感器 |
温湿度适中 | 关闭风扇 | ||
厨房 | 二氧化碳检测 | 播报二氧化碳浓度 | 气体传感器 |
烟雾异常 | 关闭燃气电磁阀 | 烟雾传感器 | |
浸水异常 | 关闭自来水带你此法 | 水位传感器 |
图4-9 运行效果图
5.语音交互
语音唤醒通过Snowboy实现,Snowboy采用先进的深度神经网络技术,可以学习并识别不同的声音模板;与此同时,它还拥有复杂的音频处理技术,也可以在没有网络连接的情况下进行工作。通过训练唤醒词,可以精准识别到主人的唤醒。
语音合成(TTS)和语音识别(ASR)接入百度或者讯飞的AI开放平台,可以根据资费和效果自由选择,通过Api_Key、Secrect_Key、Token即可调用服务。
图4-10 科大讯飞控制平台 图4-11 百度智能控制平台
语音交互使用图灵AI开放平台,图灵机器人开放平台是北京光年无限科技旗下的个性化人工智能机器人开放平台。通过图灵机器人开放平台,软硬件产品开发者可快速为自己的产品接入一款具备个性化身份属性特征、满足不同场景多轮对话及上下文对话的人工智能机器人,实现产品的对话式交互。
图4-12 图灵机器人开放平台后台
6.图像识别技术
助老服务机器人图像识别基于人工智能深度学习技术,对于背景复杂的实际场景中,处理能力远高于传统的计算机视觉处理,很多问题都得到比较好的解决。
通过人工智能对图像进行处理的算法有很多,其中最为经典的为卷积神经网络,对原始图像不停卷积运算,充分提取特征,最后输出想要的结果,这类方法经过实践的验证取得了非常不错的精度表现,在目前的很多硬件上,都能够跑出实时的效果。
图4-13 卷积神经网络图
6.1PaddleClas****图像分类
分类(Classification)任务是对整张图片进行分类。
垃圾分类就是让计算机对于指定的图片内容识别并进行归类,如果这张图片药品,把图片输入到模型后,期望输出的就是药品这个index,然后在label中映射出返回结果。分类任务是对整张图片的归类,在图片输入前,引导用户将生活垃圾放入待检测区域,通过opencv对图片进行裁剪预处理,如下图4-14所示。
图4-14 垃圾分类场景图
深度学习需要大量数据的支撑,搭建好的模型,通过大量的数据学习之后,才会拥有强大的泛化能力。模型对数据集的所有图片不停地学习,收敛到一定程度之后,输入一张全新的图片(不在数据集内),也会输出一个相对正确的结果。数据集包含的场景越多,背景越复杂,最终实现的效果会越好,数据集资源如图4-15所示。
图4-15 药品类数据集
Mobilenet是由Google公司创造的网络系列,目前已经发布至V3版本,每一次版本更新都是在前一次网络上的优化修改。Mobilenet主打的是轻量级网络,也就说网络参数量较少,执行速度较快,也更容易部署到终端设备上。在移动端和嵌入式设备上也有了很多的应用。MobilenetV3的主体部分大量使用了深度可分离卷积,如图4-15所示,这种卷积结构极大地减少了参数量,对于轻量级的网络是非常有利。
图4-15 深度可分离卷积结构
MobilenetV3中使用了Hardswish激活函数,代替了Swish激活。
从公式上来看,Hardswish代替了指数函数,从而降低了计算的成本,使模型轻量化。
图4-16 Swish和Hardswish
做出函数图像和梯度图像如图4-16所示,可以看出原函数非常接近。在梯度图上Hardswish存在突变,这对于训练是不利的,而swish梯度变化平滑。也就是说Hardswish加快了运算速度,但是不利于提高精度。Mobilenet V3经过多次实验,发现Hardswish在更深的网络中精度损失较小,最终选用在网络的前半部分使用了Relu激活,在深层网络中使用了Hardswish激活。
PaddleClas是依赖于paddle的图像分类套件,其中集成了很多分类的典型网络,我们使用PaddleClas中的MobilenetV3训练垃圾分类任务,编写好配置文件后,执行:
训练命令:
python tools /train.py
-c ./ MobileNetV3_large_x1_0.yaml
预测命令:
python tools/infer.py Infer.infer_
-o imgs=./188.jpg
-o Global.pretrained_model=./output/MobileNetV3_large_x1_0/best_model
6.2PaddleDetection****跌倒监护
检测(Detection)任务相对于分类任务,需要精确地对图像中的目标物体定位,一般用矩形框确定目标位置。如上图,一张图片中,有狗,有自行车,有汽车,对于检测任务,就需要精确地框出他们的位置,并判别类别。检测任务是对图像中的物体进行特征识别,相比分类任务难度有所提升,也是我们经常会有的需求,需要精确判定特征物体在画面中的位置,例如行人检测,人脸检测等等。
YOLOv3是2018年提出的目标检测算法,取得了非常优秀的效果。直至今天,YOLO系列仍是当前目标检测的主流算法,诞生了一系列的变体,如YOLOv4,YOLOv5,YOLOX等。作为目标检测算法,相比分类算法要复杂一些,除了需要输出类别以外,还需要对特征物体进行定位。下面图4-17是YOLOv3的具体实现过程。
图4-17 YOLOv3目标检测实现过程图
YOLOv3是anchorbased算法,也就说预先在图片上生成很多的先验框,然后我通过神经网络去判断放的框内有没有我想要的特征物体,如果有特征物体,就对先验框的中心和长和宽进行调整,最终框出物体的长和宽。YOLOv3整体网络框架如下图4-18所示
图4-18 YOLOv3整体网络框架图
使用yolov3_mobilenet_v3_large_ssld_270e_voc.yml配置进行训练。在PaddleDetection2.0中,模块化做的更好,可以可自由修改覆盖各模块配置,进行自由组合。
执行训练:执行python tools/train.py命令开始进行训练,需要指定训练配置文件路径-c yolov3_mobilenet_v3_large_ssld_270e_voc.yml
模型评估:执行python-utools/eval.py
被评估的模型路径-o weights=./best_model.pdparams
模型预测:执行tools/infer.py在output文件夹下会生成预测结果。
· 预测配置文件-c yolov3_mobilenet_v3_large_ssld_270e_voc.yml;
· 预测用到的模型-oweights=./best_model.pdparams;
· 预测的图像路径–infer_img=/home/aistudio/work/people_930.jpg。
摔倒检测通过使用PaddleDetection2.0中的YOLOv3(主干网络为mobilenetv3的轻量化模型),通过几行代码就能实现跌倒的目标检测,后期可部署用于监控医院、疗养院甚至家里等,在树莓派4B和Mini主机部署后,识别速度均可控制在300ms以内,mAP值达到80.28%
图4-19 跌倒检测效果图
6.3Paddle Lite****部署
Paddle提供了PaddleInference、PaddleServing、Paddle-Lite多种部署形式,支持服务端、移动端、嵌入式等多种平台,提供了完善的Python和C++部署方案。本机器人通过Paddle-Lite实现本地部署,在断网的情况下仍可识别老人跌倒检测和垃圾分类。
部署流程如下图4-20所示,将训练得到的通过tools/export_model.py保存为静态部署模型,通过离线优化工具(OPT)进一步优化模型,检测指定硬件上的支持情况并生成*.nb格式的模型文件,可以根据硬件生成X86或者arm平台模型文件,通过C++/PythonAPI将推理过程植入ROS机器人操作系统,最后根据需求不断调试与性能优化。
图4-20 移动端部署流程
7.短信推送
Twilio是一个专注通讯服务的开放PaaS平台、是一个提供技术能力的网站,也是美国较为知名的云计算通讯服务类的初创企业。
Twilio通过将复杂的底层通信功能打包成API并对外开放,让web、桌面及移动应用可以方便地嵌入短信、语音及VoIP功能,从而实现云通信的功能,云平台后台管理如图4-21所示。
图4-21 Twilio后台
未来,可以不断改进升级改进,实现语音呼救与视频通话功能,开发移动端App或者小程序,老人可以通过语音口令与家人取得联系,搭建起老年人的云陪伴桥梁。
五、测试分析
本章分别对跌倒检测和垃圾分类功能进行测试,测试主要内容为在不同平台部署的速度差异和推理结果的可靠性。首先,准备一定量的待验证的测试数据集;然后,通过Paddle Lite分别部署在Mini主机和树莓派系统中,测试推理的性能和耗时;最后,如图5-1所示对结果进行分析。
图5-1 数据结果可视化
1.PaddleLite跨平台推理测试
PaddleLite通过opt工具可以在不同架构的平台或者移动端部署,下面通过在X86架构的Mini主机和ARM架构的树莓派分别进行部署,进行对比实验。
表5-1 实验环境配置
机器 | 硬件参数 | 软件参数 |
---|---|---|
Mini主机 | 内存:4GB | Ubuntu16.04 |
处理器:intel-i5 | ||
存储:SSD64G | ||
架构:X86 | ||
树莓派4B | 内存:4GB | Ubuntu18.04 |
处理器:Cortex-A72 | ||
存储:64G内存卡 | ||
架构:ARM |
测试集选自易华录开发者社区的人体摔倒姿态检测数据,该数据集场景种类繁多,人物状态可以标记为摔倒(Fall)和正常(Normal)两种状态,本次实验我们从中随机选取200张图片进行测试。
图5-2 人物场景测试集
图5-3 Mini主机和树莓派测试过程图
表5-2 测试结果
Mini主机 | 树莓派4B | |
---|---|---|
总耗时 | 40106.96ms | 56115.02ms |
单张推理耗时 | 200.53ms | 280.58ms |
目标检测成功率 | 91% | 92% |
实验结论:Mini主机和树莓派4B均在没有配备高性能显卡的环境下,可在300ms内获得推理结果,Mini主机硬件性能远高于树莓派,推理速度也有明显提升,推理模型经过针对ARM架构平台优化后,树莓派速度和可靠性也能有较好的表现。
2.PaddleLite推理可靠性分析
我们分别选取400张垃圾示例图片和200张人物场景图片对垃圾分类和摔倒检测和功能进行测试。
在抽取的400张垃圾示例图片中,垃圾分类结果和耗时散点图,如图5-4所示,预定义垃圾种类为40种,不同种类的垃圾分类识别处理速度稳定。
图5-4 垃圾分类散点图
统计直方图如下图5-5所示,第一排直方图为垃圾各类数量统计图;第二排左一图为垃圾分类推理耗时统计直方图;第二排右一图为400张测试图片中,推理正确与否的统计直方图。
图5-5 垃圾分类直方图
结论:通过PaddleClas图像分类为40种预测结果,大部分耗时集中在140-160ms的区间,预测准确率为88.25%。
在选取的200张人物场景图片进行目标检测测试直方图统计结果如图5-6所示,左一图为单张图片推理耗时统计直方图;中间图为置信度统计直方图;右一图为目标检测标注成功的统计直方图。
图5-6 跌倒检测直方图
结论:单张图片推理耗时主要集中在210ms左右,部分检测置信度高达90%以上。仅有8%没有检测到预期目标,通过查看数据集发现,这和待测试图片背景复杂程度、分辨率、有无遮挡也有一定关系。比如,由于太阳伞的遮挡,很难检测到跌倒的人物,可以通过提高图片采集质量或者调整阈值,达到更好的适应于服务机器人工作场景的效果。
六、 结束语
基于人工智能的跌倒监护,可及时通知家属老人跌倒状态并妥善处理,减少跌倒给老年人身体造成二次伤害的可能性,垃圾分类功能积极响应当前社会号召,使得资源利用率得到一定提高。家居环境检测和智能控制的助老服务机器人,给人们的生活带来了便利性和舒适性。同时也给老年人行动不便及未来人口老龄化服务等问题,提供一个可行性的方案,具有广阔的发展前景。本助老服务机器人还有需要改进的地方,外形美观度不够,其智能化水平还可以多集成更多的其它功能,未来可以开发一款App,打通家属与老人之间的交互通道,使老人能得到更多的关怀。
通过参加竞赛,助老服务机器人的设计,不断扩宽学生对人工智能深度学习技术、智能控制技术和传感器技术等知识的广度和深度,综合考察学生对电路、设计、编程等知识的综合运用能力,培养了学生分析问题解决问题的能力,及创新思维。
最后感谢中国机器人及人工智能大赛比赛平台,同学们实践能力和综合应用能力得到了提高,感谢钢铁侠科技公司提供的实验场地用于测试机器人,使我们能够顺利参赛,感谢指导老师的给予的耐心指导,为我们指明了研究方向。
- 本文标题:助老服务机器人
- 本文作者:HaoHao Guo
- 创建时间:2022-09-20 19:25:51
- 本文链接:https://gwzone.cn/articles/2022/09/20/助老服务机器人/
- 版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!