Está en la página 1de 3

Herbie, un robot seguidor de línea.

Jesús Quintero Borrego, Mildre Fernández Espitia, Mateo Ripoll Oliveros.


Departamento de ingeniería eléctrica y electrónica
Fundación Universidad Del Norte
jaborrego@uninorte.edu.co, mateoripoll@uninorte.edu.co, mildref@uninorte.edu.co

I. PLANTEAMIENTO DEL PROBLEMA La rueda loca de Herbie permite que haga movimientos en
Como parte de las actividades que deben realizarse en el distintas direcciones libremente sin ningún problema. Por otro
curso “Introducción a la robótica móvil”, para esta tercera lado, el robot cuenta con 3 sensores ya que esta configuración
entrega se debía elaborar un robot que se guiara únicamente permite detectar cuando haya giros bruscos, ya que mientras
por una línea negra sobre el piso con el fin de atravesar la el central detecta la línea, los 2 externos se encargan de
pista desde el inicio hasta el final, una vez alcanzado el punto detectar los ángulos.
de destino se debía proceder a atrapar una pelota de hule
colocada cerca al mismo y de nuevo seguir la línea hasta Herbie al ser un sistema autónomo con motores, usa una
retornar al punto de partida con dicha pelota, teniendo en batería. Descartamos las pilas porque son muy grandes,
cuenta que además era importante el tiempo que este tardara costosas y al ser de gran tamaño, en ocasiones no permitían
en esto. Para lograr esto se trabajó con elementos con los que incluir más elementos necesarios al chasis. Como batería
ya se contaba como protoboards, jumpers, la plataforma decidimos usar una powerbank, que ya hemos usado
física, bluetooth, la utilización de la plataforma Arduino y anteriormente en otros robots.
fuentes de alimentación y otros que fue necesario adquirir,
como por ejemplo sensores infrarrojos además de la guía de
los profesores. Herbie, es el nombre que se le dio al robot,
que en esta etapa debía ser prácticamente autónomo, ya que él
debía elegir hacia donde moverse con el estímulo de los tres Figura 2
DIAGRAMA DE CONEXIONES SOBRE LA PROTOBOARD
sensores ubicados estratégicamente para que siguiera la línea
negra dibujada en el suelo.

II. DESCRIPCIÓN DE LA SOLUCIÓN


Herbie está conformado por un chasis de aluminio, dos
ruedas motorizadas con dos servomotores de rotación
continua, más una rueda libre para darle movilidad al robot.,
una powerbank como fuente de energía, una placa de Arduino
y 3 sensores en el frente que son los encargados de guiar a
Herbie en su recorrido.

Figura 1
DIAGRAMA DE CONEXIONES
El lenguaje de programación que usamos fue Arduino UNO. Servo1.write(180); // Ordenamos a Servo1 girar a su
El robot fue programado de tal manera que cuando sus máxima velocidad
sensores detectan la cinta negra en el suelo, gira a la derecha, Servo2.write(90); // Servo2 permanece estático
a la izquierda o siga en línea recta, dependiendo de que sensor }else{
detecte la presencia de la línea negra en el suelo realizando if(valor=='s'){
todo esto de manera automática, al llegar al final de la pista se Servo1.write(30); //Ambos servos giran hacia atrás
toma control del robot enviándole órdenes mediante un Servo2.write(150);
módulo bluetooth para capturar una pelota de hule con un }else{if(valor=='y'){
brazo creado usando un servomotor el cual también era Palanca.write(95);
controlado mediante bluetooth. A continuación, se adjunta el }else{
código con los comentarios pertinentes: if(valor=='x'){
Palanca.write(70);
}else{if(valor=='o'){
#include <Servo.h> Palanca.write(90);
#include <SoftwareSerial.h> }else{
SoftwareSerial Sensor(3,4); //RX|TX Servo1.write(90); // Servo1 permanece inmobil
Servo Servo1; Servo2.write(90); // Servo2 permanece estático
Servo Servo2; }
Servo Palanca; }
int sensor1 = 7; }
int sensor2= 6; }
int sensor3= 5; }
void setup() { }
Serial.begin(9600); }
Sensor.begin(9600); }
pinMode(sensor1, INPUT); }
pinMode(sensor2, INPUT);
pinMode(sensor3,INPUT);
Servo1.attach(10); III. PROBLEMAS Y LIMITACIONES
Servo2.attach(11); El principal inconveniente que encontramos en la
Palanca.attach(12); realización del proyecto fue un inexplicable delay el cual
Servo1.write(90); evitaba que uno de los sensores detectara la línea negra
Servo2.write(90); generando que el robot siguiera un trayecto equivocado al
Palanca.write(90); momento de tener que realizar un giro, para solucionar el
} problema lo primero que se intentó fue cambiar la
char valor; sensibilidad del sensor, dado que esto no funciono se decidió
void loop() { cambiar el sensor, se intentó con 4 sensores distinto y al
recibir la misma respuesta se revisó el código para verificar
//SEGUIDOR DE LÍNEA que el problema no estuviera en el código, tras verificar el
//int SensorDer=digitalRead(sensor2); código se buscó una nueva solución, se cambió la velocidad
int SensorIzq=digitalRead(sensor1); de los motores esperando que al ir mas lento el sensor tuviera
int SensorFrente=digitalRead(sensor3); suficiente tiempo para detectar la línea pero esto no fue
if( (SensorIzq==1) && (SensorFrente==0)){ posible, dado que se acababan las opciones se optó pedir
Servo1.write(95); ayuda al profesor el cual luego de verificar todo lo intentado
Servo2.write(75); anteriormente, sugirió cambiar los jumper conectados al
}else{ if((SensorIzq==0) && (SensorFrente==1)){ sensor pero esto tampoco logro solucionar el problema,
Servo1.write(100); llegando a la conclusión de que no hay explicación lógica
Servo2.write(86); para lo que estaba pasando con el sensor. A pesar de todo el
} esfuerzo, de modificar el código, la ubicación de los sensores
} no logramos solucionar el problema.
if(Sensor.available()){
valor=Sensor.read(); IV. RESULTADOS
if(valor=='W'){
Servo1.write(170); // Ordenamos al servo girar Durante la competencia Herbie logro cruzar la pista ya que no
Servo2.write(40); // Ordenamos al servo girar leía correctamente las líneas y lo que hacía que Herbie se
}else{ saliera de la pista.
if(valor=='a'){
Servo2.write(0); // Ordenamos a servo2 girar a su máxima
velocidad.
Servo1.write(90); // El servo1 permanece estático.
}else{
if(valor=='d'){
Evidencia
HERBIE

V. CONCLUSIONES

Con este proyecto se logró conocer algunos de los


comandos básicos de la plataforma de programación Arduino
y se aprendió como trabajar directamente con dicha
plataforma sobre un Arduino UNO. El objetivo principal
era hacer funcionar un robot que siguiera una línea negra
sobre el piso, y que no se saliera de la pista, no fue realizado
con mucho éxito. Si bien, se intentaron múltiples soluciones
finalmente, durante la competencia con los otros “Seguidores
de línea”, la tarea no pudo ser terminada.