controlador de lógica nebulosa para implementação … · utilizando arduino mário alberto...

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

Upload: vananh

Post on 26-Aug-2018

216 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Controlador de Lógica Nebulosa para implementação … · utilizando Arduino Mário Alberto Cecchi Raduan [UFRJ/PIBIC - Ago. 2011 a Jul. 2012] Orientador: Adriano Joaquim de Oliveira

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

1quinta-feira, 1 de novembro de 12

Page 2: Controlador de Lógica Nebulosa para implementação … · utilizando Arduino Mário Alberto Cecchi Raduan [UFRJ/PIBIC - Ago. 2011 a Jul. 2012] Orientador: Adriano Joaquim de Oliveira

Controlador de Lógica Nebulosa para implementaçã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: Controlador de Lógica Nebulosa para implementação … · utilizando Arduino Mário Alberto Cecchi Raduan [UFRJ/PIBIC - Ago. 2011 a Jul. 2012] Orientador: Adriano Joaquim de Oliveira

Motivação

3quinta-feira, 1 de novembro de 12

Page 4: Controlador de Lógica Nebulosa para implementação … · utilizando Arduino Mário Alberto Cecchi Raduan [UFRJ/PIBIC - Ago. 2011 a Jul. 2012] Orientador: Adriano Joaquim de Oliveira

Lógica Nebulosa

4quinta-feira, 1 de novembro de 12

Page 5: Controlador de Lógica Nebulosa para implementação … · utilizando Arduino Mário Alberto Cecchi Raduan [UFRJ/PIBIC - Ago. 2011 a Jul. 2012] Orientador: Adriano Joaquim de Oliveira

Lógica Nebulosa

• Permite criarmos controladores baseados nas observações humanas

5quinta-feira, 1 de novembro de 12

Page 6: Controlador de Lógica Nebulosa para implementação … · utilizando Arduino Mário Alberto Cecchi Raduan [UFRJ/PIBIC - Ago. 2011 a Jul. 2012] Orientador: Adriano Joaquim de Oliveira

Lógica Nebulosa

• Permite criarmos controladores baseados nas observações humanas

• “As implementações da lógica difusa permitem que estados indeterminados possam ser tratados por dispositivos de controle. 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: Controlador de Lógica Nebulosa para implementação … · utilizando Arduino Mário Alberto Cecchi Raduan [UFRJ/PIBIC - Ago. 2011 a Jul. 2012] Orientador: Adriano Joaquim de Oliveira

Exemplo de uma variável nebulosa representando a temperatura de um

ambiente

6quinta-feira, 1 de novembro de 12

Page 8: Controlador de Lógica Nebulosa para implementação … · utilizando Arduino Mário Alberto Cecchi Raduan [UFRJ/PIBIC - Ago. 2011 a Jul. 2012] Orientador: Adriano Joaquim de Oliveira

Funcionamento de um sistema nebuloso

7quinta-feira, 1 de novembro de 12

Page 9: Controlador de Lógica Nebulosa para implementação … · utilizando Arduino Mário Alberto Cecchi Raduan [UFRJ/PIBIC - Ago. 2011 a Jul. 2012] Orientador: Adriano Joaquim de Oliveira

Arduino

8quinta-feira, 1 de novembro de 12

Page 10: Controlador de Lógica Nebulosa para implementação … · utilizando Arduino Mário Alberto Cecchi Raduan [UFRJ/PIBIC - Ago. 2011 a Jul. 2012] Orientador: Adriano Joaquim de Oliveira

Arduino

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

9quinta-feira, 1 de novembro de 12

Page 11: Controlador de Lógica Nebulosa para implementação … · utilizando Arduino Mário Alberto Cecchi Raduan [UFRJ/PIBIC - Ago. 2011 a Jul. 2012] Orientador: Adriano Joaquim de Oliveira

Arduino

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

• Baixo custo (US$ 30)

9quinta-feira, 1 de novembro de 12

Page 12: Controlador de Lógica Nebulosa para implementação … · utilizando Arduino Mário Alberto Cecchi Raduan [UFRJ/PIBIC - Ago. 2011 a Jul. 2012] Orientador: Adriano Joaquim de Oliveira

Arduino

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

• Baixo custo (US$ 30)

• Programas ficam salvos na memória Flash do Arduino

9quinta-feira, 1 de novembro de 12

Page 13: Controlador de Lógica Nebulosa para implementação … · utilizando Arduino Mário Alberto Cecchi Raduan [UFRJ/PIBIC - Ago. 2011 a Jul. 2012] Orientador: Adriano Joaquim de Oliveira

Arduino

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

• Baixo custo (US$ 30)

• Programas ficam salvos na memória Flash do Arduino

• Enorme compatibilidade com sensores, módulos e motores

9quinta-feira, 1 de novembro de 12

Page 14: Controlador de Lógica Nebulosa para implementação … · utilizando Arduino Mário Alberto Cecchi Raduan [UFRJ/PIBIC - Ago. 2011 a Jul. 2012] Orientador: Adriano Joaquim de Oliveira

Lógica Nebulosa + Arduino

10quinta-feira, 1 de novembro de 12

Page 15: Controlador de Lógica Nebulosa para implementação … · utilizando Arduino Mário Alberto Cecchi Raduan [UFRJ/PIBIC - Ago. 2011 a Jul. 2012] Orientador: Adriano Joaquim de Oliveira

Lógica Nebulosa + Arduino

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

10quinta-feira, 1 de novembro de 12

Page 16: Controlador de Lógica Nebulosa para implementação … · utilizando Arduino Mário Alberto Cecchi Raduan [UFRJ/PIBIC - Ago. 2011 a Jul. 2012] Orientador: Adriano Joaquim de Oliveira

Lógica Nebulosa + Arduino

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

• Problema: como embarcar um sistema nebuloso em uma plataforma autônoma, como o Arduino?

10quinta-feira, 1 de novembro de 12

Page 17: Controlador de Lógica Nebulosa para implementação … · utilizando Arduino Mário Alberto Cecchi Raduan [UFRJ/PIBIC - Ago. 2011 a Jul. 2012] Orientador: Adriano Joaquim de Oliveira

Um dos robôs utilizados no LabIC

11quinta-feira, 1 de novembro de 12

Page 18: Controlador de Lógica Nebulosa para implementação … · utilizando Arduino Mário Alberto Cecchi Raduan [UFRJ/PIBIC - Ago. 2011 a Jul. 2012] Orientador: Adriano Joaquim de Oliveira

Objetivo

12quinta-feira, 1 de novembro de 12

Page 19: Controlador de Lógica Nebulosa para implementação … · utilizando Arduino Mário Alberto Cecchi Raduan [UFRJ/PIBIC - Ago. 2011 a Jul. 2012] Orientador: Adriano Joaquim de Oliveira

Objetivo

• Criar uma biblioteca capaz de levar um sistema nebuloso para de um microcontrolador, programável em C/C++

13quinta-feira, 1 de novembro de 12

Page 20: Controlador de Lógica Nebulosa para implementação … · utilizando Arduino Mário Alberto Cecchi Raduan [UFRJ/PIBIC - Ago. 2011 a Jul. 2012] Orientador: Adriano Joaquim de Oliveira

Objetivo

• Criar uma biblioteca capaz de levar um sistema nebuloso para de um microcontrolador, programável em C/C++

• Biblioteca LabicFuzzyC!

13quinta-feira, 1 de novembro de 12

Page 21: Controlador de Lógica Nebulosa para implementação … · utilizando Arduino Mário Alberto Cecchi Raduan [UFRJ/PIBIC - Ago. 2011 a Jul. 2012] Orientador: Adriano Joaquim de Oliveira

FIS - Fuzzy Inference System

14quinta-feira, 1 de novembro de 12

Page 22: Controlador de Lógica Nebulosa para implementação … · utilizando Arduino Mário Alberto Cecchi Raduan [UFRJ/PIBIC - Ago. 2011 a Jul. 2012] Orientador: Adriano Joaquim de Oliveira

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

Page 23: Controlador de Lógica Nebulosa para implementação … · utilizando Arduino Mário Alberto Cecchi Raduan [UFRJ/PIBIC - Ago. 2011 a Jul. 2012] Orientador: Adriano Joaquim de Oliveira

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

Page 24: Controlador de Lógica Nebulosa para implementação … · utilizando Arduino Mário Alberto Cecchi Raduan [UFRJ/PIBIC - Ago. 2011 a Jul. 2012] Orientador: Adriano Joaquim de Oliveira

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=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'

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: Controlador de Lógica Nebulosa para implementação … · utilizando Arduino Mário Alberto Cecchi Raduan [UFRJ/PIBIC - Ago. 2011 a Jul. 2012] Orientador: Adriano Joaquim de Oliveira

Do MATLAB para C

18quinta-feira, 1 de novembro de 12

Page 26: Controlador de Lógica Nebulosa para implementação … · utilizando Arduino Mário Alberto Cecchi Raduan [UFRJ/PIBIC - Ago. 2011 a Jul. 2012] Orientador: Adriano Joaquim de Oliveira

FIS Parser19quinta-feira, 1 de novembro de 12

Page 27: Controlador de Lógica Nebulosa para implementação … · utilizando Arduino Mário Alberto Cecchi Raduan [UFRJ/PIBIC - Ago. 2011 a Jul. 2012] Orientador: Adriano Joaquim de Oliveira

Integração com o Arduino

20quinta-feira, 1 de novembro de 12

Page 28: Controlador de Lógica Nebulosa para implementação … · utilizando Arduino Mário Alberto Cecchi Raduan [UFRJ/PIBIC - Ago. 2011 a Jul. 2012] Orientador: Adriano Joaquim de Oliveira

IDE do Arduino

21quinta-feira, 1 de novembro de 12

Page 29: Controlador de Lógica Nebulosa para implementação … · utilizando Arduino Mário Alberto Cecchi Raduan [UFRJ/PIBIC - Ago. 2011 a Jul. 2012] Orientador: Adriano Joaquim de Oliveira

Dificuldades

22quinta-feira, 1 de novembro de 12

Page 30: Controlador de Lógica Nebulosa para implementação … · utilizando Arduino Mário Alberto Cecchi Raduan [UFRJ/PIBIC - Ago. 2011 a Jul. 2012] Orientador: Adriano Joaquim de Oliveira

Dificuldades

• Várias configurações de sistemas nebulosos

23quinta-feira, 1 de novembro de 12

Page 31: Controlador de Lógica Nebulosa para implementação … · utilizando Arduino Mário Alberto Cecchi Raduan [UFRJ/PIBIC - Ago. 2011 a Jul. 2012] Orientador: Adriano Joaquim de Oliveira

Dificuldades

• Várias configurações de sistemas nebulosos

• Hardware limitado do Arduino

23quinta-feira, 1 de novembro de 12

Page 32: Controlador de Lógica Nebulosa para implementação … · utilizando Arduino Mário Alberto Cecchi Raduan [UFRJ/PIBIC - Ago. 2011 a Jul. 2012] Orientador: Adriano Joaquim de Oliveira

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: Controlador de Lógica Nebulosa para implementação … · utilizando Arduino Mário Alberto Cecchi Raduan [UFRJ/PIBIC - Ago. 2011 a Jul. 2012] Orientador: Adriano Joaquim de Oliveira

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: Controlador de Lógica Nebulosa para implementação … · utilizando Arduino Mário Alberto Cecchi Raduan [UFRJ/PIBIC - Ago. 2011 a Jul. 2012] Orientador: Adriano Joaquim de Oliveira

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 para economizar uso da RAM

23quinta-feira, 1 de novembro de 12

Page 35: Controlador de Lógica Nebulosa para implementação … · utilizando Arduino Mário Alberto Cecchi Raduan [UFRJ/PIBIC - Ago. 2011 a Jul. 2012] Orientador: Adriano Joaquim de Oliveira

Resultados

24quinta-feira, 1 de novembro de 12

Page 36: Controlador de Lógica Nebulosa para implementação … · utilizando Arduino Mário Alberto Cecchi Raduan [UFRJ/PIBIC - Ago. 2011 a Jul. 2012] Orientador: Adriano Joaquim de Oliveira

Resultados

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

• Primeira versão da biblioteca feita em C sob medida 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: Controlador de Lógica Nebulosa para implementação … · utilizando Arduino Mário Alberto Cecchi Raduan [UFRJ/PIBIC - Ago. 2011 a Jul. 2012] Orientador: Adriano Joaquim de Oliveira

Resultados

Sistema Tipo Amostras Desvio padrão

Margem de 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 38: Controlador de Lógica Nebulosa para implementação … · utilizando Arduino Mário Alberto Cecchi Raduan [UFRJ/PIBIC - Ago. 2011 a Jul. 2012] Orientador: Adriano Joaquim de Oliveira

Resultados

Sistema Tipo Amostras Desvio padrão

Margem de 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 39: Controlador de Lógica Nebulosa para implementação … · utilizando Arduino Mário Alberto Cecchi Raduan [UFRJ/PIBIC - Ago. 2011 a Jul. 2012] Orientador: Adriano Joaquim de Oliveira

Resultados

Sistema Tipo Amostras Desvio padrão

Margem de 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 40: Controlador de Lógica Nebulosa para implementação … · utilizando Arduino Mário Alberto Cecchi Raduan [UFRJ/PIBIC - Ago. 2011 a Jul. 2012] Orientador: Adriano Joaquim de Oliveira

Resultados

Sistema Tipo Amostras Desvio padrão

Margem de 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: Controlador de Lógica Nebulosa para implementação … · utilizando Arduino Mário Alberto Cecchi Raduan [UFRJ/PIBIC - Ago. 2011 a Jul. 2012] Orientador: Adriano Joaquim de Oliveira

Resultados

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

27quinta-feira, 1 de novembro de 12

Page 42: Controlador de Lógica Nebulosa para implementação … · utilizando Arduino Mário Alberto Cecchi Raduan [UFRJ/PIBIC - Ago. 2011 a Jul. 2012] Orientador: Adriano Joaquim de Oliveira

Referências

• 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., Análise e Proposta de Controladores para Navegação Autônoma de um Robô Inteligente. 2010. 131p. Dissertação (Mestrado em Informática) — Programa de Pós-Graduação em Informática, UFRJ, Rio de Janeiro, RJ, Brasil

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

28quinta-feira, 1 de novembro de 12

Page 43: Controlador de Lógica Nebulosa para implementação … · utilizando Arduino Mário Alberto Cecchi Raduan [UFRJ/PIBIC - Ago. 2011 a Jul. 2012] Orientador: Adriano Joaquim de Oliveira

Obrigado!

Laboratório de Inteligência ComputacionalNúcleo de Computação Eletrônica - UFRJ

www.labic.nce.ufrj.br

29quinta-feira, 1 de novembro de 12