14| 0
|
二哈2:隔空一发!——“克赛号人间大炮”体感发射器 |
本帖最后由 云天 于 2025-9-28 21:02 编辑 【项目缘起】 今年9月的二哈识图2发布会上,官方只动了动手指,就隔空模拟了一把“愤怒的小鸟”游戏——这“无接触操控”实在上头。 【项目设计】 于是我把手边的行空板K10+HuskyLens 2组合起来,复刻一个“童年回忆杀”: ![]() **拇指-食指一捏,克赛号蓄能;手掌一张,人间大炮发射!** Mind+实时模式图形化编程,10分钟就能搭完,正好适合给入门同学当“AI+IoT”第一课。 ![]() 【硬件清单】 行空板K10 HuskyLens 2 【软件准备】 1. Mind+ 2.0→ 切换“实时模式” → 扩展 → 主控:行空板K10 传感器:HuskyLens2(AI视觉) 网络:MQTT(SIOT) ![]() ![]() ![]() 2. 电脑端运行SIOT,记录IP,默认账号siot / dfrobot。 ![]() 【核心算法】 1. **“捏”与“张”判定** 利用HuskyLens2返回的“手势关键点”数组: x1 = 母指指尖x坐标 y1 = 母指指尖y坐标 x2 = 食指指尖x坐标 y2 = 食指指尖y坐标 计算欧氏距离 ``` d = √[(x1-x2)²+(y1-y2)²] ``` 经验阈值:d < 30 视为“捏(闭合)”,d ≥ 30 视为“张(张开)”。 2. **防抖 & 状态上报** 只在状态翻转时发送一次MQTT: 捏 → 发布“a”到主题 **df/bird** 张 → 发布“b”到主题 **df/bird** 【行空板K10主控流程】 ![]() 1. 初始化 - 连接Wi-Fi - MQTT(SIOT_IP,siot/dfrobot) - HuskyLens2 I²C握手 → 切到“手势识别”算法 2. 主循环 - 请求手势数据 - 调用自定义积木“母食指距离”计算d - 状态翻转检测 → MQTT发布a/b - RGB灯带随状态变色(捏=红,张=绿) 【Mind+实时模式】 克赛号角色 ![]() 1. 连接同一SIOT → 订阅 **df/bird** 2. 收到“a” 播放“蓄力”音效bj2 变量【加力】开始递增 屏幕出现“人间大炮一级准备!”字幕 3. 收到“b” 播放“发射”音效bj3 角色向上冲刺+背景漩涡特效 变量【得分】+1 清空蓄力值,等待下一次指令 子弹角色程序 ![]() 这段子弹程序通过“发射标识”切换两种状态:发射前在右侧绘制预览弹道、蓄力调整初速度,发射后从左侧射出真实子弹、模拟重力抛物线飞行,并在击中目标后触发得分、音效与状态重置,实现了一套完整的“瞄准-发射-命中反馈”机制。 轨迹算法是典型的**“重力抛物线模拟”**:
X(t+1) = X(t) + VX由此生成一条开口向下的二次抛物线;初速度 (VX, VY) 由“加力”变量线性放大,实现蓄力越远、射程越高的可控弹道。 怪物角色程序 ![]() 被击中的反馈
![]() ![]() ![]() 【效果演示】 【后续可玩方向】 把“距离”映射成无级调速,捏得越小,蓄力越快。 增加人体骨骼识别,用左手控制方向,右手控制发射,实现真正的“体感版坦克大战”。 |
© 2013-2025 Comsenz Inc. Powered by Discuz! X3.4 Licensed