在Drake文档https://drake.mit.edu/doxygen_cxx/group__system__scalar__conversion.html中给出的示例中,我们能够获取关于状态的Autodiff导数(特别是本例中的θ)。有没有一种简单的方法来求时间的导数?我现在的想法是将时间附加到get_mutable_continuous_state_vector()的状态向量中,但这似乎有点老生常谈?
发布于 2021-06-17 19:28:33
您可以将时间变量设置为在导数中具有1。例如。
auto autodiff_plant = System<double>::ToAutoDiffXd(*plant);
auto autodiff_context = autodiff_plant->CreateDefaultContext();
autodiff_context->SetTimeStateAndParametersFrom(*context);
autodiff_plant->FixInputPortsFrom(*plant, *context, autodiff_context.get());
// Differentiate with respect to theta by setting dtheta/dtheta = 1.0.
constexpr int kNumDerivatives = 1;
autodiff_context->SetTime(initializeAutoDiffXd(initial_time));然后,使用该上下文的计算输出将具有关于时间的导数。
https://stackoverflow.com/questions/68012280
复制相似问题