第277篇 人机交互设计——机器人操作界面和交互逻辑
发布时间:2026/8/28 8:06:34 作者:尧图编辑部 阅读量:1,286

多机器人路径协调聊完了CBS、优先级规划、死锁处理这些方案应该有了基本的认识。从这篇开始我们正式进入机器人产品化的话题。机器人做得再厉害用户不会用也是白搭。人机交互HRI设计决定了用户能不能顺畅地和机器人协作。扫地机器人好不好用很大程度上不取决于清扫算法而取决于APP界面设不设得明白、定时任务好不好配、错误提示看不看得懂。面试问到交互设计很多人觉得这是前端的事。但对机器人工程师来说交互逻辑的设计直接影响系统的状态管理和错误处理架构是必须掌握的知识。一、交互模式分类机器人的交互模式大致可以分为三种示教交互——用户直接教机器人怎么做。拖拽示教协作机械臂、遥控操作无人机手柄、关键点引导扫地机器人建图后手动设置禁区。命令交互——用户发指令机器人自己执行。语音指令去厨房、APP按钮开始清扫、API调用调度系统发任务。自主交互——机器人自己决策不需要用户输入。自动回充、自动避障、自动规划巡检路线。用户只需要监控状态。大部分产品是三种模式的组合。协作机械臂用示教交互来编程用命令交互来启动任务用自主交互来处理安全保护。示教交互里最有代表性的是拖拽示教。用户用手直接搬动机械臂到目标位置机械臂的力矩传感器检测到外力进入柔顺模式跟随运动。到达位置后用户按记录按钮这个关节角度就被保存下来。一系列示教点连起来就是一个完整的运动轨迹。这种交互方式对用户的机器人知识要求最低——不需要写代码不需要懂坐标系只要会搬东西就行。但精度有限适合精度要求不太高的场景比如喷涂、打磨。高精度的任务比如装配还是需要用命令交互来精确指定位置。二、状态反馈设计用户最焦虑的事情是不知道机器人在干嘛。好的状态反馈能大幅地降低用户的不安全感。状态反馈要做到三点当前在做什么、做到什么程度了、下一步是什么。状态示例 正在前往3号会议室 → 已到达正在开门 → 门已打开进入中 进度条 [████████░░░░] 65% - 预计2分钟后到达 异常提示 前方通道被阻塞正在绕行。预计延迟3分钟。ROS2里常用的状态反馈方案是用Action服务端发布进度。客户端APP或网页订阅进度信息并展示。# ROS2 Action服务端发布进度 class NavigateAction(ActionServer): def execute_callback(self, goal_handle): while not reached: feedback NavigateFeedback() feedback.distance_remaining calc_distance() feedback.eta estimate_time() goal_handle.publish_feedback(feedback) result NavigateResult() result.success True goal_handle.succeed() return result三、错误处理与恢复机器人出错是必然的。传感器偶尔失灵、路径偶尔被堵、网络偶尔断开。关键是出错后怎么和用户沟通、怎么恢复。错误处理的原则能自动恢复的不要打扰用户需要用户介入的要给清楚的操作指引。错误等级设计 INFO: 电量降至30%将自动回充 → 自动处理 WARN: 前方有临时障碍正在绕行 → 自动处理通知用户 ERROR: 激光雷达数据异常请检查传感器连接 → 需要用户操作 FATAL: 底盘电机故障已紧急停止 → 需要人工维修交互界面上的错误提示要避免技术术语。TF树断裂用户看不懂定位系统异常请重启机器人用户能理解。错误恢复的设计也很重要。好的错误恢复是机器人先尝试自动恢复比如重新连接传感器、重新规划路径如果自动恢复失败再通知用户。通知时要告诉用户发生了什么和你可以做什么。差的错误提示Error code 0x3F2A: Navigation failed 好的错误提示无法到达目标位置可能路径被阻挡。 您可以1) 清除路径上的障碍物 2) 选择其他位置 3) 重试给用户可操作的选项比单纯报错有用得多。用户看到选项就知道下一步该干什么而不是对着一个错误码发呆。四、安全交互设计机器人和人共享空间时交互设计直接关系到安全。意图预告——机器人做动作之前先告诉人它要做什么。机械臂移动前先闪灯或发出提示音。扫地机器人转向前先减速。紧急停止——物理急停按钮必须有软件急停也要有APP上的停止按钮。急停后机器人要完全静止不能有任何运动。恢复确认——急停恢复时需要用户确认周围环境安全才能继续。不能自动恢复——万一人还站在机器人运动范围内。协作机器人还有一些特殊的安全交互设计速度限制——检测到人在附近时自动降速。激光雷达或深度相机检测到人在安全距离内机械臂速度自动降到安全范围通常250mm/s以下。人离开后自动恢复正常速度。功率限制——限制机械臂的输出功率。即使发生碰撞冲击力也不会超过安全阈值。这是ISO/TS 15066标准的核心要求之一。接触检测——通过力矩传感器实时检测异常接触。如果机械臂在运动过程中突然检测到意外的力可能是碰到人了立即停止运动。这个检测的灵敏度要仔细调——太灵敏会频繁误停影响效率太迟钝则起不到安全保护作用。class SafetyInteraction: def emergency_stop(self): self.robot.stop_all_motion() self.notify_user(已紧急停止) self.state ESTOPPED def resume_from_estop(self): # 需要用户确认 if not self.user_confirmed_safe(): return False, 请确认周围环境安全后按恢复按钮 self.state IDLE return True, 已恢复可以重新开始五、面试高频追问Q机器人的交互设计和其他软件有什么不同A最大区别是机器人有物理运动涉及安全问题。交互设计必须考虑紧急停止、意图预告、恢复确认。而且机器人的状态更复杂定位、传感器、电量、任务进度状态反馈的设计更重要。Q怎么设计机器人的多模态交互A多模态就是同时支持语音、触屏、手势、APP等多种输入方式。核心是设计一个统一的意图解析层——不管用户通过哪种方式输入都解析成统一的意图去厨房停止回充然后交给同一个任务管理器处理。Q机器人死机了怎么办A硬件层面要有看门狗watchdog软件死机后硬件自动重启。重启后要能恢复到安全状态——不能继续执行死机前的动作。软件层面要做好状态持久化重启后能从上次的安全点恢复。Q怎么测试交互设计的好坏A做用户测试。让没用过机器人的人来操作看他们在哪一步卡住了、哪个提示看不懂、哪个操作容易误触。交互设计好不好不是工程师说了算得看真实用户的反馈。另外可以做启发式评估——对照Nielsen的十大可用性原则逐条检查。比如系统状态是否可见用户是否有控制感错误是否能预防。Q机器人的交互设计和手机APP有什么本质区别A手机APP出错了最多崩溃重启机器人出错了可能撞伤人。安全是机器人交互设计的第一优先级这在手机APP里不太需要考虑。另外机器人的反馈延迟更大物理运动需要时间交互设计要考虑等待体验——不能让用户干等而不知道在发生什么。人机交互设计是机器人从能用到好用的关键一步。状态反馈、错误处理、安全交互这三个方面做好了用户体验会有质的提升。下一篇我们聊协作机器人的安全标准ISO/TS 15066。人机交互设计是机器人产品化的核心环节之一。示教/命令/自主三种交互模式、状态反馈三要素、错误分级处理、安全交互设计这些是面试中常聊的话题。上一篇第276篇 多机器人路径协调下一篇聊协作机器人安全标准ISO/TS 15066。如果这篇文章对你有帮助欢迎点赞支持一下你的鼓励是我持续更新的动力