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

Documentos relacionados