Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Manufacturing Technology >> Proceso de manufactura

Construcción de un Tanque Lego Autónomo de Bajo Coste con NVIDIA Jetson Nano e Isaac SDK

Construcción de un Tanque Lego Autónomo de Bajo Coste con NVIDIA Jetson Nano e Isaac SDK

En esta guia demuestro cómo transformar un kit LEGO EV3 estándar en un robot de orugas totalmente autónomo, impulsado por una NVIDIA Jetson Nano, el Isaac SDK, un LiDAR YDLIDAR‑X4 y una cámara de visión Pixy2. El resultado es una alternativa económica a los diseños de referencia Carter y Kaya, pero conserva todas las capacidades avanzadas de percepción y planificación de la pila robótica de NVIDIA.

Vaya a la Parte 8 o Parte 10 para una demostración completa de navegación autónoma.

El proyecto consta de los siguientes componentes:

Por qué Isaac SDK y no ROS

Por qué Piezas LEGO

Elegir este camino introduce algunos retos:

Parte 1: Primeros Pasos

1. Instalar Isaac SDK

2. Reconocimiento de Voz (Opcional)

3. Imagen EV3dev

Flashee la última imagen ev3dev‑stretch en una tarjeta microSD o microSDHC. microSDXC no es compatible con el brick EV3.

4. Compilador Cruzado ARM para ev3dev

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

Como Ubuntu 18.04 (host y Jetson) usa GLIBC 2.28 mientras ev3dev usa GLIBC 2.24, debemos compilar con enlace dinámico excepto para la librería matemática. Ajuste el archivo jetson-ev3/toolchain/CROSSTOOL en consecuencia, o use una imagen Docker de Debian 9.

5. Espacio de Trabajo Jetson + EV3

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

Edite jetson-ev3/WORKSPACE para apuntar a su ruta de Isaac SDK:

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

Y actualice la ruta del toolchain en jetson-ev3/toolchain/CROSSTOOL:

# edite con su ruta al toolchain
linker_flag: '-L/home/andrei/ml/jetson-ev3/toolchain'

6. Conectar Jetson Nano con EV3

Use un cable USB‑A a mini‑USB. Haga SSH al EV3 desde la Jetson:

ssh user@ev3dev.local

Contraseña por defecto: maker.

7. Tutorial Ping‑Pong

El Codelet "Ping‑Pong" de Isaac demuestra comunicación entre procesos. Adáptelo para enviar mensajes entre la Jetson y el brick EV3.

Compile el servidor EV3:

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

Despliegue el cliente en la 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>

Ejecute ambos binarios. El EV3 debería "hablar" los mensajes "Ping".

Parte 2: Controlar un Motor desde Isaac

Usando los mismos principios, controle los motores EV3 mediante un driver personalizado de Isaac que imita la base Segway RMP. El Ev3ControlServer se ejecuta en el EV3:

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

Integre el servidor con el Sight joystick virtual para teleoperación manual.

Parte 3: Construcción del Robot

El chasis sigue de cerca el diseño oficial EV3 Track3r de LEGO. La carcasa de Jetson Nano proviene de este repositorio GitHub.

Parte 4: Arquitectura de Apps Isaac

Una App Isaac consta de tres capas:

A continuación, un ejemplo conciso de una app de navegación controlada por voz. (Ver la carpeta completa voice_control para todos los archivos 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': [...]
  }
}

Los subgrafos son reutilizables; la pila de navegación se comparte en todas las variantes de robot.

Parte 5: Ejecutar Apps Isaac en EV3

El driver EV3 implementa la misma API que la base Segway RMP, permitiendo reutilizar directamente apps de Isaac existentes como el controlador joystick, GMapping distribuido y pila completa de navegación.

Parte 6: Calibración de Odometría

La odometría precisa es crítica para operación autónoma. El Ev3ControlServer expone dos llamadas RPC:

Usando el radio de rueda y ancho de vía, calcule la velocidad lineal como:

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

La velocidad angular se deriva del diferencial de velocidades de rueda dividido por el ancho de vía.

Parte 7: Navegación Autónoma Controlada por Voz

El subgrafo de detección de voz escucha un micrófono y emite un voice_command_id cuando detecta una de las palabras clave entrenadas. Entrené una RNN en tres palabras —"jetson", "left" y "right"— usando el Isaac Speech Toolkit. El modelo resultante puede descargarse del repositorio del proyecto.

Al recibir un comando, el GoalGenerator publica un objetivo al planificador global. Por ejemplo, para rotar el robot 90° a la izquierda:

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();

En la práctica, el sistema funciona de forma fiable en modo de 10 W. A 5 W la latencia de inferencia (≈30 ms) es demasiado alta para operación fluida.

Parte 8: Mapeo con GMapping Distribuido

El mapeo se realiza en un PC host mientras el EV3 proporciona datos LiDAR. Despliegue la app GMapping distribuida en la Jetson:

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

En el host ejecute:

bazel run apps/ev3:gmapping_distributed_host

Asegúrese de que el archivo JSON del host apunte a la IP correcta de la Jetson:

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

Tras unos minutos de exploración, se genera una cuadrícula de ocupación de alta resolución.

Conclusión

Con una inversión modesta en piezas LEGO Technic, un YDLIDAR y una cámara Pixy2, puede construir un robot de orugas totalmente autónomo que aprovecha toda la potencia del Isaac SDK de NVIDIA. El sistema soporta comandos de voz, mapeo basado en LiDAR y percepción acelerada por GPU, convirtiéndolo en una plataforma versátil para investigación, educación y proyectos de hobby.

Todo el código, archivos de configuración y modelos entrenados están disponibles en el repositorio del proyecto.

Proceso de manufactura

  1. Coche Autónomo Donkey Car: TensorFlow MobileNetV2 IA para Recogida de Basura
  2. Tanque Raspberry Pi: Añadir sensores de distancia y rumbo para navegación precisa
  3. JQR Robot Cuadrúpedo Autónomo: Robot de Patas DIY para Navegación y Rescate Autónomos
  4. Directrices críticas de seguridad para soldadura de depósitos de combustible
  5. Cómo reparar una fuga de gasolina en el coche: soluciones rápidas y seguras
  6. El futuro de los vehículos autónomos: tecnología, desafíos e innovaciones
  7. Modelo Premium 1:24 de Tanque de Batalla Principal Tipo 99 Mecanizado CNC
  8. Depósitos de reserva (reserve tanks): autonomía extra para combustible, agua y aceite
  9. Robot Autónomo Domina Entrada por Puertas: Avance para Robots de Servicio
  10. Robots ensambladores autónomos de NASA construyen hábitats lunares
  11. Preparándose para un Futuro Autónomo: Cómo los Propietarios de Flotas Pueden Adelantarse