ROBOTICA I
LABORATORIO 5
SEGUIDOR DE LINEA
GRUPO “B”
ESTUDIANTE:
SAMUEL EDGAR GOMEZ GERONIMO
Docente:ING. Erick Benitez Gareca
Cochabamba 10/5/2025
Gestión l – 2025
1) Competencia a Desarrollar:
• Conocimiento del kit educacional LEGO MINDSTORMS.
• Conocimiento de los sensores y actuadores que dispone LEGO.
• Sintaxis de comandos para programar el sistema
2) Marco Teórico
• Robot LEGO MINDSTORMS(NXT):
Los robots LEGO MINDSTORMS NXT son una plataforma de robótica educativa desarrollada por
LEGO en colaboración con el MIT. Estos robots permiten a los estudiantes aprender conceptos
de programación, electrónica y mecánica de una manera interactiva y divertida.
El cerebro del robot LEGO MINDSTORMS NXT es el bloque NXT, un microcontrolador que cuenta
con un procesador de 32 bits, puertos de entrada y salida para conectar sensores y motores, y
una pantalla LCD. Además, el kit incluye varios sensores como de tacto, de sonido, de luz y de
ultrasonido, así como tres motores eléctricos.
Figura 1. Robot LEGO MINDSTORMS(NXT) (LEGO, 2009)
Algunas de las aplicaciones típicas de los robots LEGO MINDSTORMS NXT incluyen la
construcción de robots móviles, robots seguidores de línea, robots evitadores de obstáculos y
robots que realizan tareas específicas como empujar objetos o recoger y transportar elementos.
(Group, 2006)
• Control PID:
La función nMotorPIDSpeedCtrl de RobotC utiliza un control PID (Proporcional-Integral-
Derivativo) para mantener una velocidad constante de los motores del robot. El control PID es
un algoritmo ampliamente utilizado en el control de sistemas, que combina tres acciones
diferentes para lograr un control preciso (Åström & Hägglund, 2006):
o Acción proporcional (P): Esta acción es proporcional al error entre la velocidad actual y
la velocidad deseada. Ayuda a corregir rápidamente las desviaciones de la velocidad.
o Acción integral (I): Esta acción acumula el error a lo largo del tiempo y lo utiliza para
reducir el error en estado estacionario. Esto ayuda a eliminar cualquier desviación
persistente de la velocidad deseada.
o Acción derivativa (D): Esta acción predice el comportamiento futuro del error y ajusta la
salida en consecuencia. Esto ayuda a amortiguar las oscilaciones y mejorar la estabilidad
del sistema.
• Sensor de luz :
El sensor de luz de LEGO MINDSTORMS NXT es un componente clave para la percepción del
entorno por parte del robot. Este sensor permite al robot detectar y medir la cantidad de luz
presente en su entorno, lo que puede ser útil para diversas aplicaciones, como seguimiento de
líneas, detección de obstáculos y reconocimiento de colores. (Baum, 2007)
El sensor de luz NXT utiliza un fotodiodo para convertir la luz incidente en una señal eléctrica
que puede ser procesada por el bloque NXT. La señal de salida del sensor varía en función de la
intensidad de la luz, lo que permite al robot medir y responder a los cambios en la iluminación
de su entorno
3) Materiales
MATRIALES Y EQUIPOS
Ítem Denominación Cantidad Unidad
1 LEGO MINDSTORMS 1 Pza
2 COMPUTADORA 1 Pza
3 CABLE RJ12 PARA LEGO 1 Pza
INSUMOS
Ítem Denominación Cantidad Unidad
1 Circuito 1 Pza
4) Procedimiento de desarrollo de la Practica:
Usando el robot LEGO MINDSTORMS NXT se realizara la programación del robot en primera instancia
con ayuda del software de LEGO MINDSTORMS para verificar el correcto funcionamiento del mismo la
pista será la siguiente :
Figura 2. Circuito a realizar
5) Tablas y Resultados
• Código :
// Variables de control
int kp = 2;
int ki = 0;
int kd = 20;
// Variables de referencia y cálculo de control
int ref = 50;
int tp = 30; // Velocidad base mayor
long integral = 0;
int lasterror = 0;
int derivative = 0;
int sensorluz = 0;
int error = 0;
int salida = 0;
int potma = 0;
int potmc = 0;
unsigned long t1 = 0, t2 = 0, dt = 1; // dt inicializado en 1 para evitar división por 0
task main()
{
SetSensorLight(IN_4); // Configura sensor de luz en el puerto 4
t2 = CurrentTick(); // Inicializa tiempo anterior
while (true)
{
sensorluz = Sensor(IN_4);
t1 = CurrentTick();
dt = t1 - t2;
if (dt == 0) dt = 0; // Evitar división por cero
error = sensorluz - ref;
integral = integral + error * dt;
derivative = (error - lasterror) / dt;
salida = (kp * error) + (ki * integral) + (kd * derivative);
potma = (tp + salida);
potmc = (tp - salida);
// Limitar valores entre 0 y 100
if (potma > 100) potma = 100;
if (potma < 0) potma = 0;
if (potmc > 100) potmc = 100;
if (potmc < 0) potmc = 0;
OnFwd(OUT_B, potma);
OnFwd(OUT_A, potmc);
lasterror = error;
t2 = t1;
}
}
Resultado:
Figura 3. Resultados del laboratorio
Parte 2: usando el mismo código realizo los resultados a este circuito son:
Figura 4. Resultados del segundo circuito
6) Cuestionario:
• Describa los sensores de LEGO MINDSTORMS NXT compatibles con LEGO MINDSTORMS EV3:
R:Los sensores de LEGO MINDSTORMS NXT compatibles con LEGO MINDSTORMS EV3 incluyen:
o Sensor de tacto
o Sensor de color
o Sensor ultrasónico
o Sensor de giroscopio
o Motor de servomotor
• Describa dos tipos de algoritmos seguidores de línea comúnmente utilizados:
R:Son :
o Algoritmo de seguimiento de línea proporcional (P)
o Algoritmo de seguimiento de línea proporcional-integral-derivativo (PID)
• Describa mediante un ejemplo la forma de crear funciones en BRICX CC
R:
Al crear funciones se tiene que tomar en cuenta que se necesita definir paramentros en este
caso por ejemplo la siguiente funcion:
void retrocederInicio() {
OnFwdReg(OUT_AB,50,OUT_REGMODE_SYNC);
Wait(cuenta); // Tiempo para volver al inicio, ajustalo según tu robot
Off(OUT_AB);
}
En esta funcion se encarga de retroceder los motores del robot lego durante un determinado
tiempo que es controlado en este caso por los temporizadores del controlador del robot
Se puede usar usando lo siguiente :
retrocederInicio();
7) Conclusiones:
En el laboratorio se pudo observar que al realizar el laboratorio en el primer circuito y en el
segundo lo mas importante del mismo es realizar un buen control PID para que el robot siempre este en
la línea negra y no se salga de la trayectoria además depende de como esta iluminado la pista porque en
el segundo el umbral se debe aumentar para realizar la trayectoria adecuada.
8) bibliografía
Åström, & Hägglund. (2006). Advanced PID control. ISA-The Instrumentation, Systems, and Automation
Society. Obtenido de Advanced PID control. ISA-The Instrumentation, Systems, and Automation Society.
Baum. (2007). Definitive guide to Lego Mindstorms. Apress. Obtenido de Definitive guide to Lego
Mindstorms. Apress.
Group, L. (2006). LEGO MINDSTORMS NXT: The mayan adventure. Wiley Publishing. Obtenido de LEGO
MINDSTORMS NXT: The mayan adventure. Wiley Publishing.
LEGO. (2009). LEGO MINDSTORMS. Obtenido de LEGO MINDSTORMS: https://www.lego.com/es-
es/service/building-instructions/8547
9)Anexos :