CyberGlove, Cybergrasp and Flock of Birds
Transcripción
CyberGlove, Cybergrasp and Flock of Birds
CyberGlove CyberGrasp Flock of Bird Contenido Dispositivos CyberGlove, Cybergrasp and Flock of Birds CyberGlove CyberGrasp Flock of Birds Aplicaciones Areas IOC Programación Clases Código Carlos Rosales Instituto de Organización y Control de Sistemas Industriales 1rst Workshop on Software Tools for Roboticists SoToRo2006 CyberGlove CyberGrasp Flock of Bird Contenido Dispositivos CyberGlove CyberGrasp Flock of Birds Aplicaciones Areas IOC Programación Clases Código 1 Dispositivos CyberGlove CyberGrasp Flock of Birds 2 Aplicaciones Areas IOC 3 Programación Clases Código ¿Qué es? CyberGlove CyberGrasp Flock of Bird Contenido Dispositivos CyberGlove CyberGrasp Flock of Birds Aplicaciones Areas IOC Programación Clases Código Es un guante sensorizado que permite medir los ángulos de las articulaciones de la mano. Algunas caracterı́sticas son: • 22 sensores (3 de flexión por dedo, 4 de abducción entre dedos, flexión y abducción de muñeca y arco de palma) • Resolución: 0.5◦ • Repetibilidad: 1◦ • Linealidad: 0.6 % máximo de no linealidad en todo el rango • Interfaz: RS-232 ¿Qué es? CyberGlove CyberGrasp Flock of Bird Contenido Dispositivos CyberGlove CyberGrasp Flock of Birds Aplicaciones Areas IOC Programación Clases Código Es un mecanismo que aplica fuerzas en la punta de los dedos que se oponnen al cierre de la mano para producir efectos hápticos. Algunas caracterı́sticas son: • Fuerza: 12N por dedo (máxima en contı́nuo) • Peso: 455gr • Modos: Force, impedance, rewind & idle • Interfaz: Ethernet ¿Qué es? CyberGlove CyberGrasp Flock of Bird Contenido Dispositivos CyberGlove CyberGrasp Flock of Birds Aplicaciones Areas IOC Programación Clases Código Es un sistema seguidor que proporciona la posición y orientación de un punto en el espacio 3D. Algunas caracterı́sticas son: • Resolución: • Posición: 0.5mm @30.5cm • Orientación: 0.1◦ @30.5cm • Precisión: • Posición: 1.8mm RMS • Orientación: 0.5◦ RMS • Interfaz: RS-232 Esquema General de Conexión CyberGlove CyberGrasp Flock of Bird Contenido Dispositivos CyberGlove CyberGrasp Flock of Birds Aplicaciones Areas IOC Programación Clases Código ¿En qué se pueden usar? CyberGlove CyberGrasp Flock of Bird Contenido Dispositivos CyberGlove CyberGrasp Flock of Birds Aplicaciones Areas IOC Lenguaje → Reconocimiento de gestos, comunicación por contacto, etc. Medicina → Rehabilitación, telecirugı́a, etc. Juegos → Simuladores, acción, etc. Arte → Escultura y pintura virtual, etc. Programación Clases Código Robótica → Telemanipulación, programación por demostración, etc. Otras → Música, Militar, Animaciones por ordenador, etc. ¿En qué se pueden usar? CyberGlove CyberGrasp Flock of Bird Contenido Dispositivos CyberGlove CyberGrasp Flock of Birds Aplicaciones Areas IOC Programación Clases Código Registro Temporal de Ángulos ¿En qué se han usado? CyberGlove CyberGrasp Flock of Bird Contenido Dispositivos CyberGlove CyberGrasp Flock of Birds Aplicaciones Areas IOC Programación Clases Código PROYECTO MA-I ¿En qué se han usado? CyberGlove CyberGrasp Flock of Bird Contenido Dispositivos CyberGlove CyberGrasp Flock of Birds Aplicaciones Areas IOC Programación Clases Código Interfaz con Usuario Lenguaje C++ CyberGlove CyberGrasp Flock of Bird Contenido Dispositivos CyberGlove CyberGrasp Flock of Birds Aplicaciones Areas IOC Programación Clases Código Clases Principales CyberGlove CyberGrasp Flock of Bird Contenido Dispositivos CyberGlove CyberGrasp Flock of Birds Aplicaciones Areas IOC Programación Clases Código class vhtIOConn enum EntryKey {deviceClass, host, port, device, rate, name, nbrEntries} enum Parameters {glove, tracker, grasp, touch} vhtIOConn vhtIOConn (const char *aDeviceClass, const char *aHost, const char *aPort, const char *aDevice, const char *aRate) virtual void setEntry (EntryKey aKey, const char ∗aValue) Clases Principales CyberGlove CyberGrasp Flock of Bird Contenido Dispositivos CyberGlove CyberGrasp Flock of Birds Aplicaciones Areas IOC Programación Clases Código class vhtCyberGlove vhtCyberGlove (vhtIOConn *connDict, bool doConnect= true) virtual double getData (GHM::Fingers aFinger, GHM::Joints aJoint) virtual void setSensorGain (GHM::Fingers aFinger, GHM::Joints aJoint, double gain) Clases Principales CyberGlove CyberGrasp Flock of Bird Contenido Dispositivos CyberGlove CyberGrasp Flock of Birds Aplicaciones Areas IOC Programación Clases Código class vhtCyberGrasp vhtCyberGrasp (vhtIOConn *connDict, vhtIOConn *gloveDict, bool doConnect= true) void setForce ( double fd[5] ) bool setMode ( int mode ) Clases Principales CyberGlove CyberGrasp Flock of Bird Contenido Dispositivos CyberGlove CyberGrasp Flock of Birds class vhtTracker vhtTracker (vhtIOConn *connDict, bool doConnect= true) Aplicaciones Areas IOC Programación Clases Código vhtTrackerData getSensorArray (int rcvr = 0) virtual double getRawData (unsigned int anIndex) Clases Principales CyberGlove CyberGrasp Flock of Bird Contenido Dispositivos CyberGlove CyberGrasp Flock of Birds Aplicaciones Areas IOC Programación Clases Código class vhtHumanHand vhtHumanHand (vhtGlove *aGlove, vhtTracker *aTracker, vhtCyberGrasp *aGrasp, GHM::Handedness h= GHM::rightHand) virtual void update ( bool updateVisuals = false ) virtual vhtKinematics * getKinematics (void) Clases Principales CyberGlove CyberGrasp Flock of Bird Contenido Dispositivos CyberGlove CyberGrasp Flock of Birds Aplicaciones Areas IOC Programación Clases Código class vhtSimulation vhtSimulation (vhtGroup *root) virtual void setHapticSceneGraph ( vhtGroup *root ) virtual void handleConstraints (void) Clases Principales CyberGlove CyberGrasp Flock of Bird Contenido Dispositivos CyberGlove CyberGrasp Flock of Birds Aplicaciones Areas IOC Programación Clases Código class vhtCollisionEngine vhtCollisionEngine ( vhtGroup *root, vhtCollisionFactory *aFactory, int octreeDepth = 2 ) vhtArray * collisionCheck (void) void setHandObjectOnly ( bool handObjectOnly ) Conexión CyberGlove CyberGrasp Flock of Bird Contenido Dispositivos CyberGlove CyberGrasp Flock of Birds Aplicaciones Areas IOC Programación Clases Código Conexión CyberGlove CyberGrasp Flock of Bird /***** VHT library imports. *****/ #include <vhandtk/vhtBase.h> #include <vhandtk/vhtCore.h> Contenido // Connect to the hand. Dispositivos CyberGlove CyberGrasp Flock of Birds Aplicaciones Areas IOC Programación Clases Código vhtIOConn *gloveConn = vhtIOConn::getDefault( vhtIOConn::glove ); vhtCyberGlove *glove = NULL; try { glove = new vhtCyberGlove( gloveConn ); } catch (vhtBaseException *e) { DisplayMessage("Error with glove: ", e); return; } // Connect to the tracker. vhtIOConn *trackerConn = vhtIOConn::getDefault( vhtIOConn::tracker ); vhtTracker *tracker = NULL; try { tracker = new vhtTracker( trackerConn ); } Conexión CyberGlove CyberGrasp Flock of Bird Contenido Dispositivos CyberGlove CyberGrasp Flock of Birds Aplicaciones Areas IOC Programación Clases Código catch (vhtBaseException *e) { DisplayMessage("Error with tracker: ", e); return; } // Extract the receiver 0 of the tracker. vht6DofDevice *rcvr1 = tracker->getLogicalDevice(0); // Connect to the grasp device. vhtIOConn *graspConn = vhtIOConn::getDefault( vhtIOConn::grasp ); vhtCyberGrasp *grasp; try { grasp = new vhtCyberGrasp( graspConn ); } catch (vhtBaseException *e) { DisplayMessage("Error with grasp: ", e); return; } grasp->setMode( GR_CONTROL_IMPEDENCE ); Visualización CyberGlove CyberGrasp Flock of Bird Contenido Dispositivos CyberGlove CyberGrasp Flock of Birds Aplicaciones Areas IOC Programación Clases Código // Create the Virtual Human Hand. vhtHandMaster *master = new vhtHandMaster( glove, rcvr1 ); hand = new vhtHumanHand( master, grasp ); // Open the display window. initWindow(); // Add an OpenGl drawer for the Virtual Human Hand. drawer = new vhtOglDrawer(); cameraXForm= new vhtTransform3D(); // Build the scene. Visualización CyberGlove CyberGrasp Flock of Bird // First, make a root node for the haptic graph. sceneRoot = new vhtGroup(); sceneRoot->setRoot(); Contenido Dispositivos CyberGlove CyberGrasp Flock of Birds Aplicaciones Areas IOC Programación Clases Código // Second, build a transform node to move sub-nodes. m_cubeXForm = new vhtComponent(); // Add the transform to the tree. sceneRoot->addChild( m_cubeXForm ); // Create a cube geometry. vhtVertexSphere *sphereGeometry = new vhtVertexSphere(6.0, 20, 20); vhtShape3D *sphere = new vhtShape3D( sphereGeometry ); // Add dynamical properties. vhtDynamicAttributes *dynamics = new vhtDynamicAttributes(); // Set a mass matrix. vhtMassProperties massProp; massProp.computeHomogeneousMassProp( sphere ); dynamics->setMassProperties( massProp ); sphere->setPhysicalAttributes( dynamics ); // Add the cube node to the tree. m_cubeXForm->addChild( sphere ); Visualización CyberGlove CyberGrasp Flock of Bird Contenido Dispositivos CyberGlove CyberGrasp Flock of Birds Aplicaciones Areas IOC Programación Clases Código