Fuzzy_Arduino

43
7/23/2019 Fuzzy_Arduino http://slidepdf.com/reader/full/fuzzyarduino 1/43 Controlador de Lógica Nebulosa para implementação em robôs inteligentes utilizando Arduino Mário Alberto Cecchi Raduan [UFRJ/PIBIC - Ago. 2011 a Jul. 2012] Orientador: Adriano Joaquim de Oliveira Cruz, PhD 1 quinta-feira, 1 de novembro de 12

Transcript of Fuzzy_Arduino

Page 1: Fuzzy_Arduino

7/23/2019 Fuzzy_Arduino

http://slidepdf.com/reader/full/fuzzyarduino 1/43

Controlador de LógicaNebulosa para implementação

em robôs inteligentes

utilizando ArduinoMário Alberto Cecchi Raduan

[UFRJ/PIBIC - Ago. 2011 a Jul. 2012]Orientador: Adriano Joaquim de Oliveira Cruz, PhD

1quinta-feira, 1 de novembro de 12

Page 2: Fuzzy_Arduino

7/23/2019 Fuzzy_Arduino

http://slidepdf.com/reader/full/fuzzyarduino 2/43

Controlador de Lógica Nebulosa paraimplementação em robôs inteligentes

utilizando Arduino

• Motivação

• Objetivo

• FIS - Fuzzy Inference System

• Do MATLAB para C

• Integração com Arduino• Dificuldades

• Resultados

2quinta-feira, 1 de novembro de 12

Page 3: Fuzzy_Arduino

7/23/2019 Fuzzy_Arduino

http://slidepdf.com/reader/full/fuzzyarduino 3/43

Motivação

3quinta-feira, 1 de novembro de 12

Page 4: Fuzzy_Arduino

7/23/2019 Fuzzy_Arduino

http://slidepdf.com/reader/full/fuzzyarduino 4/43

Lógica Nebulosa

4quinta-feira, 1 de novembro de 12

Page 5: Fuzzy_Arduino

7/23/2019 Fuzzy_Arduino

http://slidepdf.com/reader/full/fuzzyarduino 5/43

Lógica Nebulosa

• Permite criarmos controladores baseadosnas observações humanas

5quinta-feira, 1 de novembro de 12

Page 6: Fuzzy_Arduino

7/23/2019 Fuzzy_Arduino

http://slidepdf.com/reader/full/fuzzyarduino 6/43

Lógica Nebulosa

• Permite criarmos controladores baseadosnas observações humanas

• “As implementações da lógica difusa permitem que estadosindeterminados possam ser tratados por dispositivos decontrole. Desse modo, é possível avaliar conceitos não-quantificáveis. Casos práticos: avaliar a temperatura (quente,morno, médio...), o sentimento de felicidade(radiante, feliz,apático, triste...), a veracidade de um argumento(corretíssimo, correto, contra-argumentativo, incoerente,falso, totalmente errôneo etc.)”

5quinta-feira, 1 de novembro de 12

Page 7: Fuzzy_Arduino

7/23/2019 Fuzzy_Arduino

http://slidepdf.com/reader/full/fuzzyarduino 7/43

Exemplo de uma variável nebulosarepresentando a temperatura de um

ambiente

6quinta-feira, 1 de novembro de 12

Page 8: Fuzzy_Arduino

7/23/2019 Fuzzy_Arduino

http://slidepdf.com/reader/full/fuzzyarduino 8/43

Funcionamento de um sistema nebuloso

7quinta-feira, 1 de novembro de 12

Page 9: Fuzzy_Arduino

7/23/2019 Fuzzy_Arduino

http://slidepdf.com/reader/full/fuzzyarduino 9/43

Arduino

8quinta-feira, 1 de novembro de 12

Page 10: Fuzzy_Arduino

7/23/2019 Fuzzy_Arduino

http://slidepdf.com/reader/full/fuzzyarduino 10/43

Arduino

• Programação em alto nívelpara controlar um robô

9quinta-feira, 1 de novembro de 12

Page 11: Fuzzy_Arduino

7/23/2019 Fuzzy_Arduino

http://slidepdf.com/reader/full/fuzzyarduino 11/43

Arduino

• Programação em alto nívelpara controlar um robô

• Baixo custo (US$ 30)

9quinta-feira, 1 de novembro de 12

Page 12: Fuzzy_Arduino

7/23/2019 Fuzzy_Arduino

http://slidepdf.com/reader/full/fuzzyarduino 12/43

Arduino

• Programação em alto nívelpara controlar um robô

• Baixo custo (US$ 30)

• Programas ficam salvos namemória Flash do Arduino

9quinta-feira, 1 de novembro de 12

Page 13: Fuzzy_Arduino

7/23/2019 Fuzzy_Arduino

http://slidepdf.com/reader/full/fuzzyarduino 13/43

Arduino

• Programação em alto nívelpara controlar um robô

• Baixo custo (US$ 30)

• Programas ficam salvos namemória Flash do Arduino

• Enorme compatibilidadecom sensores, módulos emotores

9quinta-feira, 1 de novembro de 12

Page 14: Fuzzy_Arduino

7/23/2019 Fuzzy_Arduino

http://slidepdf.com/reader/full/fuzzyarduino 14/43

Lógica Nebulosa + Arduino

10quinta-feira, 1 de novembro de 12

Page 15: Fuzzy_Arduino

7/23/2019 Fuzzy_Arduino

http://slidepdf.com/reader/full/fuzzyarduino 15/43

Lógica Nebulosa + Arduino

• Robô real simples, autônomo, capaz dedesviar de obstáculos (Mariam)

10quinta-feira, 1 de novembro de 12

Page 16: Fuzzy_Arduino

7/23/2019 Fuzzy_Arduino

http://slidepdf.com/reader/full/fuzzyarduino 16/43

Lógica Nebulosa + Arduino

• Robô real simples, autônomo, capaz dedesviar de obstáculos (Mariam)

• Problema: como embarcar um sistemanebuloso em uma plataforma autônoma,

como o Arduino?

10quinta-feira, 1 de novembro de 12

Page 17: Fuzzy_Arduino

7/23/2019 Fuzzy_Arduino

http://slidepdf.com/reader/full/fuzzyarduino 17/43

Um dos robôs utilizados no LabIC

11quinta-feira, 1 de novembro de 12

Page 18: Fuzzy_Arduino

7/23/2019 Fuzzy_Arduino

http://slidepdf.com/reader/full/fuzzyarduino 18/43

Objetivo

12quinta-feira, 1 de novembro de 12

Page 19: Fuzzy_Arduino

7/23/2019 Fuzzy_Arduino

http://slidepdf.com/reader/full/fuzzyarduino 19/43

Objetivo

• Criar uma biblioteca capaz de levar umsistema nebuloso para de ummicrocontrolador, programável em C/C++

13quinta-feira, 1 de novembro de 12

Page 20: Fuzzy_Arduino

7/23/2019 Fuzzy_Arduino

http://slidepdf.com/reader/full/fuzzyarduino 20/43

Objetivo

• Criar uma biblioteca capaz de levar umsistema nebuloso para de ummicrocontrolador, programável em C/C++

•Biblioteca LabicFuzzyC!

13quinta-feira, 1 de novembro de 12

Page 21: Fuzzy_Arduino

7/23/2019 Fuzzy_Arduino

http://slidepdf.com/reader/full/fuzzyarduino 21/43

FIS - Fuzzy InferenceSystem

14quinta-feira, 1 de novembro de 12

Page 22: Fuzzy_Arduino

7/23/2019 Fuzzy_Arduino

http://slidepdf.com/reader/full/fuzzyarduino 22/43

Fuzzy Toolbox (MATLAB)15quinta-feira, 1 de novembro de 12

Page 23: Fuzzy_Arduino

7/23/2019 Fuzzy_Arduino

http://slidepdf.com/reader/full/fuzzyarduino 23/43

Fuzzy Toolbox (MATLAB)16quinta-feira, 1 de novembro de 12

Page 24: Fuzzy_Arduino

7/23/2019 Fuzzy_Arduino

http://slidepdf.com/reader/full/fuzzyarduino 24/43

O arquivo .FIS[System]

Name='caminhao'Type='mamdani'

Version=2.0NumInputs=2

NumOutputs=1NumRules=35

AndMethod='min'OrMethod='max'ImpMethod='min'AggMethod='max'

DefuzzMethod='centroid'

[Input1]Name='Posicao_c'

Range=[0 100]

NumMFs=5MF1='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'

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=7MF1='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) : 11 2, 4 (1) : 1

17quinta-feira, 1 de novembro de 12

Page 25: Fuzzy_Arduino

7/23/2019 Fuzzy_Arduino

http://slidepdf.com/reader/full/fuzzyarduino 25/43

Do MATLAB para C

18quinta-feira, 1 de novembro de 12

Page 26: Fuzzy_Arduino

7/23/2019 Fuzzy_Arduino

http://slidepdf.com/reader/full/fuzzyarduino 26/43

FIS Parser19quinta-feira, 1 de novembro de 12

Page 27: Fuzzy_Arduino

7/23/2019 Fuzzy_Arduino

http://slidepdf.com/reader/full/fuzzyarduino 27/43

Integração com oArduino

20quinta-feira, 1 de novembro de 12

Page 28: Fuzzy_Arduino

7/23/2019 Fuzzy_Arduino

http://slidepdf.com/reader/full/fuzzyarduino 28/43

IDE do Arduino

21quinta-feira, 1 de novembro de 12

Page 29: Fuzzy_Arduino

7/23/2019 Fuzzy_Arduino

http://slidepdf.com/reader/full/fuzzyarduino 29/43

Dificuldades

22quinta-feira, 1 de novembro de 12

Page 30: Fuzzy_Arduino

7/23/2019 Fuzzy_Arduino

http://slidepdf.com/reader/full/fuzzyarduino 30/43

Dificuldades

• Várias configurações de sistemas nebulosos

23quinta-feira, 1 de novembro de 12

Page 31: Fuzzy_Arduino

7/23/2019 Fuzzy_Arduino

http://slidepdf.com/reader/full/fuzzyarduino 31/43

Dificuldades

• Várias configurações de sistemas nebulosos

•Hardware limitado do Arduino

23quinta-feira, 1 de novembro de 12

Page 32: Fuzzy_Arduino

7/23/2019 Fuzzy_Arduino

http://slidepdf.com/reader/full/fuzzyarduino 32/43

Dificuldades

• Várias configurações de sistemas nebulosos

•Hardware limitado do Arduino• Arduino Uno: 2 KB SRAM

23quinta-feira, 1 de novembro de 12

Page 33: Fuzzy_Arduino

7/23/2019 Fuzzy_Arduino

http://slidepdf.com/reader/full/fuzzyarduino 33/43

Dificuldades

• Várias configurações de sistemas nebulosos

•Hardware limitado do Arduino• Arduino Uno: 2 KB SRAM

• Arduino Mega: 8 KB SRAM

23quinta-feira, 1 de novembro de 12

Page 34: Fuzzy_Arduino

7/23/2019 Fuzzy_Arduino

http://slidepdf.com/reader/full/fuzzyarduino 34/43

Dificuldades

• Várias configurações de sistemas nebulosos

•Hardware limitado do Arduino• Arduino Uno: 2 KB SRAM

• Arduino Mega: 8 KB SRAM

• Repensar tipos das variáveis paraeconomizar uso da RAM

23quinta-feira, 1 de novembro de 12

Page 35: Fuzzy_Arduino

7/23/2019 Fuzzy_Arduino

http://slidepdf.com/reader/full/fuzzyarduino 35/43

Resultados

24quinta-feira, 1 de novembro de 12

Page 36: Fuzzy_Arduino

7/23/2019 Fuzzy_Arduino

http://slidepdf.com/reader/full/fuzzyarduino 36/43

Resultados

• Resultados com baixíssima margem de erroquando comparados aos do MATLAB

• Primeira versão da biblioteca feita em C sobmedida para um sistema específico

• Segunda versão totalmente reescrita em C++

para funcionar com qualquer sistema• Última versão compilada ocupa pouco mais

de 5 KB no Arduino

25quinta-feira, 1 de novembro de 12

Page 37: Fuzzy_Arduino

7/23/2019 Fuzzy_Arduino

http://slidepdf.com/reader/full/fuzzyarduino 37/43

Resultados

Sistema Tipo Amostras Desviopadrão

Margemde erro

caminhao(15 regras) Anfis 390 0,00003 0,00006%

 

* Desvio padrão e margem de erro calculados em relação aos resultados obtidos pela função evalfis() do MATLAB.** Margem de erro = (desvio padrão)/(intervalo da variável)

26quinta-feira, 1 de novembro de 12

Page 38: Fuzzy_Arduino

7/23/2019 Fuzzy_Arduino

http://slidepdf.com/reader/full/fuzzyarduino 38/43

Resultados

Sistema Tipo Amostras Desviopadrão

Margemde erro

caminhao(15 regras) Anfis 390 0,00003 0,00006%

caminhao(35 regras)

Mamdani 390 0,723 1,2%

 

* Desvio padrão e margem de erro calculados em relação aos resultados obtidos pela função evalfis() do MATLAB.** Margem de erro = (desvio padrão)/(intervalo da variável)

26quinta-feira, 1 de novembro de 12

Page 39: Fuzzy_Arduino

7/23/2019 Fuzzy_Arduino

http://slidepdf.com/reader/full/fuzzyarduino 39/43

Resultados

Sistema Tipo Amostras Desviopadrão

Margemde erro

caminhao(15 regras) Anfis 390 0,00003 0,00006%caminhao

(35 regras)Mamdani 390 0,723 1,2%

robo(35 regras) Mamdani 1.170 0,928 1,5%

 

* Desvio padrão e margem de erro calculados em relação aos resultados obtidos pela função evalfis() do MATLAB.** Margem de erro = (desvio padrão)/(intervalo da variável)

26quinta-feira, 1 de novembro de 12

Page 40: Fuzzy_Arduino

7/23/2019 Fuzzy_Arduino

http://slidepdf.com/reader/full/fuzzyarduino 40/43

Resultados

Sistema Tipo Amostras Desviopadrão

Margemde erro

caminhao(15 regras) Anfis 390 0,00003 0,00006%caminhao

(35 regras)Mamdani 390 0,723 1,2%

robo(35 regras) Mamdani 1.170 0,928 1,5%manual

(200 regras)Mamdani 8.748 0,540 0,9%

* Desvio padrão e margem de erro calculados em relação aos resultados obtidos pela função evalfis() do MATLAB.** Margem de erro = (desvio padrão)/(intervalo da variável)

26quinta-feira, 1 de novembro de 12

Page 41: Fuzzy_Arduino

7/23/2019 Fuzzy_Arduino

http://slidepdf.com/reader/full/fuzzyarduino 41/43

Resultados

• Open-source e em breve no site do LabIC!

27quinta-feira, 1 de novembro de 12

Page 42: Fuzzy_Arduino

7/23/2019 Fuzzy_Arduino

http://slidepdf.com/reader/full/fuzzyarduino 42/43

Referências

•  John Yen, Reza Langari, Fuzzy Logic: Intelligence, Control andInformation, 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., Análise e Proposta de Controladores paraNavegação Autônoma de um Robô Inteligente. 2010. 131p.

Dissertação (Mestrado em Informática) — Programa de Pós-Graduação emInformática, UFRJ, Rio de Janeiro, RJ, Brasil

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

28quinta-feira, 1 de novembro de 12

Page 43: Fuzzy_Arduino

7/23/2019 Fuzzy_Arduino

http://slidepdf.com/reader/full/fuzzyarduino 43/43

Obrigado!