introducción a la programación del amigo bot

19
Manual de Introducción a la Programación para el Robot Amigo Bot

Upload: jhonsoomelol

Post on 26-Jul-2015

58 views

Category:

Engineering


2 download

TRANSCRIPT

Page 1: Introducción a la programación del amigo bot

Manual de Introducción a la Programación para el Robot Amigo Bot

Page 2: Introducción a la programación del amigo bot

Introducción a la Programación del AmigoBot

En este documento se redacta la introducción a la programación del AmigoBot en Visual C++ 2008. Pondré los pasos que tuve que seguir según mi experiencia cuando tuve que programar para este tipo de robot.

Primero que antes recomiendo leer la documentación acerca del robot. Esta:

http://www.mobilerobots.com/ResearchRobots/AmigoBot.aspx

Se va a necesitar el siguiente software:

Microsoft Visual C++ 2008 Express Edition. (Plataforma en la cual nos permitirá crear nuestro programa que permitirá manipular el robot AmigoBot)

http://download.microsoft.com/download/A/5/4/A54BADB6-9C3F-478D-8657-93B3FC9FE62D/vcsetup.exe

Aria: las versiones ARIA-2.7.5.2 y ARIA-2.7.3. (Software que nos provee de proyectos y ejemplos que permiten manipular el AmigoBot)http://robots.mobilerobots.com/ARIA/download/archives/

MobileSim. (Software que permite simular el robot)http://robots.mobilerobots.com/wiki/MobileSim

Instalar MinGW. (Compilador que provee librerías de c que se usaran para poder compilar correctamente los programas que se deseen probar en el robot).http://sourceforge.net/projects/mingw/files/

Instalación:

Page 3: Introducción a la programación del amigo bot

NOTA*: durante la instalación de los programas, es preferible no mover las rutas de los directorios en los cuales se realizara dicha instalación de los programas.

Iniciamos instalando MinGW. Después continuamos con ARIA-2.7.5.2 Después MobileSim. Después Microsoft Visual C++ 2008 Express Edition

Configuración ARIA-2.7.5.2:

En la ruta C:\Program Files\MobileRobots\Aria\lib debemos de tener una librería llamada “AriaDebugVC9”, para lo cual tenemos la versión ARIA-2.7.3 debemos de instalarla en una ruta por ejemplo como el escritorio, una vez instalada. …\Desktop\ARIA 2.7.3\lib y copiamos el archivo AriaDebugVC9 de esta versión y la pegamos en la ruta C:\Program Files\MobileRobots\Aria\lib.

Configuración Microsoft Visual C++ 2008 Express Edition

Abrimos un proyecto o solución:

Page 4: Introducción a la programación del amigo bot

Vamos a añadir un proyecto dentro de la solución creada, y así poder dentro de ese proyecto crear programas que hagan uso de las librerías de Aria:

Que sea aplicación de consola:

Presionamos OK, y finalizamos:

Page 5: Introducción a la programación del amigo bot

Ahora debemos de configurar el proyecto añadido, damos click derecho sobre nuestro proyecto añadido y seleccionamos propiedades:

Y aparecerá:

Cambiamos la configuración a “All configurations”:

Page 6: Introducción a la programación del amigo bot

Ahora en la opción General en la opción “Output Directory”, seleccionamos el lugar donde se generara los archivos que generara la compilación de nuestro proyecto:

En mi caso lo dejare por defecto:

Ahora vamos a la opción “link” o “Linker”, y buscamos la sección “General”:

En “Additional Library Dependencies” damos click:

Ubicamos la carpeta en la siguiente ruta “C:\Program Files\MobileRobots\Aria\lib”:

Page 7: Introducción a la programación del amigo bot

Presionamos OK y aplicamos, ahora cambiamos la configuración en “Debug”:

Ahora vamos a la opción “Input” y en la parte de “Additional Dependencies”, añadimos las siguientes:

AriaDebugVC9.lib winmm.lib advapi32.lib ArNetworkingDebugVC9.lib ws2_32.lib

Page 8: Introducción a la programación del amigo bot

Presionamos OK, y aplicamos. Ahora cambiamos la configuración a “Release”, y ahora añadimos las siguientes librerías:

AriaVC9.lib winmm.lib advapi32.lib ArNetworkingVC9.lib ws2_32.lib

Ahora cambiamos la configuración a “All Configurations” y en la opción “C/C++” en la parte de General, seleccionamos la opcion “Additional Include Directories”:

Page 9: Introducción a la programación del amigo bot

Selecciónanos la siguiente ruta “C:\Program Files\MobileRobots\Aria\include”:

Presionamos OK y aplicamos, ahora solo nos queda configurar la opción de “Code Generation”, la seleccionamos y cambiamos la configuración a “Debug”:

Cambiamos la opción de “Multithreaded DLL (/MDd)”, a solo “Multithreaded DLL”, y aplicamos cambios:

Page 10: Introducción a la programación del amigo bot

Cambiamos la configuración a “Release” y repetimos el anterior proceso:

Con esto finalizamos la parte de configuración.

Page 11: Introducción a la programación del amigo bot

Compilando Primer Programa de Muestra Demo

Se abre el archivo demo.cpp :

La construcción del proyecto es opcional ya que viene el proyecto compilado, si se quiere construir el proyecto nuevamente lo hacemos en la opción:

Al finalizar mostrara el siguiente mensaje:

Ahora ubicamos la ruta del demoVC9.exe:

Page 12: Introducción a la programación del amigo bot

Solo nos resta abrir el simulador, elegimos el tipo de robot “amigo-sh”:

Ahora elegimos cualquier tipo de mapa y lo cargamos:

Page 13: Introducción a la programación del amigo bot

Ahora podemos ejecutar el archivo “demoVC9.exe”, y podemos ver de qué forma actúa el robot en el simulador:

Podemos iniciar a mover el robot presionando las teclas de control arriba, abajo, izquierda y derecha.

Page 14: Introducción a la programación del amigo bot

Creando Nuestro Propio Programa

Se puede realizar tomando base en el código de demo.cpp. Si queremos que nuestro programa se mueva a una velocidad fija y se detenga cuando detecte un objeto a una cierta distancia se realiza de la siguiente forma.

Para determinar el rango de medición de cada sensor debemos de tomar la posición según la siguiente imagen:

Se puede determinar el rango de medición de cada sensor sonar del robot con el comando “robot.getSonarReading( Numero del sensor ) -> getRange()”. No hay que olvidar que el

robot tiene 8 sensores asignados del 0 al 7, el sensor 0 está ubicado a +90° del robot, el sensor 1 a +44°, el sensor 2 a +12°, el sensor 3 a -12°, el sensor 4 a -44°, el sensor 5 a -90°, el sensor 6 a -144° y el sensor 7 a +144°. Dicho comando retornara el objeto detectado en milímetros. De acuerdo a la documentación del robot, cada sensor puede detectar objetos a una distancia de 5000 milímetros, es decir 5 metros.

La velocidad que se puede asignar al robot se asigna por pulsos sobre segundo. A través del comando:“robot.setVel( 100 )” y se asigna los pulsos que se desea que el robot tenga.

El código siguiente contiene los comandos básicos que permiten la conexión al robot físico. El simulador contiene fallas en comparación del robot real. Se debe de tomar en cuenta que el simulador se comunica a través de una red local y el tiempo de comunicación es 0mili segundos. En cambio sí se conecta al robot real el tiempo mínimo esperado es de al menos 200 milisegundos.

En caso de que el programa este realizando una acción diferente en un tiempo menor a 200 milisegundos, podría el robot bloquearse, es decir el robot cuando reciba 1 acción, no la podrá ejecutar porque ya recibió otra y así sucesivamente. En caso del simulador si realizar dichas acciones, pero en el robot real no.

Page 15: Introducción a la programación del amigo bot

El código del programa es el siguiente, lo copiamos y lo pegamos en nuestro proyecto ejemplo creado:

#include "Aria.h"using namespace std;

int main(int argc, char** argv){ Aria::init();

ArArgumentParser parser(&argc, argv); parser.loadDefaultArguments(); ArRobot robot; ArRobotConnector robotConnector(&parser, &robot); ArAnalogGyro gyro(&robot);

if (!robotConnector.connectRobot()){ if (!parser.checkHelpAndWarnUnparsed()){ ArLog::log(ArLog::Terse, "Could not connect to robot, will not have parameter file so options displayed later may not include everything"); } // otherwise abort else { ArLog::log(ArLog::Terse, "Error, could not connect to robot."); Aria::logOptions(); Aria::exit(1); } }

if(!robot.isConnected()){ ArLog::log(ArLog::Terse, "Internal error: robot connector succeeded but ArRobot::isConnected() is false!"); } ArLaserConnector laserConnector(&parser, &robot, &robotConnector); ArCompassConnector compassConnector(&parser);

if (!Aria::parseArgs() || !parser.checkHelpAndWarnUnparsed()) { Aria::logOptions(); Aria::exit(1); return 1; }

ArSonarDevice sonarDev; ArKeyHandler keyHandler; Aria::setKeyHandler(&keyHandler); robot.attachKeyHandler(&keyHandler); printf("You may press escape to exit\n"); robot.addRangeDevice(&sonarDev);

if (!laserConnector.connectLasers(false, false, true)){printf("Could not connect to lasers... exiting\n");Aria::exit(2);

} robot.runAsync(true);

// Create and connect to the compass if the robot has one. ArTCM2 *compass = compassConnector.create(&robot); if(compass && !compass->blockingConnect()) { compass = NULL; } ArUtil::sleep(1000); robot.lock(); // turn on the motors robot.comInt(ArCommands::ENABLE, 1);

robot.unlock(); // Ponemos una velocidad constante al robot.

Page 16: Introducción a la programación del amigo bot

robot.setVel( 100 );

while( true ){// Se espera 100 milisegundos a que el robot retorne las lecturas// y asi tomar una desicion de que realizarArUtil::sleep( 100 );

// Si queremos que se detenga el robot cuando detecte un objeto en// en los sensores 2 y 3 a una distancia de 1 metro el comando seria // el siguiente:if( robot.getSonarReading( 2 ) -> getRange() < 1000|| robot.getSonarReading( 3 ) ->

getRange() < 1000 ){robot.setVel( 0 );

} }

robot.waitForRunExit();

Aria::exit(0); return 0;}