开发一款陪伴机器人:通过视觉感知情绪与肢体语言,将被动的关怀转化为主动而真挚的情感联结
根据世界经济论坛的数据,日本近三分之一的人口年龄超过65岁,约有3623万人。由于日本老年人口不断增长,许多老年人独居,需要他人帮助。在日本,甚至有一个专门的术语“孤独死亡”(Kodokushi),指的是老年人独自去世且在很长一段时间内无人发现的情况。
我们需要通过提供陪伴来解决这一问题。人类陪伴者不可靠,有时还很昂贵。因此,我们需要一种经济高效的技术解决方案,来应对老年人的孤独感。
为了解决这一问题,我们计划开发一款陪伴机器人,通过识别老年人的情绪,根据情绪给予反馈,帮助他们在紧急情况下呼叫他人,并监测基本活动以检查用户是否安全。
硬件架构
机器人的大脑是基于树莓派4的设备,配备摄像头用于拍照和录像,还带有麦克风用于录音以及扬声器播放音频文件。电机驱动板可帮助机器人控制电机(直流电机和舵机),同时为树莓派提供电源。摄像头安装在舵机上,使其能够拍摄角度至少达120度的图像。整个系统由两块可充电的锂离子电池供电。
硬件组件
•树莓派4B型号
•网络摄像头,Logitech® HD Pro
•电机驱动器保护板
•Waveshare USB 音频
•电池座,18650 x 2
•18650锂离子电池
AI 模型
情绪识别模型
为了实时识别一个人的情绪,我们使用了DeepFace库及其内置的AI模型。DeepFace库中的模型可提供额外的人口统计信息,用于评估人物年龄,并据此给予相应帮助。
动作触发检测与应急检测模型
为了识别用户需要哪种帮助,我们构建了一个定制模型,能够识别跌倒、需要医疗救助、需要联系他人以及想要提问等紧急情况。
结合上述两个模型的结果,机器人决定执行某种活动,以吸引用户或完成所需操作。
固件流程图
在代码中,首先通过开启电机驱动器、摄像头,并检查机器人其他部分的状态来初始化机器人。接着,机器人连接到一个Wi-Fi网络,该网络将用于调用各种API接口。一旦连接成功,AI模型便开始处理摄像头捕获的图像帧。系统中有独立的模型分别用于检测人物、不同手势和情绪。首先识别画面中的人员,然后AI模型判断是否存在情绪或手势。如果未检测到手势,则机器人根据当前的情绪做出相应反应。如流程图所示,机器人会针对不同情绪执行多种动作。但若检测到手势,机器人将相应调用对应的后台服务。
实施步骤
1. 测试各个组件:
我们编写了Python脚本,用于测试机器人的各个组件,例如扬声器、麦克风、摄像头、电机驱动器等。
2. 收集用于AI模型的数据
为了识别一个人的手势,我们需要构建一个自定义模型,而这需要一个定制的数据集。我们使用了Python以及Google Teachable Machines来收集不同手势的数据集。
我们已收集了用于人体检测模型所需的训练数据集。
3. 训练人脸识别模型
我们使用个人数据集构建了一个分类器,能够识别我家中的人。我们采用预训练的CNN模型进行迁移学习,以训练一个自定义模型。
4. 训练手势识别模型
我使用识别数据集构建了一个模型,能够识别三种不同的手势,例如医疗紧急情况、想打电话给某人、想询问某事。
5.测试面部表情识别模型并将其应用于机器人
我安装了Deepface库,并测试了用于识别不同情绪类型的面部表情模型。
6.测试 Gemini API 及实现
为回答用户查询,我使用了 Gemini API 和一个文本模型。
7.将模型与麦克风、摄像头和扬声器集成
为了获取用户输入并最终对输入进行处理,我将其与麦克风、摄像头和扬声器集成。麦克风接收用户的语音输入,并将其发送给转录模型,以转换为文本。摄像头用于拍摄照片,这些照片则用于识别情绪、人物和动作。
8.定义各种带有情感识别的动作
我的机器人有两个电机,可以通过不同的方式转动,以模拟各种活动。这些活动与不同的情绪相结合。
本文编译自hackster.io





