Está en la página 1de 8

1

Avance del Proyecto Robot móvil Uniciclo Implementado y


Simulado en la Plataforma de Unity
D. Herrera, J. Robalino, F. Rea, J. Pinduisaca, W. Cañar, D. Muñoz, P. Rodríguez.
Facultad de Ingeniería en Electrónica y Telecomunicaciones.
Riobamba 060150
frea.fie@unach.edu.ec , juanpinduisaca.jq@gmail.com dwherrera.fie@unach.edu.ec
wcanar.fie@unach.edu.ec jrobalino.fie@unach.edu.ec voicesprodriguez@gmail.com

Abstract— This document gives us information about how movimiento y manipulación, lo que permite su aplicación en
the PID applied on the wheels of a robot works, the concept of sistemas de producción automatizados, así como en tareas,
feedback for any type of control system, and the model of a servicios o asistencia en lugares de difícil acceso.
unicycle robot where it is explained how we can abbreviate the En el siguiente proyecto se realizara un Robot móvil uniciclo,
differential car model, to relate tire speeds based on a linear donde está básicamente constituido por una estructura
and angular speed. So we will find two definitive equations for mecánica de dos ruedas fijas convencionales sobre el mismo
the implementation of the robot on the Arduino platform, it will eje, controladas de manera independiente y una rueda local que
also be known about what is the odometry that will help us to le confiere estabilidad, permitiéndole navegar a través de un
know the location of the robot at every moment of time with determinado ambiente de trabajo de forma autónoma. Dicha
its respective coordinates remember that this step is Extremely autonomía se refiere a la capacidad de percibir, planificar y
important for the control system. actuar sin intervención del operador para lograr determinados
And to finish the connections of the robot, programming as objetivos. Esta inteligencia es suministrada por el sistema de
much as for the motors and their PID's and what is a brief control.
introduction of the sensorization and the different applications
of use that can be given to the Unity Software and how it is II. DEFINICIONES
used for our project With the creation of our prototype with its A. Cinemática de un Robot
respective scenario, everything exposed for the chair of
Fundamentals of Robotics.

Resumen.- Este documento nos brinda información acerca


de cómo funciona el PID aplicado en las ruedas de un robot,
el concepto de realimentación para cualquier tipo de sistema
de control, y el modelo de un robot uniciclo donde se explica
cómo podemos abreviar el modelo del carro diferencial, para
relacionar las velocidades de las llantas en función de una
velocidad lineal y angular. Así encontraremos dos ecuaciones
definitivas para la implementación del robot sobre la
plataforma de Arduino, también se dará a conocer sobre lo que
es la odometría que nos ayudara a conocer la ubicación del
robot en cada instante de tiempo con sus respectivas
coordenadas recordemos que este paso es sumamente
importante para el sistema de control.
Y para terminar las conexiones del robot, programación tanto
Fig1. Modelo Cinemático de un Robot móvil. [1]
como para los motores y sus PID’s y lo que es una breve
introducción de la sensorizacion y las diferentes aplicaciones
Se limita al estudio de la trayectoria que tiene el robot a lo largo
de uso que se le puede dar al Software de Unity y como se lo
del tiempo, considerando tan solo la posición, la velocidad y
uso para nuestro proyecto con la creación de nuestro prototipo
en ocasiones la aceleración e incluso su derivada. Se trata de
con su respectivo escenario, todo lo expuesto para la catedra
una descripción analítica del movimiento espacial del robot
de Fundamentos de Robótica.
como una función del tiempo.
La cinemática del robot consiste en estudiar su movimiento con
Palabras Clave.- Cinemática, Robótica móvil, PID, Unity,
respecto a un sistema de referencia que determina las
Encoders, velocidad lineal, velocidad angular, PWM.
relaciones entre la posición y orientación del extremo del robot
localización y los valores de sus coordenadas articulares. [1]
I. INTRODUCCION
La Robótica representa un campo de aplicación importante o Cinemática Directa: Determina la posición y
para los sistemas de control y plantea el desarrollo de orientación del extremo final del robot, con respecto
autómatas con altos niveles de destreza y autonomía de
2

a un sistema de coordenadas de referencia fijo,


conocidos los valores de las articulaciones.
D. Encoders en la Robótica
o Cinemática Inversa: Determina la configuración que
debe adoptar el robot para una posición y orientación
del extremo conocidas.

B. Robótica Móvil

Fig4. Esquema de un Encoder incremental en funcionamiento . [2]

Poniendo énfasis en su composición, un encoder se compone


de un disco conectado a un eje giratorio. El disco se codifica
combinando zonas transparentes y opacas que bloquean el paso
Fig2. Prototipo de un robot móvil. [2]
de la luz que a su vez generan los pulsos digitales, según la luz
atraviesa el disco o es bloqueada por las zonas opacas. [2]
Hace referencia a la capacidad para alcanzar uno o varios
objetivos con una intervención muy pequeña de supervisores
Tipos de encoder:
humanos. Por lo cual un vehículo auto guiado está referida a
las estructuras móviles que solo se limitan a seguir caminos
o Encoder óptico
preestablecidos. Para que sea útil y capaz de evolucionar en el
Se trata del tipo de encoder más usado y está compuesto por
espacio 3D, debe poseer varios grados de libertad sin embargo
una fuente emisora de luz, un disco giratorio y una detector de
un robot móvil con tan solo dos grados de libertad puede
luz “foto detector”.
realizar cosas bastante interesantes sobre una superficie de
o Encoder lineal
trabajo.
Es un dispositivo o sensor que cuenta con una escala graduada
Operan en grandes ambientes no estructurados deben
para determinar su posición. Los sensores en el encoder leen la
enfrentarse con significativas incertidumbre en la posición e
escala para después convertir su posición codificada en una
identificación de objetos. [2]
señal digital.
o Encoder absoluto
C. PID
Los encoders absolutos ofrecen un código único para cada
posición y son encoders de un solo giro y los encoders
absolutos de giro múltiple.
o Encoder incremental
Se trata de un tipo de encoder óptico, que determina el ángulo
de posición a raíz de realizar cuentas incrementales, donde
cada posición es completamente única.

E. PWM

Fig3. Esquema general de un PID controlando un motor DC.

Es un mecanismo de control simultáneo por realimentación


ampliamente usado en sistemas de control industrial. Este
calcula la desviación o error entre un valor medido y un valor
deseado. El algoritmo del control PID consta de tres
parámetros distintos: el proporcional, el integral, y el
derivativo. El valor proporcional depende del error actual, el
integral depende de los errores pasados y el derivativo es una
predicción de los errores futuros. La suma de estas tres
Fig5. Formas de onda pwm al 10%, 50% y 90% de la señal.
acciones es usada para ajustar el proceso por medio de un
elemento de control. El algoritmo de control del PID, el
controlador puede proveer una acción de control adaptada a los Por lo general, todo sistema de control requiere un
dispositivo externo, como un sensor o un potenciómetro
requerimientos del proceso en específico. [3]
3

electrónico para realizar el control del dispositivo que se


encuentra conectado al circuito de control. Una unidad PWM
permite asignar cierta duración de tiempo en alto o en bajo a
un dato digital. [3]

F. Software Unity

Fig7. Señal de la parte Proporcional.

El modo de control Integral (I): tiene como propósito


disminuir y eliminar el error en estado estacionario, provocado
Fig6. Plataforma de trabajo Unity. [4] por perturbaciones exteriores y los cuales no pueden ser
corregidos por el control proporcional. El control integral
Unity es multiplataforma creado por Unity Technologies. Está actúa cuando hay una desviación entre la variable y el punto
disponible como plataforma de desarrollo para Microsoft de consigna, integrando esta desviación en el tiempo y
Windows, Mac OS, Linux. La plataforma de desarrollo tiene sumándola a la acción proporcional.
soporte de compilación con diferentes tipos de plataformas
para mapeado de relieve, mapeado de reflejos, mapeado por
paralaje, oclusión ambiental en espacio de pantalla, sombras
dinámicas utilizando mapas de sombras, textura y efectos de
post-procesamiento de pantalla completa. [4]

III. ESQUEMAS Y CODIGOS

Procedimiento y algoritmos para la implementación y


simulación del robot móvil:

Para la implementación del Robot movil se realizó una


investigación de todos los parámetros y requisitos que rigen
para su implementación ya sea la formulación matemática Fig8. Señal de la parte Integral.
para los PID’s tanto como de la llanta izquierda como la de la
derecha, la plataforma Unity para su respectiva simulación del Parte Derivativa (D): La acción derivativa se manifiesta
robot basada en movimientos del mismo, y la plataforma de cuando hay un cambio en el valor absoluto del error; si el error
Matlab orientada básicamente para tomar las variables tanto es constante, solamente actúan los modos proporcional e
de velocidad y velocidad angular y saber la posición que va ir integral.
recorriendo el robot. El error es la desviación existente entre el punto de medida y
el valor consigna, o "Set Point".
Implementación – PID para los Motores DC

La parte proporciona (P): consiste en el producto entre la


señal de error y la constante proporcional para lograr que el
error en estado estacionario se aproxime a cero, pero en la
mayoría de los casos, estos valores solo serán óptimos en una
determinada porción del rango total de control, siendo
distintos los valores óptimos para cada porción del rango.

Fig9. Señal de la parte Derivativa.


4

Matlab – Visualización del PID

En la figura 10 se visualiza las señales resultantes del PID,


tanto del setpoitn y la resultante del PWM. Lo que se puede
definir que cuando nosotros detemos, obstruimos la velocidad
en el cual esta trascurriendo. Se genera un tiempo en alto que
significa que el motor esta detenido por lo tanto cuando se
retire lo que encuentra obstaculisando al motor de inmedianto
procedera a mover el motor a PWM alto ya que rencompesara
el tiempo detenido en mayor velocidad.

Fig13. Obstaculización del motor DC.

Fig10. Señal PID en Matlab.


Fig14. Tiempos cuando el motor está detenido.
Cuando el Motor DC esta en movimiento la figura 11 del PID,
la constante proporcional esta en linea recta. To = tiempo que va obstaculizado.
Td = tiempo en el momento exacto donde se detiene el motor.
Ta = tiempo de aceleración en el momento que se quita el
obstáculo.

Código – Arduino PID

#include <PID_v1.h>
#include <PinChangeInterrupt.h>
#include <PinChangeInterruptBoards.h>
#include <PinChangeInterruptPins.h>
#include <PinChangeInterruptSettings.h>

#define encodPinA1 2
Fig11. Motor DC ya puesto en movimiento. #define encodPinB1 8
#define M1 9
#define M2 10

double kp = 5 , ki = 1 , kd = 0.01 ,input = 0, output = 0,


setpoint = 0;
long temp;
volatile long encoderPos = 0;
PID myPID(&input, &output, &setpoint, kp, ki, kd,
Fig12. Simulación cuando el motor no esta obstaculizado. DIRECT);
void setup() {
Cuando el Motor DC esta obstaculizado , en la interfaz Grafica pinMode(encodPinA1, INPUT_PULLUP);
MATLAB se visualiza otra figura. pinMode(encodPinB1, INPUT_PULLUP);
attachInterrupt(0, encoder, FALLING);
TCCR1B = TCCR1B & 0b11111000 | 1;
myPID.SetMode(AUTOMATIC);
myPID.SetSampleTime(1);
myPID.SetOutputLimits(-255, 255);
Serial.begin (9600);
}
void loop() {
int pot = analogRead(A0);
5

int valA2= analogRead(1);


temp += pot;
Serial.print(pot);
Serial.print(",");
Serial.println(valA2);
if (temp < 0) {
encoderPos = 0;
temp = 0;
}
setpoint = temp / 500;
input = encoderPos ;
myPID.Compute();
pwmOut(output); Fig16. Diseño del robot sin su escenario.
}
void pwmOut(int out) { 4) Crear un terreno y agregar el componente Terrain.
if (out > 0) {
analogWrite(M1, out);
analogWrite(M2, 0);
}
else {
analogWrite(M1, 0);
analogWrite(M2, abs(out));
}
}
void encoder() {
if (PINB & 0b00000001) encoderPos++;
else encoderPos--;
} Fig17. . Diseño del robot ya con escenario.

5) Diseñar un escenario de acuerdo a nuestro objetivo.


Simulación – Software Unity

Para el desarrollo de esta simulación se utilizó el software


cinema 4d en el cual diseñamos el robot uniciclo en forma de
un automóvil tipo grúa el cual se utilizó para exportar a la
plataforma de Unity que nos permite realizar múltiples
funciones en el robot como aplicando fuerzas físicas y dando
instrucciones por medio de un código en el programa mono
develop que nos permite programar en el lenguaje c el
comportamiento de nuestro robot. Procedimiento:

1) Investigar cómo funciona los softwares que se van a


utilizar para el desarrollo de la simulación.
2) Desarrollo del diseño del robot en el software Fig18. Diseño completo del robot su escenario.
cinema 4D.
6) Aplicar fuerzas físicas y componentes sobre nuestro
objeto.

Fig15. Diseño del robot en cinema 4D.

3) Importación del objeto en 3D a Unity.

Fig20. Interfaz y configuración.


6

7) Crear un código que permita al robot moverse en un En la figura 22 observamos nuestro robot, nuestro modelo
solo eje. cinemático se considera como un simple punto, el objetivo de
nuestro modelo es determinar la posición en el eje X, la
using System.Collections;
posición en el eje Y y la orientación con respecto al eje X
using System.Collections.Generic;
using UnityEngine; partiendo del punto, cuando hayamos aplicado una velocidad
lineal (u) y una velocidad angular (w) a nuestro robot.
public class movimiento : MonoBehaviour
{ Si analizamos geométricamente tenemos que la posición
public Transform target;
private float speed = 7; Xr = hx, Yr = hy (1)
void Start()
{ Es decir nuestro punto, como en nuestro modelo se está
} relacionando velocidades se deriva las ecuaciones antes
mencionadas
void Update()
{ X’r = h’x, Y’r=h’y (2)
float step =speed*Time.deltaTime;
transform.position = Vector3.MoveTowar Estas derivadas son las velocidades y vemos en nuestra figura
ds (transform.position,target.position,step); que la velocidad es u que es nuestra velocidad lineal.
}
private void FixedUpdate() Remplazamos las componentes en cada uno de los ejes con
{ esto se relaciona las velocidades en el punto de control con las
} velocidades que se aplican al robot.
}
o X’r =u Cos Φ
8) Importar el código y simular o Y’r=u Sen Φ
o w= u’

Fig21. Diseño completo del robot y en movimiento

Implementación – Control de posición Matlab

Obtención del modelo cinemático de un robot tipo uniciclo con Fig23. Movimiento del robot en Matlab ya configurado en los 3 ejes.
el fin de conocer las velocidades lineal y angular con la que se Movimiento del robot hacia adelante porque se está enviando
desplaza el robot, también se conocerá su ubicación y su una velocidad lineal positiva y si le damos una velocidad
orientación. Simulación del comportamiento del modelo y del negativa se dirigirá hacia atrás.
robot utilizando MATLAB. En un instante cero nuestro robot
se encuentra en el origen, luego de un determinado tiempo Código Modelo Cinemático – Matlab
nuestro robot se ha movido y estará en una orientación
determinada. [5] clc
clear all
close all

ts=0.1; %% tiempo de muestreo


t=0:ts:20; %%deficion vector tiempo
u=0.6*ones(1,length(t)); %% vector
velocidad
w=0*ones(1,length(t)); %% vector velocidad
angular

Fig22. Modelado de robot posición (0,0).


7

%%%%%%%%posicion inicial del robot%%%%%% importante para aquello ya que mediante las matrices tanto de
xr(1)=0; traslación como homogéneas nos ayudan al fácil ubicación de
yr(1)=0; nuestros puntos que va ir recorriendo el robot móvil.
phi(1)=0;
Es importante recalcar que la implementación del robot
%%%%%%%%%bucle de simulación%%%%%%%%% uniciclo se aprendió una nueva forma de ver el uso y la
for k=1:length(t) aplicación de este tipo de robots uniciclo autónomo ya que hoy
%%%% verificar posicion,orientación %%%% en día rigen una extensa área en la investigación y son de
xrp(k)=u(k)*cos(phi(k)); mucha ayuda para la industria y a la vez para las personas en
yrp(k)=u(k)*sin(phi(k)); la vida cotidiana.
%%integracion numerica para conocer la
posicion %%%
xr(k+1)=xr(k)+ts*xrp(k);
yr(k+1)=yr(k)+ts*yrp(k); V. REFERENCIAS
phi(k+1)=phi(k)+ts*w(k);
end [1] Barrientos, A., Peñin, L. F., Balaguer, C., & Aracil, R.
%%%%%ploteo de trayectoria del robot%%%% (2007). Fundamentos de robótica (Vol. 2, pp. 108-122).
pasos=20; fig=figure; Madrid: McGraw-Hill.
set(fig,'position',[10 60 980 600]);
axis square; cameratoolbar [2] Baturone, A. O. (2005). Robótica: manipuladores y robots
axis([-8 10 -6 6 0 1]); grid on móviles. Marcombo.
MobileRobot;
%%%%%plotear un robot simulado%%%%% [3] Martins, F. N., Carelli, R., Sarcinelli-Filho, M., & Bastos,
M1=MobilePlot(xr(1),yr(1),phi(1)); T. F. (2008). Modelo Dinámico y Controlador de Seguimiento
%%%%%posicion inicial del robot%%%% para Robots Móviles Tipo Uniciclo. V Jornadas Argentinas de
hold on, plot(xr,yr); Robótica-JAR08.
%%%%%simulacion del robot%%%%
for i=1:pasos:length(t) [4] Mattingly, W. A., Chang, D. J., Paris, R., Smith, N.,
delete (M1) Blevins, J., & Ouyang, M. (2012, July). Robot design using
M1=MobilePlot(xr(i),yr(i),phi(i)); hold on Unity for computer games and robotic simulations. In 2012
pause(0.5) 17th International Conference on Computer Games
end (CGAMES) (pp. 56-59). IEEE.

[5] Marghitu, D. B. (2009). Mechanisms and Robots Analysis


with MATLAB®. Springer Science & Business Media.
IV. CONCLUCIONES

El desarrollo del presente proyecto tiene ciertos aspectos


VI. BIOGRAFIA
importantes que conviene resaltar a modo de conclusiones.
El controlador PID-Difuso mantiene las características de un
controlador PID clásico en cuanto al comportamiento
Johnatan Israel Robalino I.
proporcional, integral y derivativo. Esto se confirma durante la
Estudiante de la Universidad Nacional
evaluación de las dos estructuras PID-Difusas.
de Chimborazo carrera de electrónica
y telecomunicaciones.
Pierde efectividad en la medida que la superficie de control
se hace no lineal. En esta situación los parámetros obtenidos
pueden ser empleados como punto de partida para realizar un
ajuste manual. Con este método se obtienen bueno resultados
cuando el retardo de transporte es mayor a las constantes
dominantes de tiempo.
Diego W. Herrera Pazmiño tengo 25
años. Nací en la ciudad de Riobamba,
Con respecto al software de Unity se requiere de un estudio
inicie mis estudios en la escuela La
mucho más profundo ya que existen múltiples opciones para el
Salle, los termine en el colegio Carlos
manejo de comandos o opciones más complejas al momento
Cisneros y en la actualidad estoy
de crear un escenario o cualquier otro ámbito en Unity.
estudiando en la Universidad Nacional
de Chimborazo la carrera de Ingeniería
Para su utilización el software Unity nos permite observa
en Electrónica y Telecomunicaciones
cómo actúan ciertas fuerzas física sobre un objeto Simulamos
el robot uniciclo con algunas leves advertencias para su
movimiento de forma autónoma.

Con respecto al posicionamiento del Robot en Matlab se a


concluido que la odometria es la herramienta mas necesaria e
8

Franklin Alexander Rea Chisaguano VII. ANEXOS


nací en la ciudad de Santo Domingo de los
Colorados en la provincia de Santo
Domingo de los Tsáchilas el 11 de Abril de
1995, Mis padres: Justo Rea, Rosa
Chisaguano. Mis estudios primarios los
realice en la escuela “Reino de Inglaterra”
de la ciudad de Santo Domingo,
actualmente me encuentro cursando el 8vo Semestre de
Ingeniería Electrónica y Telecomunicaciones en la
“Universidad Nacional de Chimborazo”.

Mi nombre es Darío Javier Muñoz


Muñoz nací en la provincia de
Chimborazo cantón Riobamba, culminé
mis estudios en el colegio Pedro Vicente
Maldonado en la especialidad Quimico-
biologo. Actualmente estudio en la
Universidad Nacional de Chimborazo sigo
la carrera de electrónica y
Telecomunicaciones estoy cursando el Sexto semestre de la
misma.
Fig24. Comprobando PID para cada una de las llantas del Robot.
Juan Carlos Pinduisaca Quishpe. Mis
estudios secundarios lo realicé en el
colegio Nacional Fernando Daquilema, y
en la actualidad sigo mis estudios
superiores en la Universidad Nacional de
Chimborazo.

Mi nombre es Paul Rodríguez


actualmente tengo 21 años de edad,
estudio en la Gloriosa Universidad
Nacional de Chimborazo estoy en la
carrera de Electrónica y
Telecomunicaciones, nací el 25 de Enero
del 1998.

Fig25. Montaje de cada parte del Robot.

También podría gustarte