[WRVA2014] Utilização de Realidade Aumentada, com marcadores(ARToolKitPlus) e outros (utilizando...

120
09:16 1 fb.com/RVA.BR pt.slideshare.net/christophercerqueira [email protected] fb.com/RVA.BR

description

Objetivo:Mostrar as possibilidades de uso de realidade aumentada para controle de hardware utilizando o openFrameworks, explicando as etapas de construção da aplicação. Mostrar caminhos simplificados de desenvolvimento com foco no exemplo.

Transcript of [WRVA2014] Utilização de Realidade Aumentada, com marcadores(ARToolKitPlus) e outros (utilizando...

Page 1: [WRVA2014] Utilização de Realidade Aumentada, com marcadores(ARToolKitPlus) e outros (utilizando openCV), para controle e inspeção de hardware, utilizando a interface ARDUINO

09:16 1

fb.com/RVA.BR pt.slideshare.net/christophercerqueira

[email protected]

fb.com/RVA.BR

Page 2: [WRVA2014] Utilização de Realidade Aumentada, com marcadores(ARToolKitPlus) e outros (utilizando openCV), para controle e inspeção de hardware, utilizando a interface ARDUINO

Using AR/CR, with markers

and others, to control and

inspect hardware with

ARDUINO based interface.

Utilização de Realidade

Aumentada, com

marcadores(ARToolKitPlus) e

outros (utilizando openCV), para

controle e inspeção de hardware,

utilizando a interface ARDUINO.

2

Claudio Kirner1 and Christopher S. Cerqueira12

1Federal University of Itajubá – Universidade Federal de Itajubá (UNIFEI) 2National Institute for Space Research – Instituto Nacional de Pesquisas Espaciais (INPE)

[email protected] ,[email protected] 1http://realidadevirtual.com.br/, 2http://cscerqueira.com.br

09:16

Page 3: [WRVA2014] Utilização de Realidade Aumentada, com marcadores(ARToolKitPlus) e outros (utilizando openCV), para controle e inspeção de hardware, utilizando a interface ARDUINO

Agenda:

• Conceitos e openFrameworks ~60m

• Estado da prática no INPE

• Criando o primeiro programa em openFrameworks ~20m

• Conectando com o Arduino ~40m

• Realidade Aumentada + ex.: Realidade Cruzada ~ 60min

• Usando marcadores -ofxARToolKitPlus

• Usando openCV - ofxOpenCv

• Controlar e monitorar equipamentos usando RA ~60min

• Arduino + openCV + marcadores

09:16 fb.com/RVA.BR 3

Três etapas:

1. 10h30 – 12h00

2. 14h00 – 15h30

3. 16h00 – 17h30

Page 4: [WRVA2014] Utilização de Realidade Aumentada, com marcadores(ARToolKitPlus) e outros (utilizando openCV), para controle e inspeção de hardware, utilizando a interface ARDUINO

Exemplo prático que vai ser montado

• Vamos controlar o Arduino:

• Acender e apagar led, via botão físico e botão virtual (usando

marcador tipo ofxARToolKitPlus)

• Movimentar um servo usando rastreio de mão (usando ofxOpenCv)

09:16 fb.com/RVA.BR 4

Page 5: [WRVA2014] Utilização de Realidade Aumentada, com marcadores(ARToolKitPlus) e outros (utilizando openCV), para controle e inspeção de hardware, utilizando a interface ARDUINO

O que teremos ao final do dia:

09:16 fb.com/RVA.BR 5

Page 6: [WRVA2014] Utilização de Realidade Aumentada, com marcadores(ARToolKitPlus) e outros (utilizando openCV), para controle e inspeção de hardware, utilizando a interface ARDUINO

CONCEITOS GERAIS Algumas definições, como cheguei no openFrameworks, e estado da prática de estudos de interação e visão computacional na Engenharia e Tecnologia Espacial.

09:16 fb.com/RVA.BR 6

Page 7: [WRVA2014] Utilização de Realidade Aumentada, com marcadores(ARToolKitPlus) e outros (utilizando openCV), para controle e inspeção de hardware, utilizando a interface ARDUINO

“The product is no longer

the basis of value. The

experience is.”

Venkat Ramaswamy

The Future of Competition

7 12/11/2014 fb.com/RVA.BR

Page 8: [WRVA2014] Utilização de Realidade Aumentada, com marcadores(ARToolKitPlus) e outros (utilizando openCV), para controle e inspeção de hardware, utilizando a interface ARDUINO

Valor de uma boa experiência

8 12/11/2014 fb.com/RVA.BR

Page 9: [WRVA2014] Utilização de Realidade Aumentada, com marcadores(ARToolKitPlus) e outros (utilizando openCV), para controle e inspeção de hardware, utilizando a interface ARDUINO

IHC – Interação Homem-Computador

• Estudo da interação entre pessoas e

computadores.

• Onde são formadas as experiências.

9 12/11/2014 fb.com/RVA.BR

Page 10: [WRVA2014] Utilização de Realidade Aumentada, com marcadores(ARToolKitPlus) e outros (utilizando openCV), para controle e inspeção de hardware, utilizando a interface ARDUINO

Mas quem desenvolve experiência?

• UX Developer – User Experience

• A pessoa que caminha entra o design e a

tecnologia.

http://blog.alexandremagno.net/2013/02/o-que-seria-um-ux-developer/

10 12/11/2014 fb.com/RVA.BR

Page 11: [WRVA2014] Utilização de Realidade Aumentada, com marcadores(ARToolKitPlus) e outros (utilizando openCV), para controle e inspeção de hardware, utilizando a interface ARDUINO

Interação

11

Texto, som,

cores, visual,

mecânico ou

fisico.

Interface

Mensagens

Usuário Sistema

12/11/2014 fb.com/RVA.BR

Page 12: [WRVA2014] Utilização de Realidade Aumentada, com marcadores(ARToolKitPlus) e outros (utilizando openCV), para controle e inspeção de hardware, utilizando a interface ARDUINO

Usabilidade

09:16 fb.com/RVA.BR 12

Page 13: [WRVA2014] Utilização de Realidade Aumentada, com marcadores(ARToolKitPlus) e outros (utilizando openCV), para controle e inspeção de hardware, utilizando a interface ARDUINO

Exemplo:

• Usabilidade:

1. Facilidade de

aprendizado

2. Eficiência

3. Facilidade de

memorização

4. Erros

5. Satisfação subjetiva

13

Meta-Mensagen

s

Usuário Sistema

12/11/2014 fb.com/RVA.BR

Page 14: [WRVA2014] Utilização de Realidade Aumentada, com marcadores(ARToolKitPlus) e outros (utilizando openCV), para controle e inspeção de hardware, utilizando a interface ARDUINO

3 níveis

Lógico: Resolvem,

solucionam, facilitam.

Emocional: Satisfazem

necessidades e desejos

afetivos.

Visceral: resolvem

questões fundamentais,

sem consciência.

Impulso.

14 12/11/2014 fb.com/RVA.BR

Page 15: [WRVA2014] Utilização de Realidade Aumentada, com marcadores(ARToolKitPlus) e outros (utilizando openCV), para controle e inspeção de hardware, utilizando a interface ARDUINO

Espera.... Visceral?

15 12/11/2014 fb.com/RVA.BR

Page 16: [WRVA2014] Utilização de Realidade Aumentada, com marcadores(ARToolKitPlus) e outros (utilizando openCV), para controle e inspeção de hardware, utilizando a interface ARDUINO

16 12/11/2014 fb.com/RVA.BR

Page 17: [WRVA2014] Utilização de Realidade Aumentada, com marcadores(ARToolKitPlus) e outros (utilizando openCV), para controle e inspeção de hardware, utilizando a interface ARDUINO

CLI – Command Line Códigos, estritos

GUI – Grafical Metáforas, exploratória

NUI – Natural Direta, intuitiva

RV RA

Evolução das

interfaces

9:16 17

Page 18: [WRVA2014] Utilização de Realidade Aumentada, com marcadores(ARToolKitPlus) e outros (utilizando openCV), para controle e inspeção de hardware, utilizando a interface ARDUINO

Gerações:

09:16 fb.com/RVA.BR 18

Page 19: [WRVA2014] Utilização de Realidade Aumentada, com marcadores(ARToolKitPlus) e outros (utilizando openCV), para controle e inspeção de hardware, utilizando a interface ARDUINO

Começo

• 1963

• Ivan Sutherland

• 51 ANOS

Sutherland

9:16 19

Page 20: [WRVA2014] Utilização de Realidade Aumentada, com marcadores(ARToolKitPlus) e outros (utilizando openCV), para controle e inspeção de hardware, utilizando a interface ARDUINO

Realidades – Realidade Virtual

interface que permite ao

usuário interagir, em tempo

real, com um mundo

tridimensional gerado

por computador, usando

seus sentidos através de

equipamentos

especiais.

SOURCE: NASA (2013a)

9:16 20

Page 21: [WRVA2014] Utilização de Realidade Aumentada, com marcadores(ARToolKitPlus) e outros (utilizando openCV), para controle e inspeção de hardware, utilizando a interface ARDUINO

Billinghurst Vision

12/11/2014 21 fb.com/RVA.BR

Page 22: [WRVA2014] Utilização de Realidade Aumentada, com marcadores(ARToolKitPlus) e outros (utilizando openCV), para controle e inspeção de hardware, utilizando a interface ARDUINO

Realidades – Realidade Aumentada

uma interface baseada na

sobreposição de informações

virtuais geradas por computador

(envolvendo imagens estáticas e

dinâmicas, sons espaciais e

sensações hápticas) com o

ambiente físico do usuário,

percebida através de dispositivos

tecnológicos e usando as

interações naturais do usuário,

no mundo físico.

Claudio Kirner

SOURCE: Adapted from ESA (2009) and Capua (2008)

12/11/2014 22 fb.com/RVA.BR

Page 23: [WRVA2014] Utilização de Realidade Aumentada, com marcadores(ARToolKitPlus) e outros (utilizando openCV), para controle e inspeção de hardware, utilizando a interface ARDUINO

Christopher Vision

Informação virtual

Interação Natural

dispositivos tecnológicos

12/11/2014 23 fb.com/RVA.BR

Page 24: [WRVA2014] Utilização de Realidade Aumentada, com marcadores(ARToolKitPlus) e outros (utilizando openCV), para controle e inspeção de hardware, utilizando a interface ARDUINO

Realidades – Realidade Cruzada

é um ambiente de realidade misturada

ubíqua, que vem da fusão de uma rede

de sensores e atuadores (que coletam

e enviam dados relacionados ao mundo

real) com mundos virtuais

compartilhados, usando a

interface da realidade

aumentada.

Claudio Kirner

Intr

odução

12/11/2014 24 fb.com/RVA.BR

Page 25: [WRVA2014] Utilização de Realidade Aumentada, com marcadores(ARToolKitPlus) e outros (utilizando openCV), para controle e inspeção de hardware, utilizando a interface ARDUINO

Milgram Continuum - interfaces

SOURCE: Milgram et al. (1995)

Aumento de elementos reais Aumento de elementos virtuais

12/11/2014 25 fb.com/RVA.BR

Page 26: [WRVA2014] Utilização de Realidade Aumentada, com marcadores(ARToolKitPlus) e outros (utilizando openCV), para controle e inspeção de hardware, utilizando a interface ARDUINO

Kirner’s Diagram – elementos

Source: (KIRNER et al., 2012)

12/11/2014 26 fb.com/RVA.BR

M$

GRU

Lego

Cave

2L

Page 27: [WRVA2014] Utilização de Realidade Aumentada, com marcadores(ARToolKitPlus) e outros (utilizando openCV), para controle e inspeção de hardware, utilizando a interface ARDUINO

Realidade Cruzada

Objetos

reais

Sensores e

Atuadores

Realidade Aumentada

OC

R

NO

CR

NO

CR

Intr

odução

12/11/2014 27 fb.com/RVA.BR

Page 28: [WRVA2014] Utilização de Realidade Aumentada, com marcadores(ARToolKitPlus) e outros (utilizando openCV), para controle e inspeção de hardware, utilizando a interface ARDUINO

HIT - ROADMAP

CR AI

HI

AR

IoT HR

KMatsuda

9:16 28

Page 29: [WRVA2014] Utilização de Realidade Aumentada, com marcadores(ARToolKitPlus) e outros (utilizando openCV), para controle e inspeção de hardware, utilizando a interface ARDUINO

OPENFRAMEWORKS

09:16 fb.com/RVA.BR 29

Page 30: [WRVA2014] Utilização de Realidade Aumentada, com marcadores(ARToolKitPlus) e outros (utilizando openCV), para controle e inspeção de hardware, utilizando a interface ARDUINO

\\

ERA TROGLODITA

• Graduação (2010):

• ARToolKit

• PTAMM

• Bolsista DTI (2011):

• basAR

Conectar com ARDUINO em C++

Literatura indica FIRMATA:

http://firmata.org/wiki/Download

12/11/2014 30 fb.com/RVA.BR

https://github.com/bodusb

http://cscerqueira.com.br/basar

Page 31: [WRVA2014] Utilização de Realidade Aumentada, com marcadores(ARToolKitPlus) e outros (utilizando openCV), para controle e inspeção de hardware, utilizando a interface ARDUINO

Processing

Adobe Flash

Unity

Cinder

openFrameworks

31 12/11/2014 fb.com/RVA.BR

Page 33: [WRVA2014] Utilização de Realidade Aumentada, com marcadores(ARToolKitPlus) e outros (utilizando openCV), para controle e inspeção de hardware, utilizando a interface ARDUINO

oF

• Criado para artistas e designers • Desenvolvido por: Zach Liberman, Theo Watson, Artuno

Castro e Chris O’Shea

•Proposta: Arrumar a falta de comunicação entre

diversas bibliotecas em C++, e permitir portabilidade.

• Escrita em C++

• Licença: MIT (educacional e venda)

33 12/11/2014 fb.com/RVA.BR

Page 34: [WRVA2014] Utilização de Realidade Aumentada, com marcadores(ARToolKitPlus) e outros (utilizando openCV), para controle e inspeção de hardware, utilizando a interface ARDUINO

utilizar oF quando:

• O projeto renderiza muitos gráficos 3D, e/ou;

• Utilizar muita visão computacional, e/ou;

• Controlar equipamentos, como, por exemplo, o

ARDUINO.

34 12/11/2014 fb.com/RVA.BR

Page 35: [WRVA2014] Utilização de Realidade Aumentada, com marcadores(ARToolKitPlus) e outros (utilizando openCV), para controle e inspeção de hardware, utilizando a interface ARDUINO

Página Principal – openframeworks.cc

35 12/11/2014 fb.com/RVA.BR

Page 36: [WRVA2014] Utilização de Realidade Aumentada, com marcadores(ARToolKitPlus) e outros (utilizando openCV), para controle e inspeção de hardware, utilizando a interface ARDUINO

Libs no pacote padrão

• OpenGL, GLEW, GLUT, libtess2 e cairo para gráficos.

• rtAudio, PortAudio ou FMOD e Kiss FFT para entrada,

saída e análise de áudio.

• FreeType para fontes.

• FreeImage para salvar e carregar imagens.

• Quicktime e videoInput para playback e aquisição de

vídeo.

• Poco, que contém uma variedade de utilidades.

36 12/11/2014 fb.com/RVA.BR

Page 37: [WRVA2014] Utilização de Realidade Aumentada, com marcadores(ARToolKitPlus) e outros (utilizando openCV), para controle e inspeção de hardware, utilizando a interface ARDUINO

Addons da comunidade

09:16 fb.com/RVA.BR 37

Page 38: [WRVA2014] Utilização de Realidade Aumentada, com marcadores(ARToolKitPlus) e outros (utilizando openCV), para controle e inspeção de hardware, utilizando a interface ARDUINO

38

Page 39: [WRVA2014] Utilização de Realidade Aumentada, com marcadores(ARToolKitPlus) e outros (utilizando openCV), para controle e inspeção de hardware, utilizando a interface ARDUINO

OSX, Linux,

Windows, iOS,

Android, Linux

ARM

09:17 fb.com/RVA.BR 39

Page 40: [WRVA2014] Utilização de Realidade Aumentada, com marcadores(ARToolKitPlus) e outros (utilizando openCV), para controle e inspeção de hardware, utilizando a interface ARDUINO

ERA TROGLODITA (C++)

• Graduação (2010):

• ARToolKit

• PTAMM

• Bolsista DTI (2011):

• basAR

ERA DO FOGO (C++/oF)

• Mestrado (2012):

• Doutorado (2014):

12/11/2014 40 fb.com/RVA.BR

Page 41: [WRVA2014] Utilização de Realidade Aumentada, com marcadores(ARToolKitPlus) e outros (utilizando openCV), para controle e inspeção de hardware, utilizando a interface ARDUINO

• Introdução à utilização de openFrameworks para o desenvolvimento de aplicações de RVA

http://pt.slideshare.net/christophercerqueira/svr2013-o-frev

• Construção de aplicações de Realidade Cruzada Projetiva utilizando openFrameworks e ARDUINO

http://pt.slideshare.net/christophercerqueira/ppt-svr2014

12/11/2014 41 fb.com/RVA.BR

Page 42: [WRVA2014] Utilização de Realidade Aumentada, com marcadores(ARToolKitPlus) e outros (utilizando openCV), para controle e inspeção de hardware, utilizando a interface ARDUINO

OPENFRAMEWORKS ROUND ONE

09:17 fb.com/RVA.BR 42

Page 43: [WRVA2014] Utilização de Realidade Aumentada, com marcadores(ARToolKitPlus) e outros (utilizando openCV), para controle e inspeção de hardware, utilizando a interface ARDUINO

Ambiente de desenvolvimento deste

tutorial

oF 0.8.4

Visual Studio Express 2012

C++ 11

Windows 8.1

09:17 fb.com/RVA.BR 43

Page 44: [WRVA2014] Utilização de Realidade Aumentada, com marcadores(ARToolKitPlus) e outros (utilizando openCV), para controle e inspeção de hardware, utilizando a interface ARDUINO

Descompactando

• addons – recursos fora do core do oF

• apps – local onde ocorre o devel

• docs –

• examples - +100

• export – dlls

• libs – bibliotecas do oF

• others – pde para exemplo com Arduino

• projectGenerator – gerador automático de projetos

• scripts – compilar tudo, e base para criação de projetos

09:17 fb.com/RVA.BR 44

Page 45: [WRVA2014] Utilização de Realidade Aumentada, com marcadores(ARToolKitPlus) e outros (utilizando openCV), para controle e inspeção de hardware, utilizando a interface ARDUINO

Exemplos

09:17 fb.com/RVA.BR 45

• Ex1.: 3D pointPicker

• Ex2.: graphics polylineBlobs

• Ex3.: utilssorting

• Ex4.: 3DcameraLensOffset

• Ex5.: addonsassimp

• (particulas)

Page 46: [WRVA2014] Utilização de Realidade Aumentada, com marcadores(ARToolKitPlus) e outros (utilizando openCV), para controle e inspeção de hardware, utilizando a interface ARDUINO

O EXEMPLO VAZIO! o exemplo vazio serve para explorar a estrutura de

arquivos do oF, a utilização do gerador automático e a

organização do código.

46

Page 47: [WRVA2014] Utilização de Realidade Aumentada, com marcadores(ARToolKitPlus) e outros (utilizando openCV), para controle e inspeção de hardware, utilizando a interface ARDUINO

Onde encontrar?

09:17 fb.com/RVA.BR 47

Page 48: [WRVA2014] Utilização de Realidade Aumentada, com marcadores(ARToolKitPlus) e outros (utilizando openCV), para controle e inspeção de hardware, utilizando a interface ARDUINO

Level Easy: Gerador Automático

48

Page 49: [WRVA2014] Utilização de Realidade Aumentada, com marcadores(ARToolKitPlus) e outros (utilizando openCV), para controle e inspeção de hardware, utilizando a interface ARDUINO

Escolhendo expansões

49

Do c

ore

oF

Da c

om

unid

ade

Page 50: [WRVA2014] Utilização de Realidade Aumentada, com marcadores(ARToolKitPlus) e outros (utilizando openCV), para controle e inspeção de hardware, utilizando a interface ARDUINO

Estrutura do projeto

09:17 fb.com/RVA.BR 50

Page 51: [WRVA2014] Utilização de Realidade Aumentada, com marcadores(ARToolKitPlus) e outros (utilizando openCV), para controle e inspeção de hardware, utilizando a interface ARDUINO

Exemplo básico

09:17 fb.com/RVA.BR 51

// ofApp.cpp

void ofApp::setup(){

mensagem = "Hello WRVA2014!!!";

raio = 0;

}

void ofApp::draw(){

ofEnableAlphaBlending(); ofSetColor(ofColor::blue,128);

ofCircle(x_i,y_i,raio);

ofSetColor(ofColor::red);

ofDrawBitmapString(mensagem,mouseX,mouseY);

}

// ofApp.cpp

void ofApp::mouseDragged(int x, int y, int button){

raio = ofDist(x_i,y_i,x,y);

}

void ofApp::mousePressed(int x, int y, int button){

x_i = x;

y_i = y;

}

void ofApp::mouseReleased(int x, int y, int button){

raio = ofDist(x_i,y_i,x,y);

}

// ofApp.h

...

string mensagem;

int x_i,y_i;

float raio;

...

Page 52: [WRVA2014] Utilização de Realidade Aumentada, com marcadores(ARToolKitPlus) e outros (utilizando openCV), para controle e inspeção de hardware, utilizando a interface ARDUINO

ARDUINO O que é? Onde vivem?

Existe? Hoje no Glob..

Fritzing, Arduino 1.0, Firmata, exemplo openFrameworks

09:17 fb.com/RVA.BR 52

Page 53: [WRVA2014] Utilização de Realidade Aumentada, com marcadores(ARToolKitPlus) e outros (utilizando openCV), para controle e inspeção de hardware, utilizando a interface ARDUINO

O que tem no ARDUINO?

12/11/2014 53 fb.com/RVA.BR

Page 54: [WRVA2014] Utilização de Realidade Aumentada, com marcadores(ARToolKitPlus) e outros (utilizando openCV), para controle e inspeção de hardware, utilizando a interface ARDUINO

Outras versões

12/11/2014 54 fb.com/RVA.BR

Page 55: [WRVA2014] Utilização de Realidade Aumentada, com marcadores(ARToolKitPlus) e outros (utilizando openCV), para controle e inspeção de hardware, utilizando a interface ARDUINO

Shields

12/11/2014 55 fb.com/RVA.BR

Page 56: [WRVA2014] Utilização de Realidade Aumentada, com marcadores(ARToolKitPlus) e outros (utilizando openCV), para controle e inspeção de hardware, utilizando a interface ARDUINO

FIRMATA

Literatura indica FIRMATA:

http://firmata.org/wiki/Download

12/11/2014 56 fb.com/RVA.BR

Page 57: [WRVA2014] Utilização de Realidade Aumentada, com marcadores(ARToolKitPlus) e outros (utilizando openCV), para controle e inspeção de hardware, utilizando a interface ARDUINO

O que a FIRMATA faz!?

• Transforma o ARDUINO numa interface de controle,

podendo ser modificado por um host.

• Quais as vantagens?

• O host controla a execução!

• O host tem mais memória.

• Desvantagens?!

• Tem que ficar atrelado ao host!

12/11/2014 57 fb.com/RVA.BR

Page 58: [WRVA2014] Utilização de Realidade Aumentada, com marcadores(ARToolKitPlus) e outros (utilizando openCV), para controle e inspeção de hardware, utilizando a interface ARDUINO

Obs.: Mudança da nomenclatura dos

pinos após Firmata 2.3 (Arduino 1.0)

09:17 fb.com/RVA.BR 58

Page 59: [WRVA2014] Utilização de Realidade Aumentada, com marcadores(ARToolKitPlus) e outros (utilizando openCV), para controle e inspeção de hardware, utilizando a interface ARDUINO

Instalando a Firmata no Arduino

• Faça download do

Arduino 1.0.6

http://arduino.cc/en/Ma

in/Software

• Abra o sketch do

Firmata Standard.

• Transfira para a board.

09:17 fb.com/RVA.BR 59

http://arduino.cc/en/reference/firmata

Page 60: [WRVA2014] Utilização de Realidade Aumentada, com marcadores(ARToolKitPlus) e outros (utilizando openCV), para controle e inspeção de hardware, utilizando a interface ARDUINO

“esquemático”

12/11/2014 60 fb.com/RVA.BR

• #crashcourse fritzing

• http://fritzing.org/home/

Page 61: [WRVA2014] Utilização de Realidade Aumentada, com marcadores(ARToolKitPlus) e outros (utilizando openCV), para controle e inspeção de hardware, utilizando a interface ARDUINO

Arduino e openFrameworks

09:17 fb.com/RVA.BR 61

Page 62: [WRVA2014] Utilização de Realidade Aumentada, com marcadores(ARToolKitPlus) e outros (utilizando openCV), para controle e inspeção de hardware, utilizando a interface ARDUINO

Métodos para conectar com o ARDUINO

connect()

disconnect()

getAnalog()

getAnalogPinReporting()

getDigital()

getDigitalPinMode()

getPwm()

getString()

isArduinoReady()

isInitialized()

sendAnalogPinReporting()

sendByte()

sendDigital()

sendDigitalPinMode()

sendPwm()

sendReset()

sendString()

setUseDelay()

update()

12/11/2014 62 fb.com/RVA.BR

Page 63: [WRVA2014] Utilização de Realidade Aumentada, com marcadores(ARToolKitPlus) e outros (utilizando openCV), para controle e inspeção de hardware, utilizando a interface ARDUINO

Código no openFrameworks

• Exploração do exemplo: communicationfirmataExample

09:17 fb.com/RVA.BR 63

Page 64: [WRVA2014] Utilização de Realidade Aumentada, com marcadores(ARToolKitPlus) e outros (utilizando openCV), para controle e inspeção de hardware, utilizando a interface ARDUINO

Fluxograma básico

09:17 fb.com/RVA.BR 64

SETUP Habilita callback

de Arduino Alive

Arduino

Responde

Evento Alive

Configura

Arduino Loop de

execução – sem

Arduino

Enviar

comandos pro

Arduino

Recebeu um

evento Digital

Recebeu um

evento

Analógico

Loop de

execução –

Arduino Update

Page 65: [WRVA2014] Utilização de Realidade Aumentada, com marcadores(ARToolKitPlus) e outros (utilizando openCV), para controle e inspeção de hardware, utilizando a interface ARDUINO

Código

09:17 fb.com/RVA.BR 65

//ofApp.h

#pragma once

#include "ofMain.h"

class ofApp : public ofBaseApp{

public:

ofArduino ard;

bool bSetupArduino;

private:

void setupArduino(const int & version);

void digitalPinChanged(const int & pinNum);

void analogPinChanged(const int & pinNum);

void updateArduino();

};

//ofApp.cpp

void ofApp::setup(){

...

ard.connect("COM3", 57600); //conecta com arduino

ofAddListener(ard.EInitialized, this, &ofApp::setupArduino);

bSetupArduino= false;// flag arduino ok

}

void ofApp::setupArduino(const int & version) {

ofRemoveListener(ard.EInitialized, this, &ofApp::setupArduino);

bSetupArduino = true; // agora pode usar o arduino.

ard.sendDigitalPinMode(2, ARD_INPUT); //pino entrada digital

ard.sendAnalogPinReporting(0, ARD_ANALOG); // pino entrada analógica

ard.sendDigitalPinMode(13, ARD_OUTPUT); // configura pino saída digital

ard.sendDigitalPinMode(11, ARD_PWM); // configura pino saída PWM

ard.sendServoAttach(9); // diz que o pino tem um servo.

ofAddListener(ard.EDigitalPinChanged, this, &ofApp::digitalPinChanged);

//callback para eventos de pino digital.

ofAddListener(ard.EAnalogPinChanged, this, &ofApp::analogPinChanged);

//callback para eventos de pino analógico

}

void ofApp::updateArduino(){

ard.update(); // verifica se algo mudou no Arduino - obrigatório

if (bSetupArduino) {

//envia o que for para o Arduino.

ard.sendPwm(11, (int)(128 + 128 * sin(ofGetElapsedTimef()))); // pwm...

}

}

//ofApp.cpp

void ofApp::digitalPinChanged(const int &

pinNum) {

// trata o pino digital - ard.getDigital(pinNum)

}

void ofApp::analogPinChanged(const int &

pinNum) {

// trata o pino analógico -

ard.getAnalog(pinNum)

}

//outros comandos

ard.sendServo(9, 180, false);

ard.sendDigital(8, ARD_HIGH);

Page 67: [WRVA2014] Utilização de Realidade Aumentada, com marcadores(ARToolKitPlus) e outros (utilizando openCV), para controle e inspeção de hardware, utilizando a interface ARDUINO

Momento histórico: 2014-11-12

• Primeira aterrisagem num cometa

• ESA. Missão Rosetta

16:06 fb.com/RVA.BR 67

Page 68: [WRVA2014] Utilização de Realidade Aumentada, com marcadores(ARToolKitPlus) e outros (utilizando openCV), para controle e inspeção de hardware, utilizando a interface ARDUINO

REALIDADE AUMENTADA Marcadores: ofxARToolKitPlus

“sem marcadores”: ofxOpenCv, ofxCv

09:17 fb.com/RVA.BR 68

Page 69: [WRVA2014] Utilização de Realidade Aumentada, com marcadores(ARToolKitPlus) e outros (utilizando openCV), para controle e inspeção de hardware, utilizando a interface ARDUINO

Definição atual

Uma definição mais atualizada é:

realidade aumentada é uma interface

baseada na sobreposição de informações virtuais

geradas por computador (envolvendo imagens

estáticas e dinâmicas, sons espaciais e sensações

hápticas) com o ambiente físico do usuário, percebida

através de dispositivos tecnológicos e usando as

interações naturais do usuário, no mundo

físico. (KIRNER 2011)

69

Page 70: [WRVA2014] Utilização de Realidade Aumentada, com marcadores(ARToolKitPlus) e outros (utilizando openCV), para controle e inspeção de hardware, utilizando a interface ARDUINO

Frameworks

Marcador

• ARToolKit (C) – 90´s

• NYARToolKit (Java, C#,

C++, Android)

• AndAR (Android)

• FLARToolKit (AS3)

• Vuforia

Sem marcador

• OpenCV –

Multiplataforma

• HandyAR

• MetaIO

• PTAMM (C++)

• Kinect like (Meta / Tango)

70

Page 71: [WRVA2014] Utilização de Realidade Aumentada, com marcadores(ARToolKitPlus) e outros (utilizando openCV), para controle e inspeção de hardware, utilizando a interface ARDUINO

71

GLASS

9:17

Page 73: [WRVA2014] Utilização de Realidade Aumentada, com marcadores(ARToolKitPlus) e outros (utilizando openCV), para controle e inspeção de hardware, utilizando a interface ARDUINO

NUI

Tangíveis

Móveis

Especializados

Institutos

iFORM

Sand

MYO

META

Kinect

9:17 73

Page 74: [WRVA2014] Utilização de Realidade Aumentada, com marcadores(ARToolKitPlus) e outros (utilizando openCV), para controle e inspeção de hardware, utilizando a interface ARDUINO

ARTOOLKITPLUS

09:17 fb.com/RVA.BR 74

Page 75: [WRVA2014] Utilização de Realidade Aumentada, com marcadores(ARToolKitPlus) e outros (utilizando openCV), para controle e inspeção de hardware, utilizando a interface ARDUINO

Marcadores

ARToolKit

• HITLab

• Compara templates.

• Template marker

detection

• Mais lento

• (Costumava ser) Inviável

em SW embarcado.

ARToolKitPlus

• Graz University of

Technology

• Compara códigos

• ID-Encoded marker

detection

• Mais rápido

• Bom para SW

embarcado.

75

Page 76: [WRVA2014] Utilização de Realidade Aumentada, com marcadores(ARToolKitPlus) e outros (utilizando openCV), para controle e inspeção de hardware, utilizando a interface ARDUINO

ARToolKit

76

Page 77: [WRVA2014] Utilização de Realidade Aumentada, com marcadores(ARToolKitPlus) e outros (utilizando openCV), para controle e inspeção de hardware, utilizando a interface ARDUINO

ARToolKitPlus

77

Page 78: [WRVA2014] Utilização de Realidade Aumentada, com marcadores(ARToolKitPlus) e outros (utilizando openCV), para controle e inspeção de hardware, utilizando a interface ARDUINO

Voltando ao mundo real

• openFrameworks + ARToolKitPlus.

• Add-on ofxARToolKitPlus.

(https://github.com/fishkingsin/ofxARtoolkitPlus)

• Descompactá-lo e salvar dentro de

<of>/addons

• Renomear, retirando o sufixo –master

78

Page 79: [WRVA2014] Utilização de Realidade Aumentada, com marcadores(ARToolKitPlus) e outros (utilizando openCV), para controle e inspeção de hardware, utilizando a interface ARDUINO

ARToolKitPlus original:

• https://launchpad.net/artoolkitplus

• released on 2014-10-05 ( )

• ARToolKitPlus is a software library that can be used to calculate camera position and orientation relative to physical markers in real time. This enables the easy development of a wide range of Augmented Reality applications.

• advantages over the classical ARToolKit:

• easier C++ based API

• support for 4096 binary based markers - no need to design new markers yourself

• supports RGB565, Gray images

• "Robust Planar Pose" algorithm that reduces jitter while tracking

• uses modern text-file based camera calibration

• Vignetting Compensation

• automatic Thresholding

• Hull based tracking in multi marker mode

09:19 fb.com/RVA.BR 79

Page 80: [WRVA2014] Utilização de Realidade Aumentada, com marcadores(ARToolKitPlus) e outros (utilizando openCV), para controle e inspeção de hardware, utilizando a interface ARDUINO

• Utilizar o gerador automático e gerar com os seguintes

add-nos:

• ofxARToolKitPlus

• ofxOpenCv (necessário para o ofxARToolKitPlus)

• DICA: Não vai funcionar – o of0.8.4 usa o C++

11, diferente do compilado na

ofxARToolKitPlus

• Como resolver: http://touch-base-

br.blogspot.com.br/2014/09/openframeworks-083-

ofxartoolkitplus.html

80

Page 81: [WRVA2014] Utilização de Realidade Aumentada, com marcadores(ARToolKitPlus) e outros (utilizando openCV), para controle e inspeção de hardware, utilizando a interface ARDUINO

Ajustando o projeto - caminhos

1. Configuration Properties Linker GeneralAdditional Library Directories e inclua o caminho para a biblioteca, no caso:

..\..\..\addons\ofxARtoolkitPlus\libs\ARToolKitPlus\lib\win32

1. Configuration Properties Linker Input Additional Dependencies incluir a lib:

ARToolKitPlus.lib

81

Page 82: [WRVA2014] Utilização de Realidade Aumentada, com marcadores(ARToolKitPlus) e outros (utilizando openCV), para controle e inspeção de hardware, utilizando a interface ARDUINO

Fluxograma

09:19 fb.com/RVA.BR 82

SETUP Configura câmera e

ARTKP

UPDATE Update câmera e

ARTKP

DRAW Desenha 2D

Desenha 3D

Page 83: [WRVA2014] Utilização de Realidade Aumentada, com marcadores(ARToolKitPlus) e outros (utilizando openCV), para controle e inspeção de hardware, utilizando a interface ARDUINO

Lets code... // ofApp.cpp

#pragma once

#include "ofMain.h"

#include "ofxOpenCv.h" //Cabeçalho do OpenCV

#include "ofxARToolkitPlus.h" //Cabeçalho do ARToolKitPlus

class ofApp : public ofBaseApp{

...

int width, height; // Tamanho da janela da câmera

ofVideoGrabber vidGrabber; // Componente do oF que pega a câmera.

ofxARToolkitPlus artk; // Instância do ARToolKitPlus

ofxCvColorImage colorImage; //imagem capturada pela câmera

ofxCvGrayscaleImage grayImage; //imagem em tons de cinza (mais rápida)

};

83

Page 84: [WRVA2014] Utilização de Realidade Aumentada, com marcadores(ARToolKitPlus) e outros (utilizando openCV), para controle e inspeção de hardware, utilizando a interface ARDUINO

Configurando – testApp::setup()

//--------------------------------------------------------------

void ofApp::setup(){

ofSetWindowShape(1280,480); // Ajusta o tamanho da aplicação

width = 640; height = 480; // largura e altura da imagem da câmera

vidGrabber.initGrabber(width, height); // reserva buffer da câmera

colorImage.allocate(width, height); // reserva imagem colorida

grayImage.allocate(width, height); // reserva imagem mono

artk.setup(width, height); // inicia o ARToolKitPlus

}

84

Page 85: [WRVA2014] Utilização de Realidade Aumentada, com marcadores(ARToolKitPlus) e outros (utilizando openCV), para controle e inspeção de hardware, utilizando a interface ARDUINO

Rastreio - testApp::update()

//--------------------------------------------------------------

void ofApp::update(){

vidGrabber.update(); // Pega frame da câmera

bool bNewFrame = vidGrabber.isFrameNew();// é um frame novo ???

if(bNewFrame) { // se um frame novo

//pega os pixels do buffer da câmera e armazena

colorImage.setFromPixels(vidGrabber.getPixels(), width, height);

grayImage = colorImage; //converte a imagem para mono

artk.update(grayImage.getPixels());

}

}

85

Page 86: [WRVA2014] Utilização de Realidade Aumentada, com marcadores(ARToolKitPlus) e outros (utilizando openCV), para controle e inspeção de hardware, utilizando a interface ARDUINO

Exibindo - testApp::draw() – p1 void ofApp::draw(){

ofSetColor(ofColor::white); // inicia a cor dos objetos como branca

colorImage.draw(0, 0); // exibe a imagem capturada colorida

artk.draw(640, 0); // Esta função exibe a posição e etiqueta marcador

// ARTK 2D stuff - // See if marker ID '0' was detected

int myIndex = artk.getMarkerIndex(0);

if(myIndex >= 0) {

ofSetColor(ofColor::red);

ofDrawBitmapString(ofToString(artk.getTranslation(myIndex)),

artk.getDetectedMarkerCenter(myIndex));

}

// ARTK 3D

artk.applyProjectionMatrix(); // matriz de projeção da camera

int numDetected = artk.getNumDetectedMarkers(); //detectar marcadores

ofEnableAlphaBlending(); //habilitar a transparência

86

Page 87: [WRVA2014] Utilização de Realidade Aumentada, com marcadores(ARToolKitPlus) e outros (utilizando openCV), para controle e inspeção de hardware, utilizando a interface ARDUINO

Exibindo - testApp::draw() – p2

for(int i=0; i<numDetected; i++) { // marcadores encontrados

artk.applyModelMatrix(i); //matriz de perspectiva do marcador

//Local onde colocar o conteúdo 3D do marcador

// neste exemplo é uma pilha de retângulos.

ofNoFill();

ofEnableSmoothing();

ofSetColor(255, 255, 0, 50);

for(int i=0; i<10; i++) {

ofRect(-25, -25, 50, 50);

ofTranslate(0, 0, i*1);

}

}

}

87

Page 88: [WRVA2014] Utilização de Realidade Aumentada, com marcadores(ARToolKitPlus) e outros (utilizando openCV), para controle e inspeção de hardware, utilizando a interface ARDUINO

Alterando o threshold -

testApp::keyPressed(int key) //--------------------------------------------------------------

void ofApp::keyPressed(int key){

switch(key){

// aumenta o valor do threshold

case OF_KEY_UP: artk.setThreshold(++threshold); break;

// diminui o valor do threshold

case OF_KEY_DOWN: artk.setThreshold(--threshold); break;

// chama a configuração da câmera

case 's': case 'S': vidGrabber.videoSettings(); break; default: break;

};}

88

Page 89: [WRVA2014] Utilização de Realidade Aumentada, com marcadores(ARToolKitPlus) e outros (utilizando openCV), para controle e inspeção de hardware, utilizando a interface ARDUINO

Lembrar de copiar a

ARToolKitPlus.dll para a

pasta destino

Lembrar de copiar as

definições de câmera do

ARToolKitPlus

09:19 fb.com/RVA.BR 89

Page 90: [WRVA2014] Utilização de Realidade Aumentada, com marcadores(ARToolKitPlus) e outros (utilizando openCV), para controle e inspeção de hardware, utilizando a interface ARDUINO

Resultado esperado

90

Page 91: [WRVA2014] Utilização de Realidade Aumentada, com marcadores(ARToolKitPlus) e outros (utilizando openCV), para controle e inspeção de hardware, utilizando a interface ARDUINO

USANDO OPENCV

09:19 fb.com/RVA.BR 91

Page 92: [WRVA2014] Utilização de Realidade Aumentada, com marcadores(ARToolKitPlus) e outros (utilizando openCV), para controle e inspeção de hardware, utilizando a interface ARDUINO

Teoria: Rastreio de cores

1. Breve teoria de cores e rastreio de blobs em openCV,

2. Construção dos artefatos de manipulação,

3. Algoritmo de rastreio,

4. Algumas sugestões de usos

12/11/2014 92 fb.com/RVA.BR

Page 93: [WRVA2014] Utilização de Realidade Aumentada, com marcadores(ARToolKitPlus) e outros (utilizando openCV), para controle e inspeção de hardware, utilizando a interface ARDUINO

Cores

RGB-A (red, green, blue)-alfa HSV (hue (cor), saturation, value)

12/11/2014 93 fb.com/RVA.BR

Page 94: [WRVA2014] Utilização de Realidade Aumentada, com marcadores(ARToolKitPlus) e outros (utilizando openCV), para controle e inspeção de hardware, utilizando a interface ARDUINO

Blobs

• Método de busca de características.

• Blobs compartilham propriedades constantes que podem

ser “percebidas” na imagem.

12/11/2014 94 fb.com/RVA.BR

Page 95: [WRVA2014] Utilização de Realidade Aumentada, com marcadores(ARToolKitPlus) e outros (utilizando openCV), para controle e inspeção de hardware, utilizando a interface ARDUINO

Construção dos artefatos : Rastreio Cores

12/11/2014 95 fb.com/RVA.BR

Page 96: [WRVA2014] Utilização de Realidade Aumentada, com marcadores(ARToolKitPlus) e outros (utilizando openCV), para controle e inspeção de hardware, utilizando a interface ARDUINO

Bonus: Projection Mapping

12/11/2014 fb.com/RVA.BR 96

Audi case

PM

PM

Page 97: [WRVA2014] Utilização de Realidade Aumentada, com marcadores(ARToolKitPlus) e outros (utilizando openCV), para controle e inspeção de hardware, utilizando a interface ARDUINO

Usos

• Table-tops

• Projeções em paredes

12/11/2014 97 fb.com/RVA.BR

SketchSynth

Sensetable

L.A.S.E.R. Tag

Climbing

OASIS

Page 98: [WRVA2014] Utilização de Realidade Aumentada, com marcadores(ARToolKitPlus) e outros (utilizando openCV), para controle e inspeção de hardware, utilizando a interface ARDUINO

SVR2014 - Resultados

12/11/2014 98 fb.com/RVA.BR

Page 99: [WRVA2014] Utilização de Realidade Aumentada, com marcadores(ARToolKitPlus) e outros (utilizando openCV), para controle e inspeção de hardware, utilizando a interface ARDUINO

SVR2014 - Resultados

12/11/2014 99 fb.com/RVA.BR

Page 100: [WRVA2014] Utilização de Realidade Aumentada, com marcadores(ARToolKitPlus) e outros (utilizando openCV), para controle e inspeção de hardware, utilizando a interface ARDUINO

Voltando ao mundo real

• openFrameworks + openCV.

• Addon ofxOpenCV – Incluso no openFrameworks

• Addon ofxCv (https://github.com/kylemcdonald/ofxCv)

• Descompactá-lo e salvar dentro de

<of>/addons

• Renomear, retirando o sufixo –master

• DICA: nenhuma dica,

vai funcionar!!!

100

Page 101: [WRVA2014] Utilização de Realidade Aumentada, com marcadores(ARToolKitPlus) e outros (utilizando openCV), para controle e inspeção de hardware, utilizando a interface ARDUINO

Exemplos interessantes

• ofxCv\example-difference-Colummns

• ofxCv\example-countours-advanced

09:19 fb.com/RVA.BR 101

Page 102: [WRVA2014] Utilização de Realidade Aumentada, com marcadores(ARToolKitPlus) e outros (utilizando openCV), para controle e inspeção de hardware, utilizando a interface ARDUINO

Fluxograma: Challange: rastrear mão

09:19 fb.com/RVA.BR 102

SETUP

Configura

câmera

Configura

“padrão”

UPDATE Câmera

Update

Procura

“padrão”

DRAW

Page 103: [WRVA2014] Utilização de Realidade Aumentada, com marcadores(ARToolKitPlus) e outros (utilizando openCV), para controle e inspeção de hardware, utilizando a interface ARDUINO

Rastrear mão (apontador 2D)

• Restrições (para facilitar)

• Fundo homogêneo

• Longe das quinas

• Uma mão só

• Pseudo-código

• Fazer diferença entra o fundo e o frame atual para encontrar a

mão.

• Com a diferença rastreia o blob.

• Do blob calcula as quinas

• Das quinas pega a mais distante do centroide e que não seja

próximo das quinas ( braço).

09:19 fb.com/RVA.BR 103

Page 104: [WRVA2014] Utilização de Realidade Aumentada, com marcadores(ARToolKitPlus) e outros (utilizando openCV), para controle e inspeção de hardware, utilizando a interface ARDUINO

Lets code babe #include "ofMain.h"

#include "ofxOpenCv.h" //Cabeçalho do OpenCV

#include "ofxCv.h"

class ofApp : public ofBaseApp{

...

int width, height, threshold;

ofVideoGrabber vidGrabber; // Componente do oF que pega a câmera.

ofxCvColorImage colorImage; // imagem capturada pela câmera

ofxCvGrayscaleImage grayBg, grayImage, grayDiff;// bg, cinza, diferença

bool bLearnBakground;

ofxCv::TrackingColorMode trackingColorMode;

ofxCv::ContourFinder contourFinder;

ofColor targetColor;

ofPoint apontador;

ofPoint encontraPontoMaisDistante();

};

09:19 fb.com/RVA.BR 104

Page 105: [WRVA2014] Utilização de Realidade Aumentada, com marcadores(ARToolKitPlus) e outros (utilizando openCV), para controle e inspeção de hardware, utilizando a interface ARDUINO

Setup

void ofApp::setup(){

width = 320; height = 240;

vidGrabber.initGrabber(width, height); //abre câmera

colorImage.allocate(width,height); //aloca memória para as imagens

grayBg.allocate(width,height);

grayImage.allocate(width,height);

grayDiff.allocate(width,height);

contourFinder.setMinAreaRadius(10); //configura rastreador

contourFinder.setMaxAreaRadius(150);

contourFinder.setTargetColor(ofColor::white, TRACK_COLOR_RGB);

threshold = 50;

bLearnBakground = true;

}

09:19 fb.com/RVA.BR 105

Page 106: [WRVA2014] Utilização de Realidade Aumentada, com marcadores(ARToolKitPlus) e outros (utilizando openCV), para controle e inspeção de hardware, utilizando a interface ARDUINO

Update

void ofApp::update(){

vidGrabber.update(); // Pega frame da câmera

if(vidGrabber.isFrameNew()){ // é um frame novo ???

colorImage.setFromPixels(vidGrabber.getPixels(),width,height);

grayImage = colorImage;

if (bLearnBakground == true){

grayBg = grayImage;// salva o fundo da tela - TO ROUBANDO MESMO!

bLearnBakground = false;}

grayDiff.absDiff(grayBg, grayImage); // fazer fundo x atual

grayDiff.threshold(threshold);

contourFinder.setThreshold(threshold); // procurar blobs no atual

contourFinder.findContours(grayDiff);

apontador = encontraPontoMaisDistante(); // procurar “dedo”

}

}

09:19 fb.com/RVA.BR 106

Page 107: [WRVA2014] Utilização de Realidade Aumentada, com marcadores(ARToolKitPlus) e outros (utilizando openCV), para controle e inspeção de hardware, utilizando a interface ARDUINO

Ponto mais distante – p1

ofPoint ofApp::encontraPontoMaisDistante(){

int n = contourFinder.size(); //qtidade de blobs capturados

ofPoint maisDistante ; //nosso ponto mais distante

for(int i = 0; i < n; i++) {

ofVec2f centroid = toOf(contourFinder.getCentroid(i)); //Centroide;

ofPolyline convexHull = toOf(contourFinder.getConvexHull(i)); //quinas;

vector<ofPoint> vertices = convexHull.getVertices(); // vetorDeQuinas

vector<ofPoint>::iterator itVec; // para percorrer as quinas.

maisDistante = (*vertices.begin());

float tamMaisDistante = centroid.distanceSquared(maisDistante);

float distanciaAtual = 0;

09:19 fb.com/RVA.BR 107

Page 108: [WRVA2014] Utilização de Realidade Aumentada, com marcadores(ARToolKitPlus) e outros (utilizando openCV), para controle e inspeção de hardware, utilizando a interface ARDUINO

Ponto mais distante – p2

for(itVec = vertices.begin(); itVec != vertices.end(); itVec++){

//encontrar ponto mais distante do dedo --> eliminar as bordas

if( ((*itVec).x > 40) && ((*itVec).x < width - 40) &&

((*itVec).y > 40) && ((*itVec).y < height - 40)){ //elimina bordas

distanciaAtual = centroid.distanceSquared((*itVec));

if(distanciaAtual > tamMaisDistante){ //maior “simple as possible”

maisDistante = (*itVec);

tamMaisDistante = distanciaAtual;

}

}

}

}

return maisDistante;

}

09:19 fb.com/RVA.BR 108

Page 109: [WRVA2014] Utilização de Realidade Aumentada, com marcadores(ARToolKitPlus) e outros (utilizando openCV), para controle e inspeção de hardware, utilizando a interface ARDUINO

Draw

void ofApp::draw(){

ofSetColor(255); grayImage.draw(0, 0); // desenha camera

ofTranslate(320, 0); grayDiff.draw(0, 0); // desenha threshould

ofTranslate(-320,240); contourFinder.draw(); //desenha contorno encontrado

ofSetColor(ofColor::hotPink);

ofDrawBitmapString("openCV Threshold: " + ofToString(threshold),50,50);

ofTranslate(0,-240);

ofFill();

ofSetColor(ofColor::green);

ofCircle(apontador,5); //desenha bola verde no “dedo”

}

09:19 fb.com/RVA.BR 109

Page 110: [WRVA2014] Utilização de Realidade Aumentada, com marcadores(ARToolKitPlus) e outros (utilizando openCV), para controle e inspeção de hardware, utilizando a interface ARDUINO

Resultado desejado:

09:19 fb.com/RVA.BR 110

Page 111: [WRVA2014] Utilização de Realidade Aumentada, com marcadores(ARToolKitPlus) e outros (utilizando openCV), para controle e inspeção de hardware, utilizando a interface ARDUINO

Só use mais hardware quando realmente

precisar.

09:51 fb.com/RVA.BR 111

Page 112: [WRVA2014] Utilização de Realidade Aumentada, com marcadores(ARToolKitPlus) e outros (utilizando openCV), para controle e inspeção de hardware, utilizando a interface ARDUINO

JUNTANDO TUDO. Controlar e monitorar Arduino em RA.

09:19 fb.com/RVA.BR 112

Page 113: [WRVA2014] Utilização de Realidade Aumentada, com marcadores(ARToolKitPlus) e outros (utilizando openCV), para controle e inspeção de hardware, utilizando a interface ARDUINO

O que nós sabemos (em tese) até agora:

• Como se localizar no openFrameworks • projectGenerator, ofApp.h, ofApp.cpp, métodos: setup,update,draw

• Como transformar o Arduino numa interface de hardware, para sensores e atuadores. • Como, via openFrameworks: enviar comandos digitais, receber

dados digitais e analógicos, enviar PWM, controlar um servo.

• Utilizar marcadores do tipo ARToolKitPlus, e: descobrir a sua posição 3D e a sua posição 2D (na tela), verificar se ele foi encontrado.

• Utilizar openCV para rastreio de cores, e a posteriori rastreio de mão/dedos – • usando uma webcam normal!!!

• Suck it up Kinect!

09:19 fb.com/RVA.BR 113

Page 114: [WRVA2014] Utilização de Realidade Aumentada, com marcadores(ARToolKitPlus) e outros (utilizando openCV), para controle e inspeção de hardware, utilizando a interface ARDUINO

Fluxograma simplificado

09:19 fb.com/RVA.BR 114

SETUP Configura Arduino, Câmera,

ARToolkitPlus e Rastreio

Aguarda

Arduino

Arduino alive – configura

Arduino

UPDATE

Update

Arduino

Update

Câmera +

posições de

Marcadores e

apontador.

Verifica

interação

marcador

Verifica

interação

pointer

DRAW

Verifica

interação

Arduino

Page 115: [WRVA2014] Utilização de Realidade Aumentada, com marcadores(ARToolKitPlus) e outros (utilizando openCV), para controle e inspeção de hardware, utilizando a interface ARDUINO

Funcionando!

09:19 fb.com/RVA.BR 115

Page 116: [WRVA2014] Utilização de Realidade Aumentada, com marcadores(ARToolKitPlus) e outros (utilizando openCV), para controle e inspeção de hardware, utilizando a interface ARDUINO

WRAP-UP

09:19 fb.com/RVA.BR 116

O QUE APRENDEMOS HOJE

Page 117: [WRVA2014] Utilização de Realidade Aumentada, com marcadores(ARToolKitPlus) e outros (utilizando openCV), para controle e inspeção de hardware, utilizando a interface ARDUINO

• Existe um framework easy (noob level) em C++ chamado

openFrameworks.

• openFrameworks pode ser expandido com componentes

da comunidade, chamados addons.

• Com ele é possível controlar o Arduino (em C++).

• O Arduino pode se transformar numa interface de dados

usando a lib Firmata.

• Arduino é barato e fácil de usar. Um possível software

para desenhar circuitos é o Fritzing

• Realidade Aumentada é só uma interface de

acesso aos elementos virtuais.

09:19 fb.com/RVA.BR 117

Page 118: [WRVA2014] Utilização de Realidade Aumentada, com marcadores(ARToolKitPlus) e outros (utilizando openCV), para controle e inspeção de hardware, utilizando a interface ARDUINO

• ARToolKitPlus é um tipo de marcador para RA, que é

mais rápido que o ARToolKit.

• openCV é uma biblioteca de visão computacional.

• Com openCV podemos rastrear cores, diferenças de

padrão, etc.

• Visão computacional nem sempre é um resultado por si.

Ideal são soluções hibridas.

• Adicionando elementos de interação físicos (sensores e

atuadores) à Realidade Aumentada, que fazem a troca

bidirecional de informação cria-se Realidade Cruzada.

09:19 fb.com/RVA.BR 118

Page 119: [WRVA2014] Utilização de Realidade Aumentada, com marcadores(ARToolKitPlus) e outros (utilizando openCV), para controle e inspeção de hardware, utilizando a interface ARDUINO

09:19 fb.com/RVA.BR 119

Page 120: [WRVA2014] Utilização de Realidade Aumentada, com marcadores(ARToolKitPlus) e outros (utilizando openCV), para controle e inspeção de hardware, utilizando a interface ARDUINO

120

Claudio Kirner1 and Christopher S. Cerqueira12

1Federal University of Itajubá – Universidade Federal de Itajubá (UNIFEI) 2National Institute for Space Research – Instituto Nacional de Pesquisas Espaciais (INPE)

[email protected] ,[email protected] 1http://realidadevirtual.com.br/, 2http://cscerqueira.com.br

Dúvidas: [email protected]

Site: http://cscerqueira.com.br

Facebook: http://fb.com/RVA.BR

Para maiores dúvidas:

INPE – SJC

Prédio Satélite

Sala 95