OpenBot 低成本搭建机器人学习平台

OpenBot的核心思路可以概括为一句话:把智能手机变成机器人的“大脑”,用约 50 美元的低成本车体充当“身体”。手机提供算力、摄像头与传感器,车体只负责移动和执行底层指令。这一设计使机器人具备了跟随行人、自主避障、自动驾驶等原本需要昂贵专用计算平台才能实现的能力。

🧠 整体架构:四层分工

OpenBot 的系统由四个层次协同工作,职责清晰:

层级角色核心职责
智能手机“大脑”运行 Android App,处理摄像头画面,执行 AI 推理,做出决策
Android 软件栈“思维”Robot App(机器人端)负责感知与决策;Controller App(遥控端)负责手动操控与监视
微控制器(MCU)“脊髓”Arduino Nano 或 ESP32,接收手机指令,转化为 PWM 信号驱动电机,并回传传感器数据
机器人本体“身体”3D 打印底盘、直流电机、车轮、电池、超声波传感器等

控制闭环是这样跑通的:手机通过摄像头“看”到环境 → AI 模型生成转向和速度指令 → 指令经 USB 串口或蓝牙发给 MCU → MCU 驱动电机执行 → 传感器数据回传手机,形成实时反馈。

💰 硬件成本:50 美元能买到什么

不含手机,DIY 方案的物料成本约 50 美元(约合人民币 300–400 元)。主要组件与参考价如下:

组件规格/说明参考成本(美元)
智能手机闲置 Android 手机(建议 Android 11+)0(复用旧设备)
机器人底盘3D 打印四轮/两轮结构,PLA 打印,耗材成本约 20 元20–30
微控制器Arduino Nano(ATmega328P)或 ESP325–10
电机驱动板L298N 或 TB6612FNG3–8
电源系统18650 锂电池组(3 节或 7.4V 电池组)+ 电压调节10–15
通信/传感器蓝牙/Wi-Fi 模块、超声波避障传感器5–8
其他杜邦线、支架、轮子、螺丝等5–10

底盘设计是开源的,所有 3D 模型文件都在项目仓库中;没有 3D 打印机也可以找在线代打服务。OpenBot 提供了多种底盘方案,从入门级的 Lite(面向教学)、通用的 DIY(3D 打印 + L298N)、RC Truck(改造 1:16 遥控车),到多地形版本 MTV 和开箱即用的 RTR 成品套件。

🔌 固件层:MCU 在做什么

MCU 的固件(<code>openbot.ino</code>)负责所有底层实时控制,不参与 AI 推理。它的核心任务包括:

  • 电机控制:接收手机下发的速度与转向指令,转换为左右轮独立 PWM 信号。
  • 传感器采集:读取车轮光学编码器的中断计数(里程计)、电池电压(经分压电路)、超声波测距数据。
  • 状态指示:控制 LED 转向灯、前后灯和状态灯。
  • 通信桥接:通过 USB 串口(或 ESP32 的蓝牙)与手机双向通信。

固件通过 <code>#define</code> 配置来适配不同底盘,例如 <code>OPENBOT</code> 设为 <code>DIY</code>、<code>RTR_TT</code>、<code>RC_CAR</code> 等,每种底盘会自动开启对应的传感器与执行器支持。

串口协议是简单的文本指令。最核心的驾驶指令格式为 <code>c<左轮PWM>,<右轮PWM></code>,PWM 范围 -255 到 255(负值反转):

  • <code>c128,128</code> → 双轮以 50% PWM 慢速前进
  • <code>c255,-255</code> → 原地快速右转(左轮前进,右轮后退)
  • <code>c-128,-128</code> → 双轮慢速后退

此外还有用于配置传感器、读取电压等的指令。波特率默认 115200。

📱 软件栈:手机端的两类 App 与多种控制器

手机端软件是整个系统的智能核心,主要分为两类角色:

Robot App(运行在机器人手机上的“大脑”),功能模块包括:

  • FreeRoam(自由遥控):接收来自另一台手机的指令,或切换为 Python/Web 控制器模式。
  • Data Collection(数据采集):在人工遥控下录制摄像头画面与对应的控制指令,生成训练数据集。
  • Autopilot(自动驾驶):加载 TensorFlow Lite 模型,实时推理并输出驾驶指令。
  • Object Tracking(目标跟踪):调用目标检测模型锁定特定对象。
  • Model Management(模型管理):上传、切换、删除手机上的 TFLite 模型文件。

Controller App(遥控端) 可以运行在另一台手机、PC 或浏览器上:

  • Android/iOS Controller App:触屏遥控,接收机器人摄像头的实时视频流与遥测数据。
  • Python 控制器:在同一 Wi-Fi 下,用键盘控制机器人并接收视频流,适合快速调试和脚本化控制。
  • Web 控制器(Node.js/WebRTC):通过浏览器远程操控,无需安装专用 App。

🤖 AI 能力:MobileNet SSD 与 1.3M 参数导航网络

OpenBot 的 AI 功能建立在两个经过移动端优化的模型之上:

① 行人/物体跟踪:MobileNet-SSD

采用 SSD(Single Shot MultiBox Detector) 目标检测框架,搭配 MobileNet 轻量级骨干网络。整个模型体积不到 30 MB,适合在手机上实时运行,可识别行人、车辆、交通标志等 80 类目标。检测是逐帧进行的,配合一个简单的周期性调度逻辑,就能实现“持续跟随”效果。

② 自主导航:1.3M 参数的条件模仿学习网络

英特尔实验室将自主导航模型的参数量从之前的 9.1M 压缩到了仅 1.3M,在保持实时推理能力的同时大幅降低了计算负载。其训练方式基于条件模仿学习:模型不仅看当前画面,还接收目标指令(如“前进”“左转”),学习在给定条件下如何输出转向和速度。该网络只需约 30 分钟即可完成训练。

🎓 策略学习流水线:从人工驾驶到自主行驶

OpenBot 提供了一条完整的“采集 → 训练 → 部署”流水线,让你可以训练自己的驾驶策略:

  1. 采集数据:用 Robot App 的 Data Collection 模式,人工遥控机器人绕行,同时记录摄像头画面与操控指令。
  2. 训练模型:在 PC 上使用项目提供的训练脚本(<code>policy/</code> 目录),基于采集的数据训练驾驶策略。项目提供了多种模型选择,如轻量级的 <code>cil_mobile</code>、高速优化版 <code>cil_mobile_fast</code>,以及表达能力更强的 <code>pilot_net</code>。
  3. 导出 TFLite:训练过程会生成 <code>.tflite</code> 文件,选取验证指标最佳的 checkpoint。
  4. 部署运行:将 <code>.tflite</code> 模型上传到 Robot App 的模型管理中,在 Autopilot 模式下选择该模型即可让机器人自主行驶。

训练需要一定的计算资源,建议使用带独立显卡的电脑;同时驾驶策略并不完美,建议在安全环境中使用,并随时准备用遥控器接管。

🔧 扩展性与适用场景

OpenBot 的模块化设计留出了充足的二次开发空间:可以加装超声波传感器增强避障、加装 GPS 模块实现室外导航、加装 IMU 做姿态估计。社区已有 ROS2 接口包,可将 Arduino 串口数据转为 ROS2 话题,在 PC 上运行 SLAM 建图与路径规划。

从定位来看,OpenBot 最适合作为机器人教学、AI 自动驾驶入门、以及具身智能原型验证的平台:它把“可升级的大脑(手机) + 可复制的身体(低成本车体)”拆分开来,手机换代即算力升级,底盘却无需更换,以极低的成本提供了一套完整的“感知—决策—执行”闭环。

如果你打算动手搭建,建议从 DIY 或 RTR 底盘入手,先跑通遥控和数据采集,再逐步尝试训练自己的 Autopilot 模型。


Comments

Leave a Reply