我正在尝试在 C 中为一个爱好机器人项目实现模糊逻辑隶属函数,但我不太确定如何开始。
我有关于某个点附近对象的输入,例如距离或哪些方向清晰/受阻,我想映射这些输入属于非常近、近、远、非常远等集合的强度。有人对如何开始有提示吗?谢谢。
我正在尝试在 C 中为一个爱好机器人项目实现模糊逻辑隶属函数,但我不太确定如何开始。
我有关于某个点附近对象的输入,例如距离或哪些方向清晰/受阻,我想映射这些输入属于非常近、近、远、非常远等集合的强度。有人对如何开始有提示吗?谢谢。
免责声明:我从未实现过模糊控制器(我只在现实生活中使用过 PI 或 PID),并且控制类是 10 年前的。
这是一个演示文稿,展示了使用距离和角度作为输入和功率作为输出向目标移动。FuzzyTech 的示例定位起重机
这只是介绍主题和理论,即没有代码。
最好的来源可能是机器人组之一,例如西雅图机器人协会模糊逻辑教程,它是技术性的……而且很长。
如果您可以访问技术期刊,请在 Google 学者中搜索“模糊逻辑”“路径规划”机器人
如果您正在寻找有关如何实现模糊逻辑的一些想法,那么来自微芯片制造商之一的应用说明可能会帮助您入门,例如 Microchip 关于气流控制 或伺服控制的论文。我知道这不是 Arduino,但 Microchips 的论文通常非常清楚地呈现。
最后是 c++ 中的一个示例,它可能比您正在寻找的更复杂。免费的模糊逻辑库 祝你好运。
我不是模糊逻辑专家,但根据我的基本理解,你可以先决定什么距离构成近(比如 10 厘米)远(比如 1m),然后你使用概率来填充两者之间的范围(所以55cm 可能是 50% 近,50% 远)。然后,您对其他属性执行类似操作,并将与每个属性关联的概率与更多概率结合起来。
您对设计模糊控制有很好的参考吗?
我想你可以从这里开始。我认为他们至少描述了简单的模糊化和去模糊化例程。
MakeProto 的人为 Fuzzy Systems 创建了一个自动代码生成器,它从 Matlab 模糊系统或手动定义的模糊系统输出 C 代码。
可能值得一看。
模糊推理系统可以用 C 和 C++ 实现。学习如何在 c 中构建模糊逻辑