免费在线机器人模拟器 · Blockly · 数字孪生
编程控制机器人完成理发任务。安全验证每一步。
HCR 是一项 Hair Cutting Robot 学术研究。参与者通过积木程序控制五关节 Service Robot,在体素发型上完成任务;数字孪生会先检查每个动作,并拒绝会触及头部的运动。
客户端在浏览器中运行,Rust 服务负责重放并评分提交的程序。无需实体机器人,关卡会根据参与者的表现自适应调整。
或者 下载桌面应用 ,支持 macOS、Windows 和 Linux。适合没有 Wi-Fi 的教室使用。
- shoulderRoll15°
- shoulder72°
- elbow10°
- elbow−48°
- baseYaw−30°
- baseYaw0°
- baseYaw30°
- wrist−20°
为什么
机器人教学难以扩展
一台机械臂,一名学生
实体机械臂价格高昂,一次只能供一名学生使用,还需要教师在旁监督。
同一课程,同一进度
全班只能按同一套课程推进。进度快的学生觉得无聊,跟不上的学生则容易放弃。
错误代价高昂
在实体硬件上,角度错误就可能造成碰撞。为了安全,初学者往往根本没有操作机会。
学习循环
编写、检查、评分。修改一个数值,再试一次
三个步骤,第三步会带你回到第一步。整个学习过程就在这个循环中完成。
- 1编程
拖放积木,无需输入语法
舵机模式有三类积木:设置关节绝对角度、等待或重复。认证 Cutter Grid 练习增加六个固定世界方向与整数距离,并在运行前编译为确定性关节计划。
舵机角度 · Cutter Grid 移动 · 等待(0–5000 毫秒)· 重复(1–20 次)
- 2检查
数字孪生先行运行
机械臂移动前,同一程序会先在头部几何模型中进行扫掠检测。可能进入头部的动作会被拒绝;机械臂保持最后的安全姿态,并高亮导致问题的积木。
连续扫掠接触检测 · 确定性计算,无物理引擎
- 3评分
这是分数,不是成绩等级
出错只意味着再试一次。评分依据是发型与目标的吻合度、程序精简程度以及预计执行时间。
0.60 completion + 0.25 efficiency + 0.15 time
自适应
每名学生都有合适的难度,而不是全班同一难度
每次尝试后,平台都会重新估计学习表现并匹配下一项挑战。轻松完成便提高难度;遇到困难则降低一步。每名学生都有自己的学习级别。
- 能力值 θ
- 以 logit 标度表示机器人编程能力,并根据每次程序重放更新。
- 采用 2PL,而非 3PL
- 正确发型无法靠猜测得到,因此猜测参数固定为零,不从噪声中估计第三个参数。
- 题目选择
- 挑战先按当前 θ 下的 Fisher 信息量排序,再限制曝光率,避免同一批题目反复分配给能力相近的学生。
- 部分得分
- 分数是连续值。更新能力估计前,服务会围绕题目的掌握阈值重新映射原始分数,同时保留原值。
- 校准
- 新挑战最初处于暂定状态:限制曝光率,且不计入正式能力更新,直到收集到足够作答以重新拟合难度。
- 现阶段使用单一 θ
- 当前版本只使用一个综合能力值,同时为每次作答记录维度标签以供报告。真正的多维模型属于后续工作,并非当前系统的能力。
研究参与
研究开始前,请主动选择是否参与
只有在参与者主动同意加入这项学术研究后,客户端才会创建模拟器会话或玩家标识。
必要研究资料
用于重放、评分及分析的 Blockly 程序 IR、挑战版本、分数,以及必要的技术会话或提交标识。
可选背景资料
主语言仅记录为 zh、en 等粗粒度代码;UTC 偏移仅记录当前分钟数。“参与学术研究”默认开启两项,也可在“更多设置”中分别关闭。
不会主动收集
不收集浏览器指纹、精确 IANA 时区名称、推断位置、广告标识或跨网站跟踪档案。
数据匿名程度
研究记录可能留有会话标识,服务器也会保存常规安全日志。因此,这些数据虽经过去标识化处理,但并非完全匿名。
模式
独自练习,或与全场对战
单人练习
不限时。使用工作台完成一项挑战,尝试次数不限。
- 可以运行、暂停、继续、逐条执行命令、停止或重置。重置后,程序仍会保留。
- “测试”会在几毫秒内无界面评估程序,无需等待动画播放。
- 操作时可随时显示或隐藏目标发型预览。
对战回合
房间内所有玩家会同时收到同一项挑战。
- 回合采用固定的现实时间窗口,并以服务器时钟为准。
- 回合结束前,任何人都看不到分数,包括自己的分数。
- 可以不限次数重新提交,最终只计最佳成绩。
- 程序在服务端重放,电脑更快不会带来优势。
未配置后端时,浏览器会为与脚本机器人的对战回合评分。菜单、大厅和计分板都会清楚标明这是练习。离线仍可游玩,但本地分数绝不会显示为正式成绩。
使用 Rust 构建
从服务端重放到嵌入式机器人固件,全程使用 Rust
Rust 在 HCR 中并非装饰性标签,而是用于实现评分服务、自适应引擎、协议处理与 no_std 嵌入式网关。
技术架构
四个部分,一套协议
Simulator
HCR_Simulator_Frontend
React · TypeScript · Vite · React Three Fiber · Blockly
整个演示流程都在客户端运行。未配置后端时,完全不会发出网络请求。
Service
hcr-backend
Rust · MQTT over WebSocket · HTTP binding
在服务器端重放程序、运行自适应题库,并负责回合截止时间和排名。
协议
hcr-backend/schema
hcr.v1 · JSON and CBOR
每条消息都使用一个信封,并通过 ULID 关联。次要版本只允许新增字段;接收方会忽略无法识别的内容,而不会因此失败。
硬件
hcr-fw
Rust (no_std) · ESP8266 · Arduino C++ as a hardware library
实体五舵机机械臂由 Rust 管理启动策略、路由、HTTP/JSON 和舵机状态;C++ 仅限于字节型 C ABI 之后。网关尚未实现 MQTT。