Está en la página 1de 106

See discussions, stats, and author profiles for this publication at: https://www.researchgate.

net/publication/348993028

Diseño de un Robot Autobalanceado.

Thesis · June 2019


DOI: 10.13140/RG.2.2.25263.46242

CITATIONS READS
0 1,693

1 author:

Jose Alejandro Concepción Álvarez


Universidad Tecnológica de la Habana, José Antonio Echeverría
2 PUBLICATIONS   0 CITATIONS   

SEE PROFILE

Some of the authors of this publication are also working on these related projects:

Robot Autobalanceado View project

All content following this page was uploaded by Jose Alejandro Concepción Álvarez on 03 February 2021.

The user has requested enhancement of the downloaded file.


Universidad Tecnológica de la Habana
Facultad de Automática y Biomédica

Diseño de un Robot Autobalanceado.

Autor: Jose Alejandro Concepción Álvarez


Tutor: Gustavo Viera López

Trabajo de Diploma
presentado en opción al título de
ingeniero en Automática

junio de 2019
Dedicada a mis padres, a mi hermana y a mi novia, las personas más
importantes en mi vida.
Agradecimientos

Las siguiente lista de personas fueron muy importantes en el desarrollo


de mi tesis, a todos ellos mi más grande agradecimiento.
A mi madre, por el apoyo incondicional y el cariño brindado a lo largo
de mi vida. Sin ti, mamá, nada de lo que soy hoy y lo que seré hubiese
sido posible.

A mi padre por siempre ayudarme en todo y sacarme de los apuros, el


fue el principal inversionista y proveedor de los componentes necesarios
para la construcción del robot.

A mi hermana por darme fuerzas en momentos en que el desánimo


intentó apoderarse de mi.

A mi novia Talia Marrero por su amor y comprensión en los momentos


de estudio.

A mis suegros por su apoyo en estos 5 años.

A mis amigos Tony, Roger y Joaquin por todo lo que hicieron durante
la carrera para ayudarme a ser mejor.

A mi tutor Gustavo Viera López por su dedicación y ayuda en el


desarrollo de este trabajo.

Al doctor en ciencias Eduardo Orlando Planos Gutiérrez y su esposa,


la máster en ciencias Maritza González Cordero por su colaboración
en la revisión del documento de la Tesis

A la Chicha por sus almuerzos tan importantes luego de largas jornadas


de estudio en su casa.

Al compañero Lorenzo Regalado por ayudarme a conseguir la batería,


un nuevo módulo de bluetooth y las ruedas del robot.

iii
A la empresa de desarrollo de software Peoplegoto por el apoyo y los
conocimientos aportados para la implementación de la aplicación móvil
desarrollada en este trabajo.
Resumen

En este trabajo se diseña y construye un robot autobalanceado sobre dos


ruedas basado en el microcontrolador Arduino. Para el control de equilibrio
se implementa un algoritmo de tipo PID en cascada. Se aplican diferentes
técnicas de filtrado digital para la obtención del ángulo de inclinación, como
el Filtro Complemento. Para implementar un controlador PID en cascada,
se combinan eficientemente las lecturas de encoders y sensores inerciales que
permiten la medición de velocidad del robot. Se construye un prototipo y
se obtienen resultados a diversas pruebas para evaluar el funcionamiento de
los algoritmos de control implementados.

v
Abstract

In this work, a two wheels self-balancing robot is developed. For sta-


bility control, different algorithms based on PID controllers are evaluated,
especially cascaded PID controllers. Different digital filtering techniques are
applied to obtain the inclination angle, such as the Complement Filter. In
order to implement a cascaded PID controller, the Kalman filter is imple-
mented to efficiently combine the readings of encoders and inertial sensors,
obtaining the robot’s speed measurement. A comparison is made between
the result of applying a simple PID controller and a cascaded one. A pro-
totype is built and results obtained by subjecting the robot to different test
scenarios.

vi
Índice general

Introducción XIII

1. Generalidades de los robots autobalanceados sobre dos rue-


das 1
1.1. Introducción a la robótica móvil . . . . . . . . . . . . . . . . 1
1.1.1. Accionamiento Diferencial . . . . . . . . . . . . . . . . 1
1.1.2. Accionamiento Ackerman . . . . . . . . . . . . . . . . 2
1.1.3. Accionamiento Triciclo . . . . . . . . . . . . . . . . . . 3
1.2. Modelo y dinámica del péndulo invertido . . . . . . . . . . . . 4
1.2.1. Dinámica del péndulo invertido . . . . . . . . . . . . . 6
1.2.2. Ecuaciones de movimiento . . . . . . . . . . . . . . . . 7
1.3. Métodos de control de robots autobalanceados . . . . . . . . 8
1.3.1. Control basado en PID en cascada . . . . . . . . . . . 9
1.3.2. Control basado en lógica difusa . . . . . . . . . . . . . 13
1.3.3. Control basado en LQR . . . . . . . . . . . . . . . . . 14
1.4. Conclusiones parciales . . . . . . . . . . . . . . . . . . . . . . 15

2. Sistemas de medición de variables del robot 17


2.1. Posicionamiento de robots móviles . . . . . . . . . . . . . . . 18
2.2. Sistemas odométricos . . . . . . . . . . . . . . . . . . . . . . . 18
2.2.1. Encoder óptico incremental . . . . . . . . . . . . . . . 19
2.2.2. Encoder magnético . . . . . . . . . . . . . . . . . . . . 19
2.3. Sistema de navegación inercial . . . . . . . . . . . . . . . . . 20
2.3.1. Acelerómetro . . . . . . . . . . . . . . . . . . . . . . . 20
2.3.2. Giroscopio . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.4. Posicionamiento absoluto . . . . . . . . . . . . . . . . . . . . 25
2.4.1. Magnetómetro . . . . . . . . . . . . . . . . . . . . . . 25
2.4.2. Modelo del magnetómetro . . . . . . . . . . . . . . . . 26
2.4.3. Posición global por satélite . . . . . . . . . . . . . . . 27

vii
2.5. Obtención del ángulo de inclinación . . . . . . . . . . . . . . 28
2.5.1. Método basado en un acelerómetro . . . . . . . . . . . 30
2.5.2. Método basado en un giroscopio . . . . . . . . . . . . 32
2.5.3. Filtro complemento . . . . . . . . . . . . . . . . . . . 34
2.6. Obtención de las velocidades . . . . . . . . . . . . . . . . . . 39
2.6.1. Medición de velocidades usando encoders . . . . . . . 39
2.6.2. Medición de velocidades usando un sensor inercial . . 45
2.7. Conclusiones parciales . . . . . . . . . . . . . . . . . . . . . . 47

3. Construcción del robot 49


3.1. Definición de los requerimientos funcionales . . . . . . . . . . 49
3.2. Selección de los componentes del sistema . . . . . . . . . . . . 50
3.2.1. Chasis y ruedas . . . . . . . . . . . . . . . . . . . . . . 50
3.2.2. Motores y encoders . . . . . . . . . . . . . . . . . . . . 51
3.2.3. Interfaz de potencia para los motores . . . . . . . . . . 51
3.2.4. Batería . . . . . . . . . . . . . . . . . . . . . . . . . . 52
3.2.5. Sensor inercial . . . . . . . . . . . . . . . . . . . . . . 53
3.2.6. Microcontrolador . . . . . . . . . . . . . . . . . . . . . 54
3.2.7. Modulo de comunicación inalámbrica . . . . . . . . . . 55
3.3. Ensamblaje del robot . . . . . . . . . . . . . . . . . . . . . . 56
3.3.1. Esquema de conexión del hardware . . . . . . . . . . . 56
3.3.2. Montaje del robot . . . . . . . . . . . . . . . . . . . . 57
3.4. Programación del robot . . . . . . . . . . . . . . . . . . . . . 59
3.4.1. Esquema de control a programar . . . . . . . . . . . . 59
3.4.2. Software del microcontrolador . . . . . . . . . . . . . . 60
3.5. Aplicación móvil para la interacción con el usuario . . . . . . 67
3.6. Conclusiones parciales . . . . . . . . . . . . . . . . . . . . . . 68

4. Experimentos y análisis de resultados 69


4.1. Diseño de experimentos . . . . . . . . . . . . . . . . . . . . . 69
4.2. Evaluación del equilibrio del robot . . . . . . . . . . . . . . . 71
4.2.1. Experimento no.1 . . . . . . . . . . . . . . . . . . . . . 71
4.2.2. Experimento no.2 . . . . . . . . . . . . . . . . . . . . 73
4.3. Evaluación del control de velocidad lineal y angular del robot 75
4.3.1. Experimento no.3 . . . . . . . . . . . . . . . . . . . . 75
4.3.2. Experimento no.4 . . . . . . . . . . . . . . . . . . . . . 75
4.4. Evaluación del algoritmo de seguimiento de un punto . . . . 77
4.4.1. Experimento no.5 . . . . . . . . . . . . . . . . . . . . 77
4.5. Conclusiones parciales . . . . . . . . . . . . . . . . . . . . . . 77
5. Análisis económico 79

Conclusiones 84

Recomendaciones 85

Bibliografía 86
Índice de figuras

1.1. Esquema de un robot con accionamiento Diferencial . . . . . 2


1.2. Esquema de un robot con accionamiento Ackerman . . . . . . 3
1.3. Esquema de un robot con accionamiento Triciclo . . . . . . . 4
1.4. Péndulo simple y péndulo invertido . . . . . . . . . . . . . . . 5
1.5. Ejemplos de robots autobalanceados . . . . . . . . . . . . . . 6
1.6. Pasos para modelar el péndulo invertido . . . . . . . . . . . . 7
1.7. Estrategia de control para el equilibrio del péndulo invertido 8
1.8. Control velocidad e inclinación . . . . . . . . . . . . . . . . . 10
1.9. Vista superior de un robot autobalanceado . . . . . . . . . . 12
1.10. Control de orientación, velocidad e inclinación . . . . . . . . 13
1.11. Combinación de un controlador difuso y un control PD. . . . 13
1.12. Representación en espacio de estados, esquema de control. . . 14

2.1. Encoder óptico incremental . . . . . . . . . . . . . . . . . . . 19


2.2. Esquema de un acelerómetro . . . . . . . . . . . . . . . . . . 21
2.3. Representación de un giroscopio . . . . . . . . . . . . . . . . . 23
2.4. Uso de un giroscopio para determinar la orientación de un robot 23
2.5. Representación del magnetómetro . . . . . . . . . . . . . . . . 26
2.6. Representación del GPS . . . . . . . . . . . . . . . . . . . . . 27
2.7. Ejemplo de triangulación . . . . . . . . . . . . . . . . . . . . 28
2.8. Representación del ángulo de inclinación . . . . . . . . . . . . 29
2.9. Resultados de la medición usando acelerómetro . . . . . . . . 30
2.10. Medición de inclinación por el acelerómetro en movimiento . 31
2.11. Resultados de la medición usando acelerómetro en movimiento 32
2.12. Obtención del ángulo mediante giroscopio . . . . . . . . . . . 32
2.13. Ángulo de inclinación usando un giroscopio . . . . . . . . . . 33
2.14. Esquema del filtro complemento . . . . . . . . . . . . . . . . . 34
2.15. Resultados de la medición usando un filtro pasa bajo . . . . . 36
2.16. Resultados de la medición usando un filtro pasa alto . . . . . 37
2.17. Filtro complemento con el sistema en reposo . . . . . . . . . . 38

x
2.18. Filtro complemento con el sistema bajo perturbación . . . . . 39
2.19. Vista superior del robot . . . . . . . . . . . . . . . . . . . . . 40
2.20. Formas de onda de un codificador de cuadratura . . . . . . . 41
2.21. Decodificando al encoder . . . . . . . . . . . . . . . . . . . . 42
2.22. Prueba del algoritmo de tiempo fijo para un dt= 20 ms . . . 44
2.23. Prueba del algoritmo de tiempo fijo para un dt= 5 ms . . . . 45
2.24. Diagrama de aceleraciones obtenidas por el acelerómetro . . . 46

3.1. Diseño del chasis del robot . . . . . . . . . . . . . . . . . . . . 50


3.2. Ruedas del robot . . . . . . . . . . . . . . . . . . . . . . . . . 50
3.3. Motor de 12 VDC con encoders de efecto Hall . . . . . . . . . 51
3.4. L298N, puente H dual . . . . . . . . . . . . . . . . . . . . . . 52
3.5. Batería de litio de 12V . . . . . . . . . . . . . . . . . . . . . . 52
3.6. MPU6050: Sensor inercial de 6 grados de libertad . . . . . . 53
3.7. Arduino, kit de desarrollo basado en microcontroladores . . . 55
3.8. Módulo bluetooth HC-06 . . . . . . . . . . . . . . . . . . . . 56
3.9. Conexión entre todos los componentes del Hardware . . . . . 57
3.10. Ensamblaje final del robot . . . . . . . . . . . . . . . . . . . . 58
3.11. Imagen del robot manteniendo el equilibrio . . . . . . . . . . 58
3.12. Esquema de control para implementar en el Arduino . . . . . 59
3.13. Diagrama de flujo de la inicialización del programa . . . . . . 61
3.14. Diagrama de flujo del programa principal . . . . . . . . . . . 63
3.15. Algoritmo de seguimiento a un punto. . . . . . . . . . . . . . 66
3.16. Barra de navegación . . . . . . . . . . . . . . . . . . . . . . . 67
3.17. Interfaz de ajuste de los controladores . . . . . . . . . . . . . 67
3.18. Interfaz de control manual . . . . . . . . . . . . . . . . . . . . 68
3.19. Interfaz de control automático . . . . . . . . . . . . . . . . . . 68

4.1. Obtención del estado del robot a través del móvil . . . . . . . 70


4.2. Mediciones de las variables en el experimento no.1 . . . . . . 72
4.3. Evaluación del control de equilibrio del robot, con peso encima 73
4.4. Mediciones de las variables en el experimento no.2 . . . . . . 74
4.5. Evaluación del control de velocidad lineal del robot . . . . . . 75
4.6. Evaluación del control de velocidad angular del robot . . . . . 76
4.7. Resultados del algoritmo de seguimiento de un punto . . . . . 77
Índice de tablas

3.1. Características técnicas del motor . . . . . . . . . . . . . . . . 51


3.2. Características técnicas del l298N . . . . . . . . . . . . . . . . 52
3.3. Características técnicas del sensor MPU6050 . . . . . . . . . 53
3.4. Características técnicas del microcontrolador Atmel 2560 . . . 54
3.5. Características técnicas del módulo bluetooth HC06 . . . . . 55
3.6. Leyenda de los componentes en el esquema de conexión. . . . 56
3.7. Comandos del protocolo serie implementado . . . . . . . . . . 65

4.1. Parámetros estadísticos del experimento no.1 . . . . . . . . . 71


4.2. Parámetros estadísticos del experimento no.2 . . . . . . . . . 73

5.1. Salarios y días trabajados de los participantes. . . . . . . . . 80


5.2. Costo de los medios y materiales empleados. . . . . . . . . . . 82

xii
Introducción

La robótica es la ciencia que estudia las máquinas que pueden reempla-


zar a los humanos en diversas tareas, haciendo trabajo físico o en la toma
de decisiones. Esta ciencia es esencialmente multidisciplinaria y se apoya
en los progresos de la microelectrónica, la computación y las nuevas disci-
plinas como la inteligencia artificial [1]. Las estructuras mecánicas que se
implementan en estos sistemas se hacen cada vez más versátiles y comple-
jas, lo que permite la creación desde robots humanoides, con características
estructurales que simulan los movimientos faciales y corporales de los huma-
nos hasta la creación de insectos robots. Dentro de esta disciplina se destaca
la robótica móvil, que contempla todas aquellas máquinas que de manera
autónoma son capaces de desplazarse en el ambiente que los rodea.
Un robot es un dispositivo generalmente electromecánico, que desempeña
tareas automáticamente, ya sea bajo la supervisión humana directa, a tra-
vés de un programa predefinido o siguiendo un conjunto de reglas generales,
utilizando técnicas de inteligencia artificial. Generalmente los robots móvi-
les realizan tareas como: la localización en el ambiente donde se encuentra,
comunicación con otros dispositivos, trabajar durante un período considera-
ble de tiempo sin la intervención de un humano y el desplazamiento de un
punto a otro por el plano de manera autónoma sin poner en peligro la vida
de los humanos. En los últimos años se han desarrollado modelos con solo
dos ruedas, y el principal desafío es implementar estas funcionalidades pero
a la vez evitando que el robot pierda el equilibrio.

Antecedentes y Motivación
En un esfuerzo conjunto entre la Universidad Tecnológica de La Habana
y la Universidad de La Habana, se han desarrollado varias investigaciones
sobre robótica móvil, generalmente en plataformas con modelos mecánicos
diferenciales. Existen diversas investigaciones para incorporarles módulos

xiii
que resolver tareas como la planificación de trayectorias, localización rela-
tiva, detección y evasión de obstáculos, entre otras. Hasta ahora, se han
presentado trabajos donde el robot no requiere solucionar la tarea de man-
tenerse en equilibrio, debido a que por la naturaleza del diseño y la cantidad
de ruedas sobre un mismo plano, esto no constituye un problema en las
plataformas usadas con anterioridad.

Breve descripción del proceso.


Se desea diseñar un robot de dos ruedas sobre una plataforma
hardware basada en un microcontrolador Arduino, que sea capaz de mante-
ner el equilibrio de manera autónoma.

Situación Problema
Se desea diseñar un robot de dos ruedas sobre una plataforma hardwa-
re basada en un microcontrolador Arduino, que sea capaz de mantener el
equilibrio de manera autónoma. Pero, hasta el momento, los robots desa-
rrollados en el grupo de investigación del centro, poseen tres o más ruedas
en su diseño mecánico, lo que los hace estables en estado de reposo. Por
lo tanto, las plataformas software con las que se cuenta no contemplan el
control activo sobre el equilibrio del robot.

Problema a resolver
No ha sido desarrollado en el grupo de investigación del centro un pro-
totipo de robot basado en microcontrolador Arduino, que sea capaz de au-
tobalancearse.

Objeto de estudio
Robots móviles autobalanceados y sus algoritmos de control.

Campo de estudio
Robótica móvil sobre ruedas, algoritmos de control en sistemas no linea-
les y técnicas de medición.
Objetivo
Diseñar un robot autobalanceado basado en microcontrolador Arduino.

Objetivos específicos
1. Implementar el filtro complemento como método de fusión de sensores,
para obtener la medición correcta del ángulo de inclinación del robot.

2. Desarrollar un algoritmo de control basado en PID, para mantener el


robot en equilibrio.

3. Evaluar el desempeño de los algoritmos de control y los métodos de


medición.

4. Desarrollar una aplicación que se comunique con la plataforma, para


poder intercambiar información con el robot y gestionar sus tareas.

Hipótesis
Usando una plataforma hardware, basada en microcontrolador Arduino
y algoritmos de control de tipo PID, es posible construir un robot con dos
ruedas que sea capaz de autobalancearse.

Estructura del documento


Este trabajo consta de una introducción, 5 capítulos, conclusiones y re-
comendaciones. Los capítulos y sus contenidos son los siguientes:

Capítulo 1: Generalidades sobre los robots móviles, y en específico los ro-


bot de dos ruedas que se autobalancean, así como las diversas técnicas
utilizadas para el control de equilibrio y de movimiento.

Capítulo 2: Sistemas de medición utilizados para la obtención del ángulo


del inclinación y la velocidad del robot. Se analizan y diseñan filtros
que combinan las mediciones de varios sensores para mejorar la esti-
mación de variables.

Capítulo 3: Proceso de ensamblaje y construcción del robot, los compo-


nentes de hardware utilizados y la programación del mismo.
Capítulo 4: Experimentos realizados con el fin de evaluar los algoritmos
de control utilizados y los resultados obtenidos.

Capítulo 5: Análisis económico del proyecto. Análisis de las horas dedi-


cadas a la investigación por parte del tutor y el autor y costo de los
componentes para el ensamblaje del robot.

Aportes prácticos esperados


Con la terminación de este proyecto se espera incorporar al grupo de ro-
bótica una plataforma robótica autobalanceada, que sirva como base para el
desarrollo de futuras investigaciones relacionadas con robots y simulaciones
físicas de comportamiento colectivo.

Viabilidad e impacto de los resultados


Económicamente este proyecto es factible. Los componentes electróni-
cos utilizados no son muy costosos, están disponibles, y muchos de ellos
son reutilizados de investigaciones anteriores. Desde un punto de vista de
viabilidad medioambiental, el proyecto no ocasiona impactos negativos. El
proyecto es compatible con el modelo de socio-económico cubano y responde
a los retos que hoy se planean a la ciencia, como sustento del desarrollo, a
partir de tecnologías creadas en el país, y en particular, en la universidades.
Capítulo 1

Generalidades de los robots


autobalanceados sobre dos
ruedas

1.1. Introducción a la robótica móvil


Existe una gran variedad de robots diferenciados por la forma de lo-
comoción que emplean. Por ejemplo, los que presentan patas, simulan la
locomoción de animales. Otros se arrastran simulando el comportamiento
de las serpientes. Los drones y otros robots aéreos clasifican como robots
voladores. Entre los más comunes están los que emplean ruedas como forma
de locomoción. El enfoque de esta tesis está basado en este último. Den-
tro del grupo de robots con ruedas, existen distintas clasificaciones que se
diferencian entre sí, por la cantidad de ruedas que utilizan, lo que trae con-
sigo distintas dinámicas de movimiento. Entre estos destacan los modelos:
Diferencial [2], Ackerman [3], Triciclo [4] y Sincrónico [5].

1.1.1. Accionamiento Diferencial


Los robots con accionamiento diferencial [2] (figura 1.1) poseen dos rue-
das de tracción y una rueda pivote. Mediante la diferencia de velocidad entre
las ruedas de tracción, se describen distintas trayectorias en el movimiento.
Si ambas ruedas rotan a la misma velocidad el robot describe una trayec-
toria rectilínea, si ambas ruedas tienen la misma velocidad pero, en sentido
opuesto, el robot gira en círculos sobre un mismo punto. Controlando la
velocidad de cada rueda de forma independiente se controla la dinámica del

1
Capítulo 1. Generalidades de los robots autobalanceados sobre dos ruedas 2

sistema [6].
Wy
ICR

Yr
vl

R(t) Xr

Yr
vr
L
r

Xr Wx

Figura 1.1: Esquema de un robot con accionamiento diferencial. Mediante


la diferencia de velocidades entre las dos ruedas (vl y vr ) describe distintas
trayectorias en el plano cartesiano
.

Donde:
r : radio de las ruedas.
L : separación entre las ruedas.
vl : velocidad tangencial de la rueda izquierda.
vr : velocidad tangencial de la rueda derecha.
R(t) : radio instantáneo de la curvatura del robot cuando conduce sobre
una trayectoria.
El radio R(t) es determinado por la distancia entre el punto medio del
eje que pasa por el centro de ambas ruedas y el punto ICR. El punto ICR
se le denomina centro instantáneo de dicha curvatura [6].

1.1.2. Accionamiento Ackerman


Los robots con accionamiento Ackerman [3] (figura 1.2), poseen cuatro
ruedas. Dos ruedas traseras para la tracción y dos ruedas delanteras para
Capítulo 1. Generalidades de los robots autobalanceados sobre dos ruedas 3

la dirección. Este es el accionamiento presente en los automóviles. La rueda


delantera, más cercana al ICR debe girar más que la otra, para permitir
que el robot rote alrededor del punto medio del eje que une las ruedas de
tracción. Consecuentemente con esto, la rueda de tracción más cercana al
ICR debe rotar con menos velocidad que la otra. Por eso es que los autos en
su diseño mecánico, implementan diferenciales en la tracción (no confundir
el diferencial de un automóvil con el accionamiento diferencial en los robots
móviles).

Figura 1.2: Esquema de un robot con accionamiento Ackerman, dos ruedas


delanteras para la dirección y dos ruedas traseras para la tracción.

Donde:

R(t) : radio de la curvatura, medido desde el centro de las ruedas de tracción


al ICR.

d : distancia entre las ruedas delanteras y traseras.

αl : ángulo de giro de la rueda izquierda.

αr : ángulo de giro de la rueda derecha.

1.1.3. Accionamiento Triciclo


Los robot con accionamiento Triciclo [4] poseen tres ruedas (figura 1.3).
Dos ruedas traseras para la tracción y una rueda delantera que se encarga
de la dirección. Las ruedas traseras poseen la mismas características que las
Capítulo 1. Generalidades de los robots autobalanceados sobre dos ruedas 4

vistas en el modelo Ackerman. Pero este tipo de accionamiento, a diferencia


del Ackerman, solo utiliza una rueda delantera para la dirección (α: ángulo
de giro de rueda delantera).

Figura 1.3: Esquema de un robot con accionamiento Triciclo, dos ruedas


traseras para la tracción y una rueda delantera para la dirección.

1.2. Modelo y dinámica del péndulo invertido


Esta tesis está enfocada en los robots móviles de dos ruedas, los cuales
necesitan un mecanismo que les permita mantenerse en pie. Para lograr
esto es importante estudiar el modelo del péndulo invertido, el cual es una
aproximación bastante real a los robots con dichas características.
Un péndulo invertido, es un péndulo que posee su centro de masa encima
de sus puntos de pivote [7]; usualmente es implementado con el punto de
pivote encima de un sistema móvil que puede desplazarse horizontalmente.
El modelo más simple, limita el movimiento del péndulo a solo un grado de
libertad, haciendo que oscile en un solo eje. Mientras que un péndulo normal
es estable cuando está colgado hacia abajo (figura 1.4a), un péndulo inver-
tido es de naturaleza inestable, el mismo debe ser balanceado para lograr
mantenerlo en posición vertical. Esto puede ser logrado aplicando un torque
en el punto de pivote o moviendo el pivote horizontalmente, como parte de
un sistema retroalimentado [7] (figura 1.4b).
Capítulo 1. Generalidades de los robots autobalanceados sobre dos ruedas 5

a b yp

θ θ

xp
θ
xp g
ω
θ
a yp
g

Figura 1.4: Tipos de péndulos, (a) péndulo simple, con la representación de


sus ejes coordenados y el ángulo de elongación, (b) péndulo invertido con la
representación de sus ejes coordenados y el ángulo de inclinación.

Donde:
xp , yp : ejes coordenados del cuerpo del péndulo.

θ :ángulo de inclinación del péndulo.

g : vector fuerza de gravedad.

ω : velocidad de rotación de la rueda del péndulo invertido.


En cada paso que realiza una persona, la parte de arriba del cuerpo cons-
tituye un péndulo que se balancea alrededor de las uniones con los tobillos
[8]. En los últimos años se han hecho muy populares los Segway (figura 1.5a),
que no son más que una base, dos ruedas alineadas y un timón que es el
símil del péndulo. También están las patinetas de solo dos ruedas alineadas
en el sentido de los pies, que son conocidas como hoverboard, estas no tie-
nen vástago o timón (figura 1.5b). De estas últimas no se sabe con exactitud
cómo están programadas ni que estrategia de control adaptativo utilizan.
En la comunidad de código abierto, existen muchas aplicaciones de robótica
móvil y en específico sobre robots de auto-balanceo. La mayoría están basa-
dos en el microcontrolador Arduino, uno de los más populares y versátiles
que existe hoy para desarrollar prototipos de robots [9]. Un ejemplo de esto
es el kit Balanduino, el cual es comercializado y brinda todo el código para
interactuar y poder programarlo [10] (ver figura 1.5c).
Capítulo 1. Generalidades de los robots autobalanceados sobre dos ruedas 6

a b c

Figura 1.5: Ejemplos de robots autobalanceados, (a) Segway, (b) Hover-


board, (c) Balanduino.

Todos estos prototipos antes explicados presentan una característica en


común, tienen el centro de masa encima de su eje imaginario que pasa por
el centro de las gomas, los cuales requieren de control para poder balancear-
los [8]. Para poder mantenerse en equilibrio es necesario tener la medición
precisa del ángulo de inclinación, usando un sensor inercial [11]. Luego un
controlador necesita ser implementado para compensar las variaciones de
este ángulo de inclinación [12]. Un simple controlador de tipo PID es capaz
de controlar el ángulo de inclinación del robot, pero no es lo suficientemen-
te robusto para que el sistema mantenga el equilibrio de una manera eficaz
[13]. Para desarrollar un sistema de control más robusto es necesario también
controlar la velocidad del robot [14].

1.2.1. Dinámica del péndulo invertido


El problema físico del robot autobalanceado es bien similar al problema
de control del péndulo invertido. Comúnmente es modelado como un cuerpo
rígido en forma de vástago o bastón unido en un punto sin fricción a un carro
rígido, que se mueve solo en una dirección como se muestra en la figura 1.6
[15].
Capítulo 1. Generalidades de los robots autobalanceados sobre dos ruedas 7

y
a b c

x
Figura 1.6: (a) Diseño de un prototipo real, (b) Vista lateral del robot so-
bre el plano, (c) Aproximación para extraer las ecuaciones dinámicas de
movimiento del sistema.

1.2.2. Ecuaciones de movimiento


Las ecuaciones dinámicas del modelo del péndulo invertido son obtenidas
realizando un análisis de fuerzas, aplicando la segunda ley de Newton sobre la
representación del sistema de la figura 1.6c. La derivación de estas ecuaciones
puede ser consultada en [15]:

F = (m + M )ẍ + f ẋ + mlθ̇ cos θ − mlθ̇2 sin θ (1.1)

ẍ cos θ = lθ̈ − g sin θ (1.2)


Donde:

m : masa del péndulo.

M : masa del carro.

θ : ángulo de inclinación con respecto a la vertical.

l : longitud del péndulo.

x : posición del sistema.

g : aceleración de la gravedad.

Realizando un simple análisis al inspeccionar las ecuaciones 1.1 y 1.2


se puede concluir que existe una relación entre la inclinación del robot y la
velocidad del mismo. La ecuación 1.2 muestra que variaciones en la velocidad
Capítulo 1. Generalidades de los robots autobalanceados sobre dos ruedas 8

del robot provocan aceleraciones angulares en el péndulo y por consecuencia


variaciones en la inclinación del mismo. Esto es de vital importancia en favor
de encontrar una estrategia de control efectiva y será analizado en secciones
siguientes.
El problema de control se basa en encontrar un algoritmo que minimice
la diferencia entre el ángulo del vástago (péndulo) y el eje yr , como se
puede observar en la figura 1.6 b. Para lograr esto, se hace imprescindible la
medición de dicho ángulo y la aplicación de una fuerza externa, para actuar
frente a los cambios de inclinación del vástago. Si se toma como dirección
positiva de la fuerza a aplicar, el sentido positivo del eje xw y como ángulos
positivos, los comprendidos entre el semieje positivo yr y el semieje positivo
xr ; ante un aumento en sentido positivo del ángulo, se necesita un aumento
en sentido positivo de la fuerza, lo mismo en sentido contrario (figura 1.7).

Yw+
0
0
Yr

0
-90
0 90
Xr
ω Xr
F

v
Xw+

Figura 1.7: Estrategia de control para el equilibrio del péndulo invertido,


ante una inclinación positiva del péndulo se ejerce una fuerza positiva la
cual lo acerque lo más posible a 00 con respecto al eje yr del robot.

1.3. Métodos de control de robots


autobalanceados
En la literatura existen varias estrategias de control para resolver el
problema del autobalanceo en robots sobre dos ruedas. La forma más simple
y menos robusta es un PID que controle solo las fluctuaciones de inclinación,
este controlador no toma en cuenta las aceleraciones que adquiere el robot
debido a dichas fluctuaciones, lo que trae consigo que el robot falle en el
Capítulo 1. Generalidades de los robots autobalanceados sobre dos ruedas 9

intento de mantener el equilibrio de manera autónoma. La tarea de ir a un


punto en el espacio, localizarse en el medio y evitar obstáculos no se pueden
realizar con solo este controlador simple, por lo que es necesario el control
de velocidad linear y angular.
Aplicar un PID en cascada es otra variante de solución en la cual existe
una retroalimentación de la inclinación del robot y de la velocidad del mismo
[13]. Otra variante es realizar la representación en espacio de estado de todas
las variables del robot, e implementar un regulador basado en el método de
asignación de polos [13], pero para esto hay que tener toda la estimación del
estado con la menor incertidumbre posible y el conocimiento de todos los
parámetros del modelo matemático [16]. También hay variantes utilizando
combinaciones entre controladores difusos y PID [17].
Todas estas soluciones utilizan algún hardware de procesamiento basado
en un microprocesador como: el microcontrolador Arduino [18] y las SBC
(Single Board Computer), sensor inercial digital como el MPU6050 [19] para
obtener la inclinación, rotación y las aceleraciones del robot y 2 motores,
estos últimos, generalmente de DC, con encoders para medir la velocidad.
También pueden utilizarse servo motores y motores de pasos [20].

1.3.1. Control basado en PID en cascada


Un controlador en cascada es diseñado para incrementar el rendimiento
y la estabilidad del control, cuando el sistema puede ser considerado como
dos procesos en serie [21]. El incremento en el rendimiento de estos contro-
ladores se debe al hecho de que las perturbaciones en el segundo proceso
no son medidas hasta que no hayan afectado la salida del primer proceso
[21]. En un robot autobalanceado la velocidad lineal del vehículo es fuerte-
mente afectada por las variaciones del ángulo de inclinación. Por lo que el
control de velocidad lineal puede ser considerado como el proceso principal
y el control del ángulo de inclinación como el proceso secundario [21].

PID en cascada: control velocidad-ángulo de inclinación


Basado en las ecuaciones 1.1 y 1.2 se extraen las siguientes ideas:

1. Para poder acelerar y desacelerar el robot, el mismo tiene que ser


inclinado en la dirección adecuada [22].

2. El robot es inclinado aplicándole las velocidades requeridas en cada


una de las ruedas [22].
Capítulo 1. Generalidades de los robots autobalanceados sobre dos ruedas 10

Con estas ideas se plantea el esquema de control de la figura 1.8. Este


consta de dos controladores PID. El primero genera el ángulo de inclina-
ción de referencia, basándose en la diferencia entre la entrada de referencia
de velocidad y la velocidad estimada. El segundo controlador, genera las
velocidades de los motores, basándose en la diferencia entre el ángulo de
inclinación de referencia y el ángulo de inclinación estimado.
referencia de ángulo
de inclinación
referencia de
velocidad + + u(t)
PID PID Motores

- -
estimación del ángulo
de inclinación

Acelerómetro Filtro Giroscópio


Complemento

estimación de velocidad
Filtro de
Encóder
Kalman

Figura 1.8: Esquema de control basado en PID en cascada, para controlar


el equilibrio del robot y la velocidad de traslación (basado en el trabajo de
[22])

La estimación del ángulo de inclinación se utiliza aplicando un filtro


complemento, que combina las mediciones del giroscópio y el acelerómetro:

φ(t) = α(φ(t − dt) + ωdt) + (1 − α)φa (1.3)


Donde:

φ : estimación del ángulo de inclinación.

α : parámetro ajustable del filtro.

dt : diferencia de tiempo entre la medición actual y la última medición.

ω : velocidad angular del péndulo medida por el giroscópio (derivada del


ángulo de inclinación).

φa : cálculo del ángulo de inclinación a partir de las lecturas del aceleróme-


tro.
Capítulo 1. Generalidades de los robots autobalanceados sobre dos ruedas 11

Para la estimación de la velocidad se utiliza el filtro de Kalman, donde


se combinan las mediciones de todos los sensores para obtener una medición
más precisa y real de la velocidad del sistema. Sobre estos métodos se pro-
fundizará en el siguiente capítulo.
La ecuación de control utilizada en ambos lazos es la clásica; con una mo-
dificación en el término diferencial.
Z t
u = Kp (xd − x) + Ki (xd − x)dt − Kd ẋ (1.4)
0
Donde:

Kp , Ki , Kd : constantes ajustables para lograr la salida requerida.

xd : variable de referencia deseada.

x : variable a controlar.

Esta propuesta es robusta y cumple con el objetivo de autobalanceo del


robot, incluso cuando está en movimiento. Pero el esquema de control solo
se basa en el control de velocidad en una dirección, ya que hacia los dos
motores va la misma señal de control. Si se quieren describir trayectorias
curvilíneas y además mantener el equilibrio, las velocidades de las ruedas
deben ser diferentes. En la siguiente variante se expone una propuesta de
solución basada en PID en cascada más compleja, que le brinda solución a
este problema.

PID en cascada: control para poder lograr movimientos alrededor


de trayectorias
La odometría es usada para localizar el robot en un plano cartesiano,
basada en las velocidades angulares de las ruedas del robot. Las variables
requeridas para obtener la velocidad lineal y angular del mismo son mostra-
das en la figura 1.9. Donde l es la distancia entre los centros de sus ruedas,
r es el radio de las ruedas y v y w son las velocidades linear y angular
respectivamente.
Asumiendo que no hay deslizamiento entre las ruedas y el suelo, los valores
de v y ω pueden ser obtenidos de las velocidades angulares de las ruedas del
robot (θ˙r , θ˙l ), usando las siguientes ecuaciones obtenidas de la cinemática
de un robot con modelo diferencial [6].
r
v = (θ˙r + θ˙l ) (1.5)
2
Capítulo 1. Generalidades de los robots autobalanceados sobre dos ruedas 12

Figura 1.9: Vista superior de un robot autobalanceado. Se busca obtener


la relación entre las velocidades de rotación de cada una de las ruedas del
robot, con su velocidad de traslación y su orientación en el plano (tomado
de [21])

r
ω = (θ˙r − θ˙l ) (1.6)
l
Este controlador es similar al anterior, debido a que existe un control de
velocidad, que le impone la referencia de ángulo de inclinación al controlador
interno, el cual se encarga de minimizar la diferencia de ángulo entre el eje
vertical imaginario, descrito por el vector fuerza de gravedad y el cuerpo del
robot. Ambos controladores son de tipo PID, pero esta variante de solución
incluye un tercer controlador de tipo PD, el cual controla la orientación del
robot. El mismo no tiene impacto en las acciones de control principales[21].
Con esto, el robot además de ir a una velocidad deseada en línea recta sin
caerse, también puede realizar giros, por lo que con una capa más alta de
control se puede realizar una planificación de trayectorias y obtener distin-
tos valores de v y ω para cada punto del plano cartesiano al que se desee ir
(figura 1.10).
Capítulo 1. Generalidades de los robots autobalanceados sobre dos ruedas 13

r
2

Vr
Θ
vR - - +
+ Robot
+
+
PID PID Autobalanceado ωr
+ +
Vl ωl +
ωR +
- -
PD
+ -
r
L

Figura 1.10: Esquema de control de velocidad , inclinación y orientación


(tomado de [21])

1.3.2. Control basado en lógica difusa


En [17] se implementa un controlador difuso en cascada con un PID, el
controlador difuso se retroalimenta de la posición del robot, y el PID interno,
al igual que en las demás soluciones vistas en ente capítulo, se retroalimenta
de la inclinación del robot. Esta solución también resuelve el problema del
control de velocidad y tiene una buena respuesta ante cambios bruscos en
la inclinación (figura 1.11).

ke
x
+ u
r + Controlador
ku Robot
Difuso Θ
- -
d
dt kec
kp
PD
d
kd dt

Figura 1.11: Combinación de un controlador difuso y un control PD.


Capítulo 1. Generalidades de los robots autobalanceados sobre dos ruedas 14

1.3.3. Control basado en LQR


En [23] se brinda una solución basada en la representación en espacio
de estados del sistema que caracteriza al robot, a partir del modelado ma-
temático del péndulo invertido. Se aplica un Regulador Cuadrático Linear
(LQR) [16] y se realiza el control de todo el estado del sistema (figura 1.12).

r + u + x 1 x y
B s C
- +

Figura 1.12: Representación en espacio de estados, esquema de control.

Donde:

A : Se le conoce como la matriz de la dinámica del sistema, contiene las


relaciones entre las constantes y parámetros físicos que describen al
sistema, como: masa, aceleración de la gravedad, coeficiente de fricción,
longitud del péndulo.

B : matriz de entrada, contiene las relaciones entre las señales de control.

C : matriz de salida.

K : constantes del regulador.

X : vector de estado que define el sistema, en el caso del péndulo invertido


viene dado por: [x, ẋ, φ, φ̇], (x: posición , ẋ: velocidad , φ: ángulo de
inclinación y φ̇: derivada del ángulo de inclinación).

El objetivo del LQR es encontrar los valores óptimos de la matriz K, con


el fin de tener todos los polos del sistema en el semiplano derecho y asi hacer
que el sistema de control sea estable [24]. El índice de desempeño sobre el
cual se basa un sistema de control óptimo, puede ser muy diverso, depende de
las características del sistema a controlar y los objetivos de control. Entre
estos se incluyen criterios tales como la exactitud del sistema de control
Capítulo 1. Generalidades de los robots autobalanceados sobre dos ruedas 15

ante las variaciones de la señal de entrada, el rechazo a perturbaciones, la


eficiencia económica, la productividad. El índice de desempeño a optimizar
J es una función de la ley de control y el estado del sistema y típicamente
se puede formular [25]:
Z ∞
1
J= (xT Qx + uT Ru)dt (1.7)
2 0

Donde:

J : índice de desempeño cuadrático.

Q : matriz que penaliza las variables de estado.

R : escalar que penaliza la señal de control

Los parámetros Q y R se usan como parámetros de diseño, para penalizar


las variables de estado y las señales de control. Escoger valores elevados de
R, significa estabilizar el sistema con menos energía, mientras que valores
pequeños, significa que no se desea penalizar la señal de control. Por otra
parte, si se eligen valores elevados de Q significa que se intenta estabilizar
el sistema con el mínimo cambio en las variables de estado. Una forma de
resolver este problema de control óptimo es usar el álgebra de Ricatti [25].
Utilizando la ecuación 1.8 (conocida como ecuación de Ricatti):

AT P − P A + Q − P BR−1 B T P = 0 (1.8)

K = R−1 B T P (1.9)

u = −Kx (1.10)
Donde:

P : matrix simétrica cuyos valores resuelven la ecuación de Ricatti.

1.4. Conclusiones parciales


Luego de analizar las consultas bibliográficas, en este trabajo se im-
plementan algoritmos de control basados en PID. Para que el controlador
funcione es necesaria la correcta medición del ángulo. Lo más usado en estos
robots son los sensores de navegación inerciales IMU. Estos están consti-
tuidos por acelerómetros, giroscopios y magnetómetros. Las mediciones de
Capítulo 1. Generalidades de los robots autobalanceados sobre dos ruedas 16

estos sensores hay que procesarlas y generalmente, hay que aplicarles filtros
que combinen las lecturas de cada uno de ellos para así obtener la medición
con la menor incertidumbre posible. Los más usados en los robots autoba-
lanceados son el filtro de Kalman [26] y los filtros complemento.
Capítulo 2

Sistemas de medición de
variables del robot

En todo robot móvil con ruedas, es de vital importancia el proceso de


medición de variables físicas, con el fin de obtener información acerca del
entorno que lo rodea y lograr una estimación del estado en que se encuentra
con respecto a dicho entorno. Por ejemplo, para que un robot de manera
autónoma se desplace hacia una posición determinada, necesita tener el co-
nocimiento de su localización. Para esto, se hace indispensable la medición
de variables como la velocidad (tanto lineal como angular) y la orienta-
ción con respecto a un sistema de referencia global. Estas mediciones no son
ideales; al provenir de sensores de distintas características presentan errores.
El ruido externo afecta la medición, los sensores con muy alta sensibilidad
se ven afectados ante pequeñas variaciones, también existe el problema de
acumulación de error por integración numérica, ya que muchas veces la va-
riable deseada no es exactamente brindada por el sensor, y puede requerir
un proceso de integración numérica para obtenerla.
Otra fuente de error presente en casi todos los sensores, es conocida como
“bias”. El bias es la diferencia que posee la medición brindada por el sensor
con respecto al valor de la variable física. Este parámetro muchas veces no es
brindado por el fabricante, ya que varía según las condiciones en las cuales
la medición es tomada. En muchos casos es considerado constante. Una for-
ma común de estimarlo es realizar el promedio de las mediciones registradas
por el sensor, cuando se está midiendo una variable cuyo valor es conocido,
luego se calcula la diferencia entre el valor real esperado y dicho promedio
[27].

17
Capítulo 2. Sistemas de medición de variables del robot 18

Por lo antes planteado, para disminuir la incertidumbre, a las medicio-


nes se le realiza un procesamiento. Existen métodos de filtrado digital, por
ejemplo, en sensores en los cuales se ve afectada la medición ante cambios
bruscos de la variable, se utilizan filtros pasa bajos, así como en sensores
donde interesa su aporte en intervalos cortos de tiempo, se implementan fil-
tros pasa altos. Otra forma muy común de procesamiento son los llamados
algoritmos de fusión de sensores [28], los cuales combinan mediciones de una
misma variable brindada por distintos sensores y extraen lo mejor de cada
una. Ejemplos de estos son el filtro de Complemento y el filtro de Kalman.
Como se describió en el capítulo anterior, en los robots autobalanceados
es de vital importancia la medición de las velocidades y sobre todo la correcta
estimación del ángulo de inclinación. En este capítulo se explican algunos de
los sensores más comúnes utilizados para la medición de estas variables en
el campo de la robótica móvil y el método utilizado en la tesis para obtener
la inclinación del robot y las velocidades del mismo.

2.1. Posicionamiento de robots móviles


Para la navegación de los robots móviles es fundamental la tarea del
posicionamiento. Esta tarea consiste en obtener la posición del robot en el
entorno en que trabaja. Existen dos grupos fundamentales de métodos para
llevar a cabo esta tarea [29]:

Sistemas odométricos

Sistemas de navegación inercial

2.2. Sistemas odométricos


En la robótica móvil, la odometría consiste en estimar la posición y
orientación de un vehículo a partir de la cantidad de vueltas dadas por sus
ruedas [30]. Para esto se utilizan comúnmente sensores en sus ruedas y en
los motores que las controlan. Estos sensores por lo general son de gran
calidad y tienen bajo costo. Uno de los sensores más populares para medir
velocidad angular en el eje de una rueda o un mecanismo es el encoder
[31]. Estos sensores pueden variar por su principio de funcionamiento. El
más conocido es el encoder óptico, aunque también existen los resistivos, los
magnéticos, entre otros. Una desventaja que poseen estos sensores, es que se
ven afectados por las irregularidades del terreno, ya que los deslizamientos
entre las ruedas y el terreno con cuantificados como desplazamiento.
Capítulo 2. Sistemas de medición de variables del robot 19

2.2.1. Encoder óptico incremental


Este sensor consiste en una fuente de luz, un disco transparente con
marcas opacas distribuidas radialmente equidistantes una de la otra, o un
disco opaco con orificios y un receptor óptico (ver figura 2.1). El eje del cual
se desea conocer la velocidad angular se acopla al disco, de esta forma se
cuentan los pulsos que genera el receptor óptico cuando el eje gira debido
a las marcas del disco que impiden que la luz sea recibida desde la fuen-
te. Conociendo el conteo de los pulsos se obtiene la velocidad angular. La
resolución de este sensor depende de la cantidad de pulsos por revolución
[31]. Usualmente en robótica móvil se usan los encoders con cuadratura, los
cuales permiten conocer el sentido de rotación. Estos tienen un segundo par
de emisor y receptor de luz desplazados 90 grados respecto al par original
en términos del disco rotor.

fotorreceptor

diodo emisor
de luz

Disco

Figura 2.1: Encoder óptico incremental (tomado de [32])

2.2.2. Encoder magnético


Estos sensores utilizan el efecto Hall [33] y un disco con una cantidad de
segmentos magnéticos acoplados al eje del motor, de manera que por cada
revolución del eje, se registran pulsos en la salida del sensor debido al paso
de los segmentos magnéticos del disco. Con este principio de funcionamien-
to se construyen también encoders con cuadratura [27], los cuales mejoran
la resolución de los encoders ópticos convencionales, permitiendo mejores
resultados en la odometría de los robots.
Capítulo 2. Sistemas de medición de variables del robot 20

2.3. Sistema de navegación inercial


Un sistema de navegación inercial (INS por sus siglas en inglés1 ), es un
conjunto de sistemas de cómputo y sensores para determinar la localización
de objetos en las tres dimensiones. Para esto utiliza sensores de movimiento
como acelerómetros, giroscopios y brújulas. La navegación inercial se ba-
sa en el posicionamiento relativo, a partir de la integración de las medidas
tomadas por los sensores mencionados. Debido a la integración, pequeños
errores repercuten notablemente en la posición estimada, por lo que la pre-
cisión de los sensores es crítica, además estos sensores normalmente proveen
señales ruidosas que deben ser filtradas. La ventaja que poseen estos sis-
temas respecto a los sistemas odométricos, es que no se ven afectados por
los problemas del deslizamiento o de las irregularidades del suelo en que se
desplaza el robot. En la práctica, estos sistemas son más fiables y precisos
que los sistemas odométricos, pero son más caros y más frágiles.

2.3.1. Acelerómetro
Se denomina acelerómetro a los instrumentos destinados a medir acele-
raciones. Las cuales no necesariamente son las asociadas al cambio de ve-
locidad experimentado por un cuerpo. El tipo de aceleración medida por
estos sensores, está asociada con el fenómeno del peso que experimenta una
masa de prueba, que se encuentra en el marco de referencia del dispositivo
( figura 2.2). Un ejemplo donde la aceleración medida por un acelerómetro
y la aceleración real que posee un cuerpo en ocasiones difieren, se aprecia
cuando el sensor brinda un valor estando el cuerpo en reposo (ya que la
masa tiene asociado un peso). Si se aplica la segunda ley de Newton en estas
condiciones, la sumatoria de las fuerzas es 0 en los ejes vertical y horizontal,
por lo que la aceleración real de un cuerpo en reposo es igual a 0.
Esto demuestra que el acelerómetro mide una fuerza, que es proporcional a
la masa, por la “compresión” que esta efectúa sobre el sensor. La forma de
medir esta compresión difiere en función del principio físico que utiliza el
sensor, ya que pueden ser de materiales piezoeléctricos, mecánicos, y entre
otros.
En la figura 2.2 se analiza el principio de funcionamiento de un acelerómetro
mecánico simple.
A partir de la segunda Ley de Newton :

F = ma (2.1)
1
inertial navigation system
Capítulo 2. Sistemas de medición de variables del robot 21

Figura 2.2: Acelerómetro simple, usando la segunda ley de Newton en com-


binación con la ley de Hookes se determina la aceleración
.

Y de la ley de Hookes que expresa que la fuerza aplicada para elongar


un resorte x unidades de longitud es igual a k (constante del resorte) por la
elongación del mismo.

F = −kx (2.2)
Igualando las ecuaciones 2.1 y 2.2 se obtiene la ecuación 2.3
Donde:

m : masa constante

k : constante del resorte

x : elongación a determinar para obtener la aceleración

−kx
a= (2.3)
m
Los acelerómetros electrónicos permiten medir la aceleración en una,
dos o tres dimensiones del espacio. Esta característica permite obtener la
inclinación de un cuerpo que se encuentra en reposo, puesto que es posible
determinar con el acelerómetro la componente de la aceleración de la gra-
vedad que actúa sobre el cuerpo. Si el cuerpo está sometido a otras fuerzas,
el sensor obtendrá otras aceleraciones en sus componentes, por lo que resul-
taría imposible determinar la dirección del vector fuerza de gravedad con
exactitud usando solo el acelerómetro.
Capítulo 2. Sistemas de medición de variables del robot 22

Modelo del acelerómetro


Un modelo matemático simple para un acelerómetro electrónico :

ais = air + ba + ua (2.4)


Donde:

asi : medición neta de aceleración obtenida por el sensor, medida en el eje i

ari : aceleración real a la que está sometido el sensor en el eje i

ba : bias del acelerómetro

ua : ruido instantáneo de la medición [27]

El término ari incluye las aceleraciones resultantes de someter el sensor


a una fuerza y la componente de la aceleración de la gravedad. Además este
sensor no tiene en cuenta la fuerza normal, por esta razón, cuando el mismo
se encuentra en reposo, mide aceleración (gravitatoria) y, sin embargo, el
sistema no experimenta cambios en su velocidad. El conocimiento del mo-
delo permite identificar las fuentes de error antes descritas en el inicio del
capítulo.

2.3.2. Giroscopio
Convencionalmente un giróscopo consiste en un cilindro giratorio mon-
tado en dos anillos que le permiten rotar en los tres ejes del espacio (figura
2.3). Por el efecto de la conservación del momento angular el anillo giratorio
se resiste a los cambios de orientación. Cuando el giróscopo es sometido a
una rotación, la rueda permanecerá en una constante orientación global y
los ángulos entre los anillos adyacentes cambian, los cuales son leídos y de
esta manera se puede obtener el cambio de orientación.

Los giroscopios son muy utilizados en los sistemas de navegación; por ejem-
plo: en los aviones, en los sistemas guías de misiles, en los barcos y en los
drones. Hoy se encuentran en los teléfonos inteligentes, junto con los acele-
rómetros para el control de la inclinación y los giros de las pantallas táctiles.
El siguiente ejemplo ilustra una aplicación sencilla, en la que se usa el giros-
copio para obtener la orientación de un robot.
Capítulo 2. Sistemas de medición de variables del robot 23

Figura 2.3: Giroscopio: (a) representación de un giroscopio mecánico, (b)


representación de las mediciones de velocidades angulares realizadas por el
giróscopo.

En la figura 2.4 suponga que se tiene un giroscopio encima de un robot


con accionamiento diferencial, de manera que el eje z del sensor apunta
hacia el lector ( punto Zr de la figura ) y los restantes ejes coordenados
están alineados con los del robot. Se tiene que θt es la orientación actual
del robot. El objetivo es encontrar la nueva orientación θt+dt pasado un
tiempo dt, a partir de la última medición de velocidad angular obtenida por
giroscopio (figura 2.4).

zr

zr

Figura 2.4: Aplicación de giroscopio para determinar la orientación de un


robot
.

La velocidad angular del robot se expresa mediante la siguiente relación:


Capítulo 2. Sistemas de medición de variables del robot 24


ω= (2.5)
dt
Discretizando la ecuación 2.5, asumiendo un dt suficientemente pequeño
y despejando, se obtiene la siguiente expresión para determinar la nueva
orientación:

θt+dt = θt + ωdt (2.6)


Como pueda apreciar en la ecuación 2.6, integrando la lectura de veloci-
dad angular alrededor del eje z del giroscopio en cada instante de tiempo, se
obtiene la nueva orientación. Cada medición tiene asociada un error, el efec-
to integral provoca que se acumule el error en el tiempo, lo que trae consigo
una divergencia entre la orientación real del robot y la obtenida usando el
sensor. En la siguiente sección se analiza el modelo del giroscopio electrónico
y se aprecian las fuentes de error.

Modelo del giroscopio


Para describir la velocidad angular brindada por el giroscopio se utiliza
el siguiente modelo:

ωsi = ωri + bω + uω (2.7)


Donde:

ωsi : medición de velocidad angular en el eje i

ωri : velocidad angular real alrededor del eje i

bω : bias del sensor

uω : ruido instantáneo de la medición

Como se explica al inicio del capítulo, estos sensores presentan errores,


los cuales se consideran en la ecuación 2.7. El efecto integral provoca un
incremento de error no acotado en el tiempo [27], lo que trae consigo que la
medición diverja considerablemente del valor real a medida que aumenta el
tiempo de operación.
Capítulo 2. Sistemas de medición de variables del robot 25

2.4. Posicionamiento absoluto


Cuando se obtiene la posición y orientación del robot móvil respecto a
un sistema de referencia externo, se trata de un método de posicionamien-
to absoluto. Este método, al detectar distintas características del entorno,
determina la localización y la orientación del robot [29]. A continuación se
exponen algunos de los sensores y mecanismos que se utilizan para realizar
este tipo de método.

2.4.1. Magnetómetro
El magnetómetro es un sensor que mide la fuerza del campo magnético
local sobre un eje del dispositivo, que consiste en la superposición del campo
magnético de la tierra y aquellos creados por elementos ferromagnéticos o
corrientes eléctricas cercanas, denominadas distorsiones del campo magné-
tico terrestre. Estas distorsiones se pueden separar en dos categorías: Hard
Iron y Soft Iron [27].
Las distorsiones Hard Iron se deben a la presencia de objetos ferromag-
néticos permanentemente magnetizados, que producen un campo magnético
propio y, a veces, hasta lo inducen en componentes ferromagnéticos no mag-
netizados cercanos. Generan una desviación constante del campo magnético
medido, que puede ser modelado como un desvío bm .
Las interferencias Soft Iron en cambio, se deben a la inducción temporal
de un campo magnético en componentes ferromagnéticos normalmente no
magnetizados (soft irons, por ejemplo: níquel y hierro). Dado a que estas
interferencias dependen de la orientación del magnetómetro, se manifiestan
como una deformación elíptica de las muestras en el espacio de coordena-
das del magnetómetro. Así, en un primer paso se busca estimar el elipsoide
de muestras y luego se calcula la transformación a una esfera centrada en
el origen, con radio igual a la intensidad teórica del campo magnético del
lugar. Para ello, una vez centradas las muestras (calibración Hard Iron), se
deben reescalar las coordenadas de las mismas sobre las direcciones de los
ejes principales del elipsoide a través de una matriz de calibración Wm [27].

Suponga que se tiene un magnetómetro como el de la figura 2.5, el cual


no es afectado por ningún material ferromagnético ni ningún campo externo:

Aplicando la siguiente expresión trigonométrica:


my
θ = tan−1 ( ) (2.8)
mx
Capítulo 2. Sistemas de medición de variables del robot 26

N my

Z Y

θ
mx HMC5883L

Figura 2.5: Con la lectura de la componente en el eje mx y en el eje my


del sensor, aplicando la arcotangente obtenemos la orientación respecto al
norte magnético

Donde:

θ : ángulo de orientación con respecto al norte magnético

my : intensidad del campo magnético en la componente y del sensor

mx : intensidad del campo magnético en la componente x del sensor

2.4.2. Modelo del magnetómetro


El modelo de un magnetómetro simple es el siguiente:

m = Wm (mr + bm ) + um (2.9)

Donde:

m : medición realizada por el dispositivo

Wm : matriz de calibración

mr : valor real del campo magnético terrestre

bm : desviación constante asociada con las distorsiones Hard Iron

um : ruido instantáneo de la medición


Capítulo 2. Sistemas de medición de variables del robot 27

2.4.3. Posición global por satélite


El sistema de navegación más frecuentemente utilizado es el GPS. Los
satélites describen órbitas circulares alrededor de la tierra. Al comunicarse
con las estaciones de recepción, determinan la posición de los cuerpos me-
diante triangulación. Los satélites tienen relojes atómicos altamente precisos;
la distancia entre los mismos y la estación receptora se estima utilizando la
diferencia de tiempo en que la señal es emitida por el satélite y recibida por
el receptor en la superficie de la Tierra; esta se multiplica por la velocidad
de la luz (velocidad a la que viajan las ondas electromagnéticas) y se obtiene
la distancia desde el punto de la tierra (posición del receptor por ejemplo los
teléfonos móviles) al satélite en cuestión. Dicha distancia constituye el radio
de una esfera imaginaria con centro en el satélite. Con la intersección de tres
esferas y la superficie de la tierra se obtiene un único punto, que constituye
el punto de localización [34] (figura 2.6).

d1
d2

d3

d4

Figura 2.6: Localización a través del GPS, se utilizan al menos tres satéli-
tes, las esferas conformadas por los mismos se interceptan con el punto del
receptor en la tierra (tomado de [34])

Ejemplo de triangulación usados por los GPS


En la figura 2.7, suponga que se quiere obtener la localización del punto
P, dado por xp y yp en un sistema de coordenadas cartesianas. Si se tiene
la distancia a un punto determinado del plano y sus coordenadas, suponga
solo el punto A de la figura, se puede estar sobre cualquier punto de la
circunferencia centrada en A con radio igual a dicha distancia. Si se tiene
el dato de distancia a otro punto, por ejemplo B, la posición se restringe a
Capítulo 2. Sistemas de medición de variables del robot 28

lo más, a solo dos puntos posibles, donde se interceptan las circunferencias.


Con otra información de distancia a otro punto del plano, la intersección de
las tres circunferencias convergen al punto P.

Figura 2.7: Ejemplo de triangulación.

Por lo que aplicando la ecuación de distancia entre puntos, se obtiene el


siguiente sistema de ecuaciones:
q
(d1 )2 = (xA − xP )2 + (yA − yP )2 (2.10)
q
(d2 )2 = (xB − xP )2 + (yB − yP )2 (2.11)
q
(d3 )2 = (xC − xP )2 + (yC − yP )2 (2.12)
Resolviendo este sistema de ecuaciones con algún método de matemática
numérica se encuentra la posición en el plano. Cabe destacar que este método
solo funciona a distancias inferiores al radio de la tierra.

2.5. Obtención del ángulo de inclinación


Como se pudo apreciar en el Capítulo 1, en los robot autobalanceados,
la principal tarea es lograr desarrollar un algoritmo que le permita al robot
mantener el equilibrio de manera autónoma. Para lograr este objetivo se
hace imprescindible la correcta estimación del ángulo de inclinación. Para
Capítulo 2. Sistemas de medición de variables del robot 29

esto lo primero es definir dicho ángulo y la manera matemática de obtenerlo


(figura 2.8).

a b
Yw Yr
Yw

Yr
θ FgXr

Xr
FgYr m FgXr
Fg
FgYr θ
Xr
θ
Fg

Xw Xw

Figura 2.8: Representación del ángulo de inclinación, es el ángulo que forman


el eje yw con el yr , eje de un sistema de referencia global y el eje vertical
del robot respectivamente

Como se observa, el ángulo de inclinación θ está determinado por la


separación angular entre una línea imaginaria vertical (eje yw de la figura
2.8 a) y el eje yr del robot. La fuerza de gravedad siempre actúa sobre los
cuerpos de manera perpendicular al eje imaginario horizontal de la superficie
terrestre (eje xw de la figura 2.8). Entonces, cuando el centro de masa de un
cuerpo se inclina, el ángulo θ se encuentra también entre el eje yr del robot y
el vector fuerza de gravedad Fg , por una relación de alternos entre paralelas
(figura 2.8 b). La presencia de este ángulo provoca que existan componentes
de la gravedad en el eje xr y el eje yr del robot. Entonces se puede obtener
θ con la siguiente relación trigonométrica:
gxr
θ = tan−1 ( ) (2.13)
gyr

De manera general para un sistema en 3 dimensiones la expresión quedaría:


gx
θ = tan−1 ( q ) (2.14)
gy 2 + gz 2
Capítulo 2. Sistemas de medición de variables del robot 30

2.5.1. Método basado en un acelerómetro


Para obtener la inclinación del robot, se necesita obtener la dirección del
vector fuerza de gravedad utilizando la expresión 2.14. Durante el diseño
de la aplicación, se realizaron distintas mediciones del ángulo de inclinación
usando sensores inerciales con el fin de analizar sus resultados. Para realizar
las mediciones se fijó el sensor a una base rectangular plana, soportada por
cuatro varillas de la misma longitud fijadas a cada vértice de la misma.
Luego, se colocó el sistema sobre una superficie que estuviera lo mas plana
posible (esto fue garantizado con el uso de un nivel), de manera tal que
los resultados de las mediciones estuviesen alrededor del 00 . La toma de
muestras de la señal se realizó cada cada 10 ms.
0
Θ
0
6

Estimación del ángulo de inclinación


mediante el acelerómetro

0
3

0
0

0
-3

0
-6
0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 t(s)

Figura 2.9: Ángulo obtenido por el acelerómetro, en reposo.

En la figura 2.9 se toman muestras de la aceleración del sensor en sus


tres ejes y se gráfica el ángulo obtenido. Se puede apreciar que los valores
del ángulo de inclinación en reposo están alrededor del valor esperado (en
este caso 00 ). Las mediciones obtenidas tienen una desviación estándar de
aproximadamente 0,80 .
Los resultados anteriores reafirman que el acelerómetro en reposo es ca-
paz de obtener la dirección del vector fuerza de gravedad y la inclinación
del cuerpo en cuestión. Pero, ¿que pasaría si en estas mismas condiciones se
Capítulo 2. Sistemas de medición de variables del robot 31

somete a movimiento?
Se tiene un acelerómetro encima de un robot autobalanceado, el cual está
inclinado θ grados. En estado de reposo, aplicando la ecuación 2.10 se ob-
tiene la dirección real del vector fuerza de gravedad (figura 2.10a), ahora,
manteniendo la misma inclinación, se somete el cuerpo a una fuerza que le
provoca movimiento. Si se aplica la ecuación 2.14 a las lecturas del aceleró-
metro en estas condiciones, se obtiene un ángulo de inclinación distinto y sin
embargo este no ha cambiado (vea la figura 2.10b). Esto se debe a que en
la medición de aceleración está la componente de gravedad y la componente
de aceleración resultante de la fuerza aplicada, de manera que al aplicar la
ecuación 2.14, la estimación de la inclinación del vector fuerza de gravedad
es errónea.

a b
Yw Yw

Yw Yr Yw Yr

θ m F θ m aLx
θ Xw
gax a θ Xw
gax alx
gay Xr gay Xr

θreal = tan( ggx )


-1 -1 g
θreal = tan( g )
x
y y
greal greal gacel
-1 gax
tan(gaxg+aalx)
-1
θacel = tan( g )
θacel =
ay ay
v

Xw Xw

Figura 2.10: Medición de inclinación por el acelerómetro, (a) Cuerpo incli-


nado en estado de reposo, (b) Cuerpo inclinado en movimiento causado por
una fuerza.

En la figura 2.11 se representa el sistema perturbado al realizar un ligero


desplazamiento horizontal de la plataforma. No deberían cambiar los valores
del ángulo de inclinación, pero el resultado es que durante el movimiento
horizontal de la plataforma las mediciones incrementaron su desviación es-
tándar hasta un valor de 5,670 teniendo picos máximos de casi 120 .
Capítulo 2. Sistemas de medición de variables del robot 32

Estimación del ángulo de inclinación


mediante el acelerómetro

Figura 2.11: Ángulo obtenido por el acelerómetro bajo una perturbación.


La plataforma es ligeramente movida, las aceleraciones introducidas por el
movimiento incrementan la varianza de la medición.

2.5.2. Método basado en un giroscopio


Como se vió en la sección 2.3.2, con el giroscopio se mide velocidad
angular, luego si se integra esta en el tiempo, se obtiene la orientación (figura
2.12). La rotación alrededor del eje y es la que se utiliza para realizar el
cálculo, por lo que en cada instante de muestreo se obtiene de la componente
y del giroscopio las lecturas de velocidad angular y se aplica la integral
numérica siguiente:
θt+dt = θt + ωy dt (2.15)

ω
θt θt+dt

Figura 2.12: obtención del ángulo mediante giroscopio


Capítulo 2. Sistemas de medición de variables del robot 33

0
θ
ángulo real
medición del giroscopio

tiempo(s)

Figura 2.13: Ángulo de inclinación usando un giroscopio, por el efecto inte-


gral se acumula error no acotado en el tiempo.

Como ya se analizó, el modelo de salida de un giroscopio electrónico,


presenta una componente de ruido y de bias, que provocan un error en la
medición. Al utilizar la ecuación 2.15, para obtener el ángulo de inclinación
a partir de la velocidad angular, se integra la salida del sensor. Por lo que el
error que este presenta, se incrementa en el tiempo, lo que provoca que exista
una divergencia considerable entre el valor real de la variable y la estimación
realizada por el giroscopio. No obstante, una posible forma para minimizar
este efecto, es estimar el bias calculando el promedio de las mediciones del
giroscopio cuando el mismo mantiene una posición fija, y luego restarlo en
cada medición. Esta es una buena calibración, pero es solo aplicable en
períodos cortos de tiempo [34]. A este efecto negativo del giroscopio se le
conoce en la literatura como el drift. En la figura 2.13 se puede apreciar como
después de 37 s el efecto del drift afecta considerablemente la estimación del
ángulo de inclinación ya que la diferencia entre el angulo real y la medición
es de alrededor de 20 .
Capítulo 2. Sistemas de medición de variables del robot 34

2.5.3. Filtro complemento


Como se explicó en la sección anterior, la medición del acelerómetro es
bastante cercana al valor real, pero muy sensible a los cambios de velocidad
del sistema; sin embargo la obtención del ángulo de inclinación es directa,
al no provenir de integración numérica no se acumula error en el tiempo
[28]. Por otra parte, el giroscopio si confronta este problema, en largos in-
tervalos de tiempo acumula un error no acotado por integración, pero no es
tan afectado por los cambios de velocidad transaccional que experimenta el
cuerpo del robot. Además, la varianza de la medición cuando está en estado
de reposo es menor en comparación con el acelerómetro [28].
La idea del filtro complemento es combinar las salidas del acelerómetro
y del giroscopio, de manera que se minimicen sus deficiencias, para así ob-
tener una estimación más adecuada. El esquema del filtro complemento es
mostrado en la figura 2.14

Θacel.
Φ
Θgyro. Θgyro.

Figura 2.14: Esquema del filtro complemento

Al aporte del acelerómetro se le aplica un filtro pasa bajo para atenuar


sus lecturas cuanto estas sufren cambios bruscos en instantes cortos de tiem-
po. Mientras que al giroscopio se le aplica un filtro pasa alto con el fin de
tomar su aporte cuando la medición sufra cambios significativos y cuando
el sistema está en reposo relativo, minimizar el efecto del drift.

Base teórica
Sean yx1 , yx2 dos señales tal que:

yx1 = x + ux (2.16)

yx2 = x + b0 (2.17)
Donde: ux es ruido de alta frecuencia y b0 es una perturbación dominada
por contenido de baja frecuencia. Sean L(s) y H(s) filtros pasa bajo y pasa
alto respectivamente, donde s es la transformada de Laplace de la señal
Capítulo 2. Sistemas de medición de variables del robot 35

respecto de una misma frecuencia de corte f0 de tal manera que


L(s) + H(s) = 1 [27]. Luego, teóricamente, se cumple que:

H(s)x + L(s)x = x (2.18)


En particular también sucede que si se aplican los filtros sobre las señales
mencionadas se obtiene:

L(s)yx1 ≈ L(s)x (2.19)

H(s)yx2 ≈ H(s)x (2.20)


Luego se puede asumir que:

L(s)yx1 + H(s)yx2 ≈ x (2.21)

Filtro pasa bajo


Una de las formas de filtrar pasa bajo es la siguiente:

yi = αyi−1 + (1 − α)xi (2.22)

Donde:

α : Parámetro que relaciona la constante de tiempo del filtro τ y el tiempo


de muestreo

yi : señal de salida filtrada

xi : señal de entrada a filtrar (en este caso el valor de ángulo medido por el
acelerómetro)

En la figura 2.15 se muestran las mediciones obtenidas por el aceleró-


metro y la salida de un filtro pasa bajo con un valor de α = 0.98. Nótese
como el filtro atenúa las variaciones en la salida del sensor, eliminando el
efecto de las vibraciones. Este comportamiento es necesario para cuando el
robot se encuentre en estado de reposo y adquiera movimiento, en ese ins-
tante quedarían eliminadas las aceleraciones instantáneas que afectarían la
estimación del ángulo.
Capítulo 2. Sistemas de medición de variables del robot 36
ángulo

Figura 2.15: Al aplicar un filtro pasa bajo se atenúan las oscilaciones del
acelerómetro

Con solo el filtrado del acelerómetro se eliminan las grandes oscilaciones


en la medición del ángulo, pero no se tiene la medición al instante porque la
salida es lenta ya que se necesitan varias iteraciones para alcanzar el valor
final. Si la inclinación real del robot cambia repentinamente, sin adquirir
movimiento, el filtro lo atenuaría igual, entonces, la medición instantánea
del ángulo de inclinación no sería la correcta. Para lograr un establecimiento
rápido alrededor del valor real de la inclinación, se utiliza el aporte de la
medición brindada por el giroscopio en el filtro complemento.

Filtro pasa alto


Una de las formas de filtrar pasalto es la siguiente:

yi = αyi−1 + α(xi − xi−1 ) (2.23)

Donde:

α : Parámetro que relaciona la constante de tiempo del filtro τ y el tiempo


de muestreo

yi : señal de salida filtrada

xi : señal de entrada a filtrar


Capítulo 2. Sistemas de medición de variables del robot 37

Para entender el comportamiento de una señal filtrada con este tipo de


filtro, suponga que se poseen muestras de una señal, que se desea filtrar.
Aplicando la ecuación 2.23se obtienen los resultados de la figura 2.16

Figura 2.16: Resultado de aplicar un filtro pasa alto, el filtro reacciona a los
cambios en períodos cortos de tiempo, mientras que atenúa la señal mientras
esta no cambia.

En la figura 2.16 se aprecia que cuando la señal de entrada cambia desde


t=0 a t=3, el filtro permite pasar la señal casi en su totalidad. Desde t=5
hasta t = 27, la señal de entrada no presenta cambios considerables, por
lo que la salida es atenuada. Este comportamiento es aplicado al giroscopio
con el fin de obtener con rapidez el ángulo de inclinación y eliminar el drif.

Ecuación del filtro complemento


Para la implementación del filtro complemento, se escogió el parámetro
α = 0.98 el cual brinda buenos resultados para el sensor inercial utilizado
cuando el período de muestreo es de 10 ms. La ecuación final, resultante de la
combinación de un filtro pasa bajo aplicado a las mediciones del acelerómetro
y un filtro pasa alto aplicado a las mediciones del giroscopio, resulta:

φ = 0,98(φi−1 + ωg dt) + 0,02θa (2.24)


Donde:
φ :ángulo de inclinación estimado por el filtro
Capítulo 2. Sistemas de medición de variables del robot 38

ωg : velocidad angular medida por el giroscopio

θa : ángulo de inclinación medido por el acelerómetro

dt :El tiempo de muestreo

ángulo()0
0
6

Estimación del ángulo


mediante el filtro complemento
0
3

0
0

0
-3

0
-6
0 1 2 3 4 5 6 7 t(s)

Figura 2.17: Salida del filtro complemento en reposo, una medición limpia
del ángulo con una varianza en la medición de 0,180

En la figura 2.17, se puede apreciar que la estimación obtenida aplicando


el filtro complemento, es mejor en comparación con las del acelerómetro y
el giroscopio por independiente. Cuando el sistema se encuentra en reposo
se obtiene una medición con una varianza es de 0,180 .

La figura 2.18 fue obtenida sometiendo el sistema a movimiento. El fil-


tro atenúa las aceleraciones medidas por el acelerómetro. Esto permite que
la medición no se vea fuertemente afectada por dicho fenómeno, ya que
la varianza es de 0,510 . Además, pasado un tiempo considerable tomando
mediciones, se pudo apreciar que el efecto del drift queda eliminado. Con
la implementación de esta técnica se garantiza una buena estimación de la
inclinación del robot, que resulta de vital importancia para el control de
equilibrio implementado en el Capítulo 3.
Capítulo 2. Sistemas de medición de variables del robot 39

ángulo()0
0
6

Estimación del ángulo


mediante el filtro complemento
0
3

0
0

0
-3

0
-6
0 1 2 3 4 5 6 7 8 t(s)

Figura 2.18: Salida del filtro complemento al aplicarle movimiento al sistema,


el efecto de las aceleraciones medidas por el acelerómetro son disminuidas.

2.6. Obtención de las velocidades


Como se explicó en las secciones 2.3 y 2.2, se puede obtener la estimación
de velocidades de un robot móvil utilizando sensores odométricos y sensores
de navegación inercial. Utilizando encoders acoplados a los ejes de los mo-
tores, se obtienen las velocidades de rotación cada rueda del robot. A partir
de relaciones matemáticas entre estas, se puede calcular la velocidad lineal
y angular del sistema. Con el uso del acelerómetro y el giroscopio se obtiene
la velocidad lineal por integración de la aceleración y la velocidad angular se
obtiene directo de la medición en la componente z del giroscopio (ejemplo
de la sección 2.3.2).

2.6.1. Medición de velocidades usando encoders


En la figura 2.19 se tiene una vista superior del robot, donde se repre-
sentan las variables que interfieren en la cinemática del mismo. Se busca
obtener una relación entre las velocidades lineal y angular del robot, con las
velocidades de rotación de las ruedas.

Donde:
v(t) : velocidad lineal del robot
Capítulo 2. Sistemas de medición de variables del robot 40

(t)

(t)

Figura 2.19: Vista superior del robot, representación de las variables.

ω(t) : velocidad angular del robot


ωl : velocidad angular de la rueda izquierda

ωr : velocidad angular de la rueda derecha


L : separación entre las ruedas del robot
r : radio de las ruedas
ICR : centro de la circunferencia asociada a cada trayectoria curvilínea
descrita por el robot
R(t) : radio instantáneo de la circunferencia (infinito cuando ω(t) = 0)
Utilizando las ecuaciones físicas del movimiento curvilíneo se tiene que:
ωl r
ω(t) = (2.25)
R(t) − L2
ωr r
ω(t) = (2.26)
R(t) + L2
Donde ω(t) y R(t) se expresan como:

(ωr − ωl )r
ω(t) = (2.27)
L
Capítulo 2. Sistemas de medición de variables del robot 41

L ωr + ωl
R(t) = (2.28)
2 ωr − ωl
Luego la velocidad tangencial del robot (v(t)) se obtiene mediante:

(ωr + ωl )r
v(t) = ω(t)R(t) = (2.29)
2
En la siguiente sección se analizará como a partir de los encoders de los
motores se obtienen las velocidades de rotación de cada rueda del robot.

Encoders incrementales de cuadratura


Un encoder incremental es un sensor conectado al motor para detectar
el número de rotaciones de su eje. Si se conoce el ángulo de giro de la rueda,
se puede calcular el desplazamiento, velocidad y aceleración. Los encoders
en cuadratura tienen la ventaja de que pueden medir la velocidad y el sen-
tido de rotación de la rueda. La cuadratura del encoder tiene dos canales
de salida, el canal A y el canal B. Cada canal genera señales digitales con
cambio de fase de noventa grados. La figura 2.20 muestra la forma de onda
de un codificador de cuadratura típico:

transición
“1”
A “0”
CW
B

Canal A adelanta al canal B

A
CCW
B
Canal B adelanta al canal A

Figura 2.20: Formas de onda de un codificador de cuadratura típico (tomado


de [32]).

Si el motor gira en el sentido de las agujas del reloj, el canal A adelantará


al canal B, y si el motor gira hacia la izquierda, el canal B adelantará el
canal A. Esta lectura será útil para detectar la dirección de rotación del
Capítulo 2. Sistemas de medición de variables del robot 42

motor. Algunos de los términos que especifican la resolución del encoder son
los pulsos por revolución (PPR) o conteos por revolución (CPR), que es la
cantidad de transiciones realizadas por las señales de los canales cuando el
eje del motor completa una revolución [32].
Existen varios métodos para sensar la velocidad del eje de un motor a
partir de la decodificación de los encoders. Entre los más comunes está el
método de tiempo fijo y espacio fijo. En el método de tiempo fijo, se establece
un tiempo constante dt y se cuenta el número de impulsos provenientes del
encoder durante ese tiempo. En el método de espacio fijo, se mide el tiempo
entre un par de pulsos consecutivos del encoder. El algoritmo implementado
en esta tesis es el de tiempo fijo. La figura 2.21 muestra cómo se puede llevar
el conteo a partir de los pulsos del codificador:

Conteo
0 1 2 3 4 5 6 7 8 9 11 10 9 8 7 6 5 4 3 2 1 0 -1

Figura 2.21: Decodificación del encoder, contando las transiciones de los


canales A y B del codificador (tomado de [32]).

Algoritmo de tiempo fijo


Utilizando un microcontrolador, el algoritmo de tiempo fijo es bastante
simple. Usando las interrupciones externas, se acumula el conteo de los pul-
sos, a partir de detectar cualquier cambio en las señales A y B; el sentido de
rotación del eje del motor, se determina chequeando el estado lógico en que
se encuentra la señal B cuando A cambia y viceversa (vea la figura 2.20 y
2.21). Se configura un temporizador, el cual se desbordará periódicamente
en función de como se haya seleccionado el tiempo entre medición y medi-
ción. Una vez el software detecte que el temporizador se ha desbordado, se
programa lo siguiente para obtener las velocidades angulares de los motores:

δconteoM1 = conteoM1 − conteo∗M1 (2.30)


Capítulo 2. Sistemas de medición de variables del robot 43

δconteoM2 = conteoM2 − conteo∗M2 (2.31)


Donde:

conteoM1 : acumulador de los pulsos del encoder del motor de la rueda


derecha.

conteoM2 : acumulador de los pulsos del encoder del motor de la rueda


izquierda.

conteo∗M1 : valor del acumulador de la rueda derecha en el período de


muestro anterior

conteo∗M2 : valor del acumulador de la rueda izquierda en el período de


muestro anterior

δconteoM1 : diferencia de pulsos en el encoder del motor de la rueda derecha


entre dos períodos de muestreo consecutivos

δconteoM2 : diferencia de pulsos en el encoder del motor la rueda izquierda


entre dos períodos de muestreo consecutivos.

Luego se tiene que:


2π δconteoM1
velocidadM1 = [rad/s] (2.32)
CPR dt

2π δconteoM2
velocidadM2 = [rad/s] (2.33)
CPR dt
Por último, se actualizan las variables conteo∗M1 y conteo∗M2 , para
tenerlas listas en el siguiente período de muestreo. El algoritmo de tiempo
fijo, realiza es una diferenciación numérica. En cada instante de muestreo,
se obtiene la velocidad de rotación a partir de la derivada de la posición
angular [32].
conteo∗M1 = conteoM1 (2.34)

conteo∗M2 = conteoM2 (2.35)


Aplicando este método y utilizando las ecuaciones 2.27 y 2.29, se obtiene
la velocidad tangencial y angular del robot como sigue:

(velocidadM1 + velocidadM2 )r
v= (2.36)
2
Capítulo 2. Sistemas de medición de variables del robot 44

(velocidadM1 − velocidadM2 )r
w= (2.37)
L
Un factor fundamental en la precisión de este método constituye la reso-
lución del encoder, mientras mayor sea el número de pulsos por revolución,
la medición de velocidad es más precisa. También es importante escoger un
tiempo de muestreo adecuado para realizar la medición. Si este es demasiado
pequeño, para un mismo CPR del motor, se incrementan las oscilaciones
de la medición (figuras 2.22 y 2.23).

ω (rad/s)
48

velocidad angular del motor

42

36

30

24
1 2 3 4 5 t(s)

Figura 2.22: Algoritmo de tiempo fijo en un motor de 1920 CPR con un


tiempo de muestreo de 20ms.
Capítulo 2. Sistemas de medición de variables del robot 45

ω (rad/s)
48

velocidad angular del motor

42

36

30

24
1 2 3 4 5 t(s)

Figura 2.23: Algoritmo de tiempo fijo en un motor de 1920 CPR con un


tiempo de muestreo de 5 ms, se incrementan las oscilaciones en la medición.

2.6.2. Medición de velocidades usando un sensor inercial


Estimación de velocidad angular a partir del giroscopio
La velocidad angular del robot se obtiene del giroscopio, a partir de las
mediciones de la componente z del sensor (ejemplo de la sección 2.3.2 ). En
la práctica, para estimar la velocidad de rotación del robot se utiliza este
sensor por encima del encoder. Se hace de esta forma porque la medición
brindada por el giroscopio es más precisa, posee menos varianza y mayor
resolución. Los encoders tienen el problema del deslizamiento, si las ruedas
están en movimiento y el robot es separado de la superficie, la medición es
incorrecta; ya que el robot en estas condiciones no esta girando.

Estimación de velocidad lineal a partir del acelerómetro


En la figura 2.24 se tiene una representación de todas las aceleraciones
que son medidas por el acelerómetro cuando el robot está en movimiento.
Asúmase que el acelerómetro esta montado justo en el centro de masa del ro-
bot (punto m) y sus ejes están alineados con los ejes de coordenadas locales
del mismo xr y yr . Este es un escenario típico de un robot autobalanceado.
Posee un ángulo de inclinación, el cual tiene que ser minimizado para poder
estar en equilibrio. Para esto acelera y adquiere velocidad traslacional a lo
Capítulo 2. Sistemas de medición de variables del robot 46

largo del eje xw , en este proceso sufre cambios en dicho ángulo, que generan
una velocidad angular ω (vea la figura 2.24). Las variaciones de esta velo-
cidad provocan aceleración angular. El objetivo es extraer del acelerómetro
solo la aceleración producida por el movimiento horizontal.

Yw
ω
Yw Yr

L θ m aLx
atx θ
gXr Xw

Xr

gYr

v
Xw

Figura 2.24: Representación de las aceleraciones obtenidas por el aceleróme-


tro. Para obtener solo la aceleración resultante del movimiento horizontal
del robot, hay que eliminar la componente de gravedad, y la aceleración
tangencial producto de los cambios en el ángulo de inclinación.

Analizando las aceleraciones obtenidas por el acelerómetro:


alx
acct = gx + atx + (2.38)
cos(θ)

Donde:

acct : aceleración total medida en el eje x del acelerómetro

gx : componente de la gravedad

atx : aceleración tangencial, resultante de las oscilaciones del cuerpo del


robot
Capítulo 2. Sistemas de medición de variables del robot 47

alx : aceleración lineal resultante del movimiento horizontal

θ : ángulo de inclinación del robot

El ángulo de inclinación se obtiene usando el filtro complemento visto en


la sección anterior, luego la componente de gravedad se calcula mediante:

gx = 9,8 sin(θ) (2.39)

Utilizando las ecuaciones del movimiento curvilíneo, la aceleración tan-


gencial se obtiene:
dω L
atx = (2.40)
dt 2
La velocidad angular es medida por el giroscopio y L2 es el radio de la
circunferencia descrita por las oscilaciones del péndulo (vea la figura2.24).
Luego utilizando las ecuaciones 2.38, 2.39 y 2.40. La aceleración producida
por el movimiento horizontal se puede obtener mediante:

(ωi − ωi−1 ) L
alxi = cos(θi )(acct i − g sin(θi ) − ) (2.41)
dt 2
Luego integrando numéricamente, la velocidad lineal del robot queda:

vi = vi−1 + alxi dt (2.42)


Como resultado de aplicar integración, la estimación de velocidad acu-
mula error no acotado en el tiempo, por lo que en la practica este método
es necesario combinarlo con la medición por los encoders para atenuar este
efecto. Una buena solución sería implementar el filtro de Kalman [26].

2.7. Conclusiones parciales


En este capítulo se analizan algunos de los sensores más utilizados en el
campo de la robótica móvil. El posicionamiento de un robot móvil se puede
determinar usando dos grupos fundamentales de sensores: los sistemas odo-
métricos y los sistemas inerciales. Una fuente común de error en los sistemas
odométricos, es la cuantificación de desplazamiento cuando se produce des-
lizamiento entre las ruedas y el suelo; mientras que los sistemas inerciales
pueden presentar acumulación de error debido a la integración numérica.
En el caso de los robots autobalanceados, además de la estimación de su
localización, es importante medir el ángulo de inclinación, el uso del filtro
complemento ofrece resultados robustos para dicha tarea. La medición de
Capítulo 2. Sistemas de medición de variables del robot 48

velocidad lineal se realiza utilizando el algoritmo de tiempo fijo a partir de


la decodificación de encoders incrementales. Para la medición de velocidad
angular del robot, es mejor usar la información del giroscopio debido a que
es más precisa que la brindada por los encoders.
Capítulo 3

Construcción del robot

Para la construcción del robot se debe realizar, en primer lugar, un diseño


que cumpla con los requisitos funcionales del sistema. Luego se lleva a cabo
la construcción del robot, para más adelante programarlo. Este capítulo
describe todos los pasos que se siguieron para la obtención final del robot,
explicando el papel que juega cada uno de sus componentes.

3.1. Definición de los requerimientos funcionales


Las tareas de robótica móvil que debe realizar el sistema, requieren de
una capacidad de procesamiento y de memoria determinada. El controlador
del robot debe ser capaz de ejecutar los algoritmos que permitan mantenerlo
en equilibrio. Debe ser capaz de implementar los métodos de estimación de
inclinación, velocidad lineal y angular vistos en el capítulo anterior.
Para realizar tareas de navegación, el robot debe controlar la velocidad
de traslación y de giro; dando opciones de ser manipulado manualmente
por el usuario. También debe lograr las velocidades de referencia que se le
impongan y ser capaz de ir a un punto en el plano de manera autónoma.
Es de vital importancia que el robot se comunique de forma inalámbrica
con algún dispositivo como una computadora o un móvil para su supervisión.
Se debe implementar una interfaz de usuario para la recolección de datos y la
manipulación del robot para realizar distintos experimentos. La alimentación
del sistema debe ser a través de una batería adjunta, para evitar la necesidad
de utilizar cables externos.

49
Capítulo 3. Construcción del robot 50

3.2. Selección de los componentes del sistema


3.2.1. Chasis y ruedas
Para el cuerpo del robot se construyó un chasis con tres piezas de acrí-
lico, unidas por cuatro varillas roscadas, que permite la instalación de las
ruedas, batería y circuitos de control del robot. Este chasis tiene un peso
de aproximadamente 0.5 kg. Las piezas de acrílico son rectangulares, con
bordes redondeados, en la figura 3.1 se puede apreciar el diseño del chasis.

a b c

Figura 3.1: Esquemáticos del chasis, (a) piso inferior, (b) piso superior, (c)
montaje de los tres pisos

Las ruedas fijas (figura 3.2) se dispusieron de manera tal que el eje de
giro de estas estuviera en el centro del chasis. Se utilizaron dos ruedas de
patín con una adaptación para el eje del motor. El diámetro de la rueda es
de 95 cm.

Figura 3.2: Ruedas del robot


Capítulo 3. Construcción del robot 51

3.2.2. Motores y encoders


Para darle propulsión a las ruedas y tener retroalimentación para contro-
lar las velocidades, se seleccionaron motores de 12V con encoders de efecto
Hall, del fabricante CQRobot (vea la Figura 3.3). Este motor se utiliza en
aplicaciones robóticas de pequeña y mediana escala, soportando sistemas de
hasta 8.5 kg de peso. En la tabla 3.1 se resumen los parámetros técnicos
brindados por el fabricante:

Parámetro Valor
tensión nominal 12 VDC
corriente sin carga 250 mA
corriente con el eje fijo 6.5 A
torque con el eje fijo 13 kg.cm
relación de reducción 30:1
pulsos por revolución 1920

Tabla 3.1: Características técnicas del motor

Figura 3.3: Motor de 12 VDC con encoders de efecto Hall

3.2.3. Interfaz de potencia para los motores


Para interactuar y controlar los motores se requiere de un hardware adi-
cional, que pueda manejar las corrientes generadas por estos. Se seleccionó
el módulo l298N, que posee dos puentes H que soportan una corriente de
trabajo de hasta 2 A (figura 3.4). En la tabla 3.2 se resumen sus principales
características:
Capítulo 3. Construcción del robot 52

Parámetro Valor
corriente pico de operación 4A
corriente constante de operación 2A
voltaje de alimentación máximo 46 V
4 entradas lógicas TTL para control del sentido 2 para cada motor
protección contra sobrecalentamiento tiene
entradas de PWM 2
frecuencia máxima de PWM 100 kHz

Tabla 3.2: Características técnicas del l298N

Figura 3.4: L298N, puente H dual, circuito de protección contra sobreca-


lentamiento y corriente nominal de trabajo de 2 A.

3.2.4. Batería
Para la alimentación del sistema se seleccionó una batería de litio de 3000
mAh. Esta es muy útil para la aplicación, ya que las tecnologías de litio pesan
mucho menos que las baterías convencionales. Su voltaje nominal es 12V y
su voltaje máximo es de 12.6V (figura 3.5).

Figura 3.5: Batería de litio de 12V


Capítulo 3. Construcción del robot 53

3.2.5. Sensor inercial


El sensor inercial escogido es el módulo MPU6050. Está constituido por
un acelerómetro de tres ejes y un giroscopio de tres ejes, que le brinda al
sensor, la característica de poseer 6 grados de libertad. Integra un procesa-
dor digital de movimiento o DMP, capaz de realizar algoritmos complejos
de captura de movimiento. Se comunica a través de una interfaz I2C (figura
3.6). Este sensor permite realizar la estimación del ángulo de inclinación del
robot, obtener el cambio de orientación del robot, asi como su aceleración.
Sus especificaciones técnicas se resumen en la tabla 3.3:

Parámetro Valor
tensión de operación 3.3 V - 5 V DC
regulador de voltaje en placa tiene
grados de libertad del sensor 6
rangos del acelerómetro configurables 2 g, 4 g, 8 g, 16 g
rangos del giroscopio configurables 2500 /s, 5000 /s, 10000 /s, 20000 /s
interfaz de comunicación I2C
conversor AD 16 bits de resolución
dimensiones 2.0 cm x 1.6 cm x 0.3 cm
velocidad del bus I2C 100 Khz y 400 Khz

Tabla 3.3: Características técnicas del sensor MPU6050

Figura 3.6: MPU6050: Sensor inercial de 6 grados de libertad


Capítulo 3. Construcción del robot 54

3.2.6. Microcontrolador
El componente más importante del proyecto está constituido por la placa
de desarrollo Arduino Mega, este kit está integrado por un microcontrolador
Atmel AVR, de la familia de microcontroladores RISC, puertos digitales y
analógicos de entrada y salida, y un puerto de conexión USB (figura 3.7).
Además, Arduino posee un entorno de desarrollo (IDE) basado en Java
y se programa en el lenguaje de programación C++. El IDE posee una
interfaz de comunicación serie con la placa, que permite visualizar los datos
que son enviados por un puerto serie en una consola. Las últimas versiones
poseen una característica llamada “Serial Plotter” que grafica dichos datos
en tiempo real. Arduino es el encargado de leer los encoders y decodificarlos,
comunicarse con el MPU6050 a través de I2C y ejecutar el algoritmo para
obtener el ángulo de inclinación, controlar la velocidad de rotación de los
motores, enviando señales de PWM hacia los puentes-H, obtener el estado
de carga de la batería, ejecutar los algoritmos de control y establecer la
comunicación con la interfaz de usuario. En la tabla 3.4 se muestran algunas
de las características del microcontrolador Atmel 2560:

Parámetro Valor
arquitectura del microprocesador 8 bits
registros de propósito general 32
frecuencia de reloj 16 Mhz
memoria EEPROM 4Kbytes
memoria interna SRAM 8Kbytes
temporizadores de 8 bits 2 con preescalador y
modo de comparación
temporizadores de 16 bits 4 con preescalador, modo
de comparación y captura
interfaz PWM 4 canales de PWM de 8 bits
conversores AD 8 canales de 10 bits
puerto serie UART 4 puertos programables USART
interfaces de comunicación I2C, SPI
interrupciones externas 7

Tabla 3.4: Características técnicas del microcontrolador Atmel 2560


Capítulo 3. Construcción del robot 55

Figura 3.7: Arduino Mega: kit de desarrollo basado en el microcontrolador


Atmega 2560

3.2.7. Modulo de comunicación inalámbrica


Para establecer la comunicación inalámbrica del robot con la interfaz de
usuario, se insertó un módulo de comunicación inalámbrica. Se seleccionó la
tecnología bluetooth, debido a su bajo costo económico y consumo energé-
tico. El dispositivo es el módulo HC-06 del fabricante DSD TECH (figura
3.8). Este módulo posee 4 pines, 2 para la alimentación y los otros 2 para
comunicarse a través de puerto serie UART. En la tabla 3.5 se resumen al-
gunas de sus características:

Parámetro Valor
tensión de alimentación 3.3 - 6 VDC
1200, 2400, 4800, 9600,
baudrate configurable 19200, 38400, 57600, 115200
230400, 460800, 921600, 1382400
radio de operación hasta 10 m
consumo de corriente 24 mA
velocidad de transferencia de datos 2.1 Mbit/s
configuración de modo maestro tiene

Tabla 3.5: Características técnicas del módulo bluetooth HC06


Capítulo 3. Construcción del robot 56

Figura 3.8: Módulo bluetooth HC-06 del fabricante DSD TECH

3.3. Ensamblaje del robot


El ensamblaje del robot es un proceso en el que se montan todos los
componentes del hardware en el chasis del robot. Una vez instalados todos
los componentes, se verifica el correcto funcionamiento de todos los sensores
y módulos descritos en este capítulo.

3.3.1. Esquema de conexión del hardware


La figura 3.9 muestra la conexión entre todos los elementos del hard-
ware del sistema. A continuación en la tabla 3.6 se listan los componentes
identificados en la imagen.

Componente Leyenda
Arduino Mega 2560 1
MPU6050 2
Bluetooth HC-06 3
Batería de Litio de 12V 4
Puente H dual l298N 5
Motores de DC 12V con encoders de Efecto Hall 6

Tabla 3.6: Leyenda de los componentes en el esquema de conexión.

El código de color utilizado en las conexiones es el que sigue:

rojo: 5V

negro: GND

amarillo: 12V

gris: SCL para el MPU y Tx para el HC-06


Capítulo 3. Construcción del robot 57

verde: SDA para el MPU y Rx para el HC-06

blanco: señal de PWM hacia los puentes H (l298N)

cian y anaranjado: señales de control de sentido del los puentes H


(l298N)

marrón y violeta: señales de salida de los encoders (conectadas a las


entradas de interrupción del Arduino)

Figura 3.9: Conexión entre todos los componentes del hardware utilizando
la herramienta de diseño Fritzing

3.3.2. Montaje del robot


Para el montaje final del robot. Se colocan los componentes electrónicos
en los distintos pisos del chasis. La interconexión entre los sensores, el motor
y el Arduino se realiza usando un protoboard. En el primer piso se colocó
el microcontrolador con los motores y los puentes-H, en el segundo piso,
Capítulo 3. Construcción del robot 58

el módulo bluetooth y la batería, y en el último piso, el sensor inercial


MPU6050 (vea las figuras 3.10 y 3.11).

Figura 3.10: Ensamblaje final del robot

Figura 3.11: Imagen frontal del robot manteniendo el equilibrio


Capítulo 3. Construcción del robot 59

3.4. Programación del robot


A continuación se describe la programación realizada en el microcontro-
lador, y la aplicación externa que permite la interacción del usuario con el
robot. La programación del microcontrolador fue desarrollada en C++ y se
emplearon las bibliotecas del IDE de Arduino para interactuar con perifé-
ricos que utilizan el protocolo I2C. La interfaz de usuario es una aplicación
móvil que puede ser usada en sistemas IOS y Android. La misma fue conce-
bida con el uso del framework Ionic, desarrollado por Google para la creación
de aplicaciones móviles usando la programación web. Se programó usando
las tecnologías de diseño WEB: HTML5, CCS3 y TypeScript.

3.4.1. Esquema de control a programar


Como se analizó en el Capítulo 1, un controlador basado en PID en
cascada, velocidad - ángulo de inclinación, resuelve el problema de control
de equilibrio del robot. Además permite controlar las velocidades de giro y
de traslación del sistema. A continuación se muestra el diagrama en bloques
del esquema de control a implementar en el Arduino (figura 3.12).

!iltro
complemento
PWMr
vR
IMU ωgyro
SPv
PD PID
Interfaz de
PWMl encoders

SPω
PID
K1

ωR K2

Figura 3.12: Esquema de control del Robot basado en PID cascada

Donde:
SPv : referencia de velocidad traslacional

SPω : referencia de velocidad de giro

r : radio de las ruedas del robot

L : distancia entre las ruedas


Capítulo 3. Construcción del robot 60

ωr : velocidad angular de la rueda derecha

ωl : velocidad angular de la rueda izquierda

θ : ángulo de inclinación del robot

VR : estimación de velocidad linear del robot

ωR : estimación de velocidad angular del robot, usando la información del


giroscopio y los encoders

pwmr : Señal de control asignada hacia el motor correspondiente con la


rueda derecha

pwml : Señal de control asignada hacia el motor correspondiente con la


rueda izquierda

ωgyro : Estimación de la velocidad angular del robot tomada de la compo-


nente z del giroscopio

3.4.2. Software del microcontrolador


El software consta de dos partes fundamentales. La primera corresponde
con la inicialización de los puertos, periféricos, temporizadores e interrupcio-
nes externas a usar, además de una serie de definiciones de variables globales
y macros. La otra parte del software, un ciclo infinito donde se realizan las
tareas de: tomar datos de los encoders y el MPU para calcular el estado del
robot, ejecutar las funciones correspondientes con los PID para determinar
las nuevas señales de control a enviar hacia los motores, leer el estado de la
batería, tomar los datos recibidos por bluetooth a través de puerto serie y
realizar la correspondiente tarea en función del comando recibido.

Sub-Programa de inicialización
En el código implementado para el funcionamiento del robot, con el pro-
pósito de interactuar con el sensor inercial MPU6050 se incluye una biblio-
teca de alto nivel para la comunicación por I2C con los periféricos. Además
de una biblioteca para el trabajo con el MPU6050, que está presente en
los repositorios de GitHub [35]. El programa sigue con una serie de defini-
ciones de macros, donde se definen constantes como: los comandos para el
protocolo de comunicación bluetooth HC-06; los parámetros geométricos del
robot, como el radio de la rueda y la separación entre estas; el tiempo de
muestreo del programa principal y la cantidad del pulsos por revolución de
Capítulo 3. Construcción del robot 61

los encoders de los motores. Luego se definen una serie de variables globales
necesarias, como: las constantes de los 3 PID implementados, las variables
de estado del robot, el acumulador de pulsos para los encoders, entre otros.
El IDE de Arduino define dos funciones principales, una es el “setup()”,
que se ejecuta al principio una sola vez y el “loop()”, donde el programa se
queda el resto del tiempo en un ciclo infinito.

Programación de la función “setup()” de Arduino


En la figura 3.13 se muestra un diagrama de flujo del proceso de inicia-
lización y configuración de los periféricos y recursos del microcontrolador.

Con!iguració n de Inicializació n del


pines de entrada y salida sensor MPU6050

demora de 300 ms
Con!iguració n del
puerto serie UART3
Con!iguració n de 4 entradas
de interrupció n externa
Inicializació n del
mó dulo bluetooth HC06 Con!iguració n del A/D

demora de 300 ms Con!iguració n del timer1

Inicializació n y con!iguració n Habilitació n de las


de la interfaz I2C interrupciones

Figura 3.13: Diagrama de flujo de la inicialización del programa

Configuración de pines de E/S : Se configuran como salida las señales


de control del l298N y las señales de pwm hacia los motores. Como
entrada, las señales de los encoders y el pin asociado al conversor
A/D, utilizado para saber el estado de carga de la batería.

Configuración del puerto serie UART3 : Para la comunicación con el


módulo de bluetooth, se configura el puerto serie 3 del microcontrola-
dor. Con “baudrate” de 115200, sin bit de paridad y con una trama
de 8 bits de datos.

Configuración de la interfaz I2C : Para la comunicación con el sensor


MPU6050, se configura la Interfaz I2C como maestro, con una veloci-
dad de trasmisión de 400 kHz.
Capítulo 3. Construcción del robot 62

Configuración de 4 entradas de interrupciones externas : Para la de-


codificación de los pulsos generados por los encoders de cuadratura de
los motores, se habilitan 4 fuentes de interrupciones externas, una para
cada canal de salida de los encoders.

Configuración del A/D : Se configura el canal 0 del conversor A/D, para


un rango de tensión de 0-5 V y la máxima velocidad de conversión, en
este caso 200 µs.

Configuración del Timer1 :Se configura el Timer1 (temporizador de 16


bits), con un conteo ascendente y una recarga que le permite generar
una interrupción cada vez que pasan 10 ms.

Programa principal
El programa principal se lleva a cabo en la función loop() de Arduino. En
esta; se ejecutan periódicamente los algoritmos de control, la adquisición de
datos de los sensores presentes en el robot, la estimación de las variables de
estado, a partir de los datos recogidos por los sensores, y la comunicación con
la aplicación de usuario a través del módulo bluetooth. El siguiente diagrama
de flujo resume el programa principal que se ejecuta en el microcontrolador
(figura 3.14).
Donde:

spv : referencia de velocidad lineal

spw : referencia de velocidad angular

spPosy : referencia de posición en y

spPosx : referencia de posición en x

spI : referencia de ángulo de inclinación

b10ms : bandera activada en la subrutina de atención al Timer1 pasado


10ms

b20ms : bandera activada en la subrutina de atención al Timer1 pasado


20ms

PTmode : bandera que indica si se realiza la función de seguimiento a un


punto

pwm : señal de control de salida del PID de inclinación


Capítulo 3. Construcción del robot 63

inicializació n

No
b10ms

Si
Obtener
datos del MPU

Filtro
Complemento

sp I PID pwm
Inclinació n

No
b20ms

Si
Obtener velocidades
encoder + MPU

sp V PID sp I
velocidad linear
sp W PID pwmw
velocidad angular

No
PT_mode

Si
spPosx sp V
algoritmo de seguimiento
spPosy a un punto sp W

No sx de control hacia los puentes H


Bluetooth PWM1 = pwm - pwmw
PWM2 = pwm+ pwmw

Si Obtener
comandos y datos

Figura 3.14: Diagrama de flujo del programa principal

pwmw : señal de control de salida del PID de velocidad angular

La funciones implementadas para obtener la estimación de la inclina-


Capítulo 3. Construcción del robot 64

ción y las velocidades del robot, fueron analizadas en el capítulo 2. En las


secciones siguientes se profundiza en la implementación de un PID discreto
en el microcontrolador, en la función que realiza el protocolo de comunica-
ción serie para intercambiar datos a través del controlador con la interfaz de
usuario y en la implementación del algoritmo de seguimiento a un punto.

Programación de un algoritmo de control de tipo PID en el mi-


crocontrolador
La parte más importante del programa que se ejecuta en el microcontro-
lador, está constituida por los 3 algoritmos de control que rigen al compor-
tamiento del robot. Para explicar como se programaron estos, se explicará
el caso de la implementación de un PID genérico en un microcontrolador.
Se parte de la ecuación clásica del PID:
Z t
d
u(t) = Kp (xd − x(t)) + Ki (xd − x(t))δt + Kd (xd − x(t)) (3.1)
0 δt
Donde:
u(t) : señal de salida del controlador
xd : señal de referencia
x(t) : variable a controlar
Discretizando la ecuación 3.1:
X ek − ek−1
uk = Kp ek + Ki ek δt + Kd (3.2)
δt
Donde:
δt : período de muestreo
El término derivativo se aproxima a la diferencia entre el error actual
y el último error medido, dividido por el período de muestreo. El término
integral se aproxima como la acumulación de la suma del error multiplicada
por el período de muestreo. Para implementar la ecuación discreta 3.2, en el
programa se necesita tener como variables globales una que lleve la acumu-
lación del error para el cálculo de la integral y otra que lleve el último error
obtenido para el cálculo de la derivada. Cada vez que se active la bandera
que lleva el tiempo de muestreo del controlador (figura 3.14) se calcula el
nuevo error, se aplica la expresión anterior, se actualiza la variable corres-
pondiente con la acumulación del error y se guarda el error para la siguiente
iteración.
Capítulo 3. Construcción del robot 65

Protocolo de comunicación para intercambiar datos a través del


bluetooth
Como ya se ha visto en el capítulo, el módulo HC06 es un dispositivo
de comunicación inalámbrica bluetooth, que intercambia datos con el micro-
controlador a través de la interfaz de puerto serie. Para lograr el correcto
intercambio de datos, se realiza la misma configuración del UART en ambos
componentes. La velocidad del protocolo se seleccionó a 115200 bit/s, con
una trama de datos de 8 bits, bit de inicio, con bit de parada y sin bit de
paridad.
Para detectar si hay algún dato recibido a través del bluetooth, en el
programa principal constantemente se encuesta si se ha recibido algo en el
buffer de entrada del puerto serie correspondiente. Si hay algo, se inicia una
secuencia de comandos seguidos de datos. En la tabla 3.7 se resumen los
comandos del protocolo implementado.

Comando Acción
“A” Obtener referencias de velocidades enviadas por el usuario
“B” Enviar al usuario el estado del robot
“C” Enviar al usuario las constantes del PID de inclinación
“D” Obtener las nuevas constantes del PID de inclinación
“E” Enviar al usuario las constantes del PID de velocidad lineal
“F” Obtener las nuevas constantes del PID de velocidad lineal
“G” Enviar al usuario las constantes del PID de velocidad angular
“H” Obtener las nuevas constantes del PID de velocidad angular
“P” Obtener la referencia de posición a seguir
“R” Resetear el estado del robot

Tabla 3.7: Comandos del protocolo serie implementado

Algoritmo de seguimiento a un punto


El algoritmo de seguimiento a un punto, se basa en realizar una función
que provoque que el robot de manera autónoma, alcance una posición desea-
da en el plano. Las entradas del algoritmo son las coordenadas en y y x del
punto en cuestión (yd y xd ), y las señales de control son la velocidad lineal
y angular obtenidas por el controlador para lograr dicha tarea (figura 3.15).
Capítulo 3. Construcción del robot 66

y(m)
0.80
goal

0.60

0.40 dref

0.20

Ry θref
0.0
Rx

-0.20
x(m)
-0.20 0.0 0.20 0.40 0.60 0.80 1.0 1.20 1.40 1.60 1.80

Figura 3.15: Algoritmo de seguimiento a un punto.

A partir de la figura el error en orientación de define:


yd − yR
eθ = atan2( ) − θR (3.3)
xd − xR
Donde:
θR orientación del robot

xd coordenada en x del punto deseado

yd coordenada en y del punto deseado

xR coordenada en x del robot

yR coordenada en y del robot


Es importante saber que la función atan2, ejecuta el mismo cálculo que
tan−1 , pero la respuesta es entre 1800 y −1800 , importante para determinar
el sentido de giro.

El error de posición se define como la distancia euclideana entre dos


puntos: q
epos = (yd − yR )2 + (xd − xR )2 (3.4)
Luego, con estas funciones de error definidas, se utiliza un algoritmo de
control de tipo PID (como el visto en la sección 3.4.2) para cada una de ellas.
Estos garantizan que el error se minimice, haciendo que el sistema converja
hacia la posición deseada. En el Capítulo 4 se realiza un experimento para
probar el funcionamiento de este algoritmo.
Capítulo 3. Construcción del robot 67

3.5. Aplicación móvil para la interacción con el


usuario
Para lograr la interacción con el usuario, se realizó una aplicación móvil
que hiciera uso de la interfaz de bluetooth para el intercambio de datos. La
aplicación posee tres vistas principales (figura 3.16), la vista de controlado-
res, la vista de documentación y la vista de ajuste de parámetros del robot.
En la vista de ajuste, el usuario tiene la posibilidad de cambiar todos los pa-
rámetros de los controladores, además de cambiar parámetros geométricos
del robot, como el radio de las ruedas y el offset del ángulo de inclinación
(figura 3.17).

Figura 3.17: Interfaz


Figura 3.16: Barra de
de ajuste de los contro-
navegación
ladores

En la opción de controladores, el usuario tiene una interfaz de control


manual que se asemeja a un típico gamepad (figura 3.18) donde el robot
puede ser manipulado directamente. También posee una interfaz de control
automático, que le brinda las opciones de mandar al robot, las velocidades
de referencia directamente o la opción de mandar un punto en el plano
cartesiano al que el sistema debe llegar de manera autónoma (figura 3.19).
La aplicación muestra una tabla que contiene las variables de estado que
Capítulo 3. Construcción del robot 68

se están controlando. Esta tabla tiene la opción de almacenar los datos


recibidos, para luego procesarlos.

Figura 3.18: Interfaz Figura 3.19: Interfaz


de control manual de control automático

3.6. Conclusiones parciales


En este capítulo se llevó a cabo el ensamblaje y puesta en marcha del
robot. Se brindaron los datos técnicos de los componentes que conforman el
hardware del sistema, así como el esquema de conexiones entre ellos. Se pro-
gramó el microcontrolador de Arduino para que cumpliera todos los reque-
rimientos funcionales expuestos al inicio. Además, se realizó una aplicación
móvil, que permite supervisar y gestionar el comportamiento del robot.
Capítulo 4

Experimentos y análisis de
resultados

Para verificar el correcto funcionamiento del robot se realizaron expe-


rimentos. La ejecución de estas pruebas permitió juzgar el desempeño del
sistema. En este capítulo se describen las pruebas realizadas y el análisis de
los resultados que se obtuvieron.

4.1. Diseño de experimentos


Una vez construido el robot se verificó a través de una aplicación de
prueba el cumplimiento de algunos requerimientos funcionales, tales como:

La comunicación en tiempo real a través del bluetooth con la aplicación


móvil

Manipulación de la velocidad de cada rueda del robot

Medición de la aceleraciones en cada eje del robot usando el sensor


MPU6050

Medición de la velocidad angular de cada rueda del robot usando la


información de los encoders de los motores

Sobre estas bases se programó el robot para que implementara los algo-
ritmos de control de inclinación, velocidad de traslación, velocidad de giro,
estimación de la posición y navegación autónoma hacia un punto en el plano.

69
Capítulo 4. Experimentos y análisis de resultados 70

Los experimentos a que se sometió el sistema se realizaron con el uso de


la aplicación descrita en la sección 3.5. A través del móvil se manipuló el
robot, moviéndolo a distintas velocidades, con distintos pesos encima del
chasis y enviándole una posición deseada en el plano a la cual tenía que
llegar. Durante esta serie de eventos, lo más importante era que el siste-
ma mantuviera el equilibrio, lo cual constituye la pieza fundamental en la
evaluación del desempeño de un robot autobalanceado.
El análisis del comportamiento del robot se realizó con los datos recogidos
por la aplicación, guardados en el terminal donde se ejecutó. El preprocesa-
miento de las variables y las gráficas obtenidas, se realizaron utilizando las
bibliotecas matplotlib y numpy del lenguaje de programación Python. La
adquisición de los datos fue realizada tomando muestras cada 100 ms de las
variables que caracterizan el estado del robot durante 10 s, lo que brinda un
total de 100 valores por cada experimento. En la figura 4.1 se muestra las
variables que son enviadas desde el microcontrolador de Arduino hacia la
aplicación de gestión.

Figura 4.1: Obtención del estado del robot a través del móvil

Los experimentos realizados fueron los siguientes:

Enviar al robot referencias de velocidades igualadas a 0 rad/s y 0 m/s


respectivamente, y evaluar desempeño del equilibrio del robot
Capítulo 4. Experimentos y análisis de resultados 71

Enviar al robot referencias de velocidades igualadas a 0 rad/s y 0 m/s


respectivamente, con 2 vasos de agua encima del chasis y evaluar
desempeño del equilibrio del robot

Enviar al robot que mantenga una rotación constante igual a 3.0 rad/s
para evaluar el controlador de rotación

Enviar al robot que mantenga una velocidad lineal de 0.5 m/s para
evaluar el control de velocidad de traslación

Hacer que el robot navegue a las coordenadas y = 0.75 m y x = 1.75


m de manera autónoma, para evaluar el algoritmo de seguimiento de
un punto

4.2. Evaluación del equilibrio del robot


4.2.1. Experimento no.1
El sistema una vez que se energiza, por defecto todas las variables de
referencia de los controladores tienen un valor de 0, por lo que el robot está
balanceándose constantemente para mantener el equilibrio. Lo que signifi-
ca, mantener las variables de ángulo de inclinación y velocidades lo más
cercanamente a cero posible (figura 4.2).

variable media desv. estándar min max


inclinación [grad] 0.084 1.048 -2.637 2.693
velocidad lineal [m/s] 0.0129 0.091 -0.25 0.24
velocidad angular [rad/s] -0.0033 0.102 -0.36 0.33

Tabla 4.1: Parámetros estadísticos del experimento no.1

En la tabla 4.1 se muestran parámetros estadísticos de los datos obte-


nidos por el experimento después de repetirlo en 3 veces. Como se puede
apreciar el algoritmo de equilibrio funciona bien, debido a que el robot es
capaz de autobalancearse, manteniendo una oscilación en la inclinación con
una desviación estándar de solo 1.048 grados. Los lazos de control programa-
dos en este algoritmo funcionan bien, ya que el promedio de las mediciones
de las variables de control son cercanas a la referencia, la cual es 0 en es-
te caso. Es de notar que en estos sistemas, cuando el robot está en estado
estacionario, las variables de control siempre van a oscilar entre un valor
máximo y mínimo, debido a la naturaleza inestable del mismo (figura 4.2).
Capítulo 4. Experimentos y análisis de resultados 72

Figura 4.2: Resultados del 1er experimento, (a) ángulo de inclinación, (b)
velocidad lineal, (c) velocidad angular
Capítulo 4. Experimentos y análisis de resultados 73

4.2.2. Experimento no.2


Para llevar el controlador de equilibrio al extremo, se colocaron encima
del último piso del robot 2 vasos de agua. El objetivo es analizar las medicio-
nes de velocidades y de ángulo de inclinación, cuando se incrementa el peso
en el sistema, además de ver si durante los 10s que se toman las muestras,
no se derrama el agua y tampoco cae el robot al suelo (figura 4.3).

Figura 4.3: Evaluación del control de equilibrio del robot, con peso encima

En la tabla 4.2 se obtuvo la media, la desviación estándar, el valor mí-


nimo y el valor máximo de las mediciones después de realizar 3 veces el ex-
perimento. El experimento fue un éxito debido a que el robot mantuvo sin
derramar el agua de los vasos. La desviación estándar, los valores máximos
y mínimos del ángulo de inclinación y de las velocidades, se incrementaron
en comparación cuando no hay ningún peso encima del robot. Esto se debe
a que en estas condiciones aumenta el momento angular del sistema, por lo
que la amplitud del ángulo de inclinación durante el balanceo aumenta, y
para contrarrestar esto el controlador de velocidad incrementa la velocidad
de rotación de los motores (figura 4.4).

variable media desv. estándar min max


inclinación [grad] 0.055 1.827 -4.374 5.045
velocidad lineal [m/s] 0.00623 0.164 -0.44 0.41
velocidad angular [rad/s] -0.0120 0.1205 -0.38 0.49

Tabla 4.2: Parámetros estadísticos del experimento no.2


Capítulo 4. Experimentos y análisis de resultados 74

Figura 4.4: Resultados del experimento no.2, (a) ángulo de inclinación, (b)
velocidad lineal, (c) velocidad angular
Capítulo 4. Experimentos y análisis de resultados 75

4.3. Evaluación del control de velocidad lineal y


angular del robot
4.3.1. Experimento no.3
Para evaluar el control de velocidad lineal del robot, se toman muestras
de esta variable cuando al sistema se le asigna como referencia una veloci-
dad de 0.5 m/s. En la figura 4.5 se aprecia como el sistema fluctúa hasta que
converge a la velocidad deseada, además de que posee un tiempo de estable-
cimiento relativamente alto. Esto se debe a que el PID de velocidad lineal
está en cascada con el PID de inclinación, por lo que el sistema estabiliza la
inclinación para luego estabilizar la velocidad. Al principio, el controlador
de velocidad lineal hace que el robot se incline en el sentido positivo, asig-
nándole la referencia correspondiente al PID de inclinación. Durante este
proceso el robot se acelera, alcanzando un pico máximo de 0.8 m/s, en este
momento el ángulo de inclinación llega casi a 7.5 0 , luego el robot va des-
acelerando y, consecuentemente, el ángulo de inclinación va convergiendo a
cero hasta alcanzar valores de velocidad alrededor de los 0.5 m/s.

Referencia de velocidad

tiempo de
levantamiento: 0.6s

tiempo de establecimiento: 4.9 s

Figura 4.5: Evaluación del control de velocidad lineal del robot

4.3.2. Experimento no.4


Para evaluar el control de velocidad angular del robot, se toman muestras
de esta variable cuando al sistema se le asigna como referencia una velocidad
de 3.0 rad/s. En la figura 4.6 se aprecia como el sistema fluctúa hasta que
converje a la velocidad deseada, pero con un tiempo de establecimiento alto
Capítulo 4. Experimentos y análisis de resultados 76

y un tiempo de subida alto. Esto se debe a que las constantes de este PID
fueron seleccionadas de manera que no perturbase significativamente en gran
medida el control de equilibrio. Altos valores en la componente proporcional,
provocan que el sistema gire brúscamente, lo que trae consigo la pérdida de
equilibrio del robot. En el capítulo anterior se mostraron los lazos de control
programados en el robot. Se puede apreciar que el lazo de control de giro no
interactúa con el control de ángulo de inclinación (a diferencia del lazo de
velocidad lineal que está en cascada con el de inclinación). Actúa sobre la
salida del control de equilibrio para incrementar o decrementar, en la misma
medida, la diferencia de velocidad entre los motores. Esto constituye una
perturbación para el control de equilibrio.

Referencia de velocidad

tiempo de establecimiento: 5.1 s

Figura 4.6: Evaluación del control de velocidad angular del robot

Hasta ahora el sistema cumple con la mayoría de los requerimientos fun-


cionales descritos en el Capítulo 3. La construcción y programación del robot
autobalanceado fue exitosa debido a que el sistema mantiene el equilibrio,
incluso cuando está girando y cuando se está desplazando. En el siguiente
epígrafe se realiza un experimento para evaluar el último requisito funcional
del sistema. Se le asignan como referencia al robot unas coordenadas en el
plano, para que el mismo navegue de forma autónoma hacia dicho punto.
Capítulo 4. Experimentos y análisis de resultados 77

4.4. Evaluación del algoritmo de seguimiento de


un punto
4.4.1. Experimento no.5
Para evaluar la navegación autónoma programada, al sistema se le pasa
como referencia un punto expresado en coordenadas rectangulares del plano.
Se asume que el robot está en la coordenada (0,0), con una orientación (θθ )
igual a 0 0 . El punto enviado en el experimento es y = 0.75m y x = 1.75m
(1.75,0.75).
El experimento constituyó un éxito; debido a que el robot llega al punto
en cuestión de manera eficiente, describiendo una trayectoria bastante recti-
línea. Los resultados arrojaron que durante el recorrido la velocidad máxima
registrada fue de 0.7 m/s, la velocidad promedio fue de 0.36 m/s y el ángulo
de inclinación máximo fue de 6.51 grados. A los 3.8 s el robot estaba a una
distancia euclidiana del punto de 0.5 m y a los 5 s ya se encontraba a solo
0.10m (figura 4.7).

Figura 4.7: Resultados del algoritmo de seguimiento de un punto.

4.5. Conclusiones parciales


Con las pruebas realizadas se comprobó que el prototipo funciona bien y
se cumple con los requerimientos funcionales propuestos en el Capítulo 3. El
Capítulo 4. Experimentos y análisis de resultados 78

robot fue capaz de mantener el equilibrio en distintos escenarios dinámicos


incluso con incremento de masa encima del chasis.
Capítulo 5

Análisis económico

En este capítulo se lleva a cabo una revisión del costo de este proyecto.
Para ello se realiza el cálculo del costo total, tanto de la investigación como
de los materiales fundamentales para la implementación del robot autoba-
lanceado.
El costo total del proyecto se calcula según la ecuación siguiente:

CT = CD + CI (5.1)

donde:
CT : Costo Total en CUP
CD : Costos Directos en CUP
CI : Costo Indirecto en CUP

El Costo Directo (CD ) se obtiene de la siguiente forma:

CD = Sb + Sc + Ss + CM D + DP + OG (5.2)

donde:
Sb : Salario básico en CUP
Sc : Salario complementario en CUP
Ss : Seguridad social en CUP
CM D : Costo de materiales directos en CUP
DP : Gastos de dietas y pasajes en CUP
OG : Otros gastos en CUP

El Salario básico (Sb ) es el que se paga por el tiempo dedicado a la


investigación por cada uno de los participantes. En el Sb se tiene en cuenta

79
Capítulo 5. Análisis económico 80

el estipendio del estudiante y el salario de los tutores que orientan, controlan


y revisan la investigación que se desempeña. El Salario básico se obtiene con
la siguiente ecuación:
n
X
Sb = D(i) ∗ SD (i) (5.3)
i=1

donde:
D(i) : Días dedicados a la investigación por el participante i
SD (i) : Salario Diario del participante i en CUP
n: Número total de participantes
i: Participante i en cuestión

El Salario Diario de un participante se calcula de la siguiente forma:

SM
SD = (5.4)
D
Dónde:
SD : Salario diario del participante en CUP
SM : Salario mensual en CUP
D: Cantidad de días trabajados en un mes
(se considera 24 días de trabajo en un mes)

Este proyecto fue desarrollado por un estudiante, apoyado por un tutor,


profesor de la Universidad Tecnológica de la Habana. En la tabla 5.1 se
muestra el Salario Mensual de cada uno de los participantes de la investiga-
ción, así como el Salario Diario (según la ecuación 5.4) y los días de trabajo
(Dt ) invertido por cada uno de ellos.

No. Participantes DT SM [en CUP] SD [en CUP]


1 Profesor con categoría de Ing. 15 470.00 19.58
2 Estudiante 120 100.00 4.17

Tabla 5.1: Salarios y días trabajados de los participantes.

Sustituyendo estos valores en la ecuación 5.3 se tiene que:

Sb = D(1) ∗ SD (1) + D(2) ∗ SD (2) = 794,1CUP (5.5)


Sb = 15 ∗ 19,58 + 120 ∗ 4,17
Capítulo 5. Análisis económico 81

Sb = 293,7 + 500,4

Sb = 794,1CUP

El salario complementario se destina para el pago de vacaciones de los


trabajadores. En el caso de este proyecto solo se tiene en cuenta el profesor.
El salario complementario supone el 9.09 % del salario básico. Por tanto,
para el profesor se tiene que:

Sc = 0,0909 ∗ Sb (1) = 26,7CUP (5.6)


Sc = 0,0909 ∗ 293,7

Sc = 26,7CUP

Para el pago de la seguridad social se acumula el 10 % del salario básico y


del salario complementario. La seguridad social engloba el pago de la posible
atención médica y el retiro de los trabajadores. En este proyecto solo pagan
seguridad social al profesor. Por lo que se tiene que:

Ss = SsT = Ss (1) = 32,04CUP (5.7)


donde

Ss (i) = 0,10 ∗ (Sb (i) + Sc (i)) (5.8)


Ss (1) = 0,10 ∗ (293,7 + 26,7) = 32.04

SsT = 32,04CUP

El Costo de los Materiales Directos reúne los gastos de la obtención de los


componentes, equipos y materiales necesarios para llevar a cabo el proyec-
to. En la Tabla 5.2 se muestran los costos de los materiales y componentes
utilizados. El sofware y los frameworks utilizados son “libres” por lo que no
se incluyen en el costo del proyecto.
Capítulo 5. Análisis económico 82

Componente Precio [en USD]


2 Motores 12V DC con Encoders 31.87
batería de litio 12V 3000 mAh 17.29
puenteH l298N 3.52
sensor MPU6050 GY-521 2.68
bluetooth HC-06 2.98
arduino Mega 2560 R3 11.89
cables de conexion 6.48
Ruedas de patin con adaptación 16.00
Total 124.58

Tabla 5.2: Costo de los medios y materiales empleados.

Los gastos de dietas y transporte se consideran nulos en el desarrollo de


este proyecto. Por tanto:

DP = 0CUP (5.9)
Otros gastos se consideran gastos por concepto de utilización de equipa-
miento. En el caso se este proyecto, el equipamiento considerado son compu-
tadoras. El gasto por utilización de estos equipos tiene un valor de 10.00 CUP
por cada hora de uso. Se consideran 3 horas de trabajo para el profesor y 6
horas para el estudiante. Entonces para este proyecto se tiene que:

OG = 10 ∗ (ht (1) ∗ D(1) + ht (2) ∗ D(2)) = 7560CUP (5.10)


donde ht (i) son la cantidad de horas de trabajo diarias por cada uno de
los participantes del proyecto. Luego:

OG = 10 ∗ (3 ∗ 15 + 6 ∗ 120)

OG = 10 ∗ (45 + 720)

OG = 7560CUP

Los resultados obtenidos en las ecuaciones 5.5, 5.6, 5.7, 5.9, 5.10 y del
cálculo de los Costo de Materiales Directos, son sustituidos en la ecuación
5.2. Luego se tiene que:

CD = 8412,84CUP + 124,58USD (5.11)


Capítulo 5. Análisis económico 83

El costo indirecto está referido a los gastos de electricidad consumida,


gastos de administración, instalaciones, etc. Este valor se estima aplicando
un coeficiente de costo al salario básico. Este coeficiente tiene valor 0.84.
Por tanto se obtiene que:

CI = 0,84 ∗ Sb = 667,04CUP (5.12)


CI = 0,84 ∗ 794,1

CI = 667,04CUP

Sustituyendo los resultados obtenidos en las ecuaciones 5.11 y 5.12 en


5.1 se tiene que el Costo Total del proyecto es:

CT = 9079,88CUP + 124,48USD (5.13)


Conclusiones

Durante el desarrollo del proyecto se realizó una búsqueda de informa-


ción actualizada sobre la robótica móvil: la estructura mecánica, la locali-
zación de los robots móviles, las tecnologías de comunicación inalámbrica
y los sistemas de control en robots autobalanceados, lo que permitió selec-
cionar adecuadamente los componentes a integrar en la plataforma robótica
diseñada.
Se desarrolló un robot autobalanceado sobre 2 ruedas. Este robot es
capaz de mantener el equilibrio de manera autónoma, manteniendo una os-
cilación entre -2.5 y 2.5 grados, lo que permitió hacer un experimento donde
tenía encima dos vasos con agua y no derramó el líquido durante el proceso
de autobalanceo. Una parte fundamental para lograr esto fue la medición
del ángulo de inclinación a partir del sensor MPU6050, donde se implementó
una técnica de fusión de sensores conocida como filtro complemento.
El sistema es capaz de controlar la velocidad de rotación y la velocidad
traslacional. Para lograr esto sin que el robot perdiera el equilibrio, se pro-
gramó un algoritmo de control de tipo PID en cascada entre el control de
velocidad y el control del ángulo de inclinación. Para retroalimentar dichos
controladores, se programaron funciones que estimaran la velocidad lineal
usando los encoders de los motores y la velocidad angular usando la infor-
mación del giroscopio.
El robot es capaz de autolocalizarse, usando la odometría de un robot
con accionamiento diferencial, lo que permitió implementar el algoritmo de
seguimiento de un punto. Donde el sistema es capaz de navegar a un punto
del plano de manera autónoma.
Se implementó un sistema de comunicación inalámbrica con tecnología
bluetooth. A través de éste se pudo realizar el intercambio de datos en tiempo
real entre el robot y un teléfono celular. El proyecto realizado cumple con
todos los objetivos propuestos.

84
Recomendaciones

Entre las principales recomendaciones para futuros trabajos se encuen-


tran:

Disminuir el tamaño del robot y utilizar ruedas más grandes, para dis-
minuir la amplitud de las oscilaciones del ángulo de inclinación durante
el proceso de autobalanceo.

Para mejorar la estimación de velocidad lineal del robot, se debe im-


plementar el algoritmo de fusión de sensores conocido como Filtro de
Kalman, donde se combine la medición de velocidad de los encoders y
la componente de aceleración lineal del acelerómetro.

Aumentar la capacidad de cómputo, añadiendo una SBC, para poder


implementar algoritmos de inteligencia artificial que permitan auto-
ajustar los parámetros de los PID en tiempo real.

Incorporar al sistema una brújula para mejorar la estimación de orien-


tación del robot.

Incorporar al sistema un módulo Wifi que permita que el dispositi-


vo tenga la posibilidad de comunicarse con otros robots, una PC y
también un teléfono celular.

85
Bibliografía

[1] Russell, Stuart J y Peter Norvig: Artificial intelligence: a modern ap-


proach. Malaysia; Pearson Education Limited,, 2016. (Citado en la
página xiii).

[2] Yokoyama, Makoto: Modeling and control of wheeled mobile robots: from
kinematics to dynamics with slipping and skidding. En Autonomous
control systems and vehicles, páginas 195–209. Springer, 2013. (Citado
en la página 1).

[3] Goris, Kristof: Autonomous mobile robot mechanical design. Universi-


teit Brussel-Thesis, páginas 9–27, 2005. (Citado en las páginas 1 y 2).

[4] Kamga, Andre y Ahmed Rachid: Speed, steering angle and path tracking
controls for a tricycle robot. En Proceedings of Joint Conference on
Control Applications Intelligent Control and Computer Aided Control
System Design, páginas 56–61. IEEE, 1996. (Citado en las páginas 1
y 3).

[5] Zhao, Yilin y Spencer L BeMent: Kinematics, dynamics and control of


wheeled mobile robots. En Proceedings 1992 IEEE International Confe-
rence on Robotics and Automation, páginas 91–96. IEEE, 1992. (Citado
en la página 1).

[6] Zdešar, Andrej, Sašo Blažic y Gregor Klančar: Engineering education in


wheeled mobile robotics. IFAC-PapersOnLine, 50(1):12173–12178, 2017.
(Citado en las páginas 2 y 11).

[7] Ortega, Fernando Bote: Modelado y control del péndulo invertido so-
bre carro mediante sistemas híbridos. Universidad de Sevilla, Escuela
Superior Técnica de Ingenieros, 2012. (Citado en la página 4).

86
[8] Loram, Ian D y Martin Lakie: Human balancing of an inverted pen-
dulum: position control by small, ballistic-like, throw and catch move-
ments. The Journal of physiology, 540(3):1111–1124, 2002. (Citado en
las páginas 5 y 6).

[9] Pelayo, Roland: How to use an Arduino to build a robot that balances
itself like a Segway., 2017. https://maker.pro/arduino/projects/
build-arduino-self-balancing-robot, visitado el 2018-10-20. (Ci-
tado en la página 5).

[10] Juang, Hau Shiue y Kai Yew Lurrr: Design and control of a two-wheel
self-balancing robot using the arduino microcontroller board. En Control
and Automation (ICCA), 2013 10th IEEE International Conference on,
páginas 634–639. IEEE, 2013. (Citado en la página 5).

[11] IvenSense: MPU6050. http://www.daedalus.ei.tum.de/


attachments/article/57/PS-MPU-6000A.pdf, 2011. (Citado en
la página 6).

[12] Jin, Dennis, MPEV Pacheco, Mr Niclas Blomberg y Mr Niklas Everitt:


Development of a Stable Control System for a Segway. Royal Institute
of Technology, 2013. (Citado en la página 6).

[13] Nasir, Ahmad Nor Kasruddin, Mohd Ashraf Ahmad y Mohd Fua’ad
Rahmat: Performance comparison between LQR and PID controllers
for an inverted pendulum system. En AIP Conference Proceedings, vo-
lumen 1052, páginas 124–128. AIP, 2008. (Citado en las páginas 6 y 9).

[14] Nowak, Dominik: Fresh look at self-balancing robot al-


gorithm., 2016. https://medium.com/husarion-blog/
fresh-look-at-self-balancing-robot-algorithm-d50d41711d58,
visitado el 2018-10-21. (Citado en la página 6).

[15] MathWorks: Control Tutorials for MATLAB and SIMULINK, Inverted


Pendulum., 2012. http://web.archive.org/web/20080207010024/
http://www.808multimedia.com/winnt/kernel.htm, visitado el
2018-07-30. (Citado en las páginas 6 y 7).

[16] Mahler, Bernhard y Jan Haase: Mathematical model and control strategy
of a two-wheeled self-balancing robot. En IECON 2013-39th Annual
Conference of the IEEE Industrial Electronics Society, páginas 4198–
4203. IEEE, 2013. (Citado en las páginas 9 y 14).

87
[17] Wu, Junfeng, Wanying Zhang y Shengda Wang: A two-wheeled self-
balancing robot with the fuzzy PD control method. Mathematical Pro-
blems in Engineering, 2012, 2012. (Citado en las páginas 9 y 13).

[18] ATmega328P Datasheet., 2015. http://www.atmel.com/


images/Atmel-7810-AutomotiveMicrocontrollers-ATmega328P_
Datasheet.pdf, visitado el 2017-04-10. (Citado en la página 9).

[19] MPU-6000 and MPU-6050 Register Map andDescription Revision 4.2.,


2013. https://www.invensense.com/wp-content/uploads/2015/
02/MPU-6000-Register-Map1.pdf, visitado el 2018-05-3. (Citado en
la página 9).

[20] López, Germán y Santiago Margni: Motores y sensores en robótica.


PFC. Uruguay, 2003. (Citado en la página 9).

[21] Velazquez, Miguel, David Cruz, Salatiel Garcia y Manuel Bandala: Ve-
locity and motion control of a self-balancing vehicle based on a cascade
control strategy. International Journal of Advanced Robotic Systems,
13(3):106, 2016. (Citado en las páginas 9, 12 y 13).

[22] Majczak, Michał y Paweł Wawrzyński: Comparison of two efficient con-


trol strategies for two-wheeled balancing robot. En 2015 20th Interna-
tional Conference on Methods and Models in Automation and Robotics
(MMAR), páginas 744–749. IEEE, 2015. (Citado en las páginas 9 y 10).

[23] Hellman, Hanna y Henrik Sunnerman: Two-Wheeled Self-Balancing Ro-


bot: Design and control based on the concept of an inverted pendulum,
2015. (Citado en la página 14).

[24] Kumar, E Vinodh y Jovitha Jerome: Robust LQR controller design


for stabilizing and trajectory tracking of inverted pendulum. Procedia
Engineering, 64:169–178, 2013. (Citado en la página 14).

[25] Ogata, Katsuhiko y Yanjuan Yang: Linear Quadratic Regulator. En


Modern control engineering, volumen 4, páginas 915–935,946–947.
Prentice-Hall, 2002. (Citado en la página 15).

[26] Faragher, Ramsey y cols.: Understanding the basis of the Kalman filter
via a simple and intuitive derivation. IEEE Signal processing magazine,
29(5):128–132, 2012. (Citado en las páginas 16 y 47).

88
[27] Fischer, Thomas, Matías A Nitsche y Sol Pedre: Fusión de encoders
de cuadratura, sensores inerciales y magnéticos para la localización de
robots móviles. (Citado en las páginas 17, 19, 22, 24, 25 y 35).

[28] Gui, Pengfei, Liqiong Tang y Subhas Mukhopadhyay: MEMS based IMU
for tilting measurement: Comparison of complementary and kalman fil-
ter based data fusion. En 2015 IEEE 10th Conference on industrial
electronics and applications (ICIEA), páginas 2004–2009. IEEE, 2015.
(Citado en las páginas 18 y 34).

[29] Borenstein, Johann, Hobart R Everett, Liqiang Feng y David Wehe:


Mobile robot positioning: Sensors and techniques. Journal of robotic
systems, 14(4):231–249, 1997. (Citado en las páginas 18 y 25).

[30] Petrella, Roberto, Marco Tursini, Luca Peretti y Mauro Zigliotto: Speed
measurement algorithms for low-resolution incremental encoder equip-
ped drives: a comparative analysis. En 2007 International Aegean Con-
ference on Electrical Machines and Power Electronics, páginas 780–787.
IEEE, 2007. (Citado en la página 18).

[31] Siegwart, Roland, Illah Reza Nourbakhsh, Davide Scaramuzza y Ronald


C Arkin: Introduction to autonomous mobile robots. MIT press, 2011.
(Citado en las páginas 18 y 19).

[32] Joseph, Lentin: Learning robotics using Python. Packt Publishing Ltd,
2015. (Citado en las páginas 19, 41, 42 y 43).

[33] Lindberg, Olof: Hall effect. Proceedings of the IRE, 40(11):1414–1419,


1952. (Citado en la página 19).

[34] Klančar, Gregor, Zdešar Andrej Blažic Sašo y publisher=Elsevier


Škrjanc, Igor, year=2017: Wheeled mobile robotics. (Citado en las pá-
ginas 27 y 33).

[35] Rowberg, Jeff: I2CDevLib. urlhttps://github.com/jrowberg/i2cdevlib,


2011. (Citado en la página 60).

89

View publication stats

También podría gustarte