Académique Documents
Professionnel Documents
Culture Documents
Cahier de charge .3
INTRODUCRION .................................................................................................................. 4
I.Les Drones ............................................................................................................................. 4
1.1.Diagramme de bloc interne de l'AR. Drone ......5
1.2. Description du fonctionnement de lAR drone.....5
1.3. Dcomposition de l'AR. Drone..6
1.4. Les capteurs internes de l'AR. Drone...6
1.5. Diagramme de bloc interne de la carte moteur de l'AR. Drone.7
II. Camra embarque ..8
2.1 Exemple dune camra ....8
Conclusion
2
Cahier de charge
Lobjectif de ce mini-projet consiste raliser lautopilotage pour
lAR. Drone, qui va faire la dtection et reprage dun ballon rouge par
Une camra implmenter dans lAR drone et envoy les donnes en unit
de traitement FPGA pour comparer avec les donnes existe dans cette
unit et donne lordre lAR drone pour suive cet objet (ballon
rouge).Pour cela nous devons mettre en place un algorithme de
traitement dimage quon va limplant sur cette unit.
Introduction gnral
Les drones sont des aronefs capables de voler et d'effectuer une mission sans prsence
humaine bord. D'origine anglaise, le mot drone, qui signifie bourdon, ou
bourdonnement, est communment employ en Franais en rfrence au bruit que font
certains d'entre eux en volant. Le drone n'est en fait qu'un des lments d'un systme,
conu et dploy pour assurer une ou plusieurs missions. C'est la raison pour laquelle les
spcialistes parlent de systmes de drones.
Le principe des drones peut tre rapproch, toutes proportions gales par ailleurs, de celui
de l'aromodlisme, selon lequel des petites maquettes sont pilotes par tlcommandes.
I. Les Drones
La plupart des drones sont comparables aux avions (Figure (1) et (2)), sauf que leur forme
n'est pas dicte par celle d'un fuselage devant abriter au moins un pilote (de faon
confortable) : les combinaisons de formules arodynamiques et de propulsion sont donc
plus larges. Il existe de nombreuses configurations de drones, trs diffrentes les unes des
autres pratiquement une pour chaque machine et dont certaines sont trs novatrices. En
fait, la forme d'un drone sera dtermine par la nature et le profil de sa mission, ainsi que
par sa charge utile : chaque demande correspond pratiquement une solution spcifique.
Figure 1
Figure2
1.1.
phnomne, les hlicoptres disposent dun rotor anticouple en queue dappareil pour
contrer ce couple rsistant qui tend faire tourner lhlicoptre autour de laxe de rotation
de lhlice.
1.3.
Afin de comprendre la structure interne de l'AR. Drone, il est utile de proposer, dans un
premier temps, une dcomposition du bloc AR. Drone sous la forme d'un diagramme de
dfinition de blocs, puis dans un deuxime temps, d'tudier les flux entre les diffrentes
parties.
Les principaux blocs sont :
Carte Mre : C'est l'unit de traitement (le nom Carte Mre choisi pour ce bloc
vient de l'appellation donne par la socit Parrot aux pices dtaches remplaables par
l'utilisateur comme les moteurs, les hlices, etc.). C'est sur cette unit de traitement que
s'excute le systme d'exploitation Linux et le micro-logiciel responsable du fonctionnement
global de l'AR. Drone. On rappelle les principales caractristiques de la carte mre dans le
tableau suivant :
l'lectronique
ncessaire pour contrler la vitesse d'un moteur. On y adjoint le rducteur et l'hlice pour
complter la description. Comme l'indique la multiplicit, l'AR. Drone possde 4 cartes
moteur.
Carte Navigation : cette carte est aussi compose d'une unit de traitement et des
composants lectroniques et MEMS (Microelectromechanical systems) ncessaires pour
relever l'altitude, les vitesses angulaires et les acclrations linaires de l'AR. Drone (blocs
Altimtre et Centrale Inertielle ). Le but de cette carte est de fournir les donnes
permettant la carte mre de calculer l'altitude, les angles de roulis, tangage et lacet (roll,
pitch et yaw) et les vitesses linaires pour les axes X, Y et Z de l'AR. Drone.
1.4.
L'AR. Drone possde galement des capteurs internes lui permettant de proposer une aide
au vol ainsi qu'une meilleure exprience utilisateur du vol avec drone. Ces capteurs sont des
capteurs que l'on retrouve gnralement dans les pilotes-automatiques savoir :
Un acclromtre 3 axes.
Un gyroscope 2 axes.
Un gyroscope dembarde 1 axe.
MEMS (micro lectro mechanical system).
6
1.5.
Camera (Frontale & Verticale) : sont des camras embarques sur l'AR. Drone
permettant au joueur de visualiser en temps rel l'avant et le sol vu de l'AR. Drone.
Les images de la camra verticale sont aussi utilises pour la stabilisation de l'AR.
Drone. On rappelle les principales caractristiques techniques des camras :
III. Protocoles AT
Les commandes AT sont dfinies dans la norme GSM 07.07 (pour les SMS cf. GSM 07.05). AT
est labrviation de ATtention. Ces 2 caractres sont toujours prsents pour commencer une
ligne de commande sous forme de texte (codes ASCII). Les commandes permettent la
gestion complte du mobile.
Trois entits sont dfinies :
Les protocoles AT sont codes en tant que caractres ASCII 8 bits avec un retour chariot
"<CR>" comme un dlimiteur de nouvelle ligne. Toutes les commandes AT commencent par
"AT *" suivi d'un nom de commande, d'un signe gal, d'un numro de squence
8
Figure 5: protocole AT
10
11
12
Le FPGA est une version plus volue et offrant plus de flexibilit que les PLD. Ainsi
souvent utilis pour crer un circuit intgr prototype dans la phase prliminaire du
dveloppement d'un ASIC, et ceci en raison de sa facilit de programmation ce qui nous fait
gagner le temps de dveloppement. Les FPGA sont composs des cellules programmables,
les IOB et les CLB. Les IOB (Input Output Blocs) servent comme tampons aux entres/sorties
du FPGA. Les CLB (Control LogicBlocs) sont des cellules programmables qui ralisent les
fonctions combinatoires et squentielles de notre architecture implanter. La carte
supporte trois modes de configuration la mise sous
tension :
Mode Master-Slave utilisant le PROM 4
Mbit,
Un mode SPI utilisant la mmoire Flash
sriel
Un mode BPI utilisant la mmoire Flash
parallle.
La carte peut aussi tre programme directement laide dun port JTAG lorsquelle est sous
tension.
13
interne de 32 octets qui peut crire avec des temps de cycle 70 ns, et la mmoire tampon
32-octet peut tre transfre la matrice de flash dans 218us (typique).
Les deux circuits partagent le mme bus de 16 bits de donnes et le bus d'adresse de 24 bits.
a. Principe
La couleur dun pixel est obtenue, comme le ferait un peintre, par le mlange de couleurs
Fondamentales. Il ne sagit pas ici de dcrire toutes les techniques utilises. Nous allons
Dcrire un des principes les plus couramment utilis qui est celui de la synthse additive.
b. codage RVB
Le principe consiste mlanger les 3 couleurs : rouge, vert et bleu (not RVB). A laide de
ces 3 couleurs, on obtient toute une palette de nuances allant du noir au blanc. A chaque
couleur est associ un octet (donc 256 niveaux de luminosit) de chacune des couleurs
fondamentales.
c. formats dimage
Lors de son enregistrement une image est stocke suivant un format dimage prcis. Ce
format doit permettre de stocker linformation de limage avec un minimum de perte
dinformations. Il existe ainsi diffrents formats qui pourront favoriser soit la conservation de
la qualit soit la diminution de la taille du fichier informatique.
Binarisation de l'image obtenu en HSV : Cette tape est trs similaire celle quon a
programm pour binariser une image en ton de gris. On obtient ainsi une image noir et
blanc o les pixels des objets dsirs taient en blanc et le reste en noir. L'tape que
nous allons faire ici pour traiter l'image en HSV est exactement la mme la
diffrence que maintenant nous binarisons les pixels qui se trouvent dans un certain
intervalle de couleur. Malheureusement, moins d'avoir une tendue de pixel dont la
couleur est uniforme, ce qui est rarement le cas surtout si l'image provient d'un
dispositif de capture comme une camra, la binarisation ne donnera pas un bon rsultat
si on utilise la technique du seuil. On rappelle que dans cette technique, le seuil est une
valeur qui nous permet de dpartager les pixels selon la relation suivante :
Pixel < Valeur du Seuil alors Pixel = 0
Pixel >= Valeur du Seuil alors Pixel = 255
Pour la couleur, il faut plutt se donner un intervalle dans lequel le seuil se situera. Ainsi la
relation est plutt la suivante :
H tolrance <= Hpixel < H + tolrance && S - tolrance <= Spixel < S + tolrance.
16
Programme
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% nom de programme : dtection de bollon rouge
%
%
%
% Description: comment dtecter un objet de couleur rouge en Vido direct %
%
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Initialization
redThresh = 0.25; % Seuil de dtection rouge
vidDevice = imaq.VideoDevice('winvideo', 1, 'YUY2_640x480', ... % Acqurir
le flux vido d'entre
'ROI', [1 1 640 480], ...
'ReturnedColorSpace', 'rgb');
vidInfo = imaqhwinfo(vidDevice); % Acquisition de la proprit vido
d'entre
hblob = vision.BlobAnalysis('AreaOutputPort', false, ... % Dfinir la
gestion des analyses de blob
'CentroidOutputPort', true, ...
'BoundingBoxOutputPort', true', ...
'MinimumBlobArea', 800, ...
'MaximumBlobArea', 3000, ...
'MaximumCount', 10);
hshapeinsRedBox = vision.ShapeInserter('BorderColor', 'Custom', ... % Set
Manipulation des botes rouges
'CustomBorderColor', [1 0 0], ...
'Fill', true, ...
'FillColor', 'Custom', ...
'CustomFillColor', [1 0 0], ...
'Opacity', 0.4);
htextins = vision.TextInserter('Text', 'Number of Red Object: %2d', ... %
Dfinir le texte pour le nombre de gouttes
'Location', [7 2], ...
'Color', [1 0 0], ... // couleur rouge
'FontSize', 12);
htextinsCent = vision.TextInserter('Text', '+
X:%4d, Y:%4d', ... %
Dfinir le texte pour le centrode
'LocationSource', 'Input port', ...
'Color', [1 1 0], ... // couleur jaune
'FontSize', 14);
hVideoIn = vision.VideoPlayer('Name', 'Final Video', ... % Lecteur vido de
sortie
'Position', [100 100
vidInfo.MaxWidth+20 vidInfo.MaxHeight+30]);
nFrame = 0; % Initialisation du numro de trame
%% Boucle de traitement
while(nFrame < 20)
rgbFrame = step(vidDevice); % Acqurir un cadre unique
rgbFrame = flipdim(rgbFrame,2); % Obtenir l'image miroir pour afficher
diffFrame = imsubtract(rgbFrame(:,:,1), rgb2gray(rgbFrame)); % Obtenir le
composant rouge de l'image
diffFrame = medfilt2(diffFrame, [3 3]); % Filtrer le bruit en utilisant
le filtre mdian
binFrame = im2bw(diffFrame, redThresh); % Convertir l'image en image
binaire avec les objets rouges en blanc
[centroid, bbox] = step(hblob, binFrame); % Obtenez les centrodes et
les botes de dlimitation des blobs
17
Rsultat de simulation
18
19
20
Slectionner Single Port ROM puis Next , on crera une mmoire de 8 x 40001, Next
ltape 4, slectionner, dans Load File, le fichier valeur.coe Puis Next jusqu
ltape 6, choisir Generate
21
);
end lecture;
architecture lire of lecture is
signal addr_signal : STD_LOGIC_VECTOR (15 downto 0);
begin
adresse : process (clk_25, reset)
begin
if reset = '1' then
addr_signal <= (others => '0');
elsif clk_25'event and clk_25='1' then
if addr_signal = 40000 then
addr_signal <= (others => '0');
else
addr_signal <= addr_signal + 1;
end if;
end if;
end process ;
addr <= addr_signal;
end lire;
library IEEE;
use IEEE.STD_LOGIC_1164.ALL ;
entity horloge_25 is
Port ( clk : in STD_LOGIC;
rst : in STD_LOGIC;
clk_25 : out STD_LOGIC
);
end horloge_25;
architecture lire of horloge_25 is
signal clk_out :std_logic:='0';
begin
process (clk,rst)
begin
if rst = '1' then
clk_out <= '0';
elsif rising_edge(clk) then
clk_out <= not clk_out;
else
clk_out <= clk_out;
22
end if;
end process;
clk_25 <= clk_out;
end lire;
Programme de dtection.
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
entity detection is
Port ( raz : in STD_LOGIC;
clocdet : in STD_LOGIC;
pixin : in STD_LOGIC_VECTOR (7 downto 0);
led : out STD_LOGIC);
end detection;
architecture detect of detection is
signal pix : STD_LOGIC_VECTOR (7 downto 0);
begin
process (clocdet,raz)
begin
if raz = '1' then pix <= (others =>'0');
elsif (clocdet' event and clocdet='1')then
pix <= pixin;
if (pix >="11100000" and pix <="11101000") then led <= '1';
else led <= '0';
end if ;
end if ;
end process ;
end detect;
Programme de montage.
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
entity montage is
Port ( clk : in STD_LOGIC;
rst :in std_logic;
led_out :out std_logic
);
end montage;
architecture Behavioral of montage is
component horloge_25 is
Port ( clk : in STD_LOGIC;
rst : in STD_LOGIC;
clk_25 : out STD_LOGIC);
end component;
component read_mem is
Port ( addr : out STD_LOGIC_VECTOR (15 downto 0);
clk_25_1 : in STD_LOGIC;
reset : in STD_LOGIC
);
23
end component;
component memoire is
port ( clka: IN std_logic;
addra: IN std_logic_VECTOR(15 downto 0);
douta: OUT std_logic_VECTOR(7 downto 0));
end component;
component detection is
Port ( raz : in STD_LOGIC;
dout : in STD_LOGIC;
pixin : in STD_LOGIC_VECTOR (7 downto 0);
led : out STD_LOGIC);
end component;
signal sig1 : std_logic;
signal sig2 : std_logic_vector (15 downto 0 );
signal sig3 : std_logic_vector (7 downto 0 );
begin
u1 : horloge_25port map(clk=>clock,rst=>rst,clk_25=>sig1);
Systmes de traitement et de communication multimdia 6
u2 : memoire port map(clka=>sig1,addra=>sig2,douta=>sig3);
u3 : read_mem port map(clk_25_1=>sig1,rset=>rst,adr=>sig2);
u4 : detection port
map(clocdet=>sig1,raz=>rst,pixin=>sig3,led=>led_out);
end Behavioral;
Conclusion
Ce projet a t enrichissant, car nous avons pu acqurir plusieurs connaissances intressantes
que ce projet a pu rassembler, savoir : le traitement dimage, linformatique industrielle ou
plus prcisment le dveloppement VHDL. Pour arriver au rsultat obtenu, on peut citer de
nombreux problmes: Notamment au niveau de la dtection de couleur et dun contour dans
une image qui ncessite un traitement puissant. La limitation de la carte Spartan 3 au niveau
de la mmoire Enfin, titre indicatif que ce domaine est ouvert la recherche, on trouve pas
mal de publication sur internet de thses qui travaillaient soit dans le sens de rnovation soit
dinvention de nouvelles techniques et algorithmes.
24