Académique Documents
Professionnel Documents
Culture Documents
Abril 2017
Sumrio
1. Objetivo...................................................................................... 1
2. Introduo .................................................................................. 2
3. Desenvolvimento ....................................................................... 3
4. Resultados ................................................................................. 9
5. Concluso ................................................................................ 10
6. Anexos ..................................................................................... 11
1
2. Introduo
2
3. Desenvolvimento
Transmisso Envio do
Captura da Comparao do Sinal Sinal para o
Envio do
Imagem Tratamento com os IDs para o Drone
Sinal para o
pelo da Imagem Cadastrados Joystick Atravs do
Simulink
MATLAB Atravs do Software
Arduino Autoflight
Figura 2 - IDs
3
Eles foram elaborados com uma borda vermelha para facilitar que o algoritmo de
tratamento da imagem encontre o contorno da figura. Esse padro de IDs foi
desenvolvido para formar 9 blocos internos, como se ele fosse dividido em trs
linhas e trs colunas. Dessa forma, cada bloco poderia ser visto como elemento
de uma matriz, que iria conter valores binrios, ou seja, os blocos brancos e
pretos seriam representados por zeros e uns. Sendo assim, foi definido que o
bloco branco tem valor lgico 0 e o preto tem valor lgico 1. Cada ID foi associado
a um tipo de movimento que o drone deve executar.
Figura 3 - ID de teste
4
Figura 4 - Identificao da Borda
5
Figura 7 Identificao da Figura Completa
6
3.2. Controle do Drone
Figura 10 - ID 1 e Matriz A
Figura 11 - ID 2 e Matriz B
O Arduino por sua vez ativa um pino da placa do joystick. Tendo previamente
configurado o joystick no software AutoFlight, o software envia o comando para
o drone atravs de sua conexo sem fio, e este realiza o respectivo movimento
de giro para a esquerda.
Neste exemplo, tendo T = A, seria enviado o valor lgico 1 para o bloco TL. Isso
ativaria o pino 19 do Arduino, que mandaria um sinal para a o pino do joystick
previamente configurado no software AutoFlight para enviar o comando de giro
para esquerda. Enquanto o ID 1 estiver sendo exibido para a cmera, o drone
vai se manter realizando o movimento determinado.
8
4. Resultados
Apesar das limitaes, o objetivo geral do projeto foi alcanado, uma vez que
conseguimos desenvolver um algoritmo que tratasse a imagem exibida no
webcam e que controlasse o movimento do drone a partir dessa imagem.
9
5. Concluso
10
6. Anexos
Controle_Drone.m
%% Inicializao
clear
clc
close all
%% LOOP
Start = 1;
while Start == 1
%% FILTRO
s = size(Fig);
linhas_Fig = s(1,1);
colunas_Fig = s(1,2);
end
11
end
end
%imshow(N)
tam = size(M2);
linhas_M2 = tam(1,1);
colunas_M2 = tam(1,2);
met1 = ceil(metade_l/2);
met2 = ceil(metade_c/2);
box = regionprops(M2,'BoundingBox');
comprim = length(box);
min_b1 = 1000;
min_b2 = 1000;
max_b3 = 0;
max_b4 = 0;
for i = 1:comprim
a = box(i).BoundingBox;
min_b1 = ceil(a(1));
min_b2 = ceil(a(2));
max_b3 = a(3);
max_b4 = a(4);
end
end
12
%figure
%imshow(shape)
I2 = imcrop(Fig,[min_b1 min_b2 max_b3 max_b4]);
%figure
%imshow(I2)
T = zeros(3,3);
w = 0;
v = 0;
if I3(i,j,:) < 1
linha = ceil(i/q1);
coluna = ceil(j/q2);
T(linha, coluna) = 1;
end
end
end
%figure
%imshow(I3)
% Comandos do drone
% J - Rotate Left
% L - Rotate Right
13
% T determina qual matriz encontrada anteriormente pelo processamento
de imagens
% matrix classifica essa matriz para determinar a direo em que o
drone
% deve seguir
A = [1 0 1; 1 1 1; 1 0 1];
B = [0 1 0; 1 1 0; 0 1 1];
if T == A
disp ('Giro para Esquerda');
set_param('drone/TL', 'Value', '1');
set_param('drone/TR', 'Value', '0');
elseif T == B
disp('Giro para Direita');
set_param('drone/TL', 'Value', '0');
set_param('drone/TR', 'Value', '1');
else
disp('Matriz no encontrada no banco de dados!')
set_param('drone/TL', 'Value', '0');
set_param('drone/TR', 'Value', '0');
end
pause (2);
end
clear cam;
drone.slx
14