controlador de lógica nebulosa para implementação … · utilizando arduino mário alberto...
Post on 26-Aug-2018
215 Views
Preview:
TRANSCRIPT
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
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
Motivação
3quinta-feira, 1 de novembro de 12
Lógica Nebulosa
4quinta-feira, 1 de novembro de 12
Lógica Nebulosa
• Permite criarmos controladores baseados nas observações humanas
5quinta-feira, 1 de novembro de 12
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
Exemplo de uma variável nebulosa representando a temperatura de um
ambiente
6quinta-feira, 1 de novembro de 12
Funcionamento de um sistema nebuloso
7quinta-feira, 1 de novembro de 12
Arduino
8quinta-feira, 1 de novembro de 12
Arduino
• Programação em alto nível para controlar um robô
9quinta-feira, 1 de novembro de 12
Arduino
• Programação em alto nível para controlar um robô
• Baixo custo (US$ 30)
9quinta-feira, 1 de novembro de 12
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
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
Lógica Nebulosa + Arduino
10quinta-feira, 1 de novembro de 12
Lógica Nebulosa + Arduino
• Robô real simples, autônomo, capaz de desviar de obstáculos (Mariam)
10quinta-feira, 1 de novembro de 12
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
Um dos robôs utilizados no LabIC
11quinta-feira, 1 de novembro de 12
Objetivo
12quinta-feira, 1 de novembro de 12
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
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
FIS - Fuzzy Inference System
14quinta-feira, 1 de novembro de 12
Fuzzy Toolbox (MATLAB)15quinta-feira, 1 de novembro de 12
Fuzzy Toolbox (MATLAB)16quinta-feira, 1 de novembro de 12
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
Do MATLAB para C
18quinta-feira, 1 de novembro de 12
FIS Parser19quinta-feira, 1 de novembro de 12
Integração com o Arduino
20quinta-feira, 1 de novembro de 12
IDE do Arduino
21quinta-feira, 1 de novembro de 12
Dificuldades
22quinta-feira, 1 de novembro de 12
Dificuldades
• Várias configurações de sistemas nebulosos
23quinta-feira, 1 de novembro de 12
Dificuldades
• Várias configurações de sistemas nebulosos
• Hardware limitado do Arduino
23quinta-feira, 1 de novembro de 12
Dificuldades
• Várias configurações de sistemas nebulosos
• Hardware limitado do Arduino
• Arduino Uno: 2 KB SRAM
23quinta-feira, 1 de novembro de 12
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
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
Resultados
24quinta-feira, 1 de novembro de 12
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
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
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
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
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
Resultados
• Open-source e em breve no site do LabIC!
27quinta-feira, 1 de novembro de 12
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
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
top related