You are on page 1of 43

Controlador de Lgica

Nebulosa para implementao


em robs inteligentes
utilizando Arduino
Mrio Alberto Cecchi Raduan
[UFRJ/PIBIC - Ago. 2011 a Jul. 2012]
Orientador: Adriano Joaquim de Oliveira Cruz, PhD

quinta-feira, 1 de novembro de 12

Controlador de Lgica Nebulosa para


implementao em robs inteligentes
utilizando Arduino

Motivao
Objetivo
FIS - Fuzzy Inference System
Do MATLAB para C
Integrao com Arduino
Dificuldades
Resultados

quinta-feira, 1 de novembro de 12

Motivao

quinta-feira, 1 de novembro de 12

Lgica Nebulosa

quinta-feira, 1 de novembro de 12

Lgica Nebulosa
Permite criarmos controladores baseados
nas observaes humanas

quinta-feira, 1 de novembro de 12

Lgica Nebulosa
Permite criarmos controladores baseados
nas observaes humanas

As implementaes da lgica difusa permitem que estados


indeterminados possam ser tratados por dispositivos de
controle. Desse modo, possvel avaliar conceitos noquantificveis. Casos prticos: avaliar a temperatura (quente,
morno, mdio...), o sentimento de felicidade(radiante, feliz,
aptico, triste...), a veracidade de um argumento
(corretssimo, correto, contra-argumentativo, incoerente,
falso, totalmente errneo etc.)

quinta-feira, 1 de novembro de 12

Exemplo de uma varivel nebulosa


representando a temperatura de um
ambiente
quinta-feira, 1 de novembro de 12

Funcionamento de um sistema nebuloso

quinta-feira, 1 de novembro de 12

Arduino

quinta-feira, 1 de novembro de 12

Arduino

Programao em alto nvel


para controlar um rob

quinta-feira, 1 de novembro de 12

Arduino

Programao em alto nvel


para controlar um rob

Baixo custo (US$ 30)

quinta-feira, 1 de novembro de 12

Arduino

Programao em alto nvel


para controlar um rob

Baixo custo (US$ 30)


Programas ficam salvos na
memria Flash do Arduino

quinta-feira, 1 de novembro de 12

Arduino

Programao em alto nvel


para controlar um rob

Baixo custo (US$ 30)

Enorme compatibilidade
com sensores, mdulos e
motores

Programas ficam salvos na


memria Flash do Arduino

quinta-feira, 1 de novembro de 12

Lgica Nebulosa + Arduino

quinta-feira, 1 de novembro de 12

10

Lgica Nebulosa + Arduino


Rob real simples, autnomo, capaz de
desviar de obstculos (Mariam)

quinta-feira, 1 de novembro de 12

10

Lgica Nebulosa + Arduino


Rob real simples, autnomo, capaz de
desviar de obstculos (Mariam)

Problema: como embarcar um sistema

nebuloso em uma plataforma autnoma,


como o Arduino?

quinta-feira, 1 de novembro de 12

10

Um dos robs utilizados no LabIC

quinta-feira, 1 de novembro de 12

11

Objetivo

quinta-feira, 1 de novembro de 12

12

Objetivo
Criar uma biblioteca capaz de levar um

sistema nebuloso para de um


microcontrolador, programvel em C/C++

quinta-feira, 1 de novembro de 12

13

Objetivo
Criar uma biblioteca capaz de levar um

sistema nebuloso para de um


microcontrolador, programvel em C/C++

Biblioteca LabicFuzzyC!

quinta-feira, 1 de novembro de 12

13

FIS - Fuzzy Inference


System

quinta-feira, 1 de novembro de 12

14

Fuzzy Toolbox (MATLAB)


quinta-feira, 1 de novembro de 12

15

Fuzzy Toolbox (MATLAB)


quinta-feira, 1 de novembro de 12

16

O arquivo .FIS
[System]
Name='caminhao'
Type='mamdani'
Version=2.0
NumInputs=2
NumOutputs=1
NumRules=35
AndMethod='min'
OrMethod='max'
ImpMethod='min'
AggMethod='max'
DefuzzMethod='centroid'
[Input1]
Name='Posicao_c'
Range=[0 100]
NumMFs=5
MF1='LE':'trapmf',[0 0 10 35]
MF2='LC':'trimf',[30 40 50]
MF3='CE':'trimf',[45 50 55]
MF4='RC':'trimf',[50 60 70]
MF5='RI':'trapmf',[65 90 100 100]
[Input2]
Name='Angulo_c'

quinta-feira, 1 de novembro de 12

Range=[-105 285]
NumMFs=7
MF1='RB':'trimf',[-105 -45 15]
MF2='RU':'trimf',[-15 30 60]
MF3='RV':'trimf',[45 67 90]
MF4='VE':'trimf',[75 90 105]
MF5='LV':'trimf',[90 112 135]
MF6='LU':'trimf',[120 150 195]
MF7='LB':'trimf',[165 225 285]
[Output1]
Name='Angulo_v'
Range=[-30 30]
NumMFs=7
MF1='NB':'trimf',[-30 -30 -15]
MF2='NM':'trimf',[-25 -15 -5]
MF3='NS':'trimf',[-10 -5 0]
MF4='ZE':'trimf',[-5 0 5]
MF5='PS':'trimf',[0 5 10]
MF6='PM':'trimf',[5 15 25]
MF7='PB':'trimf',[15 30 30]
[Rules]
1 1, 5 (1) : 1
1 2, 4 (1) : 1

17

Do MATLAB para C

quinta-feira, 1 de novembro de 12

18

FIS Parser
quinta-feira, 1 de novembro de 12

19

Integrao com o
Arduino

quinta-feira, 1 de novembro de 12

20

IDE do Arduino
quinta-feira, 1 de novembro de 12

21

Dificuldades

quinta-feira, 1 de novembro de 12

22

Dificuldades
Vrias configuraes de sistemas nebulosos

quinta-feira, 1 de novembro de 12

23

Dificuldades
Vrias configuraes de sistemas nebulosos
Hardware limitado do Arduino

quinta-feira, 1 de novembro de 12

23

Dificuldades
Vrias configuraes de sistemas nebulosos
Hardware limitado do Arduino
Arduino Uno: 2 KB SRAM

quinta-feira, 1 de novembro de 12

23

Dificuldades
Vrias configuraes de sistemas nebulosos
Hardware limitado do Arduino
Arduino Uno: 2 KB SRAM
Arduino Mega: 8 KB SRAM

quinta-feira, 1 de novembro de 12

23

Dificuldades
Vrias configuraes de sistemas nebulosos
Hardware limitado do Arduino
Arduino Uno: 2 KB SRAM
Arduino Mega: 8 KB SRAM
Repensar tipos das variveis para
economizar uso da RAM

quinta-feira, 1 de novembro de 12

23

Resultados

quinta-feira, 1 de novembro de 12

24

Resultados

Resultados com baixssima margem de erro


quando comparados aos do MATLAB

Primeira verso da biblioteca feita em C sob


medida para um sistema especfico

Segunda verso totalmente reescrita em C++


para funcionar com qualquer sistema

ltima verso compilada ocupa pouco mais


de 5 KB no Arduino

quinta-feira, 1 de novembro de 12

25

Resultados
Sistema

Tipo

Amostras

Desvio
padro

caminhao

Anfis

390

0,00003

0,00006%

caminhao

Mamdani

390

0,723

1,2%

robo

Mamdani

1.170

0,928

1,5%

Mamdani

8.748

0,540

0,9%

(15 regras)
(35 regras)
(35 regras)

manual

(200 regras)

Margem
de erro

* Desvio padro e margem de erro calculados em relao aos resultados obtidos pela funo evalfis() do MATLAB.
** Margem de erro = (desvio padro)/(intervalo da varivel)

quinta-feira, 1 de novembro de 12

26

Resultados
Sistema

Tipo

Amostras

Desvio
padro

caminhao

Anfis

390

0,00003

0,00006%

caminhao

Mamdani

390

0,723

1,2%

robo

Mamdani

1.170

0,928

1,5%

Mamdani

8.748

0,540

0,9%

(15 regras)
(35 regras)
(35 regras)

manual

(200 regras)

Margem
de erro

* Desvio padro e margem de erro calculados em relao aos resultados obtidos pela funo evalfis() do MATLAB.
** Margem de erro = (desvio padro)/(intervalo da varivel)

quinta-feira, 1 de novembro de 12

26

Resultados
Sistema

Tipo

Amostras

Desvio
padro

caminhao

Anfis

390

0,00003

0,00006%

caminhao

Mamdani

390

0,723

1,2%

robo

Mamdani

1.170

0,928

1,5%

Mamdani

8.748

0,540

0,9%

(15 regras)
(35 regras)
(35 regras)

manual

(200 regras)

Margem
de erro

* Desvio padro e margem de erro calculados em relao aos resultados obtidos pela funo evalfis() do MATLAB.
** Margem de erro = (desvio padro)/(intervalo da varivel)

quinta-feira, 1 de novembro de 12

26

Resultados
Sistema

Tipo

Amostras

Desvio
padro

caminhao

Anfis

390

0,00003

0,00006%

caminhao

Mamdani

390

0,723

1,2%

robo

Mamdani

1.170

0,928

1,5%

Mamdani

8.748

0,540

0,9%

(15 regras)
(35 regras)
(35 regras)

manual

(200 regras)

Margem
de erro

* Desvio padro e margem de erro calculados em relao aos resultados obtidos pela funo evalfis() do MATLAB.
** Margem de erro = (desvio padro)/(intervalo da varivel)

quinta-feira, 1 de novembro de 12

26

Resultados

Open-source e em breve no site do LabIC!

quinta-feira, 1 de novembro de 12

27

Referncias

John Yen, Reza Langari, Fuzzy Logic: Intelligence, Control and


Information, Prentice Hall, 1999, ISBN 0-13525817-0

H. T. Nguyen, E. A. Walker, A First Course in Fuzzy Logic, Chapman &


Hall/CRC, 2000

Thimoty Ross, Fuzzy Logic with Engineering Applications, J. Wiley,


3rd Edition, 2010

MOTA, T.C., Anlise e Proposta de Controladores para


Navegao Autnoma de um Rob Inteligente. 2010. 131p.
Dissertao (Mestrado em Informtica) Programa de Ps-Graduao em
Informtica, UFRJ, Rio de Janeiro, RJ, Brasil

Site oficial do Arduino - http://arduino.cc

quinta-feira, 1 de novembro de 12

28

Obrigado!

Laboratrio de Inteligncia Computacional


Ncleo de Computao Eletrnica - UFRJ
www.labic.nce.ufrj.br

quinta-feira, 1 de novembro de 12

29

You might also like