Diferencia entre revisiones de «Tutorial:ODE y robots modulares:Configuración PP»
(→Modelo de control) |
(→Modelo de control) |
||
Línea 126: | Línea 126: | ||
donde los parámetros son: | donde los parámetros son: | ||
− | + | {| {{tablabonita}} | |
− | + | | '''A''' || Amplitud de las oscilaciones (grados) | |
− | + | |------- | |
− | + | | <math>\Delta\phi</math> || Diferencia de fase entre el oscilador izquierdo y derecho | |
− | + | |------- | |
+ | | '''N'''|| Número de muestras por ciclo | ||
+ | |------- | ||
+ | | '''n'''|| Tiempo discreto | ||
+ | |------- | ||
+ | | <math>\varphi_{1},\varphi_{2}</math> || Posiciones de referencia en el instante n | ||
+ | |} | ||
== Secuencias de movimiento == | == Secuencias de movimiento == |
Revisión del 07:25 9 ene 2009
Contenido
[ocultar]Simulación de la configuración mínima PP
|
|
|
Introducción
En este ejemplo simulamos nuestro primer robot modular, constituido únicamente por la unión de dos módulos de tipo cabeceo. Es la configuración mínima que puede moverse en línea recta. Se conoce bajo el nombre de configuración PP (Pitch-Pitch). El usuario puede mover el robot hacia adelante, atrás o pararlo, por medio del teclado.
Objetivos
- Simular la locomoción del robot modular más sencillo
- Presentar la técnica de locomoción mediante osciladores sinusoidales
Código
Programa principal | |
Creación y dibujo del robot | |
Definición de las constantes. | |
Definición de los prototipos de robot.cpp y las estructuras de datos. |
Compilación
Todos los ejemplos de este tutorial compilan tecleando "make". Sin embargo se describe a continuación cómo se compila directamente usando el GCC:
g++ -Iinclude -c -o PP_ex/PP.o PP_ex/PP.cpp g++ -Iinclude -c -o PP_ex/robot.o PP_ex/robot.cpp g++ -o PP PP_ex/PP.o PP_ex/robot.o libdrawstuff.a -lm -lode -lX11 -lGL -lGLU
Ejecución
Para probar el ejemplo, teclear:
./PP
Además de los mensajes impresos en pantalla por la drawstuff, aparecerá el siguiente menú:
Keys for controlling the robot: 1: Move Backward 2: Move Forward 3: Stop q: Quit
Por medio de las teclas '1', '2' y '3' el usuario hace que el robot se mueva hacia atrás, adelante o se pare.
Capturas de pantalla
Visualización del robot en tres instantes diferentes:
Vídeo
![]() |
video.mpg |
Modelo de robot
El modelo geométrico de la configuración PP se muestra en la figura 1. Está compuesta por:
- 2 Módulos iguales, de dimensiones W x L x H y masa MASS.
- 3 cuerpos: izquierdo, central y derecho. El izquierdo y el derecho están formados por una geometría de longitud L/2 mientras que el central por la unión de dos, con una longitud de L
- 4 geometrías: Denominadas geometría izquierda, geometría derecha y las centrales: geometría 1 y 2.
- 2 articulaciones.
Las posiciones de los elementos con respecto al origen de coordenadas son:
Articulación 1 | (0,-L/2, H/2) |
Articulación 2 | (0,-3L/2, H/2) |
Cuerpo izquierdo: | (0,-L/4, H/2) |
Cuerpo derecho: | (0, -7L/4, H/2) |
Cuerpo central: | (0, -L, H/2). |
Las dos geometrías del cuerpo central están desplazadas -L/4 y L/4 a lo largo del eje y
La estructura de datos está definida en el fichero robot.h:
struct MyRobot { dJointID joint[2]; //-- Robot joints. 0--> left, 1--> right dReal servo_ref_pos[2]; //-- Reference positions for the servos dBodyID body_left; //-- This is the body on the left dGeomID geom_left; //-- and its geometry (a box) dBodyID body_center; //-- Central body. It has two geometries dGeomID geom1; //-- One in the left and another dGeomID geom2; //-- in the right dBodyID body_right; //-- This is the body on the right dGeomID geom_right; //-- and its geometry (a box) };
Modelo de control
Para mover este robot usaremos un controlador bioinspirado basado en osciladores sinusoidales que actúan sobre las articulaciones. De esta manera, las posiciones de referencia de los servos están dadas por las ecuaciones:
- <math>\varphi_{1}\left(n\right)=A\sin\left(\frac{2\pi}{N}n\right)</math>
- <math>\varphi_{2}\left(n\right)=A\sin\left(\frac{2\pi}{N}n+\Delta\phi\right)</math>
donde los parámetros son:
A | Amplitud de las oscilaciones (grados) |
<math>\Delta\phi</math> | Diferencia de fase entre el oscilador izquierdo y derecho |
N | Número de muestras por ciclo |
n | Tiempo discreto |
<math>\varphi_{1},\varphi_{2}</math> | Posiciones de referencia en el instante n |
Secuencias de movimiento
Explicación del código
Enlaces
|
|
|