Diferencia entre revisiones de «Sumo Plus»
(→Análisis) |
(→Soporte) |
||
Línea 154: | Línea 154: | ||
El modulo '''lectorPuertosJson.py''' tiene la informacion disponible sobre la comunicación. | El modulo '''lectorPuertosJson.py''' tiene la informacion disponible sobre la comunicación. | ||
+ | ==Propuestas a Futuro== | ||
==Soporte== | ==Soporte== | ||
====Falla en las baterías==== | ====Falla en las baterías==== |
Revisión del 03:13 28 jun 2020
Contenido
Introducción
Los robots de Sumo son desarrollos bastante accesibles para personas que se empiezan a incorporar al tema de la robótica, es un acercamiento muy interesante para los jóvenes, además de que al poderse competir permite que las habilidades se vallan perfeccionando y uno puede darle tanto en calidad de software como de hardware que uno quiera. Posiblemente sea de las plataformas más entretenidas para los jóvenes y algunos adultos, ya que les da la posibilidad de comparar su desarrollo directamente con otros y perfeccionarlo con la experiencia tanto en la mecánica como en la programación.
La elección del proyecto surge de una tormenta de ideas donde se procuro aprovechar al máximo la capacidad instalada de la placa Butia a la vez de procurar la integración con otros dispositivos y sensores de manera de enriquecer la experiencia del desarrollo, procurando dejar una puerta abierta para otros posibles desarrollos e integraciones.
Dada la orientación que se le termino dando al proyecto, se considera recomendable para personas de ciclo básico, ya que si bien se puede desarrollar la parte básica enteramente en TurtleBots, quedan algunos conceptos (como la modularizacion, el manejo de variables,etc) que no son recomendables para edades más tempranas.
Ademas se considera importante el trato de una serie de ejemplos de integración y manejo de archivos que sin duda serian mejor aprovechados por jóvenes que despierten cierto interés en el desarrollo.
Datos Generales
Repositorio Git | Repositorio |
Contacto - Sugerencias | mario12111988@gmail.com |
Entorno de Desarrollo | UBUNTU 16.04 |
Versión ARDUINO IDE | 1.8.13 |
Version TurtleBots | turtlebots_32_all.deb Instalar con udo dpkg -i turtlebots_32_all.deb |
Version PYTHON | 2.17 |
MATERIALES | KIT ROBOTICO EDUCATIVO BUTIA 2.0 |
CAJA DE SENSORES | |
Placa ARDUINO | ARDUINO UNO R3 |
HardWare | HP-Pavilion-dv6 con Procesador AMD 64 Bits |
Especificación del entorno de Desarrollo
Instalacion Arduino AMD 64 Bits
Descargar de la pagina de ARDUINO y de la carpeta de descargas descomprimir y realizar en terminal la seleccionar el siguiente comando
cuando estamos ubicados en la carpeta descargas.
$cd arduino-1.8.13/ $[ls-l] $./arduino-linux-setup.sh Run the script with command ./arduino-linux-setup.sh $USER $./arduino-linux-setup.sh $USER
Actividades Propuestas
Implementación
Planteo Básico
El planteo básico, orientado a estudiantes de Liceo, busca incluir el uso de las herramientas de desarrollo
para que los estudiantes puedan darle el aire que consideren mas adecuado. En esta etapa se ven tres grandes
focos que son :
Por un lado la calibración de los distintos sensores para ayudar a interpretar su medición y como ellos las lecturas
que los mismos toman varían por condiciones del medio.
Por otra parte el diseño y la solución de problemas de hardware, ya sea la creación de nuevas piezas como la parrilla
para empujar o la ubicación de los soportes para sensores.
Finalmente el diseño del software, las decisiones de diseño que se tomaron y una pequeña explicación que permita que
aquellos interesados puedan modificar el código para usos distintos al ya especificado.
Calibración de Sensores
Se recomienda ver el siguiente documento para profundizar el conocimiento sobre los sensores de distancia y de variación de color:
Archivo:MARIO IBANEZ 48008660 TALLER DE ROBOTICA LABORATORIO 1.pdf
Después de haber realizado un análisis sobre el comportamiento de los sensores se concluyo que las variaciones de luz ambiente generaban efecto
sobre las lecturas, es decir, el robot tenia un comportamiento distinto si el área de juego disponía de luz ambiente o no, posteriormente también
se comprobó que las sobras que la misma silueta del robot proyectaba lo inducían a error, con lo cual la dificultad del proyecto escalo si se quería
poder utilizar en cualquier ambiente que tuviera un pista delimitada sobre una superficie.
La solución que se opto fue una mezcla de manualidades y programación.
El primer problema se detecto desde la calibración de los sensores, al enfrentar variaciones de luz los sensores no estaban identificando bien cuando
el robot salia de la pista y cuando estaba adentro, lo que ocasionaba que se saliera o que quedara dando vueltas. Para remediar esto se decidió
ingresar un paso previo a la ejecución del programa principal que lo que hacia es tomar 100 lecturas con cada uno de los tres sensores y guardar el mínimo
con lo cual al encontrar una linea blanca el valor contrastaría claramente con el suelo y el robot optaría por volver y dar la vuelta.
Adicionalmente se agrego una tolerancia, la cual es variable, que permitía dar espacio para mejoras en la calibración. De esta forma conseguimos
aprovechar el tiempo del arranque de las partidas de sumo.
El siguiente paso fue adaptar la parrilla, la cual permitía el traspaso de la luz por los costados cuando la luz provenía de un ventanal o similar,
lo que ocasionaba que el butia al encontrase enfrentando el ventanal o dándole la espalda generara sombra sobre los sensores y dificultara la medición.
Se opto por poner dos paletas laterales que evitaran que la luz bajo el robot cambiara abruptamente. Debe de tenerse en cuenta que en las partidas de sumo
profesional los robots casi estan adheridos al piso, con lo cual los sensores no reciben cambios en la sombra que el robot proyecta.
En el caso de los sensores de distancia no se encontraron mayores problemas con la luz ambiente, por lo cual se mantuvo con la primera versión ajustada
a unos 55000 en el valor minimo de recepcion, ya menos de eso ( aproximadamente 25 cm) se interpretaría que el oponente esta en frente y el robot arremeteria
contra él.
Diseño de la Parrilla y Distribución de Sensores
La parrilla es un diseño de forma simple, básicamente es un rectángulo de 28 cm por 8 cm de alto, que cuenta en su parte central con una abertura de 7 cm por 4cm para que el sensor de distancia pueda sobresalir. Es importante que el sensor de distancia no haga contacto con los bordes porque de lo contrario la lectura puede verse afectada. Para mejorar la resistencia se agregaron varias capas de carton , de forma de dar robuztes y siempre evitando el contacto con el suelo.
con el suelo.
Posteriormente se agregaron dos aletas laterales para impedir la entrada de luz. Se puede agregar algún tipo de decoración o modificar el diseño, no obstante no vamos a ahondar en este tema. Los materiales también son variables.
Es muy importante que la parrilla no roce contra el suelo, impidiendo el avance del Robot.
Para la distribución de los sensores se opto por dos sensores frontales, izquierdo y derecho ubicados a la misma altura, ademas de un sensor
trasero, también de variación de color del suelo, para medir si se esta saliendo del área de juego.
En la practica con los dos primeros ha sido suficiente, ya que el oponente al que se ha enfrentado no puede empujar a nuestro robot fuera de la pista y al ser una pista circular (una vez calibrado el retroceso máximo ). De todas formas frente a un oponente real siempre es importante evitar que nuesto robot sea empujado en un anguno que no le permita darse cuenta de que va a ser sacado de la pista
Explicación General del Software
Planteo Avanzado
Integración con Arduino mediante Python
Librerias Necesarias |
serial |
simplejson |
Para aquellos interesados en profundizar sobre el tema se les recomienda ver Referencia Integración
Al momento de elegir la forma en la que íbamos a incorporar la informacion de los sensores de Arduino manejamos dos posibilidades, por un lado usar el código de
ejemplo Firmata que viene disponible en el IDE de ARDUINO o usar la comunicación serial a la implementacion de JSON, un
formato
de texto que podíamos usar para leer datos de los sensores.
Si bien Firmata proporcionaba multiples ventajas como el poder leer los pines a demanda, tener continuidad en los datos (en el caso de ARDUINO puede fallar el primer dato o algún dato en particular) y no necesitar de hacer una programación especifica en ARDUINO optamos por decidir el uso de la comunicación serial por un tema
de adecuación a los tiempos y conocimiento previo.
El modulo lectorPuertosJson.py tiene la informacion disponible sobre la comunicación.
Propuestas a Futuro
Soporte
Falla en las baterías
Usualmente cuando el Robot butia empieza a funcionar lento estamos ante una baja en las baterías, es recomendable, si se sabe que se va a
utilizar intensamente, cargar las baterías la tarde anterior. Generalmente las baterías brindan un voltaje en su conjunto de 9.6 V en teoría, pero al estar a
tope puede llegar en pruebas a 11 o mas, dependiendo de las baterías y el fabricante, cuando el voltaje llega a 9.6 el rendimiento comienza a verse afectado.
Se puede notar una lentitud en los motores y comienzan a andar sin fuerza. Los sensores no se ven afectados porque están alimentados por la PC.
Peso Excesivo
Falla en el Sensor de Distancia
Esta falla se atestigua en que el sensor reporta datos muy variables y poco fiables, por ejemplo pasa de 28000 a 50000 en pocos segundos sin que
en el entorno exista algún objetivo nuevo. Posiblemente se deba a una presión sobre los cables ocasionado por la parrilla, la forma de solucionarlo
a sido retirar la parrilla, desconectar el sensor y el cable. Suele suceder que a veces el problema persiste, por lo cual se recomienda también
cambiar o rotar el sensor.
Problemas Conexión
Puntualmente en la implementacion realizada con Python nos ha pasado que el robot butia tarda algunas veces en ser reconocido, podemos notarlo
por ejemplo porque nuestra consola nos va a estar mostrando -1 en todos los sensores, por lo cual es conveniente como primera solución conectar
y desconectar el usb, usualmente después de 4 segundos el Robot retoma bien. Si no genera ningún movimiento a conectar el usb es que la batería
debe estar acabada, en este caso a pesar de que los sensores registren no ocurrirá ningún movimiento.
Precauciones
En la medida de lo posible evitar que los jovenes realizen cualquier tipo de soldadura, es recomendable para el docente que no se manipulen soldadores
y cutters. En cuanto al Voltaje, si perciben que las luces de los sensores se apagan o bajan la intensidad durante la instalación es posible que este
realizando corto, se recomienda ver lo planteado para sensores que fallan. También es recomendable no tener el Butia sobre una mesa al encenderlo
porque se desplaza unos centímetros al encenderse y se puede caer.
Falla Puertos Seriales Ocupados o Python no puede acceder a Butia
En el caso de que les aparezca que tal o cual programa no funciona porque el puerto esta ocupado usualmente se debe a que están dejando un puerto escuchando
la informacion y es imposible acceder a el, suele pasar lo mismo cuando quieren ejecutar un programa de python y tienen el TurtleBots ejecutando algo en
consola
Falla Butia no avanza frontalmente de forma pareja
Si bien Butia avanza con una pequeña desviación hacia la izquierda, puede darse el caso de que exista una desviación importante, usualmente puede deberse
a que la rueda no esta bien atornillada, o a que algo esta atascado en la rueda, en el caso puntual del sumo básico puede pasar que la parrilla de cartón
sea demasiado larga y rose con el suelo.
Falla en los Sensores
La falla de sensores se puede apreciar cuando uno de los mismos da un valor de -1,o alguna lectura que es claramente erronea. En el caso de los sensores
de color nos podemos dar cuenta porque la luz del led verde no prende. En los casos que en el desarrollo del proyecto se nos plantean han estado:
1- Cambiar los Cables
2- Cambiar el Sensor
3- Revisar la Placa y los puertos
Siempre es aconsejable rotar puertos y sensores cuando nos percatamos de que uno no funciona.
En caso los Sensores de color, si al presionar el led verde mientras esta conectado este enciende, con hacer una presión un poco
mayor el contacto deberia quedar bien, se puede medir con un tester en caso de disponer de uno.