Tabla de contenido:

Roomba con MATLAB: 4 pasos (con imágenes)
Roomba con MATLAB: 4 pasos (con imágenes)

Video: Roomba con MATLAB: 4 pasos (con imágenes)

Video: Roomba con MATLAB: 4 pasos (con imágenes)
Video: PLANOS/CAPAS RGB de una IMAGEN en MATLAB - CURSO PROCESAMIENTO DE IMÁGENES (Parte 1) 2024, Noviembre
Anonim
Roomba con MATLAB
Roomba con MATLAB

Este proyecto utiliza MATLAB y un robot programable iRobot Create2. Al poner a prueba nuestro conocimiento de MATLAB, podemos programar Create2 para interpretar imágenes y detectar señales. La funcionalidad del robot depende principalmente de la aplicación móvil MATLAB y de un módulo de cámara Raspberry Pi.

Paso 1: Piezas y materiales

Partes y materiales
Partes y materiales
Partes y materiales
Partes y materiales
Partes y materiales
Partes y materiales
Partes y materiales
Partes y materiales

1. iRobot Create, versión 2

- Este es un robot programable que parece un Roomba. Tenga en cuenta que este producto de iRobot no es una aspiradora. Está destinado a la programación personalizada por parte del usuario.

2. MATLAB 2017a

- La mayoría de las versiones anteriores serán compatibles con el código que usamos a continuación. MATLAB identificará un comando que no es compatible con la versión que tiene y le sugerirá el comando que mejor se adapte.

3. Raspberry Pi 3 Modelo B, versión 1.2

- Verifique qué Raspberry Pi es compatible con su iRobot. Consulte este enlace para obtener más ayuda: https://www.irobotweb.com/~/media/MainSite/PDFs/A… Este instructivo asume que está trabajando con una Raspberry Pi preprogramada. Tenga en cuenta que deberá trabajar con un Pi preprogramado para que funcionen los siguientes pasos. El uso de una Pi preprogramada le permitirá realizar toda su codificación solo en MATLAB.

4. Módulo de cámara V2 (para Raspberry Pi)

- Te sorprenderías; a pesar de su tamaño, el módulo de cámara Raspberry Pi es de muy buena calidad. Es la opción más económica y compatible para este proyecto.

Opcional: soporte impreso en 3D. Esto se usa para estabilizar la cámara. No afecta la funcionalidad del robot, pero le ayudará a codificar si desea utilizar datos de imágenes para el reconocimiento de colores y / o objetos.

Paso 2: configuración

Configuración
Configuración
Configuración
Configuración

1. Conexión de la Raspberry Pi y el módulo de la cámara (hardware)

- Para alimentar la Raspberry Pi, deberá ejecutar un micro USB de extremo macho al puerto de alimentación hembra del microcontrolador. Opcional: se puede usar un regulador de voltaje para asegurar que el voltaje no exceda los 5V. Después de encender la Raspberry Pi, puede conectarla a su robot ejecutando el extremo macho USB a desde la placa base al puerto USB A del microcontrolador.

- Después de conectar el Pi al Roomba, la cámara está lista para ser instalada. El módulo de la cámara será mucho más pequeño de lo esperado. Tenga en cuenta que la lente está montada en un sensor y una cinta blanca se extiende desde la cámara. ¡NO retire ni rasgue la cinta! Este es el cable que necesitas para conectarlo a la Raspberry Pi. Primero, sostenga el extremo de la cinta y busque los conectores plateados y el cable azul. Estos están en lados opuestos. A continuación, busque la ranura entre los puertos Ethernet y HDMI en su Raspberry Pi. Observe que hay un pequeño candado blanco que lo cubre. Levante lentamente la cerradura, pero no la saque de la ranura, ya que se romperá y se dañará permanentemente. Una vez que haya levantado el candado, tome la cinta y mire los conectores plateados hacia el puerto HDMI. El lado azul se enfrentará al puerto Ethernet. Deslice lentamente la cinta en la ranura mientras aún está desbloqueada. No tiene que forzarlo en la ranura. Después de la inserción, vuelva a empujar el bloqueo hacia abajo. Si su cámara está asegurada correctamente, debería poder tirar (suavemente) de la cinta y sentir la tensión. La cinta no debe estar suelta. Después de conectar su cámara a la Pi, puede notar lo suelta que está. Es por eso que usamos un soporte impreso en 3D para estabilizarlo. Es su elección determinar qué materiales le gustaría utilizar para mantener la cámara quieta y obtener imágenes de alta calidad.

2. Instalación de archivos adecuados y conexión de Roomba a su computadora Una vez que todo su hardware esté configurado, ahora puede continuar con la instalación de MATLAB junto con los archivos m asociados que le permiten comunicarse con el robot. Para hacer esto, abra MATLAB y cree una nueva carpeta para mantener juntos todos los archivos relacionados. Utilice este script para instalar / actualizar los archivos necesarios:

- Todos los archivos deberían aparecer ahora en su carpeta creada. Haga clic con el botón derecho en la ventana Carpeta actual y seleccione "Agregar a la ruta" para agregar esa ruta a la lista de directorios donde MATLAB busca archivos. Asegúrese de que todos sus archivos estén en la ruta correcta.

3. Una vez instalados los archivos, puede comenzar a conectarse a su robot. Comience por encender su robot y luego reiniciarlo directamente después del inicio (no olvide reiniciar su robot cada vez antes y después de su uso). En segundo lugar, conecte su robot y su computadora portátil a la misma red wifi. Después de esto, hablaremos con la Raspberry Pi preprogramada a través de MATLAB llamando al Roomba usando su nombre de pila y la función roomba. Por ejemplo, me conectaría al robot 28 usando la siguiente línea: R = roomba (28).

- Observe cómo asigné el objeto a una variable R. Ahora puedo acceder a las funciones asociadas de Roomba desde el archivo de instalación tratando la variable R como una estructura.

- R.turnAngle (90) Si todo ha ido bien, debería sonar un tono musical, confirmando la conexión.

Paso 3: MATLAB Logic

El documento PDF al final de este paso es un diagrama de flujo lógico detallado para nuestro proceso de codificación en MATLAB. Activamos los sensores de acantilado, luz y golpes de luz para permitir que el robot se comunique con nosotros cuando detecta un objeto en sus inmediaciones. Por ejemplo, cuando el robot avanza, sus sensores de luz buscan objetos en su camino de acuerdo con el vector en el que viaja. Elegimos un umbral de distancia para el robot de modo que cuando se acerque a un objeto, retroceda en lugar de chocar con él. Nuestro robot también está configurado con Twitter, que especificamos en nuestro proceso de codificación (esto se mostrará a continuación).

Para mejorar la experiencia, hicimos uso de la aplicación MATLAB en nuestros dispositivos móviles para que podamos controlar los movimientos del robot con solo inclinar nuestros teléfonos. Esta es una actividad opcional, ya que ciertamente puede hacer que el robot se mueva usando el comando moveDistance en el segmento de código de MATLAB. Tenga en cuenta que se prefiere el uso de comandos de MATLAB para controlar su robot si su objetivo es ser preciso. Si desea apuntar su robot para que la cámara tome una foto en una ubicación específica, puede ser mejor codificar los movimientos del robot en MATLAB. Si bien es entretenido, el uso de la aplicación MATLAB para controlar su robot no es deseable por motivos de precisión.

El Código ordena al Roomba que realice una configuración básica y luego continúe a través de un bucle continuo. Inicialmente, la computadora portátil establecerá un enlace con Roomba usando el comando Roomba (). También configura la conexión de Twitter usando el comando webwrite () en MATLAB. El bucle contiene cinco flujos lógicos principales según el entorno que rodea al Roomba. Primero, el Roomba verifica si hay obstáculos y se ajusta hacia atrás si encuentra que está impedido. Incrustado en ese bucle está la segunda ruta que alerta a los usuarios si el Roomba está siendo transportado. Una utilidad importante en la dura zona de guerra marciana. Una vez que el Roomba ha determinado que su posición es segura, busca en el dispositivo móvil para determinar su próximo movimiento. Si el dispositivo móvil está inclinado hacia adelante, calculará una velocidad base dependiendo de la severidad de la medición de balanceo que ajustará las velocidades de las ruedas individuales para girar según el grado de inclinación. El teléfono también puede mover el Roomba en reversa. Un estado de dispositivo móvil neutral abre las dos últimas rutas. Un Roomba en reposo buscará una bandera de Alien y alertará al usuario en consecuencia.

A continuación se muestra nuestro código (completado en MATLAB 2017a)

% de entradas: datos de orientación de un dispositivo conectado wifi, cámara

% información, datos del sensor

% de salidas: el movimiento es controlado por el dispositivo conectado wifi y el movimiento

% se comprueba la seguridad mediante la lectura de los datos del sensor. Si la cámara detecta

% una bandera alienígena, luego roomba responde tuiteando la bandera enemiga

% ha sido detectado.

% propósito: nuestro dispositivo vive sin ningún propósito excepto para proteger a aquellos que

% lo creó, sirve a su creador y lo hace

% exactamente lo que se dice.

% De uso: esencialmente, el programa se ejecutará por sí solo.

borrar todo, cerrar todo, clc

% De inicialización de objetos y variables

r = roomba (28);

m = mobiledev;

% use response = webwrite (nombre de host, datos)

nombre de host = 'https://api.thingspeak.com/apps/thingtweet/1/statuses/update';

API = 'SGZCTNQXCWAHRCT5';

tweet = 'RoboCop está operativo … Esperando comando';

data = strcat ('api_key =', API, '& status =', tweet);

reponse = webwrite (nombre de host, datos);

% bucle en ejecución constante

mientras que 1 == 1

% De estructuras que contienen datos relacionados

o = m. orientación; % de orientación del dispositivo móvil

luz = r.getLightBumpers (); % Valores de parachoques ligeros

a = r.getCliffSensors (); % Valores del sensor de desnivel

golpe = r.getBumpers (); % Sensores de parachoques

% comprobar parachoques

if bump.right == 1 || bump.left == 1 || bump.front == 1

r.moveDistance (-. 2,.2);

% comprobar sensores de luz

elseif luz.izquierda> 60 || light.leftFront> 60 || light.leftCenter> 60 || luz.derecha> 60 || light.rightFront> 60 || light.rightCenter> 60

r.moveDistance (-. 2,.2);

% comprobar Sensores de desnivel

% Señal y notificación antirrobo

elseif a.izquierda <300 && a.derecha <300 && a.izquierdaFrente <300 && a.derechaFrente <300

r.stop ();

r.beep ();

tweet = '¡Se ha levantado RoboCop!'

data = strcat ('api_key =', API, '& status =', tweet);

reponse = webwrite (nombre de host, datos);

% Operación normal para evitar acantilados

elseif a.izquierda <300 || a.derecha <300 || a.izquierdaFrente <300 || a.rightFront <300

r.moveDistance (-. 2,.2);

% Roomba pasó las comprobaciones y ahora funcionará con normalidad.

% Inicialmente se mide el rollo del dispositivo y se convierte en una base

% de velocidad que luego se usa para calcular la velocidad de la rueda

%Movimiento hacia adelante

elseif o (3)> = 0 && o (3) <= 60

baseVel = (-. 5/60) * (o (3) -60);

si o (2)> = - 70 && o (2) <0

r.setDriveVelocity (baseVel + (. 3/50) * abs (o (2)), baseVel - (. 3/50) * abs (o (2)));

elseif o (2) = 0

r.setDriveVelocity (baseVel - (. 3/50) * abs (o (2)), baseVel + (. 3/50) * abs (o (2)));

si no r. parar

fin

% De movimiento hacia atrás

elseif o (3)> 100 && o (3) <150

r.setDriveVelocity (-. 2, -.2)

r.beep ();

r.beep ();

% de descanso roomba buscará la bandera alienígena marcada como fluorescente

% trozo de papel verde

demás

r.stop

img = r.getImage (); % tomar imagen

umbral = umbral de gris (img (200: 383,:, 2)) +. 1; % Calc nivel verde

si umbral>.42

tweet = '¡¡Enemigo descubierto !!'

data = strcat ('api_key =', API, '& status =', tweet);

reponse = webwrite (nombre de host, datos);

demás

r.stop

fin

fin

fin

Paso 4: Conclusión

Recuerde, puede usar el script que escribimos anteriormente, pero siempre puede modificarlo para que se ajuste a sus necesidades. ¡No tiene que ser controlado por su teléfono! (Sin embargo, lo hace más divertido). Elija qué método prefiere usar para controlar su robot. ¡Conduce con tu robot y disfruta!

Recomendado: