Pergunta

Estou tentando implementar uma função de associação lógica difusa em C para um projeto de robótica de hobby, mas não tenho certeza de como começar.

Eu tenho entradas sobre objetos perto de um ponto, como distância ou quais direções são claras/obstruídas, e quero mapear quão fortemente essas entradas pertencem a conjuntos como muito perto, perto, longe, muito longe. Alguém tem uma dica sobre como começar? Obrigado.

Foi útil?

Solução

Isenção de responsabilidade: Eu nunca implementei um controlador difuso (só usei Pi ou PID na vida real) e a aula de controle foi há 10 anos.

Aqui está uma apresentação demonstrando movendo -se em direção a um alvo usando distância e ângulo para entradas e energia como saída. Exemplo de Fuzzytech posicionando um guindaste
Isso apenas apresenta o tópico e a teoria, ou seja, nenhum código.

A melhor fonte é provavelmente um dos grupos de robótica, por exemplo, a Sociedade Robótica de Seattle Tutorial lógico difuso É técnico ... e longo.

Se você pode acessar periódicos técnicos, pesquise no Google Scholar para Robótica "Fuzzy Logic" "Planning Planning"

Se você está procurando algumas idéias sobre como implementar a lógica difusa, talvez uma nota de aplicativo de um dos fabricantes de microchips o que você iniciará, por exemplo, o artigo do Microchip no Controle do fluxo de ar ou Controle de servo. Eu sei que não é o Arduino, mas os documentos de microchips geralmente são apresentados com muita clareza.

E, finalmente, um exemplo em C ++ é provavelmente mais complexo do que você está procurando. Biblioteca lógica difusa grátisBoa sorte.

Outras dicas

Não sou especialista com lógica difusa, mas, de acordo com o meu entendimento básico, você pode começar decidindo quais distâncias constituiriam perto (digamos 10 cm) distantes (digamos 1m), então você usa probabilidades para preencher a faixa intermediária (então então 55cm podem estar 50% próximos, 50% distantes). Em seguida, você faz algo semelhante por suas outras propriedades e combina as probabilidades associadas a cada propriedade com mais probabilidades.

Você tem uma boa referência para projetar controles difusos?

Suponho que você poderia começar aqui. Eu acho que eles pelo menos descrevem rotinas simples de difamação e defuzzificação.

Os caras do MakeProto criaram um gerador de código automático para sistemas difusos que produzem código C da Matlab Fuzzy Systems ou por um sistema difuso definido à mão.

Pode valer a pena dar uma olhada.

http://makeproto.com/blog/?p=35

O sistema de inferência difusa pode ser implementado em C e C ++. Aprender Como enquadrar a lógica difusa em c

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top