Tabla de contenido:

Roomba Parking Pal: 6 pasos
Roomba Parking Pal: 6 pasos

Video: Roomba Parking Pal: 6 pasos

Video: Roomba Parking Pal: 6 pasos
Video: LEAN - Towy x @Superyeitv x @osquel_ x Beltito x @sammyyfalsetto 2024, Noviembre
Anonim
Roomba Parking Pal
Roomba Parking Pal

Este proyecto utiliza un roomba programable iRobot Create, MATLAB r2018a y MATLAB mobile. Al usar estos tres medios y nuestro conocimiento de codificación, programamos el iRobot Create para interpretar colores y usar sensores integrados para completar tareas. Este proyecto depende de la comunicación Raspberry Pi y MATLAB para realizar estas tareas.

Paso 1: Materiales

Materiales
Materiales
Materiales
Materiales

1. iRobot Create Robot

2. MATLAB r2018a

3. Raspberry Pi

4. Módulo de cámara

5. Soporte estabilizador de cámara impreso en 3D

6. Smartphone con MATLAB mobile instalado

7. Laptop / computadora con MATLAB instalado

Paso 2: Conexión

Este paso consiste en conectar la Raspberry Pi al robot, en segundo lugar, conectar el robot a su computadora y conectar el teléfono inteligente a la computadora.

La parte más fácil de este proceso es conectar la Raspberry Pi a su robot, ya que la Raspberry Pi está montada en la parte superior del robot. Hay un cable del robot que todo lo que tiene que hacer es conectarlo al costado de la Raspberry Pi.

El siguiente paso es conectar el robot a su computadora para que pueda ejecutar comandos para que los ejecute el robot. Lo primero que debe hacer es conectar su computadora a la red inalámbrica que está creando su roomba. Ahora, se recomienda que use el icono Establecer ruta en MATLAB para configurar la ruta de modo que pueda usar las funciones en la caja de herramientas Roomba de MATLAB. Cada vez que comience y termine el uso del robot, debe realizar un "saludo con dos dedos" para restablecer el robot, lo que significa que debe mantener presionados los botones de acoplamiento y localización durante diez segundos hasta que la luz se atenúe para indicar que debe soltar. Tuviste éxito con este restablecimiento completo si escuchas al robot tocar una escala corta. A continuación, debe conectarse al roomba usando una línea de código como esta "r = roomba (x)" donde 'x' es el número designado para el robot que tiene.

Por último, debe descargar MATLAB mobile en cualquier dispositivo móvil que utilice para este proyecto, y esta aplicación está disponible tanto en dispositivos Android como Apple. Una vez instalada la aplicación, deberá iniciar sesión con sus credenciales. Luego debe conectar este dispositivo a su computadora, usando la pestaña etiquetada "Más" -> luego haga clic en "configuración '-> luego haga clic en" Agregar una computadora ". Esto debería mostrar la pantalla que se muestra en las imágenes de arriba. Después de ver esto, El siguiente paso que debe seguir es simplemente conectar y tragar la información que solicita. Una vez que se haya conectado correctamente, podrá llamar a las funciones que defina en su computadora en su teléfono para controlar su robot.

Paso 3: Creación lógica de un código MATLAB para usar sensores

Creación lógica de un código MATLAB para utilizar sensores
Creación lógica de un código MATLAB para utilizar sensores

El código será más fácil de crear cuando la mayoría esté dentro del bucle while, de modo que roomba pueda actualizar constantemente los valores válidos que está viendo. Si hay un error, MATLAB mostrará un error y dónde aparece en el código, lo que hace que la resolución de problemas sea relativamente simple.

Diseñado en r2018a MATLAB, este código hace uso de las cajas de herramientas estándar, la caja de herramientas iRobot Create, así como la caja de herramientas móvil MATLAB. El roomba utilizado en este ejemplo se designa como 26, y r = roomba (26) solo necesita ejecutarse una vez para comunicarse completamente con el roomba.

Código:

función parkassist (x) si x == 1

r = roomba (26)% se conecta a roomba

si bien es cierto

r.setDriveVelocity (.05,.05)% establece roomba a una velocidad de conducción más lenta

bump = r.getBumpers% obtiene los datos de los sensores de impacto

cliff = r.getCliffSensors% obtiene los datos de los sensores de acantilado

light = r.getLightBumpers% obtiene los datos de los sensores de golpes de luz

img = r.getImage;% lee la cámara del robot

red_mean = mean (mean (img (:,:, 1)))% lee la cantidad media de píxeles rojos

green_mean = mean (mean (img (:,:, 2)))% lee la cantidad media de píxeles verdes

blue_mean = mean (mean (img (:,:, 3)))% lee la cantidad media de píxeles azules

si bump.front == 1% lee sensores de golpes delanteros

r.stop% detiene roomba

msgbox ('Path Obscured!', 'Parking Assistant Message')% muestra un mensaje que dice que el camino está oculto break% finaliza el bucle

elseif green_mean> 150

r.stop% detiene roomba

cont = questdlg ('¿Continuar?', 'Ruta completada')% muestra un cuadro de preguntas pidiendo continuar

if cont == 'Sí'

parkassist (1)% reinicia el código

demás

fin

break% termina el ciclo

elseif red_mean> 140

r.turnAngle (45)% gira el roomba 45 grados

r.timeStart% inicia un contador de tiempo

si bien es cierto

r.setDriveVelocity (.05,.05)% establece la velocidad del roomba

time = r.timeGet% asigna el tiempo a una variable

bump = r.getBumpers% obtiene los datos de los sensores de impacto

cliff = r.getCliffSensors% obtiene los datos de los sensores de acantilado

light = r.getLightBumpers% obtiene los datos de los sensores de golpes de luz

img = r.getImage;% lee la cámara del robot

red_mean = mean (mean (img (:,:, 1)))% lee la cantidad media de píxeles rojos

green_mean = mean (mean (img (:,:, 2)))% lee la cantidad media de píxeles verdes

blue_mean = mean (mean (img (:,:, 3)))% lee la cantidad media de píxeles azules

si blue_mean> 120

r.moveDistance (-0.01)% mueve el roomba hacia atrás una distancia establecida songPlay (r, 'T400, C, D, E, F, G, A, B, C ^', 'true')% reproduce una escala musical ascendente

msgbox ('Water Found!', 'Parking Assistant Message')% muestra un mensaje que dice que se ha encontrado agua r.turnAngle (-80)% rota roomba 80 grados

break% finaliza el bucle de corriente

elseif light.rightFront> 25 || light.leftFront> 25% lee sensores de golpes de luz

r.moveDistance (-0.01)% mueve el roomba hacia atrás una distancia establecida

r.turnAngle (-35)% gira el roomba 35 grados

break% finaliza el bucle de corriente

elseif cliff.rightFront <2500 && cliff.leftFront <2500% lee ambos sensores de acantilado

r.moveDistance (-0.1)% mueve roomba hacia atrás una distancia establecida

r.turnAngle (-80)% gira roomba 80 grados

break% finaliza el bucle de corriente

elseif tiempo> = 3

r.stop% detiene roomba

contin = questdlg ('Station Free, Continue?', 'Parking Assistant Message')% pregunta si roomba debe continuar si contin == 'Sí'

r.turnAngle (-90)% gira el roomba 90 grados

parkassist (1)% reinicia la función

demás

r.stop% detiene el roomba

fin

demás

fin

fin

elseif cliff.rightFront <2500 && cliff.leftFront <2500% lee ambos sensores de acantilado

r.moveDistance (-0.1)% mueve roomba hacia atrás una distancia establecida

r.turnAngle (-90)% gira roomba 90 grados

elseif cliff.rightFront <2500% lee el sensor de acantilado derecho

r.turnAngle (-5)% gira ligeramente el roomba en la dirección opuesta al sensor de desnivel

elseif cliff.leftFront <2500% lee el sensor de acantilado izquierdo

r.turnAngle (5)% gira ligeramente el roomba en la dirección opuesta al sensor de desnivel

demás

fin

fin

fin

Paso 4: Probar el código y el robot

Probando el código y el robot
Probando el código y el robot
Probando el código y el robot
Probando el código y el robot
Probando el código y el robot
Probando el código y el robot

Después de que se desarrolló el código, el siguiente paso fue probar el código y el robot. Dado que hay muchos ajustes diferentes que se pueden hacer en el código, como el ángulo de giro del robot, la velocidad a la que se mueve y los umbrales para cada color, la mejor manera de calcular estos valores para su robot es probar ellos y cambiar a medida que avanza. Para cada día de trabajo que teníamos, estábamos cambiando constantemente estos valores, ya que algunos de ellos dependen del entorno en el que opera su robot. La mejor manera que encontramos fue colocar el roomba en la ruta que desea que siga y tener una barrera lo suficientemente alta para que la cámara no pueda detectar colores que usted no desea. El siguiente paso es dejar que se ejecute y mostrarle los colores que desee, cuando desee que complete esa tarea. A medida que avanza, si ve un problema, lo mejor que puede hacer es empujar el parachoques delantero hacia adentro, hacer que se detenga y luego cambiar el parámetro con el que tuvo problemas.

Paso 5: reconocimiento del error

Con cada proyecto terminado, siempre hay fuentes de error. Para nosotros, experimentamos un error con el simple hecho de que el robot no es preciso con el ángulo en el que gira, por lo que si le dice que gire 45 grados, no será exacto. Otra fuente de error para nosotros fue que, a veces, el robot no funciona correctamente y usted lo ha restablecido antes de que vuelva a funcionar. La última fuente de error principal para nosotros fue que el mismo código no tendrá el mismo efecto en diferentes robots, por lo que es posible que tenga que ser paciente con él y ajustarlo en consecuencia.

Paso 6: Conclusión

Ahora tiene todas las herramientas para jugar con su roomba, lo que significa que puede manipular el código de la forma que desee para lograr los objetivos que desee. Esta debería ser la mejor parte de su día, ¡así que diviértase y conduzca con seguridad!

Recomendado: