Skip to content
Tesela es un vehículo autónomo con autopilot, preparado para competiciones de siguelineas
C++ C
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
FreeCad
Imagenes
Partes Impresas
Programa/ControlSerieBTV3
README.md

README.md

Tsela

de NacioSystems:

Versión 1.3 Fecha: 31/10/2019

Este proyecto es un vehículo autónomo llamado Tsela (Tesela), que es capaz de conducir sin piloto por una pista de siguelineas. Realizado por NacioSystems (O Milladoiro):

Es un proyecto que tenía pensado desde hace un par de años, al ver las competiciones de siguelienas en la Oshwdem Coruña, y ver que todos los vehículos giran sobre dos o cuatro ruedas, pero forzando la velocidad de un lado respecto del otro, cuando en la práctica, salvo los vehículos con cadenas, todos los vehículos se mueven girando uno de los ejes, normalmente el delantero, haciendo coincidir la direccion de las ruedas delanteras con la secante de la curva.

Realmente al ver el resultado final, y las aprariencias del modelo, se me ocurrió llamarle Nisan Patrol, pero ese nombre ya estaba pillado. Me acordé también de Nicola Tesla, un pionero de los generadores eléctricos, pero el nombre tambien estaba pillado. Entonces recordé que las teselas, esos elementos geométricos que forman parte de la naturaleza, que fueron uno de los retos de la Oshwdem hace un par de años, podrían ser la clave. Así que me pareció muy apropiado el nombre de Tesela. Para abreviar, Tsela, Modelo 3, con Autopilot. :-)

Tesla


Introducción:

El chasis del vehículo está construido totalmente en madera, utilizando sobrante de madera de una caja de vino. Como motores utiliza dos micrometal que encontré perdidos y de los que desconozco su relación de reducción, aunque puedo decir que son muy potentes y poco veloces. Para controlar la velocidad de los motores utilizo un driver puente en H tipo L298N, que me permite regular la velocidad y el sentido de los dos motores. Por otra parte para leer la posición del vehículo respecto de la línea (negra) que debe seguir, utilizo una batería de cuatro sensores CNY70, puestos de modo transversal a la línea. Todo el conjunto está controlado por un Arduino Nano montado sobre una placa de expansión. La gracia del vehículo respecto de otros siguelíneas tradicionales, a parte de su bonito diseño totalmente artesano, es que gira gracias a un eje directriz delantero movido por un microservo SG90. Se alimenta todo el conjunto a través de dos baterías LiPo 18650 puestas en serie, con 8V de tensión nominal.

El vehículo se enciende por un interruptor que da tensión al driver de los motores y a la placa Arduino. La marcha se inicia pulsando un botón que pone el vehículo en estado Autopilot, que se encuentra en el techo, iniciando el movimiento hacia adelante y leyendo lo sensores infrarrojos. En función de la señal que reciba de los sensores, en caso de no estar centrado sobre la línea, manda una señal al microservo de la dirección para corregir la posición y centrarse en la línea.

A través del puerto serie permite la conexión remota por Bluetooth y la gestión del vehículo, desactivando el Autopilot previamente. En caso de estar activado el Autopilot no seguirá las instrucciones del piloto, salvo que no encuentre una línea a seguir, en ese caso, si encuentra una línea a seguir, tendrá prefrencia el seguimiento de la línea.

Si se toma el control por Bluetooth (9600,N,1), el Autopilot se puede activar o desactivar enviando el caracter 'P'. Es recomendable poner la aplicacion Bluetooth en modo repetitivo, con lo que se consigue girar progresivamente o acelerar mientras se pulsa botón correspondiente de la app. (ejemplo Bluetooth spp pro). Otras funciones implementadas para el contros serie son:

  • 'A' Avanza más rápido, acelera
  • 'R' Reduce la velocidad, decelera
  • 'D' Mueve la dirección hacia la derecha, muy poco respecto de la posicióin actual
  • 'I' Mueve la dirección hacia la izquierda, muy poco respecto de la posición actual
  • 'P' Cada pulsación cambia entre modo Autopilot o modo manual
  • '0' Para los motores y pone la dirección recta
  • 'C' Toca el claxon

Imagen Tesla

Los sensores infrarrojos están montados sobre una placa improvisada, utilizando una tarjeta comercial tipo, numerados de izquierda a derecha del 1 al 4. Cuando el vehículo está centrado los sensores centrales 2 y 3 estarían sobre la línea negra, devolviendo muy poca señal al sensor, mientras que el resto de los sensores, 1 y 4 estarían sobre el blanco de la pista, devolviendo mucha señal al sensor. El sensor sobre la pista puede estar en 8 posiciones distintas:

  • 1)- Sensor 1 en negro y resto en blanco. Vehículo muy desviado a la izquierda
  • 2)- Sensor 1 y 2 en negro y resto en blanco. Vehículo desviado a la izquierda
  • 3)- Sensor 2 en negro y resto en blanco. Vehículo ligeramente desplazado hacia la izquierda
  • 4)- Sensores 2 y 3 en negro y 1 y 4 en blanco. Vehículo centrado, posición ideal
  • 5)- Sensor 3 en negro y resto en blanco. Vehículo ligeramente desviado a la derecha
  • 6)- Sensor 3 y 4 en negro y resto en blanco. Vehículo desviado a la derecha
  • 7)- Sensor 4 en negro y resto en blanco. Vehículo muy desviado a la derecha.
  • 8)- Todos los sensores sobre blanco, fuera de pista

Placa receptores infrarrojos

Esquema conexionado sensores infrarrojos

Esquema conexión pines

Conociendo la ubicación del vehículo sobre la pista, el sistema de control puede actuar sobre los motores y la dirección para corregir la posición, si es necesario, siendo los giros más cerrados cuanto más desviado está de la posición ideal, que sería cuando el vehículo está centrado.

Si el vehículo está centrado avanza recto a la máxima velocidad, pero cuando llega a una curva, detecta que es un giro por la posición de los sensores y decide reducir la velocidad y girar el eje delantero para corregir la posición.

Si la curva es muy cerrada y va muy rápido, detectará el cambio de dirección pero es posible que pierda la señal de la línea negra, lo que sería una situación fuera de pista, entonces mantendrá una velocidad más reducida y la dirección girada totalmente hasta que recupere la línea y pueda seguir el camino.

Materiales y materiales reciclados:

El vehículo utiliza los siguientes materiales reciclados, que se pueden visualizar en las imágenes:

  • Chasis y bastidor totalmente de madera, de una vieja caja de vino
  • La placa que soporta los sensores es una tarjeta comercial tipo tarjeta de crédito.
  • Los ejes de la dirección son metálicos de un viejo camión de bomberos de juguete
  • Las ruedas son de un quad Lego en desuso
  • El altavoz Buzzer, también recuperado de un viejo juguete, que va en el portón trasero
  • Parte del cableado está basado en líneas de pares telefónicos reutilizados y cable bililar de audio
  • Las baterías LiPo 18650 son recuperadas de un viejo portátil que iba al desguace
  • Parte de la tornillería es de una vieja impresora HP Laserjet que tambien se envió al desguace
  • Los bornes y muelles del portabaterías son reutilizados de un control remoto de TV que no funcionaba
  • Para las bisagras del portón trasero y del capó delantero utilizo alfileres del empaquetado de los que traen la camisas de vestir
  • Los cristales tintados son trozos recortados de una separata de plástico, de las que se utilizan en carpetas de anillas perforadas.

Foto Maderas cortadas

Otros materiales:

También se han utilizado piezas impresas en 3D, para hacer la dirección, puesto que no servía ninguna dirección adecuada para este vehículo. La dirección es diseñada totalmente por mi, para integrar el Servo SG90, los ejes de dirección metálicos disponibles y las ruedas de Lego. Otras piezas impresas son la caja soporte de las baterías, también diseñada por mi y las piezas soporte de los motores al chasis. Para las piezas impresas he utilizado nueva tornillería de métrica M3.

Diseño sistema dirección

Foto Tsela sin carcasa

Materiales electrónicos:

Pista:

La pista del circuito a recorrer está montada en un tablero de 2x2m2, de color blanco, en el que se traza una línea negra de 1,9cm de ancho, que será la que marque el circuito a recorrer.

El recorrido del circuito es cerrado, los puntos de salida y llegada son el mismo. Tendrá una longitud aproximada de 4 metros e incluye rectas y curvas de diferentes radios. La curva de menor radio no será inferior a los 125 mm, y la distancia mínima entre dos partes próximas del recorrido no será inferior a los 250 mm. Las medidas y recorrido del circuito no se darán a conocer hasta el comienzo de la prueba.

Los vehículos (robots) deberán completar un recorrido completo en el menor tiempo posible.

Foto Pista

Condiciones iniciales:

En el inicio de la competición el vehículo se sitúa centrado sobre la línea del circuito, en la dirección a recorrer. El interruptor de encendido debe estar en ON y en el momento de salida habrá que iniciar el camino pulsando el botón de Autopilot. Deberá realizar el recorrido en el menor tiempo posible sin salirse del circuito y recorriéndolo completamente. Una vez terminado el recorrido se puede desactivar el modo Autopilot pulsando nuevamente en el botón correspondiente, o a través de Bluetooth de ser el caso.

Desplazamientos y giros:

Una vez puesto en marcha el vehículo inicia su movimiento a la máxima velocidad, manteniendo la dirección si está centrado. En el momento que detecta que no está centrado, inicia un giro del eje delantero, a través del Microservo SG90 para corregir su posición. Una vez se encuentra centrado de nuevo, el robot devuelve la dirección del eje delantero para continuar en línea recta.

Programa:

El programa está realizado con el IDE Arduino, para su programación directa a través de cable USB. En la carpeta software se puede ver el programa comentado. El programa cuenta con una pestaña de "configuracion.h", en donde está el pineado para las conexiones con el Arduino (sensores, microservo, botones, buzzer) para ajustar los valores por defecto, que dependerán de los motores y sensores utilizados en cada caso, si son diferentes a los de esta construcción. El programa está estructurado y comentado con lo que resulta fácil su comprensión, mantenimiento y modificación.

Construcción:

El resultado final es la progresión de varias experiencias sobre el modelo inicial trabajando únicamente sobre un bastidor de madera, al que fui añadiendo modificaciones según iban apareciendo las complicaciones o para simplificar problemas. El primer vehículo llevaba motores chinos sobre una plataforma de madera más larga, en la que fui acoplando ejes delanteros de giro de varios coches de juguete, accionados por un microservo y palancas de reenvío.

Ante el fracaso continuo con el sistema de dirección, especialmente por las holguras y el corto ángulo de giro, me propuse aprovechar parte de uno de los ejes de un juguete que había usado para construir un nuevo sistema delantero de dirección, utilizando FreeCad. El resultado espectacular. Un único inconveniente, el vehículo resulta muy largo y limita el ángulo de giro. Las primeras pruebas las hago sin sensores, moviendo el vehículo a través de un control por Bluetooth y comprobando su comportamiento con control manual. Primer objetivo reducir la longitud del bastidor para mejorar el ángulo de giro, para llegar a los 12,5cm de radio de giro de la Oshwdem.

A esta segunda versión ya le incorporo todos los elementos electrónicos, incluyendo el sensor de líneas. Este sensor iba situado muy avanzado delante de eje de dirección, para anticiparse a las curvas. Después de muchos ajustes, placa controladora, baterías, dirección, driver de motores, vemos que queda espacio para reducir más la longitud del bastidor. Aparece un nuevo problema, en curvas cerradas, el sistema de dirección gira bien, pero la velocidad es muy alta y los motores no tienen la calidad suficiente para mantener el empuje con valores pequeños de PWM. En curvas cerradas el vehículo se queda por falta de empuje o sale disparado fuera de la pista por mucha potencia en los motores. Decisión, cambiar motores.

En una nueva versión ya incorporo un soporte para las baterías impreso en 3D y diseñado en FreeCad (Gracias por tus microtutoriales Obijúan)

Foto portabaterías LiPo

El cambio de motores supone también la necesidad de un sistema de acople a la carrocería. Se resuelve con un diseño en Freecad de nuevas piezas que abrazan lon motores al bastidor de madera y permiten la incorporación de amortiguadores, listas para imprimir en 3D. En esta versión también se comprueba la viabilidad de acercar el sensor para ponerlo debajo del tren delantero. El resultado es prometedor, el vehículo recorre perfectamente circuitos muy complejos sin salirse de la pista, aunque todavía pegando bandazos en la dirección.

Nuevo Tesela

Para el ajuste de los motores incorporo una bola metálica delantera que levanta el tren de dirección. De esta manera Tseo puede funcionar siguiendo las lineas por el método tradicional, cambiando la velocidad de los motores derecho e izquierdo para centrarlo en la línea. Una vez ajustada esta velocidad se puede suprimir la bola metálica y dejando los giros en manos de la servo-dirección, ya suavizada, actuando los motores a modo de ASR, control de la tracción para evitar el deslizamiento. Los bandazos de la dirección se suavizan haciendo una media entre la posición del servo en la dirección anterior y la nueva dirección:

// SalidaPinDir es el valor que ponemos al servo
//SPD_Anterior es el anterior valor que tenía el servo
// Calculamos la media con la anterior
  SalidaPinDir=(SalidaPinDir+SPD_Anterior)/2;
  // Ahora la anterior pasa a ser la actual
  SPD_Anterior=SalidaPinDir;

A partir de aquí empiezo a construir la carrocería, dibujando directamente las medidas que tomo en el chasis sobre la madera y cortando con una sierra de calar. Unimos las piezas con cola blanca para madera, lo lijo y lo pinto de color rojo con spray. El portón trasero es abatible, lo que permite acceder al puerto USB para la programación del Arduino Nano. Tambien se abre el capó delantero, dando acceso al driver de los motores, y el botón de desconexión del driver, muy práctico para hacer pruebas sobre la línea sin moverse.

Foto chasis en construcción

En esta versión se incorporan dos botones en el techo del vehículo, uno, el de la izquierda si miramos en el sentido de avance, es el que activa y desactiva el Autopilot, lo que permite el arranque y parada en competición. El otro, el de la derecha y que en la actualidad activa el claxón, está pensado para futuras ampliaciones, encendido de luces, cambio de estado, etc.

Se incluyen en los archivos FreeCad el diseño de la carrocería en 3D, por si alguien quiere ver las dimensiones de las piezas o imprimirla en material plástico en vez de recortar madera.

Diseño carrocería

Montaje carrocería

Piezas impresas:

Pendiente:

En este momento tengo pendiente de incorporar otras funcionalidades:

  • Medir el estado de las baterías LiPo 18650, para informar del cambio de baterías cuando la tensión baja de 3.7V
  • Incorporar luces LED de posición delanteras (blancas) y traseras (rojas), así como de dirección (intermitencias amarillas)
  • Controlar el encendido y apagado de los sensores IR mediante un transistor controlado por pin 10
  • Incorporar un cargador de dos celdas para LiPo, para poder cargar las baterías por USB o fuente externa sin tener que sacar la carrocería.

Referencias:

Autor:

Ignacio Otero

Agradecimientos:

Muchas gracias Bea por tu colaboración en la revisión y corrección de esta página.

Licencia:

Todos estos productos están liberados mediante Creative Commons Attribution-ShareAlike 4.0 International License.

You can’t perform that action at this time.