Fuzzy_Arduino
Short Description
Lógica Fuzzy, Arduino...
Description
Controlador de Lógica Nebulosa para implementação em robôs inteligentes utilizando Ardui Arduino no Mário Alberto Cecchi Raduan [UFRJ/PIBIC [UFRJ /PIBIC - Ago. 2011 a Jul. 2012] Orientador Orienta dor:: Adria Adriano no Joaquim de Oliveira Cruz, PhD
Controlador de Lógica Nebulosa para Controlador implementação em robôs inteligentes utilizando Arduino •
Motivação
•
Objetivo
•
FIS - Fuzzy Inference System
•
Do MATLAB MATLAB para C
•
Integração com Arduino Arduino
•
Dificuldades
•
Resultados
Motivação
Lógica Nebulosa
Lógica Nebulosa •
Permite criarmos controladores baseados nas observações humanas
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ãoquantificá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.)”
Exemplo de uma variável nebulosa representando a temperatura de um ambiente
Funcionamento de um sistema nebuloso
Arduino
Arduino •
Programação em alto nível para controlar um robô
Arduino •
•
Programação em alto nível para controlar um robô Baixo custo (US$ 30)
Arduino •
•
•
Programação em alto nível para controlar um robô Baixo custo (US$ 30) Programas ficam salvos na memória Flash do Arduino
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
Lógica Nebulosa + Arduino
Lógica Nebulosa + Arduino •
Robô real simples, autônomo, capaz de desviar de obstáculos (Mariam)
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?
Um dos robôs utilizados no LabIC
Objetivo
Objetivo •
Criar uma biblioteca capaz de levar um sistema nebuloso para de um microcontrolador, programável em C/C++
Objetivo •
•
Criar uma biblioteca capaz de levar um sistema nebuloso para de um microcontrolador, programável em C/C++ Biblioteca LabicFuzzyC!
FIS - Fuzzy Inference System
Fuzzy Toolbox (MATLAB)
Fuzzy Toolbox (MATLAB)
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'
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
Do MATLAB para C
FIS Parser
Integração com o Arduino
IDE do Arduino
Dificuldades
Dificuldades •
Várias configurações de sistemas nebulosos
Dificuldades •
Várias configurações de sistemas nebulosos
•
Hardware limitado do Arduino
Dificuldades •
Várias configurações de sistemas nebulosos
•
Hardware limitado do Arduino •
Arduino Uno: 2 KB SRAM
Dificuldades •
Várias configurações de sistemas nebulosos
•
Hardware limitado do Arduino •
Arduino Uno: 2 KB SRAM
•
Arduino Mega: 8 KB SRAM
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
Resultados
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
Resultados Sistema
Tipo
Amostras
Desvio padrão
caminhao
Anfis
390
0,00003
(15 regras)
Margem de erro 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)
Resultados Sistema
Tipo
Amostras
Desvio padrão
caminhao
Anfis
390
0,00003
0,00006%
390
0,723
1,2%
(15 regras)
caminhao Mamdani (35 regras)
Margem de erro
* 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)
Resultados Sistema
Tipo
Amostras
Desvio padrão
caminhao
Anfis
390
0,00003
0,00006%
390
0,723
1,2%
1.170
0,928
1,5%
(15 regras)
caminhao Mamdani (35 regras) robo (35 regras)
Mamdani
Margem de erro
* 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)
Resultados Sistema
Tipo
Amostras
Desvio padrão
caminhao
Anfis
390
0,00003
0,00006%
390
0,723
1,2%
Mamdani
1.170
0,928
1,5%
Mamdani
8.748
0,540
0,9%
(15 regras)
caminhao Mamdani (35 regras) robo (35 regras)
manual (200 regras)
Margem de erro
* 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)
Resultados
•
Open-source e em breve no site do LabIC!
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
View more...
Comments