德雷克:搜索系统的不动点和 trim 点

drake: search for fixed points and trim points of a system

我在 drake 中有一个 LeafSystem,动态 \dot{x} = f(x,u) 用 DoCalcTimeDerivatives 编写。该系统的固定点和 trim 点并不容易找到。因此,我想象一个人需要写一个非线性优化问题来找到固定点:

找到x,u; s.t。 f(x,u)=0

找到x,u; 最小 f(x,u)^2

我想知道,我应该如何利用我已经在 LeafSystem 的 DoCalcTimeDerivatives 中编写的动力学,并编写一个非线性优化来搜索 x 和 u 以找到固定点和 trim 德雷克点数?德雷克中的一些现有示例将不胜感激!

写你的案例很简单(只是写一般案例稍微难一点……它在我的 TODO 列表上)。

假设您的工厂支持符号,那么查看轨迹优化会让您了解如何编写约束: https://github.com/RobotLocomotion/drake/blob/master/systems/trajectory_optimization/direct_transcription.cc#L212 (autodiff 版本就在下面):

fwiw,旧 matlab 版本的一般情况在这里: https://github.com/RobotLocomotion/drake/blob/last_sha_with_original_matlab/drake/matlab/solvers/FixedPointProgram.m