首页 > 解决方案 > drake:搜索系统的固定点和修剪点

问题描述

我在德雷克有一个 LeafSystem,动态 \dot{x} = f(x,u) 用 DoCalcTimeDerivatives 编写。该系统的固定点和修剪点并非易事。因此,我认为需要编写一个非线性优化问题来找到固定点:

找到 x, u; st f(x,u)=0

或者

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

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

标签: drake

解决方案


为您的案例编写起来很简单(对于一般情况,编写起来稍微困难一些……它在我的 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


推荐阅读