亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Manufacturing Technology >> 制造工艺

用 NVIDIA Jetson Nano 与 Isaac SDK 打造低成本自主乐高坦克

用 NVIDIA Jetson Nano 与 Isaac SDK 打造低成本自主乐高坦克

本指南演示如何将标准 LEGO EV3 套件改装为全自主履带机器人,由 NVIDIA Jetson Nano、Isaac SDK、YDLIDAR-X4 激光雷达和 Pixy2 视觉相机驱动。结果是 Carter 和 Kaya 参考设计的平价替代,却保留 NVIDIA 机器人栈的所有高级感知与规划能力。

跳转 第 8 部分 或 第 10 部分 查看完整自主导航演示。

项目包含以下组件:

为何选 Isaac SDK 而非 ROS?

为何用乐高零件?

此路径也带来挑战:

第 1 部分:起步

1. 安装 Isaac SDK

2. 语音识别(可选)

3. EV3dev 镜像

将最新 ev3dev-stretch 镜像刷入 microSD 或 microSDHC 卡。microSDXC 不被 EV3 主控砖支持。

4. EV3 用 ARM 交叉编译器

sudo apt-get install gcc-arm-linux-gnueabi g++-arm-linux-gnueabi

因 Ubuntu 18.04(宿主和 Jetson)用 GLIBC 2.28,ev3dev 用 GLIBC 2.24,除数学库外必须动态链接。相应调整 jetson-ev3/toolchain/CROSSTOOL 文件,或用 Debian 9 Docker 镜像。

5. Jetson + EV3 工作区

git clone https://github.com/andrei-ace/jetson-ev3.git

编辑 jetson-ev3/WORKSPACE 指向 Isaac SDK 路径:

local_repository(
  name = 'com_nvidia_isaac',
  path = '/home/andrei/ml/isaac'
)

更新 jetson-ev3/toolchain/CROSSTOOL 工具链路径:

# edit with your path to the toolchain
linker_flag: '-L/home/andrei/ml/jetson-ev3/toolchain'

6. 连接 Jetson Nano 与 EV3

用 USB-A 转 mini-USB 线。从 Jetson SSH 进 EV3:

ssh user@ev3dev.local
默认密码:maker。

7. Ping-Pong 教程

Isaac 的“Ping-Pong”代码演示进程间通信。改造它在 Jetson 和 EV3 主控砖间传递消息。

构建 EV3 服务端:

bazel build --config=ev3dev //apps/ev3/ping_pong:ev3_pong

在 Jetson 部署客户端:

<YOUR-ISAAC-INSTALL>/engine/build/deploy.sh --remote_user <YOUR-USER-JETSON> -p //apps/ev3/ping_pong:ping_pong-pkg -d jetpack43 -h <YOUR-JETSON-IP>

运行两二进制。EV3 应说出 “Ping” 消息。

第 2 部分:从 Isaac 控制电机

用同原理,通过模仿 Segway RMP 底盘的自定义 Isaac 驱动控制 EV3 电机。Ev3ControlServer 运行在 EV3:

bazel build --config=ev3dev //packages/ev3/ev3dev:ev3_control_server
ev3_control_server ev3dev.local:9000

结合 Sight 虚拟摇杆实现手动遥操作。

第 3 部分:构建机器人

底盘紧随乐高官方 EV3 Track3r 设计。Jetson Nano 外壳源自 此 GitHub 仓库。

第 4 部分:Isaac Apps 架构

Isaac App 含三层:

下面是语音控制导航应用的简例(完整 voice_control 文件夹含所有 JSON)。

{ 'name': 'voice_control',
  'modules': [
    '//apps/ev3/voice_control:voice_control_goal_generator',
    '@com_nvidia_isaac//packages/navigation',
    '@com_nvidia_isaac//packages/planner'
  ],
  'config_files': [
    'apps/ev3/voice_control/model/isaac_vcd_model.metadata.json'
  ],
  'config': { ... },
  'graph': { 'nodes': [...], 'edges': [...] }
}

子图可复用;导航栈在所有机器人变体间共享。

第 5 部分:在 EV3 运行 Isaac Apps

EV3 驱动实现与 Segway RMP 底盘相同 API,可直接复用现有 Isaac 应用如摇杆控制器、分布式 GMapping、完整导航栈。

第 6 部分:里程计标定

精确里程计对自主运行至关重要。Ev3ControlServer 暴露两个 RPC:

用轮半径和轮距计算线速度:

if left == right: v = left
elif left == -right: v = 0
else: v = (left + right) / 2

角速度由轮速差除以轮距得出。

第 7 部分:语音控制自主导航

语音检测子图监听麦克风,检测到训练关键词时发射 voice_command_id。我用 Isaac Speech Toolkit 在三词——“jetson”、“left”、“right”上训练 RNN。模型可从项目仓库下载。

收到指令时,GoalGenerator 向全局规划器发布目标。例:让机器人左旋 90°:

auto proto = rx_detected_command().getProto();
int id = proto.getCommandId();
auto goal_proto = tx_goal().initProto();
goal_proto.setStopRobot(true);
goal_proto.setTolerance(0.1);
goal_proto.setGoalFrame('robot');
ToProto(Pose2d::Rotation(90), goal_proto.initGoal());
tx_goal().publish();

实测在 10W 功耗模式可靠工作。5W 模式下推理延迟(≈30ms)过高,操作不流畅。

第 8 部分:分布式 GMapping 建图

建图在宿主 PC 进行,EV3 提供激光雷达数据。在 Jetson 部署分布式 GMapping 应用:

./engine/build/deploy.sh --remote_user andrei -p //apps/ev3:gmapping_distributed_ev3-pkg -d jetpack43 -h 192.168.0.218

宿主运行:

bazel run apps/ev3:gmapping_distributed_host

确保宿主 JSON 指向正确 Jetson IP:

'tcp_subscriber': { 'isaac.alice.TcpSubscriber': { 'port': 5000, 'host': '192.168.0.218' } }

探索几分钟后生成高分辨率占用网格地图。

结论

以适度投入乐高 Technic 零件、YDLIDAR 和 Pixy2 相机,即可构建全自主履带机器人,发挥 NVIDIA Isaac SDK 全威力。系统支持语音指令、激光雷达建图、GPU 加速感知,成为科研、教育、爱好项目的多功能平台。

所有代码、配置文件和训练模型见项目 仓库。

制造工艺

  1. 自主驾驶 Donkey Car:TensorFlow MobileNetV2 实现垃圾识别与拾取
  2. 树莓派坦克:添加测距与方位传感器实现精准导航
  3. JQR 四足自主机器人:DIY 腿足机器人用于自主导航与救援
  4. 燃油箱焊接安全红线:关键规范与操作指南
  5. 汽车油箱漏油应急修复:症状识别、成因分析、金属/塑料油箱补漏实操
  6. 自动驾驶汽车的未来:技术、挑战与创新
  7. 1:24精密CNC加工99A主战坦克模型
  8. 备用油箱/储备罐详解:车辆、市政与工业的燃料应急后盾
  9. 自主机器人掌握开门进门——服务机器人突破
  10. NASA 自主组装机器人构建月球栖息地
  11. 自动驾驶技术聚会亮点:Richard Bishop洞见分享
  12. 迎接自动驾驶未来:车队所有者如何抢占先机