从教程开始,我想尝试PID控制二阶线性系统。我在模拟闭环时遇到了段错误。我已经输入了代码over on Gist。它与动态系统教程中的示例基本相同。
这是可行的
simulator.AdvanceTo
-这就是发生段错误的地方我确定我这里缺少明显的东西。有经验的人有什么毛病吗?
答案 0 :(得分:1)
感谢您举报。快速检查中我没有看到任何东西。我运行了您的代码(在Linux和Mac上都可以)并且能够复制。绝对不会出现无声的段错误,所以这是一个实际的问题。
我已将其升级为:https://github.com/RobotLocomotion/drake/issues/12497
FTR-我还打开了PR,以改进PidController文档。 https://github.com/robotlocomotion/drake/pull/12496
答案 1 :(得分:1)
我正在对此进行调查-我还使用提供的python在本地成功复制了该错误,但我也直接在C ++中复制了该错误。 [转载于现已失效的分支]
有什么具体的东西我会更新。
更新1:您在这两个系统中都有一个代数循环(PendulumPlant
不存在 的情况,因为其导数和输出均以其状态,而不是其输入)。在这种情况下,两个系统的输出都直接取决于它们的输入,所以,kablooie!在这种情况下,该错误正在弄清楚为什么没有立即向您传达此信息。
大概,您还想知道该程序的正确版本是没有的代数循环。敬请期待。
最终更新
patch已通过纠正潜在的错误。视您访问Drake的方式而定,它可以立即在master中使用,也可以等待下一个二进制文件(根据您的口味)。
感谢您将此问题引起我们的注意。