jetbot
NVIDIA 出品的开源 AI 教育机器人,基于 Jetson Nano 实现自主避障、目标跟随等边
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
NVIDIA 出品的开源 AI 教育机器人,基于 Jetson Nano 实现自主避障、目标跟随等边
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
一个刚接触 AI 的学生,在宿舍里花 150 美元购买材料,亲手组装了一台小型机器人。它能自己"看见"前方的障碍物,学会了在房间里自主导航——而背后的技术,正是支撑自动驾驶、无人机等前沿领域的同款 AI 算法。这不是科幻,而是 NVIDIA JetBot 正在全球课堂和创客空间中真实发生的故事。
JetBot 由 NVIDIA AI-IOT 团队主导开发,灵感来源于 NVIDIA 内部一项更宏大的计划——让边缘 AI 计算走出数据中心,来到每个人触手可及的地方。2019 年,随着 Jetson Nano 这款售价仅 99 美元的小型 AI 计算机正式上市,NVIDIA 顺势推出了 JetBot 项目:一款完全开源的轮式机器人平台,旨在以最低的硬件门槛,让普通人亲身体验深度学习在真实物理世界中的应用。
项目的设计哲学非常明确:Affordable(买得起)、Educational(能学习)、Fun(有乐趣)。不到 150 美元的材料成本,让全球数十万爱好者、研究者和学生得以参与进来。
如果把 JetBot 看作一个"AI 实习生",它的感官系统(摄像头)和大脑(JetBot 软件栈)分工明确:摄像头每秒采集画面,大脑中的神经网络模型负责判断"前面有障碍吗",然后指挥电机驱动板让车轮转向或停止。整个过程模拟了自动驾驶汽车的核心感知-决策-执行链路,只是规模更小、更安全、更适合学习。
JetBot 使用 CSI 接口摄像头采集视频流,核心处理在 jetbot/camera/ 模块中完成。图像首先被 resize 到 300×300(SSD 模型)或 224×224(分类模型),然后进行归一化处理(减均值、除标准差),转换为 TensorRT 可直接推理的张量格式。
关键文件 jetbot/object_detection.py 封装了基于 TensorRT 的 SSD(Single Shot MultiBox Detector)目标检测模型。SSD 是一种 one-stage 检测器,同时预测物体类别和边界框,兼顾精度与速度,非常适合边缘设备实时推理场景。
JetBot 提供了两条并行的 AI 决策路径:
路径一:碰撞避免(Collision Avoidance)
基于预训练的 ResNet/AlexNet 模型,在 Jupyter Notebook 中亲手收集"畅通"和"受阻"两类图像数据,然后迁移学习微调分类头。最终模型输出 P(受阻) 概率:低于 0.5 直行,高于 0.5 原地转向。notebooks/collision_avoidance/live_demo_resnet18_trt.ipynb 展示了如何将 PyTorch 模型转换为 TensorRT INT8 引擎,实现在 Jetson Nano 上的高效推理。
路径二:漫游应用(Wander Application)
jetbot/apps/wander.py 实现了更完整的端到端推理流程:加载 PyTorch AlexNet 模型 → 摄像头实时流 → softmax 分类 → 电机控制指令。代码使用 traitlets 库实现观察者模式(Observer Pattern),摄像头每一帧更新自动触发推理回调,实现了真正的实时闭环控制。
jetbot/robot.py 基于 SparkFun Qwiic 总线和 Adafruit Motor HAT 实现 PWM 电机控制。通过 I2C 协议与双 H 桥电机驱动器通信,支持差速转向(左右轮独立速度控制)。这是典型的嵌入式控制系统设计,在教育机器人中应用广泛。
JetBot 的 Docker 生态分为 5 个独立镜像:
| 镜像 | 基础镜像 | 用途 |
|---|---|---|
jetbot-base | nvcr.io/nvidia/l4t-pytorch | 包含 TensorFlow、OpenCV、Jupyter 环境 |
jetbot-models | jetbot-base | 预置 TensorRT 优化模型 |
jetbot-jupyter | jetbot-models | 启动 JupyterLab Web UI |
jetbot-camera | jetbot-base | ZMQ 摄像头流发布服务 |
jetbot-display | jetbot-base | OLED 屏幕状态显示 |
所有镜像构建脚本位于 docker/ 目录,通过 set_nvidia_runtime.sh 配置 NVIDIA Container Runtime 以支持 CUDA 在容器内调用物理 GPU。这种分层镜像设计确保了各服务独立迭代,同时共享基础环境。
Jupyter Notebook 是 JetBot 的主要人机交互界面。通过浏览器访问 Jetson Nano 的 8888 端口,即可在网页中编写和运行 Python 代码、实时观察摄像头画面和模型推理结果。notebooks/ 目录包含 5 大教程系列:
每系列均包含数据采集 → 模型训练 → 实时推理的完整流程,是理想的 AI + 机器人教学材料。
JetBot 的最大局限在于硬件强依赖。完整运行需要:
此外,Docker 镜像构建过程需要在 Jetson Nano 本机完成(因为基于 aarch64 架构),无法在 x86 服务器上交叉编译。这意味着即使有 Docker 支持,"一键部署"在 JetBot 场景下意义有限。
尽管 JetBot 官方维护在 2024 年 11 月后趋于沉寂,但项目留下了宝贵的遗产:
JetBot 是一款将深度学习"落地"到实体机器人的开源教育平台。它以 Jetson Nano 为计算核心,通过预训练模型微调和 TensorRT 推理,实现了自主避障、目标跟随等功能。Docker 多服务架构、完整的 Jupyter 教程体系和活跃的第三方套件生态,共同构成了这个项目的核心价值。
适合场景:AI/机器人课程教学、边缘 AI 推理学习、Jetson 生态入门。
不适合场景:通用服务器部署、非 Jetson 硬件环境、快速原型验证(硬件依赖过强)。
对于希望学习边缘 AI 部署的开发者,JetBot 的 Docker 构建脚本和 TensorRT 模型转换流程是值得深入研究的参考实现。对于教育工作者,它的 Jupyter Notebook 教程体系依然是市面上最完整的 AI 机器人入门材料之一。