Crear un robot de competición Roborace

Especificaciones de Roborace


imagen

Roborace es una competencia en la que los autos robóticos compiten en una pista especial. Puede establecer una analogía entre Roborace y las carreras de Fórmula 1, con la excepción de dos puntos.
  • En primer lugar, en lugar de los autos de carreras a gran escala, están involucrados modelos de automóviles más pequeños y diseños originales con restricciones generales y de peso (WxD máximo = 25x50 cm y peso de hasta 3 kg).
  • En segundo lugar, en lugar de pilotos, el automóvil es controlado por una computadora a bordo que analiza las lecturas de varios sensores y orienta el automóvil en la pista, selecciona la velocidad de movimiento, evita colisiones con obstáculos y rivales. En realidad, el "comportamiento" del automóvil en la pista está determinado por el programa de control de computadora a bordo.

Roborace se lleva a cabo en forma de un campeonato que consta de etapas, que se organizan en varias ciudades de Bielorrusia y en el extranjero. Tanto las construcciones de nivel básico (por ejemplo, basadas en un constructor del tipo LEGO) como los dispositivos robóticos complejos participan en el campeonato. Las normas de competencia se forman de tal manera que cubren la gama más amplia posible de características y capacidades de las estructuras robóticas.

Figura 1 - Pista para robots de carreras:

imagen

considere la pista que se muestra en la Figura 1, a lo largo de la cual se moverá el robot. Los elementos obligatorios son líneas y paredes negras. Basado en esto, puede construir una estrategia para mover el robot a lo largo de la pista: por ejemplo, equipe el robot con sensores de línea negra y use las líneas de la pista para la navegación, o instale telémetros para detectar obstáculos y moverse a lo largo de las paredes.

Este artículo presenta uno de los robots que desarrollé para Roborace según la segunda estrategia (movimiento basado en las lecturas de los telémetros).

Etapas de crear un robot


La creación de un robot para Roborace comienza con la elección del chasis. Ahora las tiendas ofrecen una gran selección de plataformas con orugas y ruedas. Recomiendo centrarse en el diseño clásico cuando las ruedas traseras son accionadas por un motor eléctrico y las ruedas delanteras son accionadas por un servomotor . La Figura 2 muestra un robot para Roborace, construido de acuerdo con un esquema similar.

Figura 2 - Robot:

imagen

Tuve la suerte de comprar un modelo en un club local de modeladores de radio por poco dinero (los lectores pueden intentar hacer lo mismo en su región: por lo general, tienen muchos modelos obsoletos). Como el modelo comprado no tenía un motor de tracción, se instaló un motor comprado de 12 voltios. También podría usar un juguete normal: generalmente son bastante tenaces y solo necesita modificar la dirección.

Como en mi caso el servo ya estaba instalado, no hubo problemas con él.

El siguiente paso es la elección del tablero de control. Hay muchas opciones Elegí Arduino como la opción más fácil. Lo mismo se puede recomendar al lector, especialmente con falta de experiencia. Según mi amplia experiencia, para tales robots, los microcontroladores habituales de 8 bits son suficientes. Por lo tanto, si no planea usar una cámara para rastrear los movimientos del robot, no lo complique con un procesador más potente.

El servoaccionamiento se puede conectar directamente al Arduino, por ejemplo, a través del protector del sensor que se muestra en la Figura 3. También es conveniente conectarle sensores.

Figura 3 - escudo del sensor v4:

imagen

El motor no se puede conectar directamente al Arduino. Necesita utilizar un controlador de motor especial. Ahora hay muchos disponibles y hay instrucciones para conectarse. Usé el Motor Driver desarrollado en nuestro laboratorio (Fig. 4).

Figura 4: controlador de motor:

imagen

en las competiciones de robots, debe prestar mucha atención a las baterías. Yo uso baterías de polímero de litio. Se han demostrado muy bien. Uno de los hacks que uso en mi robot se refiere a un convertidor de voltaje. El convertidor nativo Arduino no es muy bueno, por lo que es bueno usar un regulador reductor para ahorrar batería . Por supuesto, puede usar un convertidor lineal convencional.

La parte más importante del robot son los sensores, lo que le proporciona información sobre el mundo, los obstáculos y otros robots. En la categoría de precio medio, podemos elegir entre sensores ultrasónicos e infrarrojos. En mi robot, uso sensores infrarrojos GP2Y0A02YK0F. No me gustan los sensores ultrasónicos debido al hecho de que un sensor puede ser ruidoso con otro. Por ejemplo, tuve tales situaciones: el sensor derecho envió una señal y el izquierdo la recibió. Todavía estoy trabajando en la colocación y gestión adecuadas de sensores ultrasónicos. La esperanza de su lanzamiento se ve constantemente alimentada por su precio.

El modelo de robot presentado aquí tiene tres sensores infrarrojos. Los sensores se pueden ver en la Figura 2. Se instalan profundamente en la carcasa por dos razones:
  1. para reducir la zona muerta del sensor, que en este modelo es de 20 cm;
  2. El cuerpo del robot protege los sensores del daño mecánico durante colisiones con otros robots.

Los sensores laterales se instalan en un ángulo de 45 grados. Bueno, si el diseño del robot prevé el ajuste del ángulo de su instalación.

El esquema general del robot se puede ver en la Figura 5.

Figura 5 - El esquema general del robot:

imagen

Programación robot


Como el robot usa Arduino, la programación se realiza usando el IDE de Arduino. El programa del robot es un circuito cerrado, que consta de los siguientes bloques:
  1. Filtrando lecturas del sensor;
  2. Cálculo del ángulo y la velocidad del robot;
  3. Transferencia de señales de control a mecanismos.

En esta estructura, no hay bloque para recibir información de los sensores. Como los sensores devuelven una señal analógica, el IDE Arduino tiene una función analogWrite (). Esta función funciona muy bien si la velocidad de medición no es importante. Pero como el robot fue diseñado para la competencia, se decidió interrumpir el procesamiento de los sensores.

Todas las placas Arduino integradas en el microcontrolador ATmega tienen la capacidad de realizar mediciones ADC en modo automático. Debe configurar este modo una vez y luego usar los valores obtenidos. Como resultado, el controlador comprueba constantemente los sensores, sin perder tiempo de CPU. El filtrado de las lecturas del sensor se realiza mediante un filtro mediano con una ventana de tres elementos.

Para moverse a lo largo de la carretera, se desarrolló el siguiente algoritmo. El robot compara las distancias con las paredes derecha e izquierda y, de acuerdo con esto, gira las ruedas en la dirección deseada. Si no hay obstáculos delante del robot, la velocidad aumenta, pero el ángulo de rotación máximo posible de las ruedas también disminuye. Esto es necesario para que el robot viaje más recto en secciones rectas. Cuando se detecta un obstáculo, el ángulo de rotación de las ruedas aumenta y el robot disminuye la velocidad.

Hay, por supuesto, problemas sin resolver. Por ejemplo, el robot no conoce la curvatura del giro, por lo que se ralentiza antes de cada giro.

Puede ver el código del proyecto en GitHub .

Source: https://habr.com/ru/post/es381775/


All Articles