Tabla de contenido:

Roomba Scout Explorer: 8 pasos
Roomba Scout Explorer: 8 pasos

Video: Roomba Scout Explorer: 8 pasos

Video: Roomba Scout Explorer: 8 pasos
Video: Ремонт робота-пылесоса. Проще, чем вы думали. 2024, Mes de julio
Anonim
Explorador de Roomba Scout
Explorador de Roomba Scout

Como uno de los proyectos estadounidenses más esperados y más investigados, los proyectos del rover de Marte se han convertido en logros humanos en la producción en constante avance de sistemas autónomos de alta tecnología con el único propósito de investigar e interpretar las masas terrestres y las superficies del planeta rojo detrás. la tierra. Como parte de un proyecto más personal en homenaje a las misiones a Marte, nuestro objetivo era crear un robot roomba que pudiera actuar de forma autónoma durante un cierto período de tiempo y reaccionar de acuerdo con ciertos criterios dentro de su vecindad.

En cuanto a la singularidad, nos enfocamos en crear un diagrama que mostrara cada camino que toma el robot desde sus orígenes. Además, el robot podrá contar la cantidad de objetos que se encuentran en sus proximidades en un estilo panorámico.

Paso 1: Equipo

-Roomba con cámara acoplable (con nombre específico conocido)

-Servidor conectado

-Windows 10 / Mac con conectividad a Internet

-Plataforma brillante

-Suelo oscuro

-Cualquier objeto perdido de diseño monocromático

Paso 2: configuración de MATLAB

Configuración de MATLAB
Configuración de MATLAB

Para crear tareas y funciones para su roomba, debe tener los códigos específicos y kits de herramientas que contienen los comandos de roomba.

Con MATLAB 2016a y posteriores descargados, cree una carpeta para contener estos archivos de robot e inserte el siguiente archivo MATLAB a continuación en la carpeta y ejecútelo para instalar los archivos roomba necesarios restantes.

Después de eso, haga clic con el botón derecho en la ventana Carpeta actual, coloque el mouse sobre "Agregar una ruta" y haga clic en "Carpeta actual". Ahora, se debe configurar una ruta de modo que cada uno de estos archivos se utilice para activar roomba.

Ahora, use el siguiente comando en la ventana de comandos para configurar el roomba:

r = roomba (#).

El símbolo # es el 'número' del roomba especificado; sin embargo, si simplemente desea un simulador de roomba, simplemente escriba el siguiente comando:

r = roomba (0).

Se recomendaría la simulación para probar patrones de movimiento.

Si tiene curiosidad por saber qué comandos puede seguir roomba, escriba lo siguiente en la ventana de comandos:

doc roomba.

Para obtener más detalles, visite el siguiente sitio web:

ef.engr.utk.edu/ef230-2017-08/projects/roomba-s/setup-roomba-instructable.php

Paso 3: Función: Movimiento

Función: movimiento
Función: movimiento
Función: movimiento
Función: movimiento

En lo que respecta al movimiento, el roomba debe moverse automáticamente durante un período de tiempo establecido en las entradas. El objetivo del movimiento del robot es reaccionar correctamente cuando sus sensores (parachoques, parachoques ligeros y sensores de desnivel) cambian en presencia de varios obstáculos. Esta parte actuaría como la base para todos los comandos de roomba a medida que se agreguen más funciones al código más adelante. Se necesitaban algunas especificaciones:

-Para reducir el daño, el robot debe reducir la velocidad a una velocidad menor.

-Al acercarse a un acantilado o pared, el robot se moverá en reversa y alterará su ángulo dependiendo del punto de impacto

-Después de un tiempo conduciendo, el roomba eventualmente se detendrá y tomará imágenes del área circundante.

Tenga en cuenta que los valores utilizados fueron en relación con el simulador; los valores como los ángulos de giro, las velocidades de giro y los valores predeterminados del sensor del robot deben modificarse cuando se utiliza el robot real para garantizar la estabilidad y la contabilidad de los errores del equipo.

Paso 4: Función: procesamiento de imágenes

Función: procesamiento de imágenes
Función: procesamiento de imágenes

Según la solicitud, se nos encargó modificar los datos de una imagen (o varias imágenes) que fue recibida por la cámara del robot, a lo que decidimos hacer que roomba "cuente" la cantidad de objetos que ve en la imagen.

Seguimos la técnica de hacer que MATLAB dibujara límites alrededor de objetos ennegrecidos que contrastan con un fondo blanco. Sin embargo, esta función tiende a tener dificultades en un área abierta debido a las diferentes formas y colores que percibe la cámara, lo que resulta en recuentos inusualmente altos.

Tenga en cuenta que esta función no puede funcionar en el simulador porque no se proporciona una cámara; si se intenta, ocurrirá un error declarando que solo se puede usar una matriz (:,:, 3).

Paso 5: Función: mapeo

Función: mapeo
Función: mapeo
Función: mapeo
Función: mapeo
Función: mapeo
Función: mapeo
Función: mapeo
Función: mapeo

Una característica adicional que queríamos que tuviera el robot era trazar un mapa de sus ubicaciones, ya que interactúa directamente con el entorno. Por lo tanto, el siguiente código busca abrir un mapa y configurar un sistema de coordenadas que detalla cada ubicación en la que se presionan los sensores de parachoques del robot. Esta resultó ser la porción más larga de las tres partes para probar individualmente, pero resultó mucho más simple cuando se aplicó al guión final.

Con el fin de agregar un límite a la duración del tiempo de ejecución de la función, el límite n <20 en el ciclo while se usó con fines de prueba.

Sin embargo, tenga en cuenta que debido a la complejidad del código, se producen más errores a medida que el segmento de código se ejecuta durante mucho tiempo; de pruebas anteriores, diez golpes parecen ser el número de puntos antes de que ocurran errores significativos.

Paso 6: yuxtaposición

Yuxtaposición
Yuxtaposición
Yuxtaposición
Yuxtaposición
Yuxtaposición
Yuxtaposición
Yuxtaposición
Yuxtaposición

Dado que todo esto se colocará en un solo archivo, creamos una función usando cada uno de los dos pasos anteriores como sus subfunciones. Se hizo un borrador final con la siguiente modificación a la función redux llamada "recon". Para evitar confusiones para MATLAB, los scripts "counter" y "rombplot3" fueron renombrados como funciones integradas "CountR" y "plotr", respectivamente.

Se tuvieron que hacer varios cambios en la versión final a diferencia de los scripts anteriores:

-El origen siempre estará marcado con un círculo rojo

-Cada vez que el roomba se detiene de sus parachoques, la ubicación se marca con un círculo negro

-Cada vez que el roomba se detiene desde sus sensores de acantilado, la ubicación se marca con un círculo azul

-Cada vez que roomba deja de investigar el área, la ubicación se marca con un círculo verde

-Las imágenes se modifican para eliminar la parte superior debido a que la marca de tiempo puede interferir con los resultados

-Las fronteras no se contarán como un objeto debido a un número bastante alto adquirido

-Se han cambiado varias variables, por lo que para evitar confusiones use las versiones anteriores como referencia.

Paso 7: prueba

Pruebas
Pruebas

Las pruebas para cada componente individual demostraron ser bastante mixtas a veces, por lo que fueron necesarias modificaciones en ciertos valores preestablecidos. El trasfondo temático sobre el que queríamos probar las capacidades del robot en un área cerrada consistía simplemente en una pizarra colocada en un piso mucho más oscuro. Puede esparcir los objetos por el área; hacer que actúen como objetos con los que chocar o como objetos distantes del área en movimiento del robot.

Después de establecer su tiempo regulado y velocidad base, el roomba demostró un comportamiento de movimiento adecuado, deteniéndose y alejándose de cada "acantilado" u objeto contra el que chocaba, así como disminuyendo la velocidad al detectar algo cercano. Al alcanzar la distancia de viaje deseada de tres metros, el robot procedería a detenerse y evaluar el área, tomar imágenes de cada región de 45 grados y seguir adelante si el tiempo lo permite. Sin embargo, sus giros parecían más grandes de lo solicitado, lo que significa que los datos de las coordenadas se oscurecerían.

Cada vez que se detiene, se coloca un nuevo punto en la región aproximada de su posición en el sistema de coordenadas; sin embargo, se observa que la dirección inicial en la que comienza el roomba juega un papel fundamental en el diseño del mapa. Si se pudiera implementar una función de brújula, se habría utilizado como una parte crucial del diseño del mapa.

El tiempo real que tarda la función en ejecutarse por completo siempre supera el tiempo solicitado, lo que tiene sentido teniendo en cuenta que no puede detenerse en medio de una de sus recuperaciones. Desafortunadamente, esta versión del conteo de imágenes tiene sus problemas, especialmente en áreas que son en su mayoría monocromáticas o de brillo variable; debido a que intenta distinguir entre dos tonos, tiende a percibir objetos que no son deseados, por lo que siempre cuenta hasta números increíblemente altos.

Paso 8: Conclusión

Conclusión
Conclusión

Si bien esta tarea fue un trabajo muy aventurero y creativo que trajo consigo una alegría de alivio, yo, a partir de mis observaciones personales, pude ver una gran cantidad de errores que podrían ser problemáticos, tanto en el código como en el comportamiento del robot.

La limitación de usar la especificación de tiempo en el bucle while hace que la cantidad total de tiempo sea más larga de lo deseado; De hecho, el proceso de la técnica panorámica y el procesamiento de imágenes podría llevar más tiempo si se ejecutara con una computadora lenta o no se usara de antemano. Además, el roomba que se utilizó en nuestra presentación actuó con una gran cantidad de errores, especialmente en el movimiento, en comparación con el simulador. Desafortunadamente, el robot utilizado tenía una tendencia a inclinarse ligeramente hacia la izquierda al conducir en línea recta y hacer giros más largos de lo deseado. Por esta razón y muchas otras, se recomienda encarecidamente que para compensar estos errores, sea necesario realizar cambios en sus ángulos de giro.

Sin embargo, este es un proyecto largo pero intelectualmente estimulante que había actuado como una experiencia de aprendizaje interesante para aplicar códigos y comandos para afectar directamente el comportamiento de un robot real.

Recomendado: