1 / 18

Diseño e implementación de movimientos en el Sony Aibo ESR-7

Diseño e implementación de movimientos en el Sony Aibo ESR-7. Carlos Ramos Carlos Rivera. Diseño de movimientos. Cada movimiento debe cumplir las siguientes características:

livvy
Télécharger la présentation

Diseño e implementación de movimientos en el Sony Aibo ESR-7

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Diseño e implementación de movimientos en el Sony Aibo ESR-7 Carlos Ramos Carlos Rivera

  2. Diseño de movimientos • Cada movimiento debe cumplir las siguientes características: • La primera y la última posición en el movimiento debe ser idéntica a la posición de inicio y final del ciclo de caminata o muy parecida a dicha posición. • Debe ser breve a fin de evitar pérdida de información visual. • No debe comprometer la integridad del robot.

  3. Diseño de movimientos MEdit for ERS-7.1.0.7 Permite observar el efecto de cambio en los actuadores Permite animar una secuencia de posiciones No simula condiciones físicas.

  4. Implementación de movimientos en el robot EK2006 - Exportación de los movimientos al archivo MOTION7.ODA El archivo mtn debe ser integrado al objeto MOTION7.ODA El identificador del movimiento debe declararse en MONETCMD.CFG

  5. Implementación de movimientos en el robot EK2007 – Definición de movimientos en EKMotion Objeto heredado de EK2006 Contenido del archivo stub.cfg de EKMotion:

  6. EKMoves.h

  7. EKMotion.cc – Push

  8. EKMotion.cc - MoveToPos

  9. EKMotion.cc - Kickb

  10. EKMotion.cc – MoveHeadKick void EKMotion::MoveHeadKick(int n) { double jointValue[NUMBER_HEAD_JOINTS]; switch (n) { case 1: for (int i = 0; i<4; i++) jointValue[i] = (EK_POS[i]*PI)/180; break; […] case 4: for (int i = 0; i<4; i++) jointValue[i] = (KICK_101_02[i]*PI)/180; break; case 5: for (int i = 0; i<4; i++) jointValue[i] = (KICK_101_03[i]*PI)/180; break; case 6: for (int i = 0; i<4; i++) jointValue[i] = (KICK_101_04[i]*PI)/180; break; […] } SetHeadJoints(jointValue); return; }

  11. EKMotion.cc – MoveLegsKick void EKMotion::MoveLegsKick(int n) { static double leg_joints[NUM_LEG_JOINT]; switch (n) { case 1: for (int i = 0; i<12; i++) leg_joints[i] = (EK_POS[i+4]*PI)/180; break; […] case 4: for (int i = 0; i<12; i++) leg_joints[i] = (KICK_101_02[i+4]*PI)/180; break; case 5: for (int i = 0; i<12; i++) leg_joints[i] = (KICK_101_03[i+4]*PI)/180; break; case 6: for (int i = 0; i<12; i++) leg_joints[i] = (KICK_101_04[i+4]*PI)/180; break; […] } SetLegJoints(leg_joints); return; }

  12. EKMotion.cc – SetJoint Int EKMotion::SetHeadJoints(double *x) { for (int i = 0; i < NUMBER_HEAD_JOINTS; i++) SetJoint(HEAD_JOINT_INDEX[i], x[i]); return 1; } Int EKMotion::SetLegJoints(double *x) { for (int i = 0; i < NUMBER_LEG_JOINTS; i++) SetJoint(LEG_JOINT_INDEX[i], x[i]); return 1; } Void EKMotion::SetJoint(int index, double val) { if ((index >= 0) && (index < NUMBER_JOINTS)) { joint_values[index] = int(1e6*val); send_joint_values[index] = true; } send_joints = true; }

  13. EKMotion.cc - SendJointCommandVector

  14. Caminata • Control de los ángulos de las articulaciones. • 3 articulaciones: • Rotator. Pata entera en eje horizontal de izquierda a derecha. • Abductor. Rota la pata fuera del cuerpo. • Knee. Flexiona la parte inferior de la pata. • Caminata tipo trote • Patas diagonalmente opuestas dan un paso al mismo tiempo. • Un par da un paso al frente mientras que el otro par se mantiene en el suelo. • Luego se van alternando.

  15. Caminata • Para que el Aibo se mueva en línea recta el pie debe moverse en una curva en el aire. • Media elipse. Los 12 parámetros definen la manera de caminar del Aibo: El “locus” frontal (tres parámetros: alto, “x”, “y”). El “locus” trasero (tres parámetros: alto, “x”, “y”). El largo del “locus”. El multiplicador de “skew” en el plano “x-y” del “locus” (para girar). La altura de la parte frontal del cuerpo. La altura de la parte trasera del cuerpo. El tiempo que toma cada pie para moverse en el “locus”. La fracción de tiempo que pasa cada pie en el suelo. Figure. “Locus” elíptico del pie del Aibo.

  16. Caminata • Desde EKMain se envía la estructura EKMotionData. • Para que el robot camine command tiene que ser igual a 0 y “x”, “y” y “ang_walk” definen la caminata. • En EKMotion el servicio ReceiveAction atiende el envío de la estructura desde EKMain y procesa la información arrancando el módulo Push en EKMotion.cc

  17. Caminata • Como ya se dijo, en EKMotion, el servicio ReceiveAction atiende el envió de la estructura desde EKMain y procesa la información arrancando el modulo Push en EKMotion.cc. • Esta función a su vez invoca a la función WalkLegs. • Si xWalk es menor que 0 entonces se mueve a la izquierda; en caso contrario a la derecha. • Si yWalk es negativo entonces se mueve hacia atrás; en caso contrario hacia el frente. • El parámetro aWalk rige la rotación. Si el valor es mayo que cero entonces rota a la izquierda; en caso contrario rota a la derecha.

More Related