Tabla de contenido:

Hawking Bot: 5 pasos
Hawking Bot: 5 pasos

Video: Hawking Bot: 5 pasos

Video: Hawking Bot: 5 pasos
Video: Hawking's Bot - Tutorial 2024, Mes de julio
Anonim
Image
Image
Construye tu robot Hawking
Construye tu robot Hawking

El Hawking Bot es un proyecto Lego MINDSTORMS EV3 inspirado por el fallecido Stephen Hawking. Stephen Hawking tenía un buen sentido del humor, así que estoy seguro de que habría aprobado este proyecto. El Hawking Bot puede sortear obstáculos y responder a los movimientos y luego pronuncia uno de los famosos fragmentos de sonido de Stephen Hawking y se mueve en la dirección del objeto en movimiento. Utiliza el sensor ultrasónico que escanea su entorno con un movimiento de cabeza de barrido.

Paso 1: construye tu bot Hawking

Todas las piezas necesarias están en el set básico EV3 Lego MINDSTORMS con la excepción del sensor ultrasónico (sus ojos) que debe comprarse por separado.

Paso 2:

Imagen
Imagen

El código del Hawking Bot está escrito en python 3. Se puede descargar un archivo de imagen de arranque para ejecutar Python dentro de un entorno Debian Linux en el Hawking Bot del sitio web ev3dev. El código para ejecutar Hawking Bot se puede descargar desde aquí. Todo el código está contenido en un archivo de clase, por lo que puede usar los métodos existentes o incluso modificarlos si lo desea.

Vea este video con instrucciones detalladas sobre cómo configurar Debian Linux y Python3 en su robot. Aunque esto es específicamente para una configuración de Mac, aún será útil para obtener una comprensión general del proceso. Este es un trabajo en progreso. El sensor ultrasónico a veces no es confiable y esto requiere un código más inteligente para detectar "valores atípicos". Me gustaría ver contribuciones de otros para hacer que el código sea más eficiente y menos propenso a errores.

Paso 3: haz tus propios fragmentos de sonido de Hawking

Bien, ahora desea tener algunas citas famosas o simplemente algunas declaraciones simples del profesor Hawking. Hay toneladas de videos en los que puedes escucharlo hablar y luego están sus conferencias, que son un tesoro de sabiduría y fragmentos útiles.

Necesita un programa como Audacity que funcione en muchas plataformas para seleccionar y recortar sus fragmentos de sonido favoritos.

Guarde su fragmento de sonido como un archivo mono wav como SH6, SH7,… SH11, SH12 y así sucesivamente.

A continuación, encontrará algunas muestras que he creado de acuerdo con el método anterior.

Paso 4: consejos y trucos

Consejos y trucos
Consejos y trucos
Consejos y trucos
Consejos y trucos

El Hawking Bot viene con un módulo de autocomprobación para garantizar que todos los cables estén conectados y que la energía de la batería sea suficiente. Las conexiones sueltas, faltantes o incluso dañadas pueden ocurrir fácilmente. Entonces este módulo es muy útil. El método 'checkConnection' solo verifica si hay una conexión eléctrica. Aún debe asegurarse de que los motores estén conectados al puerto correcto.

El movimiento de deslizar la cabeza es esencial para que Hawking Bot escanee su terreno y encuentre el camino más largo sin obstáculos por delante. Los cables necesitan suficiente espacio para acomodar los movimientos de la cabeza; Por lo tanto, es aconsejable atarlos juntos como se muestra en la fotografía.

El Hawking Bot funciona mejor con obstáculos grandes y en una superficie plana y lisa. Las alfombras son más desafiantes para los motores y es posible que deba ajustar la configuración para ajustar el comportamiento de las diferentes superficies.

El Hawking Bot no es en absoluto perfecto y este es un prototipo que se beneficiará de más mejoras. El código está completamente comentado y debería ser fácil para usted averiguar qué hacen los distintos métodos. Se han comentado varios bits con #, si quita el # delante de 'imprimir', el programa en ejecución le mostrará las distintas lecturas y cálculos del sensor.

Paso 5: Mejoras sugeridas, actualizaciones e ideas futuras

Ahora que ha construido con éxito su robot, quiere llevarlo al siguiente nivel. Podría mejorar el método MotionDetector. Ahora mismo, muy a menudo se obtiene una lectura incorrecta. Puede ver las lecturas reales descomentando disA y disB (en la parte inferior del bloque de métodos). La lectura incorrecta generalmente se destaca de otras lecturas, por lo que podría escribir un algoritmo para evitar que el robot responda a una lectura incorrecta.

Quizás desee tomar el control total del robot y simplemente controlar a distancia sus diversas funciones. Puede hacer esto a través de Bluetooth y escribir un programa de Android para comunicarse con el robot. Sin embargo, un enfoque mucho más fácil sería encontrar un lugar para que el sensor de infrarrojos tome el control de Hawking Bot.

¿Qué hay de hacer que el robot aprenda sobre su entorno? Esto podría lograrse con un enfoque de k vecino más cercano o posiblemente una red neuronal. El bloque EV3 tiene una potencia de procesamiento limitada, aunque es compatible con Numpy. Una alternativa sería un BrickPi que le permitiría ejecutar una biblioteca de inteligencia artificial como Tensorflow, pero la intención de esta guía era usar el kit Lego EV3 MINDSTORMS sin la necesidad de comprar muchas piezas adicionales costosas además del sensor ultrasónico.

Sin embargo, el enfoque de aprendizaje de re-infocement de k vecinos más cercanos debería funcionar en el bloque EV3 y este es el algoritmo sugerido. Dejo en sus manos encontrar una implementación que funcione o detectar cualquier problema:

Aprendizaje reforzado para Hawkings Bot

La idea es que las 7 lecturas USS se codifiquen en un vector y los últimos 10 movimientos de cabeza se usen para crear un vector secuencial de 70 entradas. Las primeras lecturas están incompletas, por lo que se llenarán con ceros. Cada entrada contiene el valor de la distancia desde la USS. Este es el vector de estado s. El sistema permite 1000 entradas. A partir de entonces, se reemplazará la entrada más antigua y las entradas de edad para cada par s-r se reducirán en uno.

El bot no debe acercarse a un objeto a menos de 10 cm. Esto crea una recompensa negativa. Por simplicidad; las buenas acciones se recompensan con un 1 y las malas con un 0. Efectivamente, esto crea una probabilidad de recompensa para cada combinación de acción y estado. Usaremos recompensas con descuento y la política codiciosa de épsilon.

Esto crea 3 estados grandes - tabla de recompensas (s-r) para las tres acciones derecha, derecha e izquierda - puede ser posible tener velocidades rápidas y lentas para cada acción. Entonces tendríamos 6 acciones y 6 tablas de búsqueda s-r.

Cada vez que se registra un nuevo estado s, se compara con las tablas, se usa la distancia euclidiana (o una medida similar) para encontrar el vecino más cercano. Esto no se clasificará, sino que se establecerá un umbral t para aceptar el estado como muy similar, sobrescribir el estado existente y actualizar para obtener la recompensa más alta y llevar a cabo la acción asociada a. Si no es similar (d> t) ingrese un nuevo par s-r para cada acción a. Si hay un empate entre las acciones de for s-r (todas tienen la misma recompensa), elija al azar, pero esto no es común y podría omitirse.

Tendrá que determinarse experimentalmente, si es demasiado pequeño, se ignorarán estados similares y cada estado se considerará único. Una t demasiado grande significa que incluso estados bastante diferentes se agrupan, lo que podría afectar la capacidad de elegir buenas acciones. Puede ser posible utilizar métodos estadísticos para determinar la mejor t.

La tabla se parece a esto: No de entrada - Vector de estado - recompensa por la acción 1 - recompensa por la acción 2 - recompensa por la acción 3.

Supongo que la implementación real será complicada, pero debería merecer el esfuerzo. ¡Buena suerte!

Recomendado: