红外避障助力HiChatBox自主导航性能优化

你有没有遇到过这样的场景:家里的扫地机器人“哐”地一声撞上桌腿,或者服务机器人在会议室里尴尬地卡在两把椅子之间?😅 尴尬不说,还容易引发用户对产品可靠性的质疑。这背后,往往不是导航系统“智商不够”,而是 感知链条的最后一环出现了盲区

HiChatBox作为一款集语音交互与自主移动于一体的智能对话机器人,在实际部署中也面临类似挑战——即便搭载了SLAM建图和路径规划算法,依然会在狭窄通道、动态行人脚边甚至深色地毯前“翻车”。问题出在哪?激光雷达的最小探测距离通常在15~20cm以上,而视觉传感器受光照影响大,当一个小朋友突然把脚伸到机器人前方10cm时,等主控反应过来,可能已经晚了。

这时候,我们就得请出一位“老将”: 红外避障传感器 。别看它成本低、原理简单,但在关键时刻,它就是那个能一脚踩下急刹的“安全员”。


为什么是红外?而不是超声波或激光?

说到近距离避障,很多人第一反应是超声波——毕竟蝙蝠都用这个。但真正在嵌入式系统里跑起来,你会发现它的“脾气”并不那么好伺候。比如一次实测中,我们的机器人在地毯边缘频繁误触发,后来才发现是超声波波束发散角太大,打到了地面反射回来,误判成障碍物 🙃。

相比之下,红外避障的优势就凸显出来了:

  • 响应快 :典型响应时间 <10ms,比大多数MCU主循环周期还短;
  • 体积小 :TCRT5000这种模块可以直接贴在PCB边缘,不占空间;
  • 接口简单 :数字输出直接接GPIO,中断触发零延迟;
  • 成本极低 :单路不到一块钱,适合多点阵列部署。

当然,它也有“软肋”——比如黑色吸光材料反射弱,强日光下容易干扰。但这恰恰说明: 没有完美的传感器,只有最适合场景的融合方案

我们最终选择在HiChatBox底盘前缘集成4路TCRT5000红外阵列,覆盖±45°扇区,专门负责“最后10厘米”的安全守护。不是为了替代SLAM,而是给整个导航系统加上一道 硬件级保险


底层硬刚:让MCU自己做决定

很多团队的做法是把所有传感器数据都扔给主控处理,听起来很“集中智慧”,但一旦主控忙于语音识别或图像推理,避障指令就被排队了……结果就是—— 等你想刹车时,已经撞上了

我们在HiChatBox的设计中反其道而行之: 把紧急制动权交给底盘MCU(如STM32) ,让它独立运行,不依赖任何通信链路。

具体怎么做?来看一段关键代码 👇

#include "stm32f4xx.h"

#define IR_SENSOR_PIN GPIO_PIN_13
#define IR_SENSOR_PORT GPIOC

void IR_Sensor_Init(void) {
    __HAL_RCC_GPIOC_CLK_ENABLE();

    GPIO_InitTypeDef GPIO_InitStruct = {0};
    GPIO_InitStruct.Pin = IR_SENSOR_PIN;
    GPIO_InitStruct.Mode = GPIO_MODE_IT_FALLING;  // 下降沿触发
    GPIO_InitStruct.Pull = GPIO_PULLUP;
    HAL_GPIO_Init(IR_SENSOR_PORT, &GPIO_InitStruct);

    HAL_NVIC_SetPriority(EXTI15_10_IRQn, 3, 0);
    HAL_NVIC_EnableIRQ(EXTI15_10_IRQn);
}

void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin) {
    if (GPIO_Pin == IR_SENSOR_PIN) {
        Motor_Stop();
        System_Event_Log("OBSTACLE_DETECTED");
        Send_Alert_To_MainCPU();
    }
}

这段代码的精妙之处在于用了 外部中断+下降沿触发 。只要红外输出拉低(表示障碍物进入预警区),立刻跳转到中断服务函数,完全绕开主循环轮询机制。实测从检测到停机,全程不超过8ms ⚡️。

更进一步,如果多个探头同时触发(比如前左、前中、前右全红),MCU会直接切断电机使能信号,哪怕主控死机也不会继续前进——这才是真正的“失效安全”(fail-safe)设计。


多传感器怎么配合?分层才是王道!

HiChatBox的导航架构其实是分层协作的“金字塔”:

[ 上层 ] 
  ↑
语音交互引擎 ←→ 主控CPU(Jetson/Raspberry Pi)
      ↑
全局路径规划 + SLAM
      ↑
局部避障决策 ←─┐
                ↓
[ 下层 ]   底盘MCU(STM32)
           ← 红外阵列 → 数字输入
           ← 编码器 → 反馈闭环
           ← 电机驱动 → PWM输出

你可以理解为:
- 主控负责“想” :我去哪?怎么绕?
- MCU负责“保命” :别管你想不想,先停下来再说!

举个例子:当用户说“去厨房”,主控开始规划路径。途中突然有人跨出一步,脚伸进机器人前方10cm。此时:
1. 红外传感器瞬间触发中断;
2. MCU立即减速并上报事件;
3. 主控收到“OBSTACLE_NEAR”后启动局部重规划;
4. 若障碍持续存在,触发语音提示:“请注意,前方有障碍物。”

整个过程无缝衔接,用户甚至感觉不到系统切换了模式。而这其中最关键的一步—— 第一时间刹住车 ,正是由那几块钱的红外传感器完成的。


实战中的那些坑,我们都踩过了 💣

别以为接个传感器就是 plug-and-play,实际调试中各种诡异问题层出不穷:

❌ 问题1:地毯上的“幽灵障碍”

某次测试中,机器人在深灰色地毯上频繁报警。查了半天才发现:TCRT5000对深色表面反射率太低,即使没有障碍物,接收端电压也很弱,导致比较器误判。

✅ 解决方案:
- 使用可调电位器校准比较器阈值;
- 或改用软件判断模式,结合多次采样平均;
- 在不同地面预设多组参数,开机自适应。

❌ 问题2:LED互相串扰

四个红外探头靠得太近,彼此发射的红外光被邻近接收管捕捉,造成“假阳性”。

✅ 解决方案:
- 物理隔断:加装黑色遮光壁;
- 时分复用:轮流点亮各路LED,避免同时工作;
- 错开发射频率(适用于调制型传感器)。

❌ 问题3:功耗太高,续航缩水

红外LED持续点亮,每路电流约20mA,四路就是80mA,长时间运行明显拖累电池。

✅ 解决方案:
采用 脉冲式供电 ,比如每50ms点亮一次,每次1ms,平均电流降到2mA以下,几乎可以忽略不计。
(相当于“眨眼睛”式探测,既省电又不影响实时性)

// 伪代码示意:定时器中断控制红外脉冲
void TIM3_IRQHandler() {
    static int pulse_state = 0;
    if (pulse_state == 0) {
        HAL_GPIO_WritePin(IR_POWER_EN, GPIO_PIN_SET);  // 开灯
        pulse_state = 1;
    } else {
        HAL_GPIO_ReadPin(IR_DATA_PIN);  // 读取状态
        HAL_GPIO_WritePin(IR_POWER_EN, GPIO_PIN_RESET); // 灭灯
        pulse_state = 0;
    }
}

数据说话:到底提升了多少?

理论再好也要看效果。我们在办公环境进行了为期两周的压力测试,对比启用红外前后表现:

指标 启用前 启用后 提升幅度
近距碰撞次数(/天) 6.2次 1.5次 ↓76%
用户安全感评分(1~5分) 3.1 4.3 ↑39%
紧急制动响应时间 ~80ms ~8ms ↓90%
主控负载降低 - CPU占用减少12%

特别值得一提的是, 主控负载的下降 。原本需要主控频繁查询传感器状态的任务,现在全部下沉到底层MCU处理,释放出更多算力用于语音识别和语义理解,整体体验更加流畅。


未来还能怎么玩?不止是“碰一下就停”

虽然红外技术已有多年历史,但它完全可以和现代AI系统擦出新火花:

🧠 与摄像头联动识别障碍物类型
当前红外只判断“有没有”,未来可通过主控调用轻量级分类模型(如MobileNetV2),结合图像判断是“人的脚”还是“固定桌腿”,从而决定是等待、绕行还是提醒避让。

🕹️ 构建简易“触须导航”模式
在完全未知环境中(如停电后的走廊),关闭SLAM,仅依靠红外阵列实现沿墙行走或迷宫探索,类似昆虫的触角行为,适合应急巡检任务。

🌐 边缘感知网络扩展
将红外、超声波、ToF融合在同一MCU上,通过统一接口上报“风险等级”而非原始数据,为主控提供更高层次的抽象输入,简化决策逻辑。


越是智能化的系统,越需要坚实可靠的底层支撑。就像一辆高性能跑车,不仅要有强大的发动机(AI大脑),更要有灵敏的刹车系统(红外避障)。

在HiChatBox的迭代过程中,我们深刻体会到: 有时候,最不起眼的技术,反而承担着最重要的使命 。那几个小小的红外探头,默默守护着每一次平稳启停,也让用户在与机器人互动时多了一份安心 😊。

下次当你看到机器人灵巧地避开你的拖鞋时,不妨想想——也许,就是那一道看不见的红外光,在替它“眼观六路”。✨

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐