Tesis sobre Robots Móviles Autónomos
Tesis sobre Robots Móviles Autónomos
UNIVERSIDAD DE SONORA
División de Ciencias Exactas y Naturales
Programa de en Matemáticas
Título de tesis
T E S I S
en Ciencias (Matemáticas)
Presenta:
SINODALES
Dr.
Universidad de Sonora, Hermosillo, México
Dr.
Universidad de Sonora, Hermosillo, México
Dr.
Universidad de Sonora, Hermosillo, México
Dr.
Universidad de Sonora, Hermosillo, México
texto texto. . .
Agradecimientos
texto texto
iii
Todo list
iv
Índice general
Agradecimientos iii
Índice general iv
1. Introducción 1
Introducción 1
2. Sistema de visión 10
2.1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
3. WMR Amigobot 22
3.1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.2. Robot móvil rodante Amigobot . . . . . . . . . . . . . . . . . . . . . . . . 22
3.3. Características y Hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
3.4. Comunicación y conectividad . . . . . . . . . . . . . . . . . . . . . . . . . 26
3.5. Operación y manejo de Amigobot . . . . . . . . . . . . . . . . . . . . . . . 26
3.5.1. ROS/ARIA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
3.6. Modelo Cinemático . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
4. Esquema de navegación 32
4.1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
4.2. Campos potenciales de velocidad . . . . . . . . . . . . . . . . . . . . . . . 32
4.3. Estrategia de navegación . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
4.3.1. Campo de evasión . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
4.4. Estrategia de control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
4.5. Esquema experimental . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
v
Índice general vi
5. Resultados de validación 44
5.1. Resultados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
6. Conclusión 48
Appendices 50
B. Bloque TrackableLocation 52
D. Programa de control 60
Bibliografía 62
Capítulo 1
Introducción
logística y traslado de mercancías [2], la minería [3], exploración espacial [4],entre otros.
Para que un vehículo sea considerado autónomo, debe ser capaz de desplazarse en di-
ferentes lugares con poca o nula intervención humana. Para lograr esto, debe tener la
tiempo que evita colisionar con obstáculos [5]. Este tipo de vehículos constan de perifé-
ricos, tales como sensores de ultrasonido, cámaras de video, radares, lidares y unidades
información del mundo real, procesarla y tomar decisiones sobre hacia dónde orientarse
Podemos catalogar los robots móviles, según su lugar de operación, es decir en tres
Como su nombre lo indica este tipo de robots operan en supercies como carreteras,
fuera del planeta ,como en la luna o marte. Estos a su vez se pueden clasicar según su
forma de desplazarse.
1
Introducción 2
Este tipo de robots se mueven en la tierra mediante el uso de ruedas. Estos diseños se
preeren debido a que son mucho mas simples que los diseños con patas, consumen
menos energía y desde el punto de vista del control se requiere menos esfuerzo de
Robots de patas
Este tipo de robots están diseñados para moverse utilizando patas, imitando el
Robots tipo oruga Los robot de este tipo se inspiran en el movimiento de los insectos,
reptiles o vehículos militares, entre otros. La similitud con los insector viene dada
por una serie de placas o ruedas dentadas interconectadas por una banda exible,
las cuales permiten que el robot se mueva de manera eciente sobre una variedad
la primera guerra mundial, los cuales son navíos capaces de navegar bajo la supercie del
ROVs (Remote Operated Vehicles) Son vehiculos operados de forma remota que
son controlados por un operador humano fuera del agua. Estos son equipados por
cuales están diseñados para operar de forma independiente, sin necesidad de control
misiones de larga duración, recopilando datos de las condiciones del agua. tempe-
Mejor conocidos como drones, son robots aeronaves las cuales vuelan sin tripulantes
abordo, estos pueden ser controlados de forma remota por un operador, o de manera
y de vigilancia, entre otros. Estos se pueden clasicar según su tipo de helices o rotores,
Drones de ala ja Este tipo de drones tienen alas rigidas en el lugar de hélices,
planean y pueden ser alimentados por medio de energia solar para lograr tiempos
Drones multirotores Los drones multirotor tienen más de una hélice. Los tipos más
mayor sea el número de rotores que tenga un dron, mayor será la carga útil que
podrá levantar. Todos los drones con 6 u 8 rotores se diseñan para tener aditamentos
Los tipos de drones híbridos VTOL combinan los benecios de los diseños de ala
ja y basados en rotor. Este tipo de dron tiene rotores unidos a las alas jas, lo que
tecnología, esta opción podría volverse mucho más popular en los próximos años.
Un ejemplo de VTOL híbrido de ala ja es el dron de entrega Prime Air de Amazon
[7].
del desarrollo del propio hardware, estos problemas son abordados tanto en el ámbito
Planicación de rutas
La planicación de rutas implica encontrar una ruta geométrica desde una con-
guración inicial hasta una conguración dada de manera que cada conguración y
radares, para esquivar y evitar colisiones con las mismas. Esta capacidad de evasión
vehículos autónomos.
generar modelos detallados del entorno del robot; por otro lado, busca mantener un
Un sistema de robot multiagente (MARS, por sus siglas en inglés) es uno de los
mas importantes; sistema multiagente (MAS, por sus siglas en inglés) y sistema
de múltiples robots (MRS, por sus siglas en inglés). MARS se ha utilizado en mu-
ambientes en los que operan robots móviles autónomos son desconocidos y dinámi-
cos, como puede ser el caso de los taxis autónomos, los cuales operan en vialidades
concurridas. El robot debe ser capaz de planicar rutas u trayectorias con informa-
obstáculos, es decir se tiene información total del entorno en el cual se desarrolla el robot.
Hay diferentes técnicas para abordar la generación de rutas o trayectorias, una de las mas
Los campos de velocidad para guiado de robots se han estudiado a través de ecuaciones
Introducción 7
de hidrodinámica. Una de las técnicas mas populares para evacion de obstáculos basada
Varias alternativas han surgido para mejorar la función repulsiva convencional, la cual
que puede resultar en la incapacidad del vehículo para alcanzar la posición meta. Diversos
métodos basados en campos potenciales han sido desarrollados como mejoras al esquema
el Campo de Potencial Articial Mejorado [16]. Una forma de mitigar la principal des-
ventaja de los campos estáticos, es decir, la presencia de mínimos locales que puedan
velocidad.
entender cualquier cosa en este contexto, como lo son: formas, colores, posición de las cá-
Esta área de investigación tiene más de cuarenta años de investigación, con lo cual se
entre si, se emplean para distinguir formas automáticamente entre los diferentes
Inspección robotizada
Captura de movimiento
Se han desarrollado diferentes técnicas y tecnologías para llevar a cabo esta tarea.
Uno de los ejemplos más comunes son los sistemas con cámaras infrarrojas (IR), las
1.0.5. Objetivos
Obtención de la pose del robot móvil rodante (WMR por sus siglas en ingles)
1.0.6. Contenido
de este trabajo.
Capítulo 2
Sistema de visión
2.1. Introducción
El objetivo de un sistema de visión o Machine vision system es crear un modelo
del mundo real, mediante imágenes. Un sistema de visión recoge información útil de
una escena a través de su proyección en dos dimensiones. Debido a que las imágenes
información dentro de las mismas, debido a que ésta no está disponible directamente. Este
tipo de sistemas suelen utilizar cámaras u otros dispositivos de captura de imágenes, con el
de imágenes, para así analizar, extraer información y tomar decisiones basadas en dichos
datos.
Los sistemas de visión se utilizan en una gran variedad de campos con aplicaciones
diversas, algunos de los usos más importantes dentro de este trabajo son:
de imágenes.
en una imagen.
10
Sistema de visión 11
En este trabajo se emplea uno de dichos sistemas con la nalidad de estimar la posición
sistemas de Motion Capture o captura de movimiento. Fue fundada en 1996, tiene sede
Camaras Flex 13
El sistema emplea 6 cámaras Flex 13, de la marca Optitrack, la Figura 2.1 muestra el
Las Flex 13, son cámaras de captura de movimiento de volumen medio. Funcionan
mediante luz infrarroja de 850nm, la cual es invisible a la vista. La Tabla 2.1 muestra las
Estas cámaras emiten luces infrarrojas por medio de un círculo de elementos ópticos,
esta luz se emite por medio del aire y rebota en marcadores reejantes, una vez rebota en
los marcadores esta luz es captada por los sensores de las cámaras. También las cámaras
permiten visualizar las imágenes captadas en escala de grises, con la nalidad de orientar
Para la colocación de cada una de las cámaras, estas son montadas en un trípode cada
Característica Valor
Resolución 1.3 MP
Latencia 8.3 ms
Precisión en 3D ±0.20 mm
Frecuencia de muestreo 120 FPS
Campo de visión 56°
Optihub 2
sincroniza y alimenta cada una de las 6 cámaras con las que se cuenta.
Cada Optihub permite conectar 6 cámaras. La Figura 2.3 muestra la vista frontal del
HUB con sus conexiones USB para cada una de las cámaras.
En la Figura 2.4 podemos ver cómo espaciamos cada conector de cada una de las
cámaras. Debido a que se tienen 6 cámaras, dividiremos en grupos de 3, para así conectar
1 2 3
La Figura 2.5 muestra los cables y puertos necesarios para llevar a cabo la sincroniza-
ción entre los 2 hubs utilizados. Los números que aparecen en la gura hacen referencia
1. Conexión de voltaje: Cada HUB es alimentado por una fuente de voltaje de 24VCD.
3. Cable de sincronización: Este cable nos permite sincronizar la señal entre dos HUB,
Una vez se tengan colocadas las cámaras y conectadas a cada uno de los HUBS, será
necesario conectar a la computadora el cable USB de cada uno de los HUBS. También es
necesario emplear el Software Motive para realizar el SETUP del sistema de visión.
Sistema de visión 15
Motive Optitrack
La misma marca Optitrack nos proporciona un software para realizar tanto la iniciación
del sistema de cámaras, como captura de movimiento, este siendo Motive. La Figura 2.6
La versión utilizada de este software es la 1.10.1, con fecha de diciembre del 2016. Esta
Este programa, requiere tanto de una clave serial, como de una llave sica usb para su
activación y uso.
La Figura 2.7 muestra la interfaz de motive con la cual contaremos al iniciar el pro-
grama.
logramos que el software estime la ubicación de las cámaras, además de denir el origen
del sistema de referencia en ese momento. Con el origen establecido, Motive será capaz
tener tanto el nombre del proyecto como la ruta de este bien presentes.
Para iniciar la calibración, es necesario retirar todos los marcadores y objetos que
reejen la luz infraroja del área de trabajo, para evitar errores al momento de iniciar la
calibración.
Es fundamental para el buen funcionalmiento del sistema que el campo visual de las
cámaras cubra todo el espacio de trabajo. Para ello en Motive hay que seleccionar
sección Preset se tiene que seleccionar la opción Aiming. Una vez echo lo anterior
barra deslizante etiquetada con FPS (frames per second), y asumentar al máximo
acomodo de las cámaras una vez que se ha congurado el software con las opociones
cámaras.
Sistema de visión 17
2. Calibración
derecho de la Figura 2.7. Es muy importante que no haya marcadores, dentro del
rango de visión de las cámaras, también es necesario subir el número de cuadros por
Una vez iniciada la calibración debemos mover la vara ensamblada, dentro del rango
visión, se irán generando líneas en cada una de las vistas previas de las cámaras, la
Figura 2.10 muestra las líneas generadas por Motive al detectar la herramienta de
calibración.
Es necesario generar un número suciente líneas, como las vistas en la Figura 2.10.
calibración.
Una vez tengamos una cantidad de muestras suciente, como se muestra en la Figura
Figura.
Una vez nalizada la calibración será necesario seleccionar el punto de origen del
marco de referencia, dentro del área de trabajo. Para ello es necesaria la escuadra
daremos clic en el botón Set Ground Plate, el cual estará ubicado en la parte superior
de una ventana del lado derecho dentro de la interfaz de Motive.
Creación de Rigidbody
Una de las funciones del software Motive es que permite identicar y estimar las poses
de objetos de interés usando los marcadores que reefan la luz infraroja. Para lograr esto
es necesario colocar los marcadores sobre el cuerpo del vehículo a seguir. Una vez que se
Posteriormente, se procede a selecionar cada uno de los marcadores del objeto, para
ello dentro de la ventana Perspective View en Motive, se presiona el boton izquierdo del
ratón sobre cada marcador azul mientras se preciona la tecla Ctrl, seguido se presiona
descrito anteriormente.
Una vez se ha denido el objeto rígido, es necesario tomar en cuenta el nombre del
objeto, que se establece por defecto como Rigidbody1, este identicador es necesario para
congurar la adquisición de datos en las aplicaciones del sistema de visión.
Sistema de visión 21
Como se menciono anteriormente el software del sistema de visión estima la pose del
objeto que se ha denido. En la Figura 2.14 se muestran los valores de pose estimados,
estos valores son accesibles atravez del menu view/project, esto abre la ventana de assest,
lo cual nos muestra los objetos creados, se selecciona el objeto creado, como se muestra
en la gura, nalmente se selecciona Real-Time Info, lo cual muestra los valores de pose.
Capítulo 3
WMR Amigobot
3.1. Introducción
Hay una gran cantidad de vehículos móviles empleados actualmente. Estos son usados
propuesto en esta tesis se aplicó en vehículos terrestres, sin embargo, se puede aplicar en
El principal enfoque del sistema presentado en este trabajo es un vehículo móviles ro-
dantes o WMR(por sus siglas en ingles). El vehículo estudiado y puesto en operación para
22
Capitulo 3 WMR Amigobot 23
Este robot cuenta con dos ruedas de dirección y una tercera rueda de estabilidad. El
cuerpo del Amigobot está hecho de policarbonato, el cual es soportado por un chasis de
aluminio. La Figura 3.2 muestra las dimensiones y materiales en los cuales esta construido
el robot.
Cuerpo de policarbonato
MHz. Este sistema incluye memoria FLASH de sólo lectura, donde se guarda el sistema
Capitulo 3 WMR Amigobot 24
El sistema operativo AmigOS gestiona todos los sistemas y componentes de bajo nivel
rotativos de las ruedas, por mencionar algunas tareas del SO. Al igual que muchos sistemas
en segundo plano. Sin embargo, es una tecnología amigable al usuario, su interfaz está
El paquete del robot incluye una serie de programas con los cuales el usuario puede
congurar, probar y operar de manera autónoma el robot. Estos programas hacen funcio-
nar los motores y el sonar incorporados y permiten al robot moverse de manera inteligente
por sí mismo.
Sensores y actuadores
sensores y actuadores los cuales serán descritos a continuación. La Figura 3.3 muestra los
El robot tiene dos llanantas sólidas de cuatro pulgadas. Cada una es controlada por un
El robot cuenta con una tercera rueda la cual sirve de soporte trasero pasivo para el
equilibrio y, a diferencia de muchos otros robots, puede girar en su propio eje para no
Cada motor incluye un codicador de alta resolución, el cuál es utilizado por el micro-
controlador del robot para determinar las velocidades inmediatas de traslación y rotación
del robot. Las lecturas del codicador también ayudan a determinar la distancia que el
El AmigoBot estándar viene equipado con ocho sonares, éstos se ubican en los seis
discos dorados perforados alrededor de la parte delantera y los dos en la parte trasera. La
Capitulo 3 WMR Amigobot 25
LEDs
indicadores Vista superior
Vista
lateral
Pulsadores
de control
Bahía de
expansión
Bocina
Interruptor de encendido,
puerto de carga, puerto serial
del sistema. Llantas de
dirección Vista inferior
de AmigoBot utiliza los sonares de manera similar a un murciélago, no sólo para detectar
objetos en la parte delantera, los lados y la parte trasera, sino también para determinar
Ajuste de
sensibilidad
ción serial mediante un puerto RS232. Este puerto se utiliza para congurar parámetros
internos, como las velocidades máximas y las constantes de su controlador PID interno,
así como para recibir las velocidades necesarias para realizar la acción requerida.
Para solventar esta limitación, el robot cuenta con un módulo Lantronix WiBox2100E,
el cual es un módulo serial a WiFi. Este módulo permite acceder, controlar, monitorear
Esta solución está bien integrada, ya que combina un sistema operativo, un servidor
web integrado, una pila completa de protocolo TCP/IP con un transceptor 802.11b/g
que admite seguridad WEP, WPA y 802.11i/WPA2-Personal, y dos puertos serie de alta
del robot.
3.5.1. ROS/ARIA
siglas en ingles) ARIA (Adept MobileRobots Advanced Robotics Interface for Applica-
tions). ARIA es un interfaz de programación orientada a objetos para los los robots de
los cuales incluyen los robots móviles Pioneer 2/3 DX and AT, PeopleBot, PowerBot,
Pública General de GNU. Esto permite ver, modicar y reconstruir la biblioteca ARIA
Capitulo 3 WMR Amigobot 27
según se desee, siempre y cuando el software desarrollado con ARIA cumpla con los
requisitos de la licencia.
Por otra parte, el Sistema Operativo de Robots (ROS, por sus siglas en inglés) es
bibliotecas incluyen desde controladores hasta algoritmos de última generación para de-
Existen distintas maneras en las cauales se pueden instalar las funciones de ROS/A-
RIA. En esta sección se describen dos métodos para su instalación, el primero en una
Linux.
Para realizar la instalación del sistema operativo, consulta el sitio web de DEBIAN
Por otra parte la instalación de Ros Noetic en versiones de escritorio de Linux requiere
una secuencia de pasos más extensa, a continuación se describe la misma, la cual fue
ma.
Capitulo 3 WMR Amigobot 28
el comando sudo para ejecutar la instrucción como administrados, por lo cual sera
3. Se actualiza el sistema.
4. Se instala ROS.
$ source /opt/ros/noetic/[Link]
$ rosdep update
Una vez que ROS está funcionando adecuadamente, se procede con la instalación de
1. Se crea un entorno de trabajo Catkin, con la nalidad que la terminal acceda algunos
comandos especícos de ROS.
2. Cada vez que sea necesario copilar paquetes empleando el espacio Catkin, se debe
$ cd catkin_ws
$ . devel/setup . bash
Teniendo ROS instalado se procede a instalar los paquetes necesarios para el uso de
3. Clonamos de github las bibliotecas necesarias para poder emplear Aria en ROS en
$ cd ~/catkin_ws/src
$ git clone [Link]
$ cd ~/catkin_ws
$ catkin_make --force-make
$ roscore
$ rosrun rosaria RosAria _port:=[Link]:8101
Estos comandos inicializan ROS y seguido se llama al API de ARIA para conectar con
el robot. Nótese que el comando roscore no se debe ejecutar si se está emplendo la versión
Capitulo 3 WMR Amigobot 30
q̇ = S(q)v (3.1)
h iT h iT
q = xc yc θ q̇ = ẋc ẏc θ̇ , (3.2)
denotando xc (t), yc (t) ∈ R la posición al centro de masa del vehículo con respecto de un
del vehículo con relación al marco de referencia {B}, como se muestra en la Figura 3.5.
Las variables ẋc y ẏc denotan las componentes cartesianas de la velocidad lineal v(t) ∈ R1
y la velocidad angular ω(t) ∈ R, respectivamente, por lo que la matriz S(q) ∈ R2×3 se
dene como
cos θ 0
S(q) = sin θ 0
(3.3)
0 1
h iT
v= v ω (3.4)
Esquema de navegación
4.1. Introducción
En este trabajo, proponemos un sistema de navegación con el cual es posible aplicar
propuesto es adaptable a otras plataformas de prueba, como drones u otros robots móviles
en general.
Este capítulo describe el proceso a seguir para realizar la integración de los elementos
tónoma. El sistema de navegación propuesto en este trabajo permite abordar este y otros
La idea básica detrás de los campos potenciales es tratar al robot como una partícula
32
Capitulo 4: Esquema de navegación 33
campo U se construye de tal manera que el robot es atraído a su posición deseada mientras
es repelido por los obstáculos. Este método requiere únicamente información de gradiente
local, es decir, sólo hace uso de la posición actual del vehículo. Su matemática es sencilla
un mínimo local, es decir una barrera, que le impida llegar a la posición meta.
construye como un campo aditivo, que consta de un componente que atrae al robot a su
y a menudo se utilizan métodos de descenso del gradiente para encontrar una solución.
análogamente como una partícula que se mueve bajo la inuencia de la fuerza F = −∇U .
Figura 4.1: a) Campo potencial con la presencia de una barrera, b) Contorno del
campo potencial con la presencia de una barrera [24].
campos de velocidad, los cuales se encargan de generar una trayectoria deseada, y que
una ruta circular. Para generar un campo de velocidad en una ruta circular, es necesario
calcular dos campos vectoriales: uno de aproximación Vac y otro tangencial. El campo de
aproximación está denido por el vector que apunta derectamente a la ruta, y se obtiene
describe en [25].Se desea seguir una ruta circular con radio rtr y con centro localizado en
(x − ox )2 + (y − oy )2 = rtr
2
(4.1)
desde la posición del vehículo al círculo que describe la ruta deseada. Este punto es
calculado por
p
mı́n (x − xtr )2 + (y − ytr )2 (4.2)
donde xtr y ytr son todos los puntos que conforman la ruta circular, es decir, el grupo de
" # " #
x̄ x − ox
ξ¯ = = (4.3)
ȳ y − oy
donde x̄ y ȳ denotan la diferencia entre cualquier punto del área de trabajo y el centro
de la ruta circular. A su vez, x̃ y ỹ son los errores de posición desde cualquier punto
del espacio de trabajo hasta su punto más cercano dentro de la trayectoria deseada. Las
donde αcl denota el vector formado por la posición actual y el punto más cercano a la ruta.
Tomando las ecuaciones (4.4)-(4.5) para calcular xcl y ycl , podemos denir la distancia
˜ =
p
∥ξ∥ x̃2 + ỹ 2 (4.6)
ξ˜
Vac = (4.8)
˜
∥ξ∥
Denotamos el vector de las derivadas parciales de xcl e ycl como vc = [Vxc Vyc ]T ,
entonces el campo tangencial es denido por
vc
Vtg = (4.9)
∥vc ∥
F1 Vac + F2 Vtg
V= (4.10)
∥F1 Vac + F2 Vtg ∥
2
F1 = − 1, F2 = 1 − F1 (4.11)
1 + e−γ∥ξ̃∥
en la Figura 4.2.
" #
u(x, y)
v(p) = (4.12)
v(x, y)
en el punto
" #
x
p= ∈Ω (4.13)
y
Se propone utilizar un obstáculo circular, el cual interere con el campo de ujo vec-
torial, donde (xo , yo ) es la posición central del obstáculo, con radio ro . Denimos el error
" # " #
x − xo x̃o
ξ̃ e = = (4.14)
y − yo ỹo
circular es
r2
ϕ(ξ̃ o ) = 1+ 2 o 2 (x̃o cos β + ỹo sin β) (4.15)
x̃o + ỹo
donde
β = atan2(Vy , Vx ) (4.16)
es el ángulo del vector de campo de velocidad en ese punto. La velocidad de ujo alrededor
del cilindro está denida como el gradiente de la función ϕ, es decir, Vev = ∇ϕ. Entonces,
la componente x del campo vectorial de velocidad es
ro2 ro2
Vevx = − (x˜o cos β + y
˜o sin β)x˜o + (1 + ) cos β (4.17)
x̃2o + ỹo2 x̃2o + ỹo2
ro2 ro2
Vevy = − (x˜o cos β + y
˜o sin β)y˜o + (1 + ) sin β (4.18)
x̃2o + ỹo2 x̃2o + ỹo2
Capitulo 4: Esquema de navegación 37
" #
Vevx
Vev = (4.19)
Vevy
Para visualizar el efecto del campo evasivo, se puede decir que éste redirige la dirección
del vector del campo atractivo, modicando la referencia de velocidad para intentar evitar
Vev
V= (4.20)
∥Vev ∥
Cabe aclarar que el vector de velocidad V dado por (4.10), es obtenida en ausencia de
(3.1), las velocidades del robot móvil están relacionadas con el vector de velocidad lineal y
angular [v, ω]. En este modelo, las variables v y ω son las entradas o consignas de control.
q
v= Vx2 + Vy2 (4.21)
θd ,
θd = atan2(Vx , Vy ) (4.22)
por lo que, para hacer un control de seguimiento de velocidad angular, se debe obtener
primero la derivada del vector V , mediante lo cual se puede calcular la velocidad angular
Capitulo 4: Esquema de navegación 38
deseada
Vx V̇y − Vy V̇x
ωd = (4.23)
||V ||2
Finalmente, la velocidad angular usada como entrada de control está dada por
error integral.
La ruta propuesta para validad el sistema de navegación es una ruta circular con centro
velocidad.
Raspberry Pi 4
Router
Optitrack Motive
ROS/ARIA
bajo.
Capitulo 4: Esquema de navegación 39
El primero sirve para la obtención de la posición del robot, mientras que el segundo
que interactúan para alcanzar el objetivo establecido. En la Figura 4.3 se pueden observar
de manera sencilla los distintos elementos que componen el esquema, tanto componentes
una computadora con sistema operativo Windows. Dentro de este sistema se estima la
posición del robot por medio del software Motive y se realiza el cálculo de las entradas
desrrollo de Optitrack. Una vez que se tiene la posición del robot, ésta se usa en el
que permite establecer la comunicación con el robot. Cabe mencionar que esta estación
x x
tiempo From1 Vx Vx
Vx
Clock
To Workspace2 Goto
y y
ROS
From2 To workspace
1 no need to
initilaze optittrack1 v v
Goto3
x
z
w w
yaw
Goto2
pitch
Trackable_index
1 ??? roll
Trackable_index TrackableLocation
Constant4 time stamp
teta_d teta_ d
Delta Time
To Workspace13
dx/dt
dy/dt
dz/dt
Trackable_Location1 Constant yaw yaw
e_teta e_ teta
ex ex From
To Workspace14
-0.5 x_obs
Real-Time Goto1
Sync 1
Constant7 4.5 kp [int_ e]
s
Display5
Real-Time Constant5 Integrator Goto8
Synchronization1 0 y_obs
teta_dp teta_ dp
Constant8 .2 ki
ey To Workspace6
ey
Constant6
.30 r_obs Goto7 Control
Constant9
Referencia
ex In1
From8 Out1
Esta implementación se compone de diversos bloques, los cuales realizan tareas nece-
explican a continuación.
Capitulo 4: Esquema de navegación 41
Este subsistema se basa en el program Natural Point Motive (Optitrack) API interface
to Matlab and Simulink 64bit by Or Hirshfeld, desarollado por [26]. Este programa permite
inicializar la comunicación con el software Motive, empleando sus bibliotecas dinámicas
y estáticas con el n de estimar la posición y velocidad del robot aparir de los datos
Calcula la velocidad estimada del robot por medio de la posición estimada por el
sistema de visión.
Para mas información acerca de este bloque y sus subsistemas y funciones vease el Apen-
dice B.
Este bloque contiene las funciones que calculan los campos potenciales de velocidad y
Las coordenadas (xobs , yobs ) del obstáculo y el radio robs del mismo.
Para mas información acerca de este bloque y sus subsistemas y funciones vease el Apen-
dice C.
Capitulo 4: Esquema de navegación 42
Subsistema: Control
cuales nalmente son enviadas al robot mediante el sistema ROS, este bloque basicamente
Note que la entrada de control asociada con la velocidad angular ω pasa por un bloque
de saturación antes de ser aplicada al robot. Esto debido a que las ganancias kp y ki
del controlador fueron selecionadas para optimizar el desempeño en erores pequeños de
orientación, por lo cual errores grandes generan velocidades angulares de alta magnitud
Para mas información acerca de este bloque y sus subsistemas y funciones vease el
Apendice D.
Subsistema: ROS
Este subsistema contiene las funciones necesarias para enviar las consignas de control
al intermediario, es decir, el sistema que ejecuta ROS/ARIA. Este subsistema realiza las
siguientes funciones:
módulo es RosAria/cmd_vel.
Capitulo 4: Esquema de navegación 43
Antes de ejecutar el programa y asegurarse de que el robot cumpla con la tarea pro-
puesta, es necesario seguir los siguientes pasos para ejecutar el programa sin errores. A
que se encuentra en el directorio del proyecto. Nótese que la llave física USB del pro-
grama Motive debe estar conectada para tener acceso a las bibliotecas del mismo.
inclusión del programa base propuesto por [26], además del proyecto con el Rigidbody
y la calibración explicada en el Capítulo 2.
Capítulo 5
Resultados de validación
Como se menciono con anterioridad la ruta propuesta para validad el correcto funcio-
namiento del sistema propuesto, fue una ruta circular con las siguientes características:
Obstáculo circular a esquivar en las cordenadas (x, y) = (−0.5, 0.1), con un radio
r = .30m.
Trayectoria circular a cumplir en las cordenadas (x, y) = (1, 0), con un radio r=
.50m.
La velocidad Lineal del robot fue de .1m/s al momento de realizar pruebas experi-
mentales.
El controlador fue diseñado para mantener el robot en movimiento, es decir una vez
5.1. Resultados
La Figura 5.1 muestra la ruta seguida por el Amigobot. La linea azul muestra la ruta
44
Capitulo 5: Resultados de validación 45
0.5
Posición en Y [m]
-0.5
-1
seguida por el robot, mientras que en verde tenemos el obstáculo circular y en rojo el
circulo el cual marca los puntos sobre los cuales marcan la ruta circular deseada. Como
El robot se mantiene cercano a la ruta propuesta, sin embargo tenemos sonás donde
La Figura 5.2 muestra la gráca de las consignas de control enviadas al robot. Podemos
observar cómo la velocidad lineal se mantiene en 0.1 m/s, mientras que la velocidad
angular permanece constante. Una vez que el robot comienza a girar sobre la ruta circular,
En la Figura 5.3 podemos observar los errores de posición del robot en (x, y, θ). En
la gráca del error de posición podemos observar como este error se comporta de forma
sinusoidal, de manera que el error oscila entre −2cm y 2.5cm como máximo, lo cual es
0.15
0.1
0.05
0
0 50 100 150 200 250
Tiempo (s)
Entrada de control: Velocidad Angular
Velocidad Angular (°/s)
20
10
-10
-20
-30
0 50 100 150 200 250
Tiempo (s)
y de nuestra ruta realizada, podemos ver como este decrece, siendo que al esquivar el
obstáculo se vuelve muy alto para después ser corregido y mantenerse entre −2.3cm y
2.7cm de error.
cual se mantiene generalmente por debajo de los 2°. Todas las grácas obtenidas se ven
ruidosas, esto debido a que la señal procesada de las camaras contiene ruido derivado a
la propia conversión analógica a digital realizada por las cámaras, en esta ultima graca
se nota mucho mas el ruido de la señal, debido a que el robot tiene un comportamiento
oscilatorio al momento de seguir la ruta, esto se debe a que el control de direccional del
Error en (x)
Metros (m)
0.05
-0.05
0 50 100 150 200 250 300 350 400
Tiempo (s)
Error en (y)
Metros (m)
0.2
0.1
0
-0.1
0 50 100 150 200 250
Tiempo (s)
Error en (theta)
Grados (°)
10
5
0
-5
0 50 100 150 200 250 300 350 400
Tiempo (s)
Conclusión
Para lograr obtener la pose se empleó el programa Motive y sus bibliotecas di-
námicas. El mayor reto que hubo al realizar la integración con MATLAB fue la
información, se optó por emplear las propias bibliotecas dinámicas del programa
Este fue el mayor reto de este trabajo. El API de desarrollo ARIA es antiguo, ya que
el robot Amigobot salió al mercado en 2004. Por lo tanto, al momento del desarrollo
Ahora bien, la versión de ROS Noetic en la cual es posible ejecutar ARIA está
cual sea ejecutable. Por lo tanto, hubo la necesidad de emplear un sistema Linux
cámaras con el sistema ROS. El inconveniente de las versiones actuales radica en que
48
Capitulo 6: Conclusión 49
to, fue necesaria una versión donde pudieran convivir ambos programas. El reto de
el controlador PI empleado hace que el robot logre seguir de manera adecuada la ruta
calculada, con el defecto de seguirla con una velocidad de 10cm/s devido a que unicamente
Copilar ROS noetic para funcionar en la version actual de UBUNTU, siendo esta
Copilar aria de forma que se pueda emplear en Matlab, quitando asi la necesidad
Programa de inicialisacion de
bibliotecas motive
50
Apendice A: Programa de inicializacion de bibliotecas motive 51
Apéndice B
Bloque TrackableLocation
bloques principales, ademas de varios bloques goto, los cuales sirven para enviar variables
a otros subsistemas y un bloque Gain el cual se emplea para volver invertir z segun nuestro
sistema de referencia.
52
Apendice B: Programa de inicializacion de bibliotecas motive 53
x
Goto
x x
dx_dt xp
Goto2
y y
y dy_dt
Terminator2
Goto1
z -1 z
Gain
dz_dt yp
Goto3
1 Trackable_index roll roll
Trackable_index TrackableLocation
roll droll_dt
Terminator
pitch pitch Yaw_correction yaw pitch
fcn
yaw Goto4
dpitch_dt
MATLAB Function1
yaw yaw Terminator1
dyaw_dt dyaw_dt
Current_Time_Stamp Current_Time_Stamp
To Workspace2
13 Current_Time=double(0);
14
15 % Encuentra los componentes de pose del objeto a rastear
16 [X,Y,Z,qx,qy,qz,qw,YAW,PITCH,ROLL] = calllib('NPTrackingTools',
'TT_RigidBodyLocation',(Trackable_index-1),X,Y,Z,qx,qy,qz,qw,YAW,PITCH,ROLL);
17
18 % Obtiene la marca de tiempo
19 Current_Time = calllib('NPTrackingTools', 'TT_FrameTimeStamp');
20
21 % Calcula la diferencia de tiempo entre las capturas de dato
22
23 % Simulink acepta solo tipo de datos double
24 x=double(X); y=double(Y); z=double(Z);
25 yaw=double(YAW); pitch=double(PITCH); roll=double(ROLL);
26
27 Current_Time_Stamp=double(Current_Time);
28
29 end
Este bloque cambia el formato del angulo de giro yaw, de −180 a 180 lo convierte a
grados, ademas de corregir la discontinuidad presente cuando el robot pasa del segundo
al tercer cuadrante.
Este bloque calcula las derivadas temporales necesarias, se usaron las derivada de x,
z (notece que la llamamos y en nuestro sistema de referencia) y yaw, la Figura B.2 muestra
el diagrama de bloques de este subsistema.
1
1 dx_dt
x
2 dx_dt
y
3 2
dy_dt
z
4 Data dy_dt
roll
5 3
pitch dz_dt
6 dz_dt
yaw
7 4
Current_Time_Stamp
Mux
fcn droll_dt
droll_dt
5
dpitch_dt
Previous_Data dpitch_dt
Memory
6
dyaw_dt
dyaw_dt
1 function [Vx, Vy, Vxp, Vyp, ex, ey] = vel_field_WMR(x, y, xp, yp, xc, yc, rc, gama,
Kv, x_obs, y_obs, r_obs)
2 %------------------------------------------------------------------
3 % Entradas: x, y, xp, yp, xc, yc, rc
4 % Salidas: [xpd, ypd, xppd, yppd]
5 % g = 9.81;
6 % x = in(1); % Posici\`{o}n actual del veh\`{i}culo en x
7 % y = in(2); % Posici\`{o}n actual del veh\`{i}culo en y
8 % xp = in(3); % Posici\`{o}n actual del veh\`{i}culo en x
9 % yp = in(4); % Posici\`{o}n actual del veh\`{i}culo en y
10 % xc = in(5);
11 % yc = in(6);
12 % rc = in(7);
13
14 hp = [xp; yp];
15
16
17 %-------------------------------------------------------------------------
18 % C\`{a}lculo de teta_cl := qcl y sus derivadas
19 xt = x - xc;
20 yt = y - yc;
21 ht = [xt; yt];
22 qcl = atan2(yt, xt); % Theta_closer
23 qp_cl = cruz(ht, hp) / (ht' * ht); % (xt * yp - yt * xp) / d_cl^2;
57
Apendice C: Programa de generacion de campos potenciales 58
24
25 % C\`{a}lculo de derivadas de Vdes
26 [x_cl, y_cl] = TrayecCirculo(qcl, xc, yc, rc);
27 ex = x_cl - x;
28 ey = y_cl - y;
29 he = [ex; ey];
30 Vap = he / norm(he); % Vap
31
32 Vxc = -rc * sin(qcl);
33 Vyc = rc * cos(qcl);
34 Vc = [Vxc; Vyc];
35 dist_Vc = norm(Vc);
36 Vtg = Vc / dist_Vc; % Vtg
37
38 % V
39 gg = -gama * norm(he);
40 f = exp(gg);
41 F1 = (2 / (1 + f)) - 1;
42 F2 = 1 - F1;
43 Vnum = F1 * Vap + F2 * Vtg;
44 Vvf = Vnum / norm(Vnum);
45 % norm(Vnum)
46
47 % Primera derivada -----1-----------1---------------1------------1------
48 xp_cl = qp_cl * Vxc;
49 yp_cl = qp_cl * Vyc;
50 e_xp = xp_cl - xp;
51 e_yp = yp_cl - yp;
52 hep = [e_xp; e_yp];
53 Vp_ap = Vp(Vap, he, hep);
54
55 Vp_xc = -qp_cl * Vyc; % -10*qp_cl * cos(qcl);
56 Vp_yc = qp_cl * Vxc;
57 Vp_c = [Vp_xc; Vp_yc];
58 Vp_tg = Vp(Vtg, Vc, Vp_c); % (Vp_c - (Vtg' * Vp_c) * Vtg) / dist_Vc;
59
60 % Vp
61 gp = -gama * (Vap' * hep);
62 fp = f * gp;
63 F1p = -2 * fp / (1 + f)^2;
64 F2p = -F1p;
65
66 Vp_num = F1 * Vp_ap + F2 * Vp_tg + F1p * Vap + F2p * Vtg;
67 Vp_vf = Vp(Vvf, Vnum, Vp_num);
Apendice C: Programa de generacion de campos potenciales 59
68
69
70 Vxa = Vvf(1);
71 Vya = Vvf(2);
72 Vxpa = Vp_vf(1);
73 Vypa = Vp_vf(2);
74
75
76 in = [x; y; xp; yp; Vxa; Vya; Vxpa; Vypa; x_obs; y_obs; r_obs];
77 out = vel_ev(in);
78 Vx = Kv * out(1);
79 Vy = Kv * out(2);
80 Vxp = Kv * out(3);
81 Vyp = Kv * out(4);
82 end
83
84 function [x, y] = TrayecCirculo(q, xc, yc, rc)
85 x = xc + rc * cos(q);
86 y = yc + rc * sin(q);
87 end
88
89 function [out] = cruz(a, b)
90 % Producto cruzado
91 R = [0 1; -1 0];
92 out = a' * R * b;
93 end
94
95 function [out] = Vp(V, v1, v1p)
96 out = (v1p - (V' * v1p) * V) / norm(v1);
97 end
Apéndice D
Programa de control
60
Apendice D: Programa de control 61
Bibliografía
[1] S. Tucker, Self-driving cars: Everything you need to know - kelley blue book, 2024.
[3] MiX Telematics, The rise of autonomous trucks in the mining industry - mix tele-
[5] L. A. García, R. Pérez Alcocer, and G. Ramos, Tracking control of a wheeled mo-
[6] B. Shepperd, Types of drones. My Drone Professional - Best drones for beginners,
Good drones with cameras, Best drones for commercial use, recommended drone
[7] J. Rennie, Drone types: Multi-rotor, xed-wing, single rotor, hybrid vtol, 2024.
[8] P. Ryabchuk, How does path planning for autonomous vehicles work, 2018. 5
[11] P. Lin, J. H. Yang, Y. S. Quan, and C. C. Chung, Potential eld-based path planning
for emergency collision avoidance with a clothoid curve in waypoint tracking, Asian
Journal of Control, vol. 24, no. 3, pp. 10741087, 2022. 6
[12] S. H. A. Wahab, A. Saudi, N. Saad, and A. Chekia, Uav path planning using rotated
[14] X. Chen, Z. Huang, Y. Sun, Y. Zhong, R. Gu, and L. Bai, Online on-road mo-
tion planning based on hybrid potential eld model for car-like robot, Journal of
Intelligent & Robotic Systems, vol. 105, no. 1, p. 7, 2022. 7
elds and their application in real-time robot path planning, in Proceedings of the
2000 Congress on Evolutionary Computation, CEC00, vol. 1, pp. 256263, July 2000.
7
articial potential eld path planning algorithm in dierential drive mobile robot, in
[19] J. Sánchez Diez et al., Control de calidad del acabado supercial de bobinas de
[20] M. Menolotto, D.-S. Komaris, S. Tedesco, B. O'Flynn, and M. Walsh, Motion cap-
[23] Lantronix, Inc., WIBOX x 2100E Device Server User Guide. Lantronix, Inc., De-
[24] H. E. Espitia Cuchango and J. I. Sofrony Esmeral, Algoritmo para planear trayec-
activas brownianas, Ciencia e Ingeniería Neogranadina, vol. 22, no. 2, pp. 7596,
2012. 33
Bibliografía 64
López, and J. C. Grieco, Dynamic velocity eld angle generation for obstacle avoi-