2009-11-23 4 views
3

Я пытаюсь реализовать функцию членства в нечеткой логике в C для проекта роботизированной хобби, но я не совсем уверен, как начать.Функция членства в нечеткой логике в C

У меня есть данные об объектах вблизи точки, такие как расстояние или какие направления ясны/затруднены, и я хочу сопоставить, насколько сильно эти входы относятся к наборам, как очень близко, близко, далеко, очень далеко. У кого-нибудь есть подсказка о том, как начать? Благодарю.

ответ

5

Отказ от ответственности: Я никогда не реализовывал нечеткий контроллер (я только когда-либо использовал PI или PID в реальной жизни), а класс управления был 10 лет назад.

Вот презентация, демонстрирующая движение к цели с использованием расстояния и угла для входных сигналов и мощности в качестве выхода. FuzzyTech's Example positioning a crane
Это просто представляет собой тему и теорию, т. Е. Никакого кода.

Лучший источник, вероятно, является одной из групп робототехники например, Сиэтлское робототехническое общество fuzzy logic tutorial это техническое ... и длинное.

, если вы можете получить доступ технических журналов, то поиск Google Scholar для "fuzzy logic" "path planning" robotics

, если вы ищете некоторые идеи о том, как реализовать нечеткую логику, то, возможно, применению одного из микрочип производства поможет вам начать работу, например, Бумага микрочипа на Airflow control или servo control. Я знаю, что это не Arduino, но документы Microchips, как правило, очень четко представлены.

И, наконец, пример в C++, вероятно, более сложный, чем вы ищете. Free fuzzy logic library Удачи.

0

Я не эксперт с нечеткой логикой, но в соответствии с моим основным пониманием вы можете начать с определения того, какие расстояния будут составлять вблизи (скажем, 10 см) далеко (скажем, 1 м), тогда вы используете вероятности для заполнения диапазона в промежутке (так что 55 см может быть на 50% ближе, на 50% далеко). Затем вы делаете что-то подобное для своих других свойств и объединяете вероятности, связанные с каждым свойством, с большей вероятностью.

У вас есть хорошая ссылка для разработки нечетких элементов управления?

Я полагаю, вы могли бы начать here. Я думаю, что они, по крайней мере, описывают простые процедуры фаззификации и дезактивации.

+0

Членство в нечетких наборах не является вероятностью. – Predictor

0

Ребята из MakeProto создали автоматический генератор кода для Fuzzy Systems, который выводит код C из нечетких систем Matlab или вручную нечеткой системой.

Возможно стоит посмотреть.

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