A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Realidade Virtual Aula 10 Remis Balaniuk. Interfaces hápticas Permitem simular contato físico do usuário com objetos virtuais. Exige hardware específico.

Apresentações semelhantes


Apresentação em tema: "Realidade Virtual Aula 10 Remis Balaniuk. Interfaces hápticas Permitem simular contato físico do usuário com objetos virtuais. Exige hardware específico."— Transcrição da apresentação:

1 Realidade Virtual Aula 10 Remis Balaniuk

2 Interfaces hápticas Permitem simular contato físico do usuário com objetos virtuais. Exige hardware específico. Demanda alta velocidade de processamento. Implementação envolve: –Detecção de colisão –Cálculo de forças –Comunicação com o(s) dispositivo(s).

3 Arquitetura de um sistema de RV háptico Método de Simulação Modelo (orgãos) Display gráfico Display háptico Simulação em tempo real forçasimagens Geometria -scanners -ultrasom -Visual Man Física -elasticidade -dureza -densidade -deformações -Elementos Finitos -Massa-mola -LEM 1KHz30Hz Sólido Embasamento médico Sólido Embasamento físico Sólido embasamento computacional

4 Modelos de interação As interfaces hápticas comerciais no seu estágio atual permitem o contato pontual com os objetos virtuais. É como tocar a cena virtual segurando uma caneta. Funciona como um mouse 3D.

5 Modelos de interação O modelo mais usado para simulação do contato háptico é o proxy. O proxy é baseado num método chamado penalty-based, ou baseado em penalidade. A idéia básica é penalizar uma penetração com uma força de reação do objeto sobre o usuário de forma a expulsar o usuário de dentro do objeto.

6 Modelos de interação Nos modelos de penalidade a força é proporcional à penetração e sua direção é definida pela normal do contato. Posição do dispositivo Força de reação

7 Modelos de interação Entretanto o método de penalidade não funciona bem em algumas situações particulares, como em objetos finos e nos cantos onde a penetração não é bem definida. Posição em t0 Posição em t1 ?

8 Modelos de interação Para resolver esses problemas foi proposto uma adaptação do método de penalidade chamado proxy. O proxy indica uma posição de referência na superfície do objeto tocado pelo dispositivo háptico (chamado de probe). O proxy depende da trajetória de entrada do probe no objeto e da forma do objeto.

9 Proxy a posição do proxy é calculada por um algoritmo de minimização que procura a posição mais próxima ao probe na superfície do objeto o vetor formado pela diferença entre as posições do probe e do proxy, multiplicado por um fator correspondente à dureza do objeto tocado define a força a ser enviada ao dispositivo háptico.

10 Haptics no Chai O Chai foi concebido com foco nas interfaces hápticas. É a primeira biblioteca 3D totalmente preparada para interagir com diversos dispositivos hápticos reais e ainda dispõe de uma dispositivo háptico virtual. Para exemplo abra o projeto aula7.bpr e veja em main.cpp as rotinas: –void __fastcall TForm1::ToggleHapticsButtonClick(TObject *Sender) –void HapticLoop()

11 Adicionando uma interface háptica à simulação tool = new cMeta3dofPointer(world, 0); camera->addChild(tool); tool->setPos(-2.0, 0.0, 0.0); tool->setWorkspace(2.0,2.0,2.0); // set up the device tool->initialize(); // open communication to the device tool->start(); // update initial orientation and position of device tool->updatePose(); // tell the tool to show his coordinate frame so you can see tool rotation tool->visualizeFrames(true); // I need to call this so the tool can update its internal // transformations before performing collision detection, etc. tool->computeGlobalPositions(); tool->setForcesON(); // Enable the "dynamic proxy", which will handle moving objects cProxyPointForceAlgo* proxy = tool->getProxy(); proxy->enableDynamicProxy(true);

12 multi-threads O objeto cMeta3dofPointer quando criado tenta se conectar através de memória compartilhada a outro processo rodando como servidor de um dispositivo háptico. O Chai prevê a comunicação com dois tipos de dispositivos hápticos: o Phantom e o Delta. Se nenhum servidor estiver ativo o objeto cMeta3dofPointer lança o executável dhdvirtual.exe, que é um simulador de dispositivo háptico.

13 multi-threads Dentro da aplicação Chai é preciso lançar uma thread que vai ficar se comunicando com o servidor háptico, lendo a posição do dispositivo e informando as forças calculadas: DWORD thread_id; ::CreateThread(0, 0, (LPTHREAD_START_ROUTINE)(HapticLoop), this, 0, &thread_id); // Boost thread and process priority ::SetThreadPriority(&thread_id, THREAD_PRIORITY_ABOVE_NORMAL);

14 multi-threads Essa thread ao ser lançada chama uma rotina chamada HapticLoop, que fará a comunicação com o servidor através de um loop. Note que a aplicação poderia usar um timer, mas como a comunicação precisa ser muito rápida (em torno de 1KHz ou 1000 vezes por segundo), uma thread é mais eficiente pois pode ser configurada com alta prioridade para ter sua velocidade garantida.

15 Haptic loop O loop háptico roda enquanto a simulação estiver ativa e consiste de 3 passos principais: // read position from haptic device Form1->tool->updatePose(); // compute forces Form1->tool->computeForces(); // send forces to haptic device Form1->tool->applyForces();

16 Haptic loop O método updatePose() lê e atualiza a posição do dispositivo na tela. O método computeForces() recalcula a posição do proxy (para isso detecta antes se está havendo colisão), e recalcula as forças de interação. O método applyForces() envia as forças calculadas para o dispositivo.

17 Haptics no Chai Note que a adição de haptics numa aplicação Chai consiste basicamente em adicionar os métodos ToggleHapticsButtonClick(TObjec t *Sender) e HapticLoop() ao seu main, não exigindo nenhum outro esforço de implementação.


Carregar ppt "Realidade Virtual Aula 10 Remis Balaniuk. Interfaces hápticas Permitem simular contato físico do usuário com objetos virtuais. Exige hardware específico."

Apresentações semelhantes


Anúncios Google