PDF de programación - Tutorial de uso de HAPTIK bajo Windows

Imágen de pdf Tutorial de uso de HAPTIK bajo Windows

Tutorial de uso de HAPTIK bajo Windowsgráfica de visualizaciones

Publicado el 29 de Marzo del 2019
835 visualizaciones desde el 29 de Marzo del 2019
3,4 MB
11 paginas
Creado hace 15a (02/03/2009)
Guión 7. Versión 0

Tutorial de uso de HAPTIK bajo Windows

Este tutorial ha sido generado gracias al trabajo de María Luisa Pinto Salamanca, de la

Universidad Nacional de Colombia

Resumen. Se distinguen dos partes:





una primera donde se explica la instalación bajo windows de la librería y el desarrollo de
aplicaciones en C++ y bajo Matlab,
Se presentan dos ejemplos de aplicación de la librería haptik con el lenguaje de
programación C++ y una implementación a mayor nivel con Matlab & Simulink. Se indican
los pasos de descarga, instalación y desarrollo de proyectos para cada caso.

Prerrequisitos
se requiere la instalación previa de Matlab & Simulink y un programa de compilación de C++, en
este caso, los ejemplos fueron desarrollados con Microsoft Visual Studio 2005.
Parte 1. Introducción a HAPTIK

HAPTIK es una librería de código abierto que puede ser descargada de
web
http://www.haptiklibrary.org/ . Fue desarrollada por Investigadores del Siena Robotics and Systems
Lab. Italia. Provee una capa de abstracción de hardware para acceder a dispositivos hapticos de
diferentes fabricantes fácilmente, permitiendo desarrollar aplicaciones independientes de
configuraciones de APIs, hardware o controladores particulares.

la página

No esta vinculada a ninguna librería grafica ni a un SDK especifico para la detección de colisiones.
Ha sido diseñado para ser integrado a través de programación con clases, permite accesos basados
en Callbacks y puede usarse en diferentes sistemas de renderización grafica (OpenGL o DirectX).

HaptiK consiste en una recarga dinámica de plugins de ejecución que pueden ser fácilmente
ampliados o personalizados no solamente a partir del lenguaje de programación C++ sino también
Matlab® y Java™.

Arquitectura

Haptik library se pueden analizar desde dos puntos de vista, el manejo directo de librerías dinámicas
accedidas en tiempos diferentes o con respecto a una subdivisión de componentes e interfaces
acezadas simultáneamente.

Si se utilizan DLLs (Dynamic Link Libraries implementadas en GNU/Linux como Shared Objects),
se deben tener en cuenta tres niveles de acceso: desde la aplicación, la librería o los plugins (ver
figura 1). HAPTIK.LIBRARY.DLL enlaza el nivel de aplicación con Haptik library. Los plugins
son un conjunto de DLLs que no ven directamente la aplicación pero si contienen las

© OpenSurg 2009

Guión 7. Versión 0

funcionalidades requeridas para usar un conjunto de dispositivos hapticos. La librería actúa como
un manejador: carga plugins cuando son necesarios, hace que estos sean leídos y actualizados y
garantiza que la información se entregue al nivel de aplicación. Lo cual en tiempo de ejecución
ofrece dos ventajas:

- La aplicación no depende de la presencia de un controlador dll para un dispositivo
específico, sino solamente para aquellos que sean cargados a través de los plugins.

- Compatibilidad binaria para nuevos dispositivos a través de la simple adición del plugins

para el nuevo dispositivo soportado.



Figura 1. Arquitectura de Haptik Library [9].

Todas las librerías y plugins de cada dispositivo son implementados como componentes y todos los
canales de comunicación (aplicación-librería, librería-plugins, aplicación-dispositivo) están basados
en un interface. De esta forma la aplicación puede acceder a todos los dispositivos de forma
uniforme, permitiendo una misma ejecución con hardware de diferentes fabricantes.

Descarga, Instalación y desarrollo de Aplicaciones:

 En la página http://sirslab.dii.unisi.it/haptiklibrary/download.htm se ofrece la librería a

través de una archivo de ejecución directa, las distribuciones del código fuente y la
documentación respectiva. La últimas versiones disponibles HAPTIK LIBRARY 1.1RC1 y
Haptik.Library.1.1rc1.sources.IA32.20070107.zip.

 En el Manual de Usuario incluido en el archivo de instalación se presenta una descripción
detallada para el desarrollo de aplicaciones con la librería HaptiK (Chapter 4 Application
Development), la cual incluye desde una librería dll (Haptik.Library.dll), una serie de
plugins (Haptik.PluginName.dll), algunos archivos de cabecera (Haptik.hpp) y un archivo
.lib (Haptik.Library.lib) construido para compiladores de VisualC++ (para usar otros
compiladores deberá construirse nuevamente el proyecto de Haptik).

 Los pasos básicos para una aplicación con VisualStudio 8.0 se resumen en la figura 2.

Inicialmente se deberán adicionar al proyecto los directorios include y lib de Haptik. Los

© OpenSurg 2009

Guión 7. Versión 0

plugins dlls podrán ubicarse en system/user path para que sean accesibles por la aplicación.
Usualmente, solo basta con adicionar el directorio /RSLib/bin en el sistema PATH.

Figura 2. Adición de directorios include y Lib de HaptiK.

 En la aplicación deberá incluirse además la cabecera RSLib\Haptik.hpp acompañada de

RSLib namespace, para evitar conflictos de nombres. A continuación un sencillo ejemplo de
la aplicación inicial en la que se recocnoce automáticamente el dispositivo conectado y se
aplica un vector de fuerzas con F(x,y,z), con las componente x y z = 0.

#include <windows.h>
#include <stdio.h>
#include <conio.h>
#include <RSLib\Haptik.hpp>
using namespace RSLib;
using namespace RSLib::Math;
//---DEFINES
// Desc: undef this to use procedure callback
//------------------------------------------->
//#define PROCEDURAL_CALLBACK

void Callback(HaptikData& data)
{
data.forceFeedback = data.position.y < 0 ?
Vector3(0,-data.position.y,0) :
Vector3(0,0,0);
}
void main()
{
IHaptikDeviceInterface device;
device = Haptik().GetHaptikDeviceInterface();
device->Init( Callback );
device->Start();

while(!kbhit());

device->Release();
}

© OpenSurg 2009

Guión 7. Versión 0

 El método GetHaptikDeviceInterface puede ser accedido a través de una interfaz que facilita

su manejo, se trata de la clase Haptik que permite una carga directa de las librerías dll de
cada dispositivo. Con esto, la función principal del ejemplo anterior podría ser:

void main()
{
Haptik haptik;
IHaptikDeviceInterface device;
device = (IHaptikDeviceInterface) haptik.GetDeviceInterface();
device->Init(Callback);
device->Start();
getch();
device->Release();
}

 La lectura de estado y aplicación de señales de fuerza y torque (si el dispositivo lo permite)
se simplifican notablemente, al reducir el programa al manejo de funciones tipo callback. Se
deben tener en cuenta para la visualización en escena, las transformaciones y el sistema
coordenado, de acuerdo a las librerías de renderizado a utilizar.

void Callback(HaptikData& data)
{
printf("POS:(%0.3f,%0.3f,%0.3f)\n",data.position.x,data.position.y,data.position.z);
Posicion = data.position;
// PARA TRANFORMACION DE COOREDNADAS FISICAS A MODELVIEW
Vector3 Posicion;
world = data.matrix;
FLT32 rx = RotationAround(Vector3(0,1,0), data.matrix.r1.xyz,Vector3(1,0,0));
FLT32 ry = RotationAround(Vector3(1,0,0), data.matrix.r0.xyz,Vector3(0,1,0));
FLT32 rz = RotationAround(Vector3(1,0,0), data.matrix.r0.xyz,Vector3(0,0,1));

data.forceFeedback = data.position.y < 0 ?
Vector3(0,-data.position.y,0) :
Vector3(0,0,0);
printf("POSDisp:(%0.3f,%0.3f,%0.3f)\n",PosicionDisp[0],PosicionDisp[1],PosicionDisp[2]);
}

Aplicaciones con HaptikLibrary, Matlab & Simulink

 Las aplicaciones de Matlab con Haptik Library se pueden realizar a través de líneas de

comando y archivos .m cuya única restricción es que tengan acceso a la librería
“haptik_matlab.dll”, haptikdevice_list y la carpeta @haptikdevice. haptikdevice_list es una
función que retorna los dispositivos conectados; @haptikdevice contiene una clase de
utilidades para simplificar el manejo de haptik_matlab.dll.

 Las funciones principales de esta librería son:

- Haptikdevice_list: imprime el listado de los dispositivos hapticos conectados.
- h = haptikdevice, obtiene la información del dispositivo por defecto.
- h = haptikdevice(id), carga un dispositivo especifico
- h = haptikdevice(@mycallback,rate), abre el dispositivo por defecto y usa la

función mycallback(.m) para especificar la frecuencia del hilo haptico.

- h = haptikdevice(id,@mycallback,rate), abre un dispositivo especifico y usa la

© OpenSurg 2009

Guión 7. Versión 0

función mycallback(.m) para especificar la frecuencia del hilo haptico.

- [matrix,button] = read(h), obtiene la orientación del dispositivo (matrix(4,1)

matrix(4,2)

and matrix(4,3) contains position).

- position = read position(h), lee la posicion del dispositivo.
- button = read button(h), lee el estado de los pulsadores del dispositivo.
- write(h,ff), envia fuerzas y torques al dispositivo. FF puede ser 2x3, 3x2, 1x3,

3x1, 1x6, 6x1.

- close(h), cierra la aplicación del dispositivo.

 Las funciones callback se implementan con temporizadores basados en Java, por lo que no
se garantiza completa sincronización con el hilo haptico. La figura 7 presenta un ejemplo de
ejecución y lectura de posición del dispositivo Phantom Omni desde la línea de comando de
Matlab.

 Para las aplicaciones con Simulink, HaptiK Libray se incluye además unas funciones S-

function en la librería haptik simulink.dll que determinan la información del dispositivo y el
tiempo de ejecución de manera que pueda sincronizarse con el hilo haptico. La figura 3
muestra en ejemplo de ejecución con el Phantom Omni. Si no hay dispositivos conectados,
el plugin Spectre Mause permite simular el comportamiento haptico de igual manera que
con el resto de aplicaciones en C++.

Figura 2. Ejemplo de ejecución y lectura de posición del dispositivo Phantom Omni con Matlab.

© OpenSurg 2009
  • Links de descarga
http://lwp-l.com/pdf15618

Comentarios de: Tutorial de uso de HAPTIK bajo Windows (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad