0% encontró este documento útil (0 votos)
12 vistas9 páginas

Seguimiento de Líneas con Sensores de Luz

El informe detalla la práctica de laboratorio sobre el seguimiento de líneas en robots móviles utilizando sensores de luz, específicamente con el robot LEGO MINDSTORMS. Se implementó un código en la plataforma BRICX CC que permite al robot seguir una línea negra evitando obstáculos, utilizando un algoritmo PID. Las conclusiones indican que el robot avanza girando hacia la derecha al detectar blanco y hacia la izquierda al detectar negro, completando así el ejercicio propuesto.
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
12 vistas9 páginas

Seguimiento de Líneas con Sensores de Luz

El informe detalla la práctica de laboratorio sobre el seguimiento de líneas en robots móviles utilizando sensores de luz, específicamente con el robot LEGO MINDSTORMS. Se implementó un código en la plataforma BRICX CC que permite al robot seguir una línea negra evitando obstáculos, utilizando un algoritmo PID. Las conclusiones indican que el robot avanza girando hacia la derecha al detectar blanco y hacia la izquierda al detectar negro, completando así el ejercicio propuesto.
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

UNIVERSIDAD PRIVADA DEL VALLE

FACULTAD DE INFORMÁTICA Y ELECTRÓNICA


Evaluación
INGENIERÍA EN __________
CAMPUS TIQUIPAYA

Informe de Práctica de Laboratorio N°5


SEGUIMIENTO DE LÍNEAS EN
ROBOTS MÓVILES MEDIANTE
EL SENSOR DE LUZ
GRUPO “A”

Estudiante: Marcos Kevin Villafuerte Ramallo


Carrera: IMT
Materia: ROBÓTICA
Docente: Ing. Elias Chavez
Gestión: II-2024
Fecha de presentación: 13 de 05 del 2024
1
Página
SEGUIMIENTO DE LÍNEAS EN ROBOTS MÓVILES MEDIANTE EL
SENSOR DE LUZ

1. Marco teórico

Para detectar la línea, utilizamos sensores de reflectancia. Estos sensores operan emitiendo luz
mediante un diodo, generalmente infrarrojo, y midiendo la luz reflejada con un fotodiodo o
fototransistor. La lectura varía dependiendo de si la luz rebota en una superficie negra o
blanca. Es crucial tener en cuenta que la medición de estos sensores puede ser afectada por la
distancia a la superficie y la luz ambiental.

En esta experiencia, se utilizó un código simple pero basado en una lógica compleja
proporcionada por el docente. Primero, se emplea la función SetSensorLight para activar el
sensor de luz según el puerto al que está conectado, en este caso, el puerto 3. Una línea de
código fundamental es el "Umbral", que establece el nivel de luz que el sensor debe
reconocer. Este valor generalmente oscila entre 40 pero se recomienda calibrar el sensor
previamente.

Una vez que el sensor está activo, se controlan los motores mediante encendido y apagado,
además de ajustar la velocidad para que el robot pueda detectar y seguir las líneas
correctamente.

2. Resultados de Laboratorio Virtual


Programación en la plataforma BRICX CC
Utilizando el robot móvil LEGO MINDSTORMS (Prototipo armado con sensores y actuadores) para completar el
laboratorio, programe el robot en BRICX CC para que siga la línea negra usando el sensor de luz y el algoritmo PID.
El robot no debe chocar con ninguno de los obstáculos (vasos amarillos) a lo largo del recorrido.

Código usado:
from hub import port
2

import motor_pair
Página
#from runloop import until

import time

import color_sensor

#import gyro

#import motor

umbral=40

motor_pair.pair(motor_pair.PAIR_1, port.D, port.C)

# Función para avanzar encendiendo una pareja de motores con una velocidad específica

def avanzar(velocidad):

motor_pair.move(motor_pair.PAIR_1, 0, velocity=velocidad)

# Función para apagar una pareja de motores:

def detener():

motor_pair.stop(motor_pair.PAIR_1)

# funcion para avanzar una distancia determinada en centímetros

def avanzar_distancia(distancia_cm, velocidad):

# Calcular la cantidad de grados a girar en cada motor para recorrer la distancia deseada

DIAMETRO_LLANTA = 5.6 # Diámetro de la llanta en centímetros

CIRCUNFERENCIA = DIAMETRO_LLANTA * 3.14159 # Circunferencia de la llanta

grados_por_cm = 360 / CIRCUNFERENCIA # Cantidad de grados por centímetro recorrido

grados_a_girar =int ( distancia_cm * grados_por_cm)

# Encender los motores para avanzar

motor_pair.move_tank_for_degrees(motor_pair.PAIR_1, grados_a_girar, velocidad, velocidad)


3
Página
# funcion para girar

# Función para girar el robot una cantidad de grados basada en los encoders de los motores

def girar_con_encoders(velocidad, grados_deseados):

# Calcular la cantidad de grados a girar en cada motor

# Insertar la distancia entre los extremos de las ruedas

Ancho=12.5 # en cm

# insertar el diametro de las ruedas

Diametro=5.5 # cm

GradosMotor=int (grados_deseados*Ancho/Diametro)

# Girar cada motor la cantidad de grados deseada

if GradosMotor<0:

motor_pair.move_tank_for_degrees(motor_pair.PAIR_1, GradosMotor, -velocidad, velocidad)

else :

motor_pair.move_tank_for_degrees(motor_pair.PAIR_1, GradosMotor, velocidad, -velocidad)

#################################################################################
######

# escribir tu codigo aqui

avanzar(400)

#until(color_sensor.reflection(port.A)<umbral)

while (color_sensor.reflection(port.B)>umbral):

umbral=umbral

detener()

avanzar(400)
4
Página

time.sleep_ms(800)
girar_con_encoders(300,110)

avanzar(400)

while (color_sensor.reflection(port.B)>umbral):

umbral=umbral

detener()

avanzar(400)

time.sleep_ms(800)

girar_con_encoders(300,110)

avanzar(400)

while (color_sensor.reflection(port.B)>umbral):

umbral=umbral

detener()

avanzar(400)

time.sleep_ms(800)

girar_con_encoders(300,110)

*****

detener()

avanzar(400)

time.sleep_ms(800)

while (color_sensor.reflection(port.B)>umbral):

umbral=umbral

detener()

avanzar(400)

while (color_sensor.reflection(port.B)>umbral):
5
Página
umbral=umbral

detener()

avanzar(400)

time.sleep_ms(800)

girar_con_encoders(300,110)

avanzar(400)

while (color_sensor.reflection(port.B)>umbral):

umbral=umbral

detener()

avanzar(400)

time.sleep_ms(800)

girar_con_encoders(300,110)

avanzar(400)

while (color_sensor.reflection(port.B)>umbral):

umbral=umbral

detener()

avanzar(400)

time.sleep_ms(800)

girar_con_encoders(300,110)

detener()

avanzar(400)

time.sleep_ms(800)

while (color_sensor.reflection(port.B)>umbral):
6
Página
umbral=umbral

detener()

print("Termino!!")

Realizar un video que muestren el proceso de movimiento del robot y su finalización en la


plataforma STREAM, añada el link junto al presente documento.
VID_20240508_095231.mp4

[Link]
[Link]/personal/vrm2018940_est_univalle_edu/_layouts/15/[Link]?id=%2Fperson
al%2Fvrm2018940%5Fest%5Funivalle%5Fedu%2FDocuments%2FVID%5F20240508%5F095231
%2Emp4&referrer=StreamWebApp%2EWeb&referrerScenario=AddressBarCopied%2Eview%2E23
696c6f%2D7774%2D4356%2D968c%2D6f04eb57d325

7
Página
Fotografías de inicio, etapa intermedia y fin del recorrido del robot móvil.

8
Página
3. Conclusiones

Se desarrolló el código del robot móvil de manera que, al detectar el color blanco, avance girando
levemente a la derecha. En contraste, al detectar el color negro, avance girando hacia la izquierda.
De esta forma, el robot sigue el borde izquierdo de la línea a seguir, logrando completar el
ejercicio del laboratorio
4. Cuestionario

1. Describa los sensores de LEGO MINDSTORMS NXT compatibles con LEGO MINDSTORMS
EV3
Todos son compatibles tanto distancia infrarrojo, enconder, giroscopio.
2. Describa dos tipos de algoritmos seguidores de línea comúnmente utilizados.
Seguir la línea por izquierda y seguir la línea por derecha

3. Describa mediante un ejemplo la forma de crear funciones en BRICX CC


prefijo sub y el nombre de la función, con las variables necesarias y entre corchetes las acciones que
realizara la función en BRICX CC

9
Página

También podría gustarte