Detecção de ColisõesDetecção de Colisõesentre Pares de Poliedrosentre Pares de Poliedros
Rígidos Aplicada aoRígidos Aplicada aoProjeto ASIMOVProjeto ASIMOV
porAnderson Maciel
Conteúdo destaConteúdo destaapresentação:apresentação:
• Introdução– Objetivos e Motivação– A Detecção de Colisões
• Boyse (1979) [Checagem de Intersecção
• Uchiki (1983) [Ocupação de Espaço]• Moore (1988) [Cyrus-Beck]• Lin (1992) [Regiões Voronoi].
Parte I
Conteúdo destaConteúdo destaapresentação:apresentação:
• Garcia-Alonso (1994) [Four-Step]– A estrutura do método– Os quatro passos
• ASIMOV (o ambiente de simulação)• Escolha e implementação do
método• Os resultados e as conclusões.
Parte II
Motivação e ObjetivosMotivação e Objetivos
• Objetos (virtuais/reais) não podem seinterpenetrar
• Solução visual è Solução automática• Trabalhos acadêmicos e software comercial.
• Investigar algoritmos de DC existentes• Escolher o mais adequado às estruturas do
ASIMOV• Implementá-lo no simulador do ASIMOV.
Detecção de Colisões?Detecção de Colisões?
• Penetração entre objetos è ALTO CUSTO• Variações possíveis para o problema:
– Descobrir o momento da colisão– Encontrar o ponto de colisão– Obter o vetor de direção da colisão– Responder a uma situação de colisão– Detectar possível colisão antes que ela ocorra– Poliedros ou superfícies, rígidos ou flexíveis– Convexos ou não convexos– Genérico Ù Muitos casos especiais.
Boyse Boyse (1979)(1979)
• Objetos sólidos e superfíciesparamétricas
• Representados por poliedros(FacesÙArestasÙVértices)
• Dois tipos de checagem deinterferência:– Intersecção entre objetos em posições
fixas– Colisões entre objetos que se movem ao
longo de trajetórias definidas.
EstáticaEstática
• Relações deInterferência:
– A∩B=∅
– A∩B=A (A ⊆ B)– A∩B=B (B ⊆ A)– A∩B=C (C ≠ ∅)
(C ≠ A) (C ≠ B)
• Posição inicial denão interferência
DinâmicaDinâmica
1
2
1. Aresta contata interiorda face
2. Aresta contata bordada face
Uchiki Uchiki (1983)(1983)• Ocupação do Espaço• PEARY
n bits
PARTE DEDETECÇÃO DECOLISÕES
PARTE DECONTROLE DEMENSAGEM
TABELA DE NOMES DE OBJETOS
COORDENADAS
NOMES DE OBJETOS
MENSAGENS
• Detector de colisões
• Resposta imediata X Restrição de memória.
MooreMoore (1988) (1988)
• Algoritmo de recorte de Cyrus-Beck
p
v
n
produto escalarnegativo
• Representação (facespoligonaisÙarestasÙvértices)
• Testa pontos representativos de B contra A(B no SRA) e de A contra B (A no SRB).
VérticesVértices• Comparar cada
vértice de B comcada face de A
• Se (vi - uj1)· nj < 0então vi está dentroda face
• Se algum vérticeestá dentro de todasas faces de B eleestá dentro de B=(colisão)
• Dividir a aresta em pequenossegmentos
ArestasArestas
A
B
V2
V1
( ) kkii nuvd ⋅−= 1 ||||
||
ji
i
dd
dt
+=
( ) kkjj nuvd ⋅−= 1 ( )ij vvtviP −+=
• Testar o ponto médio decada segmento contra asfaces (análogo aos vértices)
Lin Lin (1992)(1992)
• Algoritmo de distância• Regiões Voronoi Objeto A
A1
A3
A4 A2
V4 V3
V2V1
• Teste de Aplicabilidade(Verifica se um ponto estáem um região Voronoi)
• Tempo limite para colisão (fila)• Programação de horários• Pode trabalhar com objetos não-convexos• Executa em tempo constante (independente
da complexidade dos objetos).
Garcia-Garcia-Alonso Alonso (1994)(1994)
• Refinamento (cada passo é menordo que o anterior)
• Quatro Passos1. Matriz de participação em
colisões2. Interferência entre pares de
containers3. Interferência entre voxels4. Interferência entre pares de faces
1 - Matriz de Participação1 - Matriz de Participação
• Gerada no início dasimulação
• Contém todos ospares de objetos eum flag
• Checa flag de cadapar.
• Executa (ou não) oteste entrecontainers
• Principais Vantagens:– Mesma Peça– Usuário não deseja
testar– Peças conectadas
ID Obj #1 ID Obj #2 Flag
TRUE
2
3
1
2
2 4
FALSE
TRUE
pré
2 - Teste entre2 - Teste entre Containers Containers
• Calcular eixos básicospara todos os objetos
• Mudar eixos básicos parao SRU
• Encontrar caixa minimax
SRLocal
Global
Eixos Básicos de(O, v1, v2, v3)
Containerde A
x
x
y
y
v2
z
v1v3
O
Objeto A
pré
Objeto B
Caixa minimaxde B
SRU
y
Container de B
Eixos básicos deB
x
• Aplicar teste minimaxMIN(A) > MAX(B)MAX(A) < MIN(B)
3 - Interferência entre3 - Interferência entre Voxels Voxels• Pequenas caixas
idênticas• Voxelização gerar
matriz de voxel
• Gerar T[AèB] e T[BèA]pré
Containerdo objeto Voxels
A B
• Calcular minimax de Bem A e de A em B
• Matrizes de interferência
• Ponteiro para listade faces
• Buffer de pares de voxels
4 - 4 - IntersecçãoIntersecção de Faces de Faces
• Elementos prégerados pelosoutros passos– Descrição
geométrica dosobjetos
– Matriz de voxels– Buffer de voxels
• Gerar lista de pares defaces
• Aplicar método paraintersecção geométricade faces
• Se algum parintersecciona è Colisãoocorreu no ponto deintersecção.
pré
Algoritmo de Algoritmo de IntersecçãoIntersecçãoAresta X ArestaAresta X Aresta
• Método de Goldman(interf. entre arestas definidas por 2 pts
• Problema #1 è Voxel(6 faces) X Face• Problema #2 è Face X Face
• Aresta X Face è Aresta X Aresta ??• è Projeção!!
Algoritmo de Algoritmo de GoldmanGoldman• Calcular distâncias
T e S
SRUx
y
z
SRF
Vi
VjVn
A1
P1 P2I
A2
)'()'(
'
12
11
VVVV
VV
VV
VV
T
BB
AB
⋅×⋅
×−−
=
• Descobrir pontos maispróximos
• Se ponto igual, então éo ponto de intersecção
()'(
'
12
11
VVV
VV
VV
VV
S
AA
AB
⋅×⋅
×−−
=
• Calcular Projeção
O Projeto ASIMOVO Projeto ASIMOV
• Hospeda a implementação dométodo escolhido
• Ambiente educacional integradopara o projeto e simulação deManipuladores Mecânicos
• Qualidade e baixo custo
Estrutura do ProjetoEstrutura do Projeto
MODELAGEM
VISUALIZAÇÃO
CAD
API
INTERFACE
INTERFACE GRÁFICA DO USUÁRIO
INTERFACESIMULADOR
SGBD
INTERFACEAMBIENTE DE
PROGRAMAÇÃO
INTERFACE
INTERFACE
INTERFACE
USUÁRIO
PROGRAMA
MANIPULADOR
ARQUIVO DE
DO SISTEMADESCRIÇÃO
BASE DE
COMPONENTESDADOS DE
BASE DE
TUTORDADOS DO
INSTRUÇÃO
Estrutura HierárquicaEstrutura HierárquicaManipulador
ObjetosPeçasJuntas
Lista de Juntas Vetor de MatrizesDH
Lista de Peças
SRJ 1 0 SRPart
SRJ 2 1 SRPart *
SRJ 3 2 SRPart *
SRJ 7 7 SRPart *
*
*
... ...
*
.....
M[7→6]
M[4→3]
M[3→2]
M[2→1]
Estrutura GeométricaEstrutura GeométricaVetor_Vertice Vetor_Aresta Vetor_Face Nro_Faces Tam_Vet_Vert
* 6 8
F1
Vetor_Int Nro_Arestas
F2 F3 F4 F5 F6
Vetor_Int Vetor_Int Vetor_Int Vetor_Int Vetor_IntNro_Arestas Nro_Arestas Nro_Arestas Nro_Arestas Nro_Arestas
* *
* * * * * *
1
4 4 4 4 4
A1 A3A2 A4 A5 A6 A2A7
V1V1 V1 V1 V1 V1 V1 V1V2V2 V2V2 V2 V2V2 V2
2 2 3 3 4 4 65521 6 323
3 421
XX X XY Y YYZ Z Z Z EXTEXTEXTEXT
........................... .........* ** *
4
OBJETOS
VÉRTICES
ARESTAS
FACES
Tam_Vet_Arestas
24
. . .
. . .
A Escolha do MétodoA Escolha do Método
• Necessidades do ASIMOV• Estrutura de representação• Funcionamento do simulador do
ASIMOV• Tempo Real.
ImplementaçãoImplementação
• Ambiente Windows• Linguagem C++• Padrões e metodologia do
ASIMOV• Elementos adicionados à
estrutura.
ResultadosResultados
• Software capaz de detectarcolisões em tempo real no PC.
• “Uma imagem vale por milpalavras”...(Execute o programa Simulacao.exedo CD Detecção de Colisões para verum vídeo demonstrativo)
ConclusõesConclusões
• Tendência a otimizar tempo• Métodos se adaptam a aplicações
específicas ç não existe um geral• Tempo-real ç aspectos pouco
explorados– Superfícies curvas– Enormes quantidades de objetos– Coerência espacial entre quadros– Contato ≠ Interferência