1
Programação do ERS210A
Programação do ERS210A
utilizando o OPEN
utilizando o OPEN
-
-
R SDK
R SDK
Luís Paulo Reis
Luís Paulo Reis
lpreis@fe.up.pt
lpreis@fe.up.pt
http://www.fe.up.pt/~lpreis
http://www.fe.up.pt/~lpreis
LIACC
LIACC
–
–
Lab
Lab
. Inteligência Artificial e Ciência de Computadores
. Inteligência Artificial e Ciência de Computadores
FEUP
FEUP
–
–
Faculdade de Engenharia da Universidade do Porto
Faculdade de Engenharia da Universidade do Porto
LIACC
LIACC--FEUPFEUP Luís Paulo Reis / 2003Luís Paulo Reis / 2003 Slide Nº Slide Nº 22
Estrutura da Apresentação
Estrutura da Apresentação
Introdução à Programação em OPEN-
Introdução à Programação em OPEN
-R SDK
R SDK
Comunicação entre Objectos
Comunicação entre Objectos
Comunicação com os Objectos do Sistema
Comunicação com os Objectos do Sistema
Utilização da Câmara
Utilização da Câmara
Combinação de Objectos
Combinação de Objectos
2
LIACC
LIACC--FEUPFEUP Luís Paulo Reis / 2003Luís Paulo Reis / 2003 Slide Nº Slide Nº 33
Estrutura da Apresentação
Estrutura da Apresentação
Introdução à Programação em OPEN-
Introdução à Programação em OPEN
-R SDK
R SDK
Comunicação entre Objectos
Comunicação entre Objectos
Comunicação com os Objectos do Sistema
Comunicação com os Objectos do Sistema
Utilização da Câmara
Utilização da Câmara
Combinação de Objectos
Combinação de Objectos
Conclusões
Conclusões
LIACC
LIACC--FEUPFEUP Luís Paulo Reis / 2003Luís Paulo Reis / 2003 Slide Nº Slide Nº 44
Plataforma Robótica AIBO
3
LIACC
LIACC--FEUPFEUP Luís Paulo Reis / 2003Luís Paulo Reis / 2003 Slide Nº Slide Nº 55
OPEN
OPEN
-
-
R SDK
R SDK
-
-
Introdução
Introdução
LIACC
LIACC--FEUPFEUP Luís Paulo Reis / 2003Luís Paulo Reis / 2003 Slide Nº Slide Nº 66
OPEN
OPEN
-
-
R SDK
R SDK
-
-
Introdução
Introdução
OPEN
OPEN
-
-
R:
R:
–
–
Interface standard para robôs de entretenimento da
Interface standard para robôs de entretenimento da
Sony
Sony
OPEN
OPEN
-
-
R SDK
R SDK
(OPEN
(OPEN
-
-
R Software
R Software
Development
Development
Kit)
Kit)
–
–
Ambiente de desenvolvimento baseado no
Ambiente de desenvolvimento baseado no
gcc
gcc
(C++)
(C++)
–
–
Permite construir programas que correm no ERS
Permite construir programas que correm no ERS
-
-
210
210
–
–
Ferramentas de acesso livre
Ferramentas de acesso livre
–
–
Arquitectura modular de Hardware e Software
Arquitectura modular de Hardware e Software
–
4
LIACC
LIACC--FEUPFEUP Luís Paulo Reis / 2003Luís Paulo Reis / 2003 Slide Nº Slide Nº 77
OPEN
OPEN
-
-
R SDK
R SDK
-
-
Introdução
Introdução
Hardware Modular:
Hardware Modular:
–
–
Mudar a forma do Robô mudando os seus
Mudar a forma do Robô mudando os seus
módulos (por exemplo trocar uma perna ou a
módulos (por exemplo trocar uma perna ou a
cabeça!).
cabeça!).
–
–
Módulos conectados por um BUS série de alta
Módulos conectados por um BUS série de alta
velocidade com
velocidade com
autodetecção
autodetecção
da configuração
da configuração
do robô
do robô
LIACC
LIACC--FEUPFEUP Luís Paulo Reis / 2003Luís Paulo Reis / 2003 Slide Nº Slide Nº 88
OPEN
OPEN
-
-
R SDK
R SDK
-
-
Introdução
Introdução
Software Modular
Software Modular
–
–
Módulo de software são “
Módulo de software são “
Objects
Objects
”
”
–
–
Execução concorrente de objectos que
Execução concorrente de objectos que
comunicam uns com os outros
comunicam uns com os outros
–
–
Simples substituir objectos
Simples substituir objectos
–
–
Objectos são carregados do “
Objectos são carregados do “
Memory
Memory
Stick
Stick
”
”
Rede Wireless
Rede
Wireless
–
–
IEEE802.11b
IEEE802.11b
Wireless
Wireless
LAN (PC
LAN (PC
Card
Card
Slot
Slot
)
)
–
5
LIACC
LIACC--FEUPFEUP Luís Paulo Reis / 2003Luís Paulo Reis / 2003 Slide Nº Slide Nº 99
OPEN
OPEN
-
-
R SDK
R SDK
-
-
Introdução
Introdução
Sistema Operativo (tempo-
Sistema Operativo (tempo
-real):
real):
Aperios
Aperios
Programas escritos em OPEN-
Programas escritos em OPEN
-R SDK
R SDK
–
–
www.jp.aibo.com/openr
www.jp.aibo.com/openr
Memory
Memory
Sticks
Sticks
(gravador ou via wireless
(gravador ou via
wireless)
)
OPEN-
OPEN
-R
R Objects
Objects:
:
–
–
Executáveis com a extensão .BIN
Executáveis com a extensão .BIN
–
–
Comunicam com outros objectos por
Comunicam com outros objectos por
mensagens
mensagens
–
–
Semelhantes a processos UNIX
Semelhantes a processos UNIX
LIACC
LIACC--FEUPFEUP Luís Paulo Reis / 2003Luís Paulo Reis / 2003 Slide Nº 10Slide Nº 10
OPEN
OPEN
-
-
R SDK
R SDK
-
-
Documentação
Documentação
Sistema:
Sistema:
–
–
Open
Open
-
-
R SDK
R SDK
-
-
Versão
Versão
1.1.3
1.1.3
–
–
Open
Open
-
-
R SDK
R SDK
-
-
Upgrade
Upgrade
Versão
Versão
1.1.3 (release 2)
1.1.3 (release 2)
Programas Exemplo:
Programas Exemplo:
–
–
Open
Open
-
-
R SDK
R SDK
-
-
Sample Programs
Sample Programs
(
(
código
código
C++)
C++)
Documentação:
Documentação:
–
–
Open
Open
-
-
R SDK
R SDK
-
-
Installation Guide
Installation Guide
–
–
Open
Open
-
-
R SDK
R SDK
-
-
Programmer's Guide
Programmer's Guide
–
–
Open
Open
-
-
R SDK
R SDK
-
-
Model Information for ERS210
Model Information for ERS210
–
–
Open
Open
-
-
R SDK
R SDK
-
-
Level 2
Level 2
-
-
Reference Guide
Reference Guide
–
–
pen
pen
-
-
R SDK
R SDK
-
-
Internet Protocol
Internet Protocol
-
-
Version 4
Version 4
–
6
LIACC
LIACC--FEUPFEUP Luís Paulo Reis / 2003Luís Paulo Reis / 2003 Slide Nº 11Slide Nº 11
OPEN
OPEN
-
-
R SDK
R SDK
-
-
Potencialidades
Potencialidades
Movimentar juntas do robô independentemente
Movimentar juntas do robô independentemente
Ler os ângulos das juntas
Ler os ângulos das juntas
Ligar e desligar os
Ligar e desligar os
leds
leds
da cabeça e cauda
da cabeça e cauda
Tocar áudio PCM
Tocar áudio PCM
Ler a imagem da câmara
Ler a imagem da câmara
Ler informação áudio
Ler informação áudio
Ler a data/hora, nível de bateria,
Ler a data/hora, nível de bateria,
etc
etc
Ler informação de todos os sensores do robô
Ler informação de todos os sensores do robô
Enviar e receber dados via rede
Enviar e receber dados via rede
Wireless
Wireless
LIACC
LIACC--FEUPFEUP Luís Paulo Reis / 2003Luís Paulo Reis / 2003 Slide Nº 12Slide Nº 12
Conhecimentos Prévios
Conhecimentos Prévios
Experiência em Programação em C++
Experiência em Programação em C++
Algoritmos e Estruturas de Dados
Algoritmos e Estruturas de Dados
Inteligência Artificial e Robótica
Inteligência Artificial e Robótica
Utilização de ferramentas de
Utilização de ferramentas de
desenvolvimento GNU
desenvolvimento GNU
Como usar UNIX / ferramentas Cygwin
Como usar UNIX / ferramentas
Cygwin:
:
–
–
Bash
Bash
,
,
tar
tar
,
,
ls
ls
,
,
etc
etc
.
.
7
LIACC
LIACC--FEUPFEUP Luís Paulo Reis / 2003Luís Paulo Reis / 2003 Slide Nº 13Slide Nº 13
Estrutura da Apresentação
Estrutura da Apresentação
Introdução à Programação em OPEN-
Introdução à Programação em OPEN
-R SDK
R SDK
Comunicação entre Objectos
Comunicação entre Objectos
Comunicação com os Objectos do Sistema
Comunicação com os Objectos do Sistema
Utilização da Câmara
Utilização da Câmara
Combinação de Objectos
Combinação de Objectos
Conclusões
Conclusões
LIACC
LIACC--FEUPFEUP Luís Paulo Reis / 2003Luís Paulo Reis / 2003 Slide Nº 14Slide Nº 14
Objectos em OPEN
Objectos em OPEN-
-R
R
Software OPEN-
Software OPEN
-R são diversos objectos
R são diversos objectos
(semelhantes a ficheiros executáveis)
(semelhantes a ficheiros executáveis)
Objectos correm concorrentemente
Objectos correm concorrentemente
Objectos comunicam por passagem de
Objectos comunicam por passagem de
mensagens
mensagens
Objectos possuem múltiplos pontos de
Objectos possuem múltiplos pontos de
entrada
8
LIACC
LIACC--FEUPFEUP Luís Paulo Reis / 2003Luís Paulo Reis / 2003 Slide Nº 15Slide Nº 15
Envio e Recepção de Dados
Envio e Recepção de Dados
Comunicação entre objectos estabelecida pelo
Comunicação entre objectos estabelecida pelo
“
“
subject
subject
e pelo
e pelo
observer
observer
(incluídos no “
(incluídos no “
object
object
”)
”)
LIACC
LIACC--FEUPFEUP Luís Paulo Reis / 2003Luís Paulo Reis / 2003 Slide Nº 16Slide Nº 16
Envio e Recepção de Dados
Envio e Recepção de Dados
9
LIACC
LIACC--FEUPFEUP Luís Paulo Reis / 2003Luís Paulo Reis / 2003 Slide Nº 17Slide Nº 17
Envio e Recepção de Dados
Envio e Recepção de Dados
LIACC
LIACC--FEUPFEUP Luís Paulo Reis / 2003Luís Paulo Reis / 2003 Slide Nº 18Slide Nº 18
Envio e Recepção de Dados
Envio e Recepção de Dados
Para colocar os dados na área comum:
Para colocar os dados na área comum:
–
10
LIACC
LIACC--FEUPFEUP Luís Paulo Reis / 2003Luís Paulo Reis / 2003 Slide Nº 19Slide Nº 19
Envio e Recepção de Dados
Envio e Recepção de Dados
Para receber os dados da área comum:
Para receber os dados da área comum:
–
–
Event.Data(0)
Event.Data(0)
LIACC
LIACC--FEUPFEUP Luís Paulo Reis / 2003Luís Paulo Reis / 2003 Slide Nº 20Slide Nº 20
Subjects
Subjects
e Observers
e
Observers
Objecto que envia dados é um “Subject
Objecto que envia dados é um “
Subject”
”
11
LIACC
LIACC--FEUPFEUP Luís Paulo Reis / 2003Luís Paulo Reis / 2003 Slide Nº 21Slide Nº 21
Comunicação entre Objectos
Comunicação entre Objectos
Quando um observer
Quando um
observer
está pronto envia uma
está pronto envia uma
mensagem ASSERT_READY ao
mensagem ASSERT_READY ao subject
subject
LIACC
LIACC--FEUPFEUP Luís Paulo Reis / 2003Luís Paulo Reis / 2003 Slide Nº 22Slide Nº 22
Comunicação entre Objectos
Comunicação entre Objectos
Quando um subject
Quando um
subject
recebe um
recebe um
ASSERT_READY
ASSERT_READY
, pode enviar dados a um
, pode enviar dados a um
observer
12
LIACC
LIACC--FEUPFEUP Luís Paulo Reis / 2003Luís Paulo Reis / 2003 Slide Nº 23Slide Nº 23
Comunicação entre Objectos
Comunicação entre Objectos
Depois de um “observer
Depois de um “
observer” ter processado os
” ter processado os
dados, envia um novo ASSERT_READY
dados, envia um novo ASSERT_READY
para receber mais dados
para receber mais dados
LIACC
LIACC--FEUPFEUP Luís Paulo Reis / 2003Luís Paulo Reis / 2003 Slide Nº 24Slide Nº 24
Comunicação entre Objectos
Comunicação entre Objectos
13
LIACC
LIACC--FEUPFEUP Luís Paulo Reis / 2003Luís Paulo Reis / 2003 Slide Nº 25Slide Nº 25
Comunicação entre Objectos
Comunicação entre Objectos
LIACC
LIACC--FEUPFEUP Luís Paulo Reis / 2003Luís Paulo Reis / 2003 Slide Nº 26Slide Nº 26
Comunicação entre Objectos
Comunicação entre Objectos
14
LIACC
LIACC--FEUPFEUP Luís Paulo Reis / 2003Luís Paulo Reis / 2003 Slide Nº 27Slide Nº 27
Comunicação entre Objectos
Comunicação entre Objectos
Linha Dedicada unidireccional entre os Objectos!
Linha Dedicada unidireccional entre os Objectos!
LIACC
LIACC--FEUPFEUP Luís Paulo Reis / 2003Luís Paulo Reis / 2003 Slide Nº 28Slide Nº 28
Comunicação entre Objectos
Comunicação entre Objectos
Um objecto pode estar conectado a múltiplos objectos (1
Um objecto pode estar conectado a múltiplos objectos (1
linha dedicada para cada ligação unidireccional!)
15
LIACC
LIACC--FEUPFEUP Luís Paulo Reis / 2003Luís Paulo Reis / 2003 Slide Nº 29Slide Nº 29
Comunicação entre Objectos
Comunicação entre Objectos
É necessário criar uma lista com todos os
É necessário criar uma lista com todos os
objectos:
objectos: object.cfg
object.cfg
LIACC
LIACC--FEUPFEUP Luís Paulo Reis / 2003Luís Paulo Reis / 2003 Slide Nº 30Slide Nº 30
Exemplo de Comunicação
Exemplo de Comunicação
16
LIACC
LIACC--FEUPFEUP Luís Paulo Reis / 2003Luís Paulo Reis / 2003 Slide Nº 31Slide Nº 31
Exemplo de Comunicação
Exemplo de Comunicação
“SampleSubject.h”
LIACC
LIACC--FEUPFEUP Luís Paulo Reis / 2003Luís Paulo Reis / 2003 Slide Nº 32Slide Nº 32
Exemplo de Comunicação
Exemplo de Comunicação
17
LIACC
LIACC--FEUPFEUP Luís Paulo Reis / 2003Luís Paulo Reis / 2003 Slide Nº 33Slide Nº 33
Comunicação entre Objectos
Comunicação entre Objectos
Numa aplicação OPEN
Numa aplicação OPEN
-
-
R existem normalmente
R existem normalmente
diversos objectos, incluindo objectos que não
diversos objectos, incluindo objectos que não
comunicam com os outros
comunicam com os outros
LIACC
LIACC--FEUPFEUP Luís Paulo Reis / 2003Luís Paulo Reis / 2003 Slide Nº 34Slide Nº 34
Estrutura da Apresentação
Estrutura da Apresentação
Introdução à Programação em OPEN-
Introdução à Programação em OPEN
-R SDK
R SDK
Comunicação entre Objectos
Comunicação entre Objectos
Comunicação com os Objectos do Sistema
Comunicação com os Objectos do Sistema
Utilização da Câmara
Utilização da Câmara
Combinação de Objectos
Combinação de Objectos
18
LIACC
LIACC--FEUPFEUP Luís Paulo Reis / 2003Luís Paulo Reis / 2003 Slide Nº 35Slide Nº 35
Objectos do Sistema
Objectos do Sistema
OVirtualRobotComm.Sensor
OVirtualRobotComm.Sensor
Estrutura dos Inputs
Estrutura dos
Inputs
dos Sensores:
dos Sensores:
–
–
OSensorFrameVectorData
OSensorFrameVectorData
OVirtualRobotComm.Effector
OVirtualRobotComm.Effector
Estrutura de dados para Output
Estrutura de dados para
Output
para os
para os
actuadores:
actuadores:
–
–
OCommandVectorData
OCommandVectorData
LIACC
LIACC--FEUPFEUP Luís Paulo Reis / 2003Luís Paulo Reis / 2003 Slide Nº 36Slide Nº 36
Objectos do Sistema
Objectos do Sistema
-
-
Exemplo
Exemplo
Exemplo: Piscar um olho do AIBO (ver
Exemplo: Piscar um olho do AIBO (ver
sample
sample
BlinkingLed
19
LIACC
LIACC--FEUPFEUP Luís Paulo Reis / 2003Luís Paulo Reis / 2003 Slide Nº 37Slide Nº 37
Objectos do Sistema
Objectos do Sistema
-
-
Exemplo
Exemplo
LIACC
LIACC--FEUPFEUP Luís Paulo Reis / 2003Luís Paulo Reis / 2003 Slide Nº 38Slide Nº 38
Objectos do Sistema
Objectos do Sistema
-
-
Exemplo
Exemplo
Forma de Comunicar com
Forma de Comunicar com
OVirtualRobotComm
OVirtualRobotComm
:
:
1. Abrir cada
1. Abrir cada
device
device
Led
Led
e tirar o seu “
e tirar o seu “
primitive
primitive
ID”
ID”
2. Criar comandos para piscar os
2. Criar comandos para piscar os
Leds
Leds
3. Fazer 1 e 2 na
3. Fazer 1 e 2 na
inicialização
inicialização
(
(
DoInit
DoInit
)
)
4. Preparar para apagar os
20
LIACC
LIACC--FEUPFEUP Luís Paulo Reis / 2003Luís Paulo Reis / 2003 Slide Nº 39Slide Nº 39
Objectos do Sistema
Objectos do Sistema
-
-
Exemplo
Exemplo
1. Abrir cada
1. Abrir cada device
device
Led
Led
e tirar o seu “primitive
e tirar o seu “
primitive
ID”
ID”
LIACC
LIACC--FEUPFEUP Luís Paulo Reis / 2003Luís Paulo Reis / 2003 Slide Nº 40Slide Nº 40
Objectos do Sistema
Objectos do Sistema
-
-
Exemplo
Exemplo
2. Criar comandos para piscar os
21
LIACC
LIACC--FEUPFEUP Luís Paulo Reis / 2003Luís Paulo Reis / 2003 Slide Nº 41Slide Nº 41
Objectos do Sistema
Objectos do Sistema
-
-
Exemplo
Exemplo
2. Criar comandos para piscar os
2. Criar comandos para piscar os
Leds
Leds
LIACC
LIACC--FEUPFEUP Luís Paulo Reis / 2003Luís Paulo Reis / 2003 Slide Nº 42Slide Nº 42
Objectos do Sistema
Objectos do Sistema
-
-
Exemplo
Exemplo
22
LIACC
LIACC--FEUPFEUP Luís Paulo Reis / 2003Luís Paulo Reis / 2003 Slide Nº 43Slide Nº 43
Objectos do Sistema
Objectos do Sistema
-
-
Exemplo
Exemplo
3. Fazer 1 e 2 na
3. Fazer 1 e 2 na
inicialização
inicialização
(
(
DoInit
DoInit
)
)
LIACC
LIACC--FEUPFEUP Luís Paulo Reis / 2003Luís Paulo Reis / 2003 Slide Nº 44Slide Nº 44
Objectos do Sistema
Objectos do Sistema
-
-
Exemplo
Exemplo
4. Preparar para apagar os
23
LIACC
LIACC--FEUPFEUP Luís Paulo Reis / 2003Luís Paulo Reis / 2003 Slide Nº 45Slide Nº 45
Objectos do Sistema
Objectos do Sistema
-
-
Exemplo
Exemplo
Execução do Programa
Execução do Programa
LIACC
LIACC--FEUPFEUP Luís Paulo Reis / 2003Luís Paulo Reis / 2003 Slide Nº 46Slide Nº 46
Objectos do Sistema
24
LIACC
LIACC--FEUPFEUP Luís Paulo Reis / 2003Luís Paulo Reis / 2003 Slide Nº 47Slide Nº 47
Objectos do Sistema
Objectos do Sistema
-
-
Exemplo
Exemplo
LIACC
LIACC--FEUPFEUP Luís Paulo Reis / 2003Luís Paulo Reis / 2003 Slide Nº 48Slide Nº 48
Objectos do Sistema
Objectos do Sistema
-
-
Exemplo
Exemplo
25
LIACC
LIACC--FEUPFEUP Luís Paulo Reis / 2003Luís Paulo Reis / 2003 Slide Nº 49Slide Nº 49
Objectos do Sistema
Objectos do Sistema
Objectos do “Layer
Objectos do “
Layer” de sistema
” de sistema
Comunica-
Comunica
-se com o objecto
se com o objecto
OVirtualRobotComm.Sensor
OVirtualRobotComm.Sensor
Para implementar isto o nosso programa é
Para implementar isto o nosso programa é
um
um Observer
Observer
e OVirtualRobotComm.Sensor
e
OVirtualRobotComm.Sensor
é um
é um Subject
Subject
Estrutura de dados para Input
Estrutura de dados para
Input
dos sensores
dos sensores
é
é OSensorFrameVectorData
OSensorFrameVectorData
LIACC
LIACC--FEUPFEUP Luís Paulo Reis / 2003Luís Paulo Reis / 2003 Slide Nº 50Slide Nº 50
OSensorFrameVectorData
OSensorFrameVectorData
Os valores de dados (chamados “frames
Os valores de dados (chamados “
frames”)
”)
dos sensores são guardados aqui
dos sensores são guardados aqui
Guarda vários valores de vários sensores
Guarda vários valores de vários sensores
Método GetData(
Método
GetData() permite aceder a uma
) permite aceder a uma
“
26
LIACC
LIACC--FEUPFEUP Luís Paulo Reis / 2003Luís Paulo Reis / 2003 Slide Nº 51Slide Nº 51
OSensorValue
OSensorValue
Estrutura de dados genérica para uma “
Estrutura de dados genérica para uma “
frame
frame
”
”
Contido no interior de
Contido no interior de
OSensorFrameData
OSensorFrameData
Deve ser “
Deve ser “
tipado
tipado
” para um tipo apropriado
” para um tipo apropriado
Exemplo: Para valores das juntas deve ser
Exemplo: Para valores das juntas deve ser
“
“
tipado
tipado
” par
” par
OJointValue
OJointValue
Exemplo:
Exemplo:
OForce
OForce
para valores de pressão
para valores de pressão
LIACC
LIACC--FEUPFEUP Luís Paulo Reis / 2003Luís Paulo Reis / 2003 Slide Nº 52Slide Nº 52
Sensores
Sensores -
-
Utilização
Utilização
Obter dados dos sensores é idêntico a
Obter dados dos sensores é idêntico a
comunicar com outros objectos:
comunicar com outros objectos:
1.
1.
Seleccionar Sensores a Ler
Seleccionar Sensores a Ler
2.
2.
Enviar ASSERT_READY a
Enviar ASSERT_READY a
OVirtualRobotComm.Sensor
OVirtualRobotComm.Sensor
3.
3.
Obter
Obter
OSensorFrameVectorData
OSensorFrameVectorData
de
de
OVirtualRobotComm.Sensor
OVirtualRobotComm.Sensor
4.
4.
Utilizar os métodos em
Utilizar os métodos em
OSensorFrameVectorData
OSensorFrameVectorData
para obter os
para obter os
OSensorValue
OSensorValue
5.
5.
“
“
Tipar
Tipar
” os
” os
OSensorValue
OSensorValue
para o tipo apropriado a
para o tipo apropriado a
cada sensor
27
LIACC
LIACC--FEUPFEUP Luís Paulo Reis / 2003Luís Paulo Reis / 2003 Slide Nº 53Slide Nº 53
Movimentação das Juntas
Movimentação das Juntas
Objecto que recebe os comando chama-
Objecto que recebe os comando chama
-se
se
OVirtualRobotComm.Effector
OVirtualRobotComm.Effector
Tipo de dados é OCommandVectorData
Tipo de dados é
OCommandVectorData
–
–
Pode conter múltiplos comandos
Pode conter múltiplos comandos
LIACC
LIACC--FEUPFEUP Luís Paulo Reis / 2003Luís Paulo Reis / 2003 Slide Nº 54Slide Nº 54
OCommandInfo
OCommandInfo
28
LIACC
LIACC--FEUPFEUP Luís Paulo Reis / 2003Luís Paulo Reis / 2003 Slide Nº 55Slide Nº 55
Estrutura da Apresentação
Estrutura da Apresentação
Introdução à Programação em OPEN-
Introdução à Programação em OPEN
-R SDK
R SDK
Comunicação entre Objectos
Comunicação entre Objectos
Comunicação com os Objectos do Sistema
Comunicação com os Objectos do Sistema
Utilização da Câmara
Utilização da Câmara
Combinação de Objectos
Combinação de Objectos
Conclusões
Conclusões
LIACC
LIACC--FEUPFEUP Luís Paulo Reis / 2003Luís Paulo Reis / 2003 Slide Nº 56Slide Nº 56
Visão do AIBO
Visão do AIBO
–
–
Exemplo 1
Exemplo 1
Analisar imagem da câmara do AIBO
Analisar imagem da câmara do AIBO
O
O
Sample
Sample
“
“
Image
Image
Observer
Observer
”
”
–
–
Tipos de Imagem
Tipos de Imagem
Comunicação entre objectos com imagem
Comunicação entre objectos com imagem
Retirar a Imagem de
Retirar a Imagem de
OVirtualRobotComm
OVirtualRobotComm
–
–
Abrir o Sensor de Imagem (Câmara) e retirar o
Abrir o Sensor de Imagem (Câmara) e retirar o
primitive
primitive
ID (em
ID (em
DoInit
DoInit
)
)
–
–
Construir uma tabela de detecção de cor (em
Construir uma tabela de detecção de cor (em
DoInit
DoInit
)
)
–
–
Parar a recepção de imagem (em
Parar a recepção de imagem (em
DoStop
DoStop
)
)
Receber dados em event.Data(0) e fazer
Receber dados em event.Data(0) e fazer
AssertReady(
29
LIACC
LIACC--FEUPFEUP Luís Paulo Reis / 2003Luís Paulo Reis / 2003 Slide Nº 57Slide Nº 57
Visão do AIBO
Visão do AIBO
–
–
Exemplo 1
Exemplo 1
Retirar Dados da Câmara
Retirar Dados da Câmara
LIACC
LIACC--FEUPFEUP Luís Paulo Reis / 2003Luís Paulo Reis / 2003 Slide Nº 58Slide Nº 58
Visão do AIBO
Visão do AIBO
–
–
Exemplo 1
Exemplo 1
Tipos de Imagem
Tipos de Imagem
30
LIACC
LIACC--FEUPFEUP Luís Paulo Reis / 2003Luís Paulo Reis / 2003 Slide Nº 59Slide Nº 59
Visão do AIBO
Visão do AIBO
–
–
Exemplo 1
Exemplo 1
Comunicação entre Objectos
Comunicação entre Objectos
LIACC
LIACC--FEUPFEUP Luís Paulo Reis / 2003Luís Paulo Reis / 2003 Slide Nº 60Slide Nº 60
Visão do AIBO
Visão do AIBO
–
–
Exemplo 1
Exemplo 1
Estrutura Geral da Captura de Imagem
Estrutura Geral da Captura de Imagem
31
LIACC
LIACC--FEUPFEUP Luís Paulo Reis / 2003Luís Paulo Reis / 2003 Slide Nº 61Slide Nº 61
Visão do AIBO
Visão do AIBO
–
–
Exemplo 1
Exemplo 1
Abrir o Sensor de Imagem e retirar “
Abrir o Sensor de Imagem e retirar “Primitive
Primitive
ID”
ID”
LIACC
LIACC--FEUPFEUP Luís Paulo Reis / 2003Luís Paulo Reis / 2003 Slide Nº 62Slide Nº 62
Visão do AIBO
Visão do AIBO
–
–
Exemplo 1
Exemplo 1
Tabela de Detecção (“
32
LIACC
LIACC--FEUPFEUP Luís Paulo Reis / 2003Luís Paulo Reis / 2003 Slide Nº 63Slide Nº 63
Visão do AIBO
Visão do AIBO
–
–
Exemplo 1
Exemplo 1
Tabela de Detecção (“
Tabela de Detecção (“Pink
Pink
”)
”)
LIACC
LIACC--FEUPFEUP Luís Paulo Reis / 2003Luís Paulo Reis / 2003 Slide Nº 64Slide Nº 64
Visão do AIBO
Visão do AIBO
–
–
Exemplo 1
Exemplo 1
Construção da Secção
Construção da Secção
DoInit
DoInit
33
LIACC
LIACC--FEUPFEUP Luís Paulo Reis / 2003Luís Paulo Reis / 2003 Slide Nº 65Slide Nº 65
Visão do AIBO
Visão do AIBO
–
–
Exemplo 1
Exemplo 1
Construção da Secção
Construção da Secção DoStop
DoStop
LIACC
LIACC--FEUPFEUP Luís Paulo Reis / 2003Luís Paulo Reis / 2003 Slide Nº 66Slide Nº 66
Visão do AIBO
Visão do AIBO
–
–
Exemplo 1
Exemplo 1
Recepção dos Dados
Recepção dos Dados
Receber Dados: event.Data[0]
Receber Dados: event.Data[0]
34
LIACC
LIACC--FEUPFEUP Luís Paulo Reis / 2003Luís Paulo Reis / 2003 Slide Nº 67Slide Nº 67
Visão do AIBO
Visão do AIBO
–
–
Exemplo 1
Exemplo 1
Sumário
Sumário
LIACC
LIACC--FEUPFEUP Luís Paulo Reis / 2003Luís Paulo Reis / 2003 Slide Nº 68Slide Nº 68
Visão do AIBO
Visão do AIBO
RGB
35
LIACC
LIACC--FEUPFEUP Luís Paulo Reis / 2003Luís Paulo Reis / 2003 Slide Nº 69Slide Nº 69
Visão do AIBO
Visão do AIBO
A Tabela de Detecção de Cores
A Tabela de Detecção de Cores
LIACC
LIACC--FEUPFEUP Luís Paulo Reis / 2003Luís Paulo Reis / 2003 Slide Nº 70Slide Nº 70
Visão do AIBO
Visão do AIBO
–
–
Exemplo 2
Exemplo 2
Gravação de Imagens em
36
LIACC
LIACC--FEUPFEUP Luís Paulo Reis / 2003Luís Paulo Reis / 2003 Slide Nº 71Slide Nº 71
Visão do AIBO
Visão do AIBO
–
–
Exemplo 2
Exemplo 2
Gravação de Imagens em
Gravação de Imagens em Bitmap
Bitmap
LIACC
LIACC--FEUPFEUP Luís Paulo Reis / 2003Luís Paulo Reis / 2003 Slide Nº 72Slide Nº 72
Visão do AIBO
Visão do AIBO
–
–
Exemplo 2
Exemplo 2
Conversão de
37
LIACC
LIACC--FEUPFEUP Luís Paulo Reis / 2003Luís Paulo Reis / 2003 Slide Nº 73Slide Nº 73
Visão do AIBO
Visão do AIBO
–
–
Exemplo 2
Exemplo 2
Utilização dos Dados da Detecção
Utilização dos Dados da Detecção –
–
Layer
Layer
C
C
LIACC
LIACC--FEUPFEUP Luís Paulo Reis / 2003Luís Paulo Reis / 2003 Slide Nº 74Slide Nº 74
Visão do AIBO
Visão do AIBO
–
–
Exemplo 2
Exemplo 2
Introdução do Tempo, Data e
38
LIACC
LIACC--FEUPFEUP Luís Paulo Reis / 2003Luís Paulo Reis / 2003 Slide Nº 75Slide Nº 75
Visão do AIBO
Visão do AIBO
–
–
Exemplo 2
Exemplo 2
Gravação de Imagens
Gravação de Imagens Raw
Raw
LIACC
LIACC--FEUPFEUP Luís Paulo Reis / 2003Luís Paulo Reis / 2003 Slide Nº 76Slide Nº 76
Visão do AIBO
Visão do AIBO
–
–
Exemplo 2
Exemplo 2
Sumário
Sumário
39
LIACC
LIACC--FEUPFEUP Luís Paulo Reis / 2003Luís Paulo Reis / 2003 Slide Nº 77Slide Nº 77
Estrutura da Apresentação
Estrutura da Apresentação
Introdução à Programação em OPEN-
Introdução à Programação em OPEN
-R SDK
R SDK
Comunicação entre Objectos
Comunicação entre Objectos
Comunicação com os Objectos do Sistema
Comunicação com os Objectos do Sistema
Utilização da Câmara
Utilização da Câmara
Combinação de Objectos
Combinação de Objectos
Conclusões
Conclusões
LIACC
LIACC--FEUPFEUP Luís Paulo Reis / 2003Luís Paulo Reis / 2003 Slide Nº 78Slide Nº 78
Combinação de Objectos
Combinação de Objectos
Programa de Captura de Imagem (PCI)
Programa de Captura de Imagem (PCI)
40
LIACC
LIACC--FEUPFEUP Luís Paulo Reis / 2003Luís Paulo Reis / 2003 Slide Nº 79Slide Nº 79
Combinação de Objectos
Combinação de Objectos
PCI
PCI –
–
Funções Desejadas
Funções Desejadas
LIACC
LIACC--FEUPFEUP Luís Paulo Reis / 2003Luís Paulo Reis / 2003 Slide Nº 80Slide Nº 80
Combinação de Objectos
Combinação de Objectos
PCI
41
LIACC
LIACC--FEUPFEUP Luís Paulo Reis / 2003Luís Paulo Reis / 2003 Slide Nº 81Slide Nº 81
Combinação de Objectos
Combinação de Objectos
PCI
PCI -
-
Ficheiros Necessários
Ficheiros Necessários
LIACC
LIACC--FEUPFEUP Luís Paulo Reis / 2003Luís Paulo Reis / 2003 Slide Nº 82Slide Nº 82
Combinação de Objectos
Combinação de Objectos
PCI
PCI –
–
Modificação da Makefile
Modificação da
Makefile
(MoNet
(
MoNet
)
)
Qualquer Makefile podia ser modificada mas esta exige apenas pequenas modificações
42
LIACC
LIACC--FEUPFEUP Luís Paulo Reis / 2003Luís Paulo Reis / 2003 Slide Nº 83Slide Nº 83
Combinação de Objectos
Combinação de Objectos
Construção do Ficheiro
Construção do Ficheiro
Connect.cfg
Connect.cfg
LIACC
LIACC--FEUPFEUP Luís Paulo Reis / 2003Luís Paulo Reis / 2003 Slide Nº 84Slide Nº 84
Combinação de Objectos
Combinação de Objectos
Construção do Ficheiro
43
LIACC
LIACC--FEUPFEUP Luís Paulo Reis / 2003Luís Paulo Reis / 2003 Slide Nº 85Slide Nº 85
Combinação de Objectos
Combinação de Objectos
PCI
PCI –
–
4 Funções Combinadas
4 Funções Combinadas
LIACC
LIACC--FEUPFEUP Luís Paulo Reis / 2003Luís Paulo Reis / 2003 Slide Nº 86Slide Nº 86
Combinação de Objectos
Combinação de Objectos
Sumário
Sumário
44
LIACC
LIACC--FEUPFEUP Luís Paulo Reis / 2003Luís Paulo Reis / 2003 Slide Nº 87Slide Nº 87
Combinação de Objectos
Combinação de Objectos
PCI
PCI –
–
Modificações dos Objectos
Modificações dos Objectos
Modificar MoNet
Modificar
MoNet:
:
–
–
DoStart
DoStart
: Robô coloca
: Robô coloca
-
-
se em pé
se em pé
–
–
Ready
Ready
: Robô permanece em pé
: Robô permanece em pé
Modificar Image
Modificar
Image
Observer:
Observer
:
–
–
Tirar fotografia quando o sensor do queixo é
Tirar fotografia quando o sensor do queixo é
pressionado
pressionado
–
–
Gravar todos os formatos de imagem e um BMP
Gravar todos os formatos de imagem e um BMP
do formato
do formato
–
–
Layer
Layer
H
H
–
–
Número dos ficheiros incrementado em sequência
Número dos ficheiros incrementado em sequência
LIACC
LIACC--FEUPFEUP Luís Paulo Reis / 2003Luís Paulo Reis / 2003 Slide Nº 88Slide Nº 88
Combinação de Objectos
Combinação de Objectos
PCI
45
LIACC
LIACC--FEUPFEUP Luís Paulo Reis / 2003Luís Paulo Reis / 2003 Slide Nº 89Slide Nº 89
Combinação de Objectos
Combinação de Objectos
PCI
PCI –
–
Modificações dos Objectos
Modificações dos Objectos
LIACC
LIACC--FEUPFEUP Luís Paulo Reis / 2003Luís Paulo Reis / 2003 Slide Nº 90Slide Nº 90
Combinação de Objectos
Combinação de Objectos
PCI
46
LIACC
LIACC--FEUPFEUP Luís Paulo Reis / 2003Luís Paulo Reis / 2003 Slide Nº 91Slide Nº 91
Combinação de Objectos
Combinação de Objectos
PCI
PCI –
–
Dados dos Sensores do Queixo e Trás
Dados dos Sensores do Queixo e Trás
LIACC
LIACC--FEUPFEUP Luís Paulo Reis / 2003Luís Paulo Reis / 2003 Slide Nº 92Slide Nº 92
Combinação de Objectos
Combinação de Objectos
PCI
47
LIACC
LIACC--FEUPFEUP Luís Paulo Reis / 2003Luís Paulo Reis / 2003 Slide Nº 93Slide Nº 93
Combinação de Objectos
Combinação de Objectos
PCI
PCI –
–
Dados dos Sensores do Queixo e Trás
Dados dos Sensores do Queixo e Trás
LIACC
LIACC--FEUPFEUP Luís Paulo Reis / 2003Luís Paulo Reis / 2003 Slide Nº 94Slide Nº 94
Combinação de Objectos
Combinação de Objectos
Quando um dos Sensores é Pressionado
Quando um dos Sensores é Pressionado
Tirar uma Fotografia
Tirar uma Fotografia
48
LIACC
LIACC--FEUPFEUP Luís Paulo Reis / 2003Luís Paulo Reis / 2003 Slide Nº 95Slide Nº 95
Combinação de Objectos
Combinação de Objectos
Verificar se um Ficheiro Existe
Verificar se um Ficheiro Existe
LIACC
LIACC--FEUPFEUP Luís Paulo Reis / 2003Luís Paulo Reis / 2003 Slide Nº 96Slide Nº 96
Combinação de Objectos
Combinação de Objectos
Gravar um Ficheiro
Gravar um Ficheiro
49
LIACC
LIACC--FEUPFEUP Luís Paulo Reis / 2003Luís Paulo Reis / 2003 Slide Nº 97Slide Nº 97
Combinação de Objectos
Combinação de Objectos
Sumário
Sumário
LIACC
LIACC--FEUPFEUP Luís Paulo Reis / 2003Luís Paulo Reis / 2003 Slide Nº 98Slide Nº 98
A Core
50
LIACC
LIACC--FEUPFEUP Luís Paulo Reis / 2003Luís Paulo Reis / 2003 Slide Nº 99Slide Nº 99
Métodos Principais da Core
Métodos Principais da Core
Class
Class
LIACC
LIACC--FEUPFEUP Luís Paulo Reis / 2003Luís Paulo Reis / 2003 Slide Nº Slide Nº 100100
Outros Métodos da Core
51
LIACC
LIACC--FEUPFEUP Luís Paulo Reis / 2003Luís Paulo Reis / 2003 Slide Nº Slide Nº 101101
Macros dos Métodos “Do”
Macros dos Métodos “Do”
LIACC
LIACC--FEUPFEUP Luís Paulo Reis / 2003Luís Paulo Reis / 2003 Slide Nº Slide Nº 102102
Macros dos Métodos “Do”
Macros dos Métodos “Do”
52
LIACC
LIACC--FEUPFEUP Luís Paulo Reis / 2003Luís Paulo Reis / 2003 Slide Nº Slide Nº 103103
Passagem de Mensagens
Passagem de Mensagens
LIACC
LIACC--FEUPFEUP Luís Paulo Reis / 2003Luís Paulo Reis / 2003 Slide Nº Slide Nº 104104
Ficheiro
53
LIACC
LIACC--FEUPFEUP Luís Paulo Reis / 2003Luís Paulo Reis / 2003 Slide Nº Slide Nº 105105
LIACC
LIACC--FEUPFEUP Luís Paulo Reis / 2003Luís Paulo Reis / 2003 Slide Nº Slide Nº 106106
Escrever o Ficheiro .
Escrever o Ficheiro .
ocf
ocf
54
LIACC
LIACC--FEUPFEUP Luís Paulo Reis / 2003Luís Paulo Reis / 2003 Slide Nº Slide Nº 107107
Desenvolvimento de Programas
Desenvolvimento de Programas
1.
1.
Projectar quais os objectos e suas funções
Projectar quais os objectos e suas funções
2.
2.
Decidir as estruturas de dados para a
Decidir as estruturas de dados para a
comunicação inter
comunicação inter
-
-
objectos
objectos
3.
3.
Escrever o ficheiro
Escrever o ficheiro
stub.cfg
stub.cfg
4.
4.
Escrever a classe “core” com as funções membro
Escrever a classe “core” com as funções membro
necessárias
necessárias
5.
5.
Escrever o ficheiro
Escrever o ficheiro
connect.cfg
connect.cfg
e o ficheiro .
e o ficheiro .
ocf
ocf
6.
6.
Compilar e
Compilar e
Linkar
Linkar
7.
7.
Escrever os ficheiros
Escrever os ficheiros
object.cfg
object.cfg
e
e
designdb.cfg
designdb.cfg
8.
8.
Executar no AIBO
Executar no AIBO
9.
9.
Teste e
Teste e
Debug
Debug
LIACC
LIACC--FEUPFEUP Luís Paulo Reis / 2003Luís Paulo Reis / 2003 Slide Nº Slide Nº 108108
Estrutura da Apresentação
Estrutura da Apresentação
Introdução à Programação em OPEN-
Introdução à Programação em OPEN
-R SDK
R SDK
Comunicação entre Objectos
Comunicação entre Objectos
Comunicação com os Objectos do Sistema
Comunicação com os Objectos do Sistema
Utilização da Câmara
Utilização da Câmara
Combinação de Objectos
Combinação de Objectos
55
LIACC
LIACC--FEUPFEUP Luís Paulo Reis / 2003Luís Paulo Reis / 2003 Slide Nº Slide Nº 109109