Fuzzy_Arduino
-
Upload
vinicios-ferraz -
Category
Documents
-
view
216 -
download
0
Transcript of 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
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
7/23/2019 Fuzzy_Arduino
http://slidepdf.com/reader/full/fuzzyarduino 3/43
Motivação
3quinta-feira, 1 de novembro de 12
7/23/2019 Fuzzy_Arduino
http://slidepdf.com/reader/full/fuzzyarduino 4/43
Lógica Nebulosa
4quinta-feira, 1 de novembro de 12
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
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
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
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
7/23/2019 Fuzzy_Arduino
http://slidepdf.com/reader/full/fuzzyarduino 9/43
Arduino
8quinta-feira, 1 de novembro de 12
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
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
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
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
7/23/2019 Fuzzy_Arduino
http://slidepdf.com/reader/full/fuzzyarduino 14/43
Lógica Nebulosa + Arduino
10quinta-feira, 1 de novembro de 12
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
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
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
7/23/2019 Fuzzy_Arduino
http://slidepdf.com/reader/full/fuzzyarduino 18/43
Objetivo
12quinta-feira, 1 de novembro de 12
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
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
7/23/2019 Fuzzy_Arduino
http://slidepdf.com/reader/full/fuzzyarduino 21/43
FIS - Fuzzy InferenceSystem
14quinta-feira, 1 de novembro de 12
7/23/2019 Fuzzy_Arduino
http://slidepdf.com/reader/full/fuzzyarduino 22/43
Fuzzy Toolbox (MATLAB)15quinta-feira, 1 de novembro de 12
7/23/2019 Fuzzy_Arduino
http://slidepdf.com/reader/full/fuzzyarduino 23/43
Fuzzy Toolbox (MATLAB)16quinta-feira, 1 de novembro de 12
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
7/23/2019 Fuzzy_Arduino
http://slidepdf.com/reader/full/fuzzyarduino 25/43
Do MATLAB para C
18quinta-feira, 1 de novembro de 12
7/23/2019 Fuzzy_Arduino
http://slidepdf.com/reader/full/fuzzyarduino 26/43
FIS Parser19quinta-feira, 1 de novembro de 12
7/23/2019 Fuzzy_Arduino
http://slidepdf.com/reader/full/fuzzyarduino 27/43
Integração com oArduino
20quinta-feira, 1 de novembro de 12
7/23/2019 Fuzzy_Arduino
http://slidepdf.com/reader/full/fuzzyarduino 28/43
IDE do Arduino
21quinta-feira, 1 de novembro de 12
7/23/2019 Fuzzy_Arduino
http://slidepdf.com/reader/full/fuzzyarduino 29/43
Dificuldades
22quinta-feira, 1 de novembro de 12
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
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
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
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
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
7/23/2019 Fuzzy_Arduino
http://slidepdf.com/reader/full/fuzzyarduino 35/43
Resultados
24quinta-feira, 1 de novembro de 12
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
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
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
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
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
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
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
7/23/2019 Fuzzy_Arduino
http://slidepdf.com/reader/full/fuzzyarduino 43/43
Obrigado!