Fuzzy_Arduino

July 28, 2019 | Author: Vinicios Ferraz | Category: Lógica Difusa, Áreas de Ciência da Computação, Informática, Tecnologia, Hardware
Share Embed Donate


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

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF