Está en la página 1de 6

Laboratorio 3.

Modelo del Entorno.


Robtica Mvil

Mauricio Castao Aguirre

Universidad del Quindo


Armenia, Quindo
Abril 2016

OBJETIVOS
-Comprender el funcionamiento de un robot mvil comercial como el Pioneer 3DX.
-Modelar el entorno haciendo uso de la herramienta de simulacin MobileSim para
programar el robot mvil Pioneer 3DX.
-Implementar diferentes algoritmos de reconocimiento del entorno.

PROCEDIMIENTO
a. Funciones ms importantes de Aria.
ArRobot(). Es la clase encargada de todo lo fsico del robot, empleando
diferentes mtodos; tiene mtodos para control de velocidad, para habilitar
motores, para habilitar o deshabilitar sensores conectados al robot, para
obtener el tipo de robot conectado, para mover el robot, para calcular el rango
de los dispositivos o sensores conectados, para obtener el nivel de batera,
para obtener la temperatura, etc.
ArsonarDevice() es la clase encargada de detectar sensores ya sean
simulados o reales.
b. Captura de datos de los sensores.
Los captura de datos de los sensores tiene mtodos diferentes para la
obtencin tanto de su rango como y posicin global de cada sensor.
Mtodos.
getSonarReading(i); retorna una variable tipo ArSensorReading que contiene el
rango de los sensores y la posicin global del sensor. El parmetro de entrada
es un entero que indica el nmero del sensor.
Una vez obtenida esta variable tipo ArSensorReading se usan los mtodos
getRange(), getX(), getY(). Para obtener el rango y las posiciones X y Y
globales de cada sensor. Todas las funciones anteriores retornan una variable
tipo numrica (long,doubl,double)
Envi de comandos a los motores.
Los mtodos encargados del manejo de los motores son mtodos dentro de la
clase ArRobot Los mtodos que envan los comando para indicar movimiento a
los motores son.
setVel(double) indica la velocidad a la que se debe mover el robot. Los motores
se mueven a la misma velocidad en el mismo sentido.
setVel2(doubl,double) recibe dos parmetros tipo double que controlan la
velocidad de cada motor. Se puede indicar la velocidad de cada motor para
hacer giros en angulos deseados.
disableMotors(). Metodo para detener los motores.

Modificacin de coordenadas del robot con anlisis de matrices de traslacin y


rotacin.
Como se muestra en la figura 1 las coordenadas originales en la clase Mmico tenan
una gran diferencia respecto a las coordenadas que se tomaran como referencia para
prcticas futuras,

Figura 1.Coordenadas base real y simulada.


La clase encargada del mapeado de los movimientos y reas de alcance de los
sensores es mmico.java. Dentro de esta clase se usan mtodos que emplean
matrices de traslacin y rotacin para obtener las coordenadas del robot, de los
sensores, del rango de los sensores y de los objetos obtenidos por los sensores. Para
usar las matrices de rotacin y traslacin se usan variables tipo AffineTransfrom que
contiene mtodos para realizar operaciones matriciales de transformacin de
coordenadas.

Modificaciones realizadas.
Partiendo del anlisis de la figura 1 se puede observar que los ejes estn
trocados y los ngulos son negativos uno con respecto al otro. Por lo tanto para
ajustar las coordenadas de referencia de los sonares y del robot solo es
necesario cambiar las coordenadas X=>Y, Y=>X. y los ngulos de rotacin del
robot multiplicarlos por -1.
Robot
El ngulo del robot en la simulacin con respecto a las coordenadas reales
deseadas presenta un desfase de 90. Este desfase es necesario restarlo al
angulo que se utiliza en la matriz de rotacin de las coordenadas del robot asi.
atRobot.rotate(Math.toRadians(anguloRobot-90));
La variable atRobot de tipo affineTransform accediendo al mtodo rotate en el
que se manda como parmetro el Angulo adquirido con el mtodo getTh (). Se
le restan 90 traslapamiento entre las coordenadas de simulacin y las reales
deseadas
Sonares
posYsonarGlobal[i]=(int)lecSonar.getX()/10;

El mtodo getX() de la variable lecSonar de tipo ArSensorReading retorna la


coordenada X en base a la parte frontal del robot y no al costado derecho como
se desea, por tanto se iguala este dato a la coordenada en Y que sera la
coordenada que va paralela a la parte frontal del robot. Se divide entre 10 para
pasar a centmetros ya que los mtodos de graficado en el simulador reciben
datos en centmetros
posXsonarGlobal[i]=(int)lecSonar.getY()/10;
Igualmente en getY() las coordenadas estn trocadas se reemplazan por las
coordenadas deseadas, en este caso coordenadas X
atSonar.rotate(Math.toRadians(-anguloSonarRobot[i]));
Como se muestra en la figura 1 el Angulo de las coordenadas simuladas es de
signo contrario al de las coordenadas reales deseadas; se multiplica el vector
de ngulos de los sonares por -1 para obtener los ngulos correctos con
respecto a las coordenadas reales deseadas
c. Modificaciones propuestas.
Algoritmo de exploracin aleatoria, Modificacin en contorlRobot.java; Clase
encargada de mover el robot.
if(dist<rangoVal)
{
for (int i=0;i<8;i++)
{
if(magnitudRangoSonar[i]<rangoVal)
{
try {
miRobot.setVel2(-50,50);
Thread.sleep(var.nextInt(2000)+1000);
} catch (InterruptedException e) {
}
}
}
}
else{
miRobot.setVel2(500,500);
}
Algoritmo de exploracion determinista
if(dist<rangoVal)
{
for (int i=0;i<8;i++)
{
if(magnitudRangoSonar[i]<rangoVal)
{
miRobot.setVel2(-50,50);
}
}
}
else{

miRobot.setVel2(500,500);
}

Figura 2.Resultados algoritmo de exploracin determinstico

Figura 3.Resultados algoritmo de exploracin aleatorio

También podría gustarte