Dou*_*ean 7 robotics haskell functional-programming state-machine control-theory
我正在为Haskell开发混合系统控制器.
FRP库(现在我正在使用netwire,但有几个好的和未来的很多有趣的研究)为问题的连续时间提供了一个很好的解决方案.使用信号名称,尺寸,首选单位等对它们进行扩充可以使您获得一个具有模块性,自我描述并且具有直接信任正确性的路径的系统.
我正在寻找为离散时间提供类似属性的信息,民间传说或论文.在某种意义上,问题更容易,状态机是经过充分研究和简单的.在其他方面,它更难,我将简要解释如何.
正确性显然是最重要的,谢天谢地,它也很简单.
自我描述更是一个问题.你不仅希望控制器处于正确的状态,而且能够告诉你它处于什么状态.它也是如何实现的.接下来可能会发生什么.因此,您可以将名称添加到所有内容中,并且它可以工作,但它与模块化有些冲突.您还希望能够从更简单的时间行为构建复杂的离散时间行为.但是当你问系统处于什么状态时,通常高级答案比低级答案更有趣(或者至少有趣).你怎么干净利落的呢?我尝试了一些天真的方法,并用几种不同的方式将自己包裹在意大利面中,但似乎必须有优雅的解决方案?
我自我描述的另一个问题是我想要一个自我描述条件的列表(通常比较:它是10秒?我在下一个航点的3英尺内吗?电池电量下降了吗?低于15%?等)可能会触发下一次状态转换.有一些棘手的问题,即使这里的理想语义是什么,因为看起来这些事件中的一些更好地"自下而上"处理(例如,你正在执行的任何低级步骤的预期终止条件)和一些"从顶部"(例如设备故障检测,地理围栏......).即使你放松了自我描述的目标,这也可能导致自己的意大利面.
除了诊断之外,这里准确的自我描述信息对抽象解释也非常有用,通过猜测哪些事件可能发生在未来时将系统状态投射到未来.许多事件条件导致相当简单的猜测(例如使用速度良好,燃料消耗率,计时器).其他更复杂,但可能仍然值得为某些应用开发预测(例如,运营商的预期订单,天气预报,移动感兴趣对象的预测轨道).很高兴找到一个不仅用名字来注释条件的设计,而且还有这种东西的函数.
有没有人有这方面的经验,他们愿意分享?