用二阶系统模拟控制回路时出现段故障

时间:2019-12-17 18:57:15

标签: drake

从教程开始,我想尝试PID控制二阶线性系统。我在模拟闭环时遇到了段错误。我已经输入了代码over on Gist。它与动态系统教程中的示例基本相同。

这是可行的

  • 模拟仅包含二阶系统的图
  • 在PendulumPlant中投放用于二阶系统并使用控制器
  • 每步提高到simulator.AdvanceTo-这就是发生段错误的地方

我确定我这里缺少明显的东西。有经验的人有什么毛病吗?

2 个答案:

答案 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中使用,也可以等待下一个二进制文件(根据您的口味)。

感谢您将此问题引起我们的注意。