Está en la página 1de 6

ROBOTICA MOVIL

LABORATORIO 1: INTERACCIÓN ENTRE SENSORES Y ACTUADORES EN UNA APLICACIÓN DE ROBÓTICA


MÓVIL

1. OBJETIVOS
• Utilizar motores y sensores necesarios en la navegación activa.
• Identificar la plataforma mecánica de un robot móvil y llevar a cabo la tarea de seguimiento de una
trayectoria fijada en simulación mediante una cinta negra.
• Conocer un simulador práctico para la implementación de algoritmos para robots seguidores de línea.

2. INTRODUCCIÓN
Los sensores y los actuadores juegan un papel de suma importancia en las aplicaciones de robótica móvil, debido
a que con los sensores el robot puede percibir o medir el medio. Si el sistema dinámico no tiene la capacidad de
leer las condiciones del escenario puede tener como consecuencia, por ejemplo, una colisión frente a algún
obstáculo. Así mismo, los actuadores le permiten al robot dar la movilidad respectiva para que se efectúe un
movimiento de acuerdo a unas condiciones establecidas según la información percibida del medio. Los sensores
y los actuadores están relacionados con el sistema de control como se muestra en la figura 1.

Percepción Control Actuación

Figura 1. Diagrama de bloques donde se menciona la ejecución de una labor de sensado del medio y la
actuación de acuerdo a una lógica implementada por una etapa de control.

Percepción: Es el proceso de leer la información proveniente de la naturaleza o externa / interna que rodea al
robot. Para los robots móviles los sensores más empleados son: Sensores de localización, de distancia, de
recorrido, de energía y consumo de potencia.

Actuación: Relacionado directamente con la locomoción, es decir, con la manera en que el robot efectúa el
movimiento sobre el medio. En robótica móvil, la locomoción depende de las características del robot y puede
estar representada en los siguientes tipos: Locomoción por patas, por ruedas y por orugas. El sistema de
locomoción más empleado en robótica móvil no solo por su estabilidad estática en el terreno sino por su
facilidad de control es la locomoción por ruedas. Dentro de las configuraciones clásicas de robot con ruedas
pueden ser: La configuración diferencial en la cual el robot cuenta con 2 llantas ubicadas ya sea en la línea
central del mismo, o en el eje trasero de tal manera que son manejadas de forma independiente y una rueda
de estabilidad. Con esta estructura se puede controlar la clase de giro o el radio de curvatura que el robot puede
generar. Una segunda configuración de locomoción que existe para robótica móvil es la configuración tipo carro
(Ackerman) donde el robot cuenta con tres llantas; una llanta delantera que le da el giro (conocido como la
orientación) y dos llantas acopladas por el mismo eje donde su única función es dar al robot el movimiento de
adelante o hacia atrás. Una siguiente configuración de locomoción es dada por los robots omnidireccionales en
donde debido a la orientación y tipo de ruedas, el robot tiene la capacidad de desplazarse perpendicular a su
eje de movimiento.

Control: Es el bloque dedicada a dar inteligencia al sistema completo. Tiene la responsabilidad de leer el valor
leído de parte de los sensores para tomar la decisión más acertada de movimiento a través de una orden al
sistema de locomoción. El sistema de control puede ser implementado desde un microcontrolador hasta un
sistema embebido complejo. Sin la lógica de control, el robot móvil carece de inteligencia para tomar decisiones
en caso de un repentino suceso en el medio.

SIMULADOR C ROBOT SIMULATOR PARA ROBÓTICA MÓVIL

La empresa Thew-Bot desarrolló el software C Robot Simulator con el propósito de generar aplicaciones clásicas
de seguidores de línea y detectores de obstáculos con la lectura y escritura de funciones en el esquema de los
bosquejos de Arduino como se muestra en la figura 2

Figura 2. Front-End del entorno de simulación C Robot Simulator.

El software cuenta con funciones propias para la lectura de sensores seguidores de línea como sensores
frontales. Todos estos entregan la información de manera analógica (0 - 1023). De todos los sensores que
incluye el sistema, 8 (PA0 – PA7) son para la lectura de una cinta negra cuya ubicación a lo largo de la zona
frontal del robot puede configurada por el usuario. El sensor restante puede simular a un clásico sensor de
distancia infrarrojo conectado al pin PA8.

Así mismo, el software cuenta con las funciones de movimiento de los motores teniendo en cuenta que la
configuración soportada es del tipo “Diferencial”. Para ello, se tienen funciones para el movimiento hacia
adelante, atrás, izquierda y derecha con un valor de velocidad asignado por el usuario.
Como todo sistema de visualización de información, este software posee rutinas para visualizar en la pantalla
LCD la información que se requiera, así mismo, cuenta con pulsadores y leds para realizar depuración.

3. AMBIENTACIÓN EN EL RECONOCIMIENTO DE LOS PERIFÉRICOS (MOTORES Y SENSORES)

Manejo sencillo de los motores


Las funciones habilitadas para el control de movimiento del robot se enumeran a continuación:

• void motor(int i, int power): Permite asignar potencia a un motor especificado por el
argumento 𝐢𝐢. El valor del argumento 𝐩𝐩𝐩𝐩𝐩𝐩𝐩𝐩𝐩𝐩 puede ser positivo (movimiento hacia adelante) o negativo
(movimiento hacia atrás). El argumento i define: i = 1 para el motor izquierdo, i = 2 para el motor
derecho.
• void ao(): Detiene todos los motores
• void motor_stop(int a): Permite detener de forma individual o conjunta los motores. El
argumento 𝐚𝐚 define lo siguiente:
• a = 1 detiene el motor izquierdo
• a = 2 detiene el motor derecho
• a = 0 o a = ALL detiene todos los motores
• void fd(int p): Mueve el robot hacia adelante con velocidad dada por el argumento 𝐩𝐩
• void bk(int p): Mueve el robot hacia atrás con velocidad dada por el argumento 𝐩𝐩
• void tl(int p): Mueve el robot hacia la izquierda con velocidad dada por el argumento 𝐩𝐩
• void tr(int p): Mueve el robot hacia la derecha con velocidad dada por el argumento 𝐩𝐩
• void sl(int p):Rota el robot hacia la izquierda con velocidad dada por el argumento 𝐩𝐩
• void sr(int p): Rota el robot hacia la derecha con velocidad dada por el argumento 𝐩𝐩
• void fd2(int a, int b): Permite dar el movimiento hacia delante de las ruedas de forma
individual de tal forma que pueda generar giros sobre cuyo se encuentre en la rueda que más lento anda.
a velocidad de la rueda izquierda, b velocidad de la rueda derecha.

Manejo básico del LCD


El manejo del LCD se puede realizar de manera cómoda a través de la función lcd. El display LCD permite mostrar
16 caracteres por línea y en total posee 2 filas.
La siguiente figura muestra el sistema de referencia utilizado en la pantalla. Los métodos más habituales son los
siguientes:

• void lcd(String str): Esta función permite visualizar en la pantalla cualquier información de
tipo cadena que sea presentada como argumento.
Obteniendo información sensorial
El objetivo principal de esta sección es que aprenda a usar los sensores para obtener información sobre la
intensidad de luz que recae sobre una cinta negra ubicada sobre el suelo y la información de distancia a un
obstáculo cercano. Las funciones representativas son:

• int analog(int ch): Lee los valores de las entradas analógicas conectadas al dispositivo detector
conectada a la canal 𝐜𝐜𝐜𝐜
• ch = 0: 7 corresponde al sensor de línea
• ch = 8 para sensor frontal

La figura 3 muestra la configuración de los sensores de piso donde se permite definir su ubicación de acuerdo a
la regleta base que está generada.

Figura 3. Esquema de configuración de los sensores analógicos

Para los botones que trae por defecto la herramienta se tiene definido las siguientes funciones:

• int sw1(): Lee el valor del interruptor 1. Retorna 1 cuando el interruptor 1 es presionado y 0 cuando
no ha sido presionado.
• int sw2(): Lee el valor del interruptor 2. Retorna 1 cuando el interruptor 2 es presionado y 0 cuando
no ha sido presionado.
• int sw3(): Lee el valor del interruptor 3. Retorna 1 cuando el interruptor 3 es presionado y 0 cuando
no ha sido presionado.
• void sw1_press(): Esta función espera hasta que se presione el pulsador SW1
• void sw2_press(): Esta función espera hasta que se presione el pulsador SW2
• void sw3_press(): Esta función espera hasta que se presione el pulsador SW3

5. IMPLEMENTACIÓN – PROPUESTA RETO 1

• Implementar un robot seguidor de línea sobre una pista circular con un solo sensor para seguir la línea.
Puede utilizar algunas de las pistas predeterminadas que trae la herramienta en su repositorio.
• Diseñe una pista personalizada como se muestra en la figura 4 e implemente un control de seguimiento
de línea negra a través de una estrategia PID donde se utilice un arreglo de 5 sensores como se muestra
en la figura 5

Figura 4. Esquema de trayectoria con cinta eléctrica

Figura 5. Representación de la ubicación de los sensores seguidores de línea para la estrategia de seguimiento
mediante un control PID

Para la estrategia de control utilice la siguiente ecuación:


𝑑𝑑𝑑𝑑(𝑡𝑡)
𝑢𝑢(𝑡𝑡) = 𝐾𝐾𝑝𝑝 𝑒𝑒 + 𝐾𝐾𝐼𝐼 � 𝑒𝑒 (𝜏𝜏)𝑑𝑑𝜏𝜏 + 𝐾𝐾𝐷𝐷
𝑑𝑑𝑑𝑑
Una estrategia utilizada en los seguidores de línea con varios sensores es multiplicar el valor de lectura por un
coeficiente que determine el grado de movilidad frente a la corrección, es decir, si el sensor de más de la
izquierda es el sensor 1 y el de más de la derecha es el sensor 5 realizar el siguiente procedimiento. Multiplicar
el resultado del sensor 1 por -3 lo que indica que si se encuentra sobre la línea negra el robot debe hacer una
corrección más fuerte a la derecha, luego multiplicar el sensor 2 por -2 indicando que debe hacer corrección a
la derecha menos fuerte, luego el sensor 3 por 1 indicando que el robot se encuentra centrado, luego el sensor
4 por 2 para indicar que debe hacer una corrección hacia la derecha y por último el sensor 5 por 3 para indicar
que debe hacer una corrección fuerte a la derecha.
𝑒𝑒 = −3 ∗ 𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠[0] − 2 ∗ 𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠 [1] + 𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠 [2] + 2 ∗ 𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠[3] + 3 ∗ 𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠[4]

Convertir la ecuación del control PID presentada anteriormente de forma analógica a una forma que se adapte
de manera digital para la corrección de la posición del robot sobre la línea negra. Recuerde que una velocidad
positiva es un giro hacia adelante, mientras que un valor de velocidad negativo es un giro hacia atrás.

Es importante tener en cuenta que debe de ajustarse las constantes 𝐾𝐾𝑃𝑃 , 𝐾𝐾𝐼𝐼 , 𝐾𝐾𝐷𝐷 de acuerdo a un criterio de
sintonización y respuesta del robot.

Documente detalladamente el proceso realizado en cada punto a resolver.

4. REFERENCIAS
[1] Sitio WEB de Arduino, www.arduino.cc

[2] Fernando Reyes Cortes, Jaime Cid Monjaráz, “ARDUINO, Aplicaciones en Robótica Mecatrónica e Ingeniería”,
Editorial Alfa - Omega.

[3] Mohammed Abdul Kader, Md.Zakaria Islam, Jobair Al Rafi. “Line Following Autonomous Office Assistant
Robot with PID Algorithm”, Int. Conf. on Innovations in Science, Engineering and Technology (ICISET),
Bangladesh, 2018

También podría gustarte