Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
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?

Почему LEGO детали?

Выбор этого пути вносит сложности:

Часть 1: Начало работы

1. Установка Isaac SDK

2. Распознавание голоса (опционально)

3. Образ EV3dev

Прошейте последний ev3dev-stretch образ на microSD или microSDHC. microSDXC не поддерживается EV3 блоком.

4. ARM кросс-компилятор для ev3dev

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

Так как Ubuntu 18.04 (хост и Jetson) использует GLIBC 2.28, а ev3dev — GLIBC 2.24, нужно компилировать с динамической линковкой, кроме math библиотеки. Скорректируйте jetson-ev3/toolchain/CROSSTOOL соответственно или используйте Docker-образ Debian 9.

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 кабель. SSH в EV3 с Jetson:

ssh user@ev3dev.local

Дефолтный пароль: maker.

7. Туториал Ping-Pong

Isaac's «Ping-Pong» Codelet демонстрирует межпроцессное общение. Адаптируйте для обмена сообщениями между 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

Используя те же принципы, управляйте EV3 моторами через кастомный Isaac драйвер, имитирующий базу Segway RMP. 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 состоит из трёх слоёв:

Ниже краткий пример голосового навигационного приложения. (Полные JSON файлы в папке voice_control.)

{
  '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: Запуск Isaac Apps на EV3

EV3 драйвер реализует тот же API, что и Segway RMP base, позволяя прямой переиспользование существующих Isaac приложений: джойстик-контроллер, распределённый GMapping, полный навигационный стек.

Часть 6: Калибровка одометрии

Точная одометрия критична для автономной работы. Ev3ControlServer экспонирует два RPC вызова:

Используя радиус колеса и ширину гусениц, линейная скорость вычисляется:

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

Угловая скорость выводится из разности скоростей колёс, делённой на ширину гусениц.

Часть 7: Голосовое управление автономной навигацией

Подграф детекции голоса слушает микрофон и эмитит voice_command_id при детекции обученных ключевых слов. Обучил RNN на трёх словах — «jetson», «left», «right» — с Isaac Speech Toolkit. Модель доступна в репозитории проекта.

При получении команды 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();

На практике система работает надежно в режиме 10 Вт. При 5 Вт латентность инференса (≈30 мс) слишком высока для плавной работы.

Часть 8: Картирование с распределённым GMapping

Картирование выполняется на хост-ПК, пока EV3 поставляет данные LiDAR. Развёрните distributed GMapping приложение на Jetson:

./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 указывает на правильный IP Jetson:

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

После нескольких минут исследования генерируется высокорезолюционная сетка занятости.

Заключение

Со скромными вложениями в LEGO Technic, YDLIDAR и Pixy2 можно построить полностью автономный гусеничный робот, использующий всю мощь NVIDIA Isaac SDK. Система поддерживает голосовые команды, LiDAR-картирование, GPU-ускоренное восприятие — универсальная платформа для исследований, образования и хобби.

Весь код, конфиги и обученные модели доступны в репозитории проекта.

Производственный процесс

  1. Автономный Donkey Car: TensorFlow MobileNetV2 ИИ для сбора мусора
  2. Raspberry Pi Tank: Добавление датчиков дальности и азимута для точной навигации
  3. JQR Четвероногий автономный робот: DIY шагающий робот для автономной навигации и спасения
  4. Подготовка к автономному будущему: Как владельцы флеетов могут опередить
  5. Премиальная модель танка Тип 99 1:24, изготовленная CNC обработкой
  6. Автономный робот освоил вход через дверь — Прорыв для сервисных роботов
  7. Автономные ассемблеры NASA строят лунные обители
  8. Резервные баки: назначение, виды и преимущества
  9. Критически важные правила безопасности при сварке топливных баков
  10. Как быстро и безопасно устранить утечку бензина