德雷克:搜索系统的不动点和 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
我在 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