1️⃣ 项目背景
前不久一个做医疗健康行业的老友找我咨询,他想在一个医疗机器人上开发一个跌倒检测的功能。机器人搭配的是arm sbc,机器人是可以在养老院的各个房间巡逻的。因此,我们讨论下来就有了这样的两个方案:
- 使用激光雷达传感器,而且市面上也有支持跌倒检测的激光雷达传感器。但是成本相对会高一点点。
- 使用视觉方案,考虑机器人上的处理器是RK3588,对于当前的应用来说是完全足够的。因此只需要添加摄像头作为额外的硬件开销。自然就想到了BW21摄像头。
为了出一个简单的Demo来验证方案,遂直接使用BW21摄像头来进行开发。
2️⃣ 外形设计
在solidworks中使用装配体将打印件分割成各个零件。绘制在一起。

摄像头直接凸出包裹。将零件导出打印,组装起来就得到这样的了。

随后摄像头放置在手机支架上,插电,开机测试。

3️⃣ 固件烧录
BW21的资料在论坛上相当的丰富。这次只需要按照如下进行环境搭建。
安信可小安派BW21-CBV-Kit 上手环境搭建 - 小安派·BW21-CBV-KIt - 物联网开发者社区-安信可论坛 - Powered by Discuz!

打开这个example。修改里面的wifi名称和密码,烧录即可使用。因为这里我们要使用是将BW21当作一个网络摄像头,在机器人端来捕获摄像头的视频流进行检测。
在代码中测试打开摄像头视频流。

️4️⃣ 跌倒检测算法设计
算法的核心思想:
-
人体检测与跟踪
首先通过YOLO模型检测视频帧中的所有人体,并利用跟踪算法为每个人分配唯一ID,实现跨帧跟踪,保证同一人的运动特征连续性。
-
姿态估计与特征提取
对每个人体区域,使用Mediapipe等方法提取关键点,计算出人体主轴角度、长宽比、关键点坐标、速度、加速度等多种时序和空间特征。mediapipe中的关键点比较多,目前只需要使用如下的关键点:0, 11, 12, 23, 24, 25, 26, 27, 28
。

-
多特征融合判别跌倒
跌倒检测不是单一条件触发,而是融合了以下多种特征:
- 身体姿态接近水平
- 关键点的垂直位移突变
- 姿态角度突变(身体突然变弯曲等)
- 加速度突变 只有当多个条件同时满足(如满足3个及以上),才判定为跌倒,降低误报率。
- 状态管理与冷却机制
检测到跌倒后,进入冷却期,防止同一次事件被多次计数
最终检测到异常的视频帧会保存下来。

选取两帧来看看跌倒的效果吧,哈哈!


5️⃣ 视频展示