我有一个关于Drake中自动区分(AD)的问题。如果有人用python为系统编写DAE,Drake如何计算用于优化的导数?它在后端是否有AD包,或者它使用有限差分。另外,它如何实现四元数表示的积分和微分。非常感谢您提前抽出时间。
发布于 2021-05-20 01:54:33
德雷克如何计算优化的导数
Drake使用Eigen的自动微分类型(而不是有限差分法)。如果你熟悉深度学习研究,那么pytorch使用pytorch张量对象实现反向传播就是自动微分(AD)的一个例子。Eigen的自动扩散标量是AD的另一个例子,尽管不是通过反向传播(它只使用前向传递)。
顺便说一句,要在python中创建动态系统,可以参考本教程https://github.com/RobotLocomotion/drake/blob/master/tutorials/dynamical_systems.ipynb
还有,它如何实现四元数表示的积分和微分。
我想你的意思是四元数的时间积分。故事有两个部分:
听起来你要做基于梯度的优化。我们也有一些关于这个主题的交互式教程(你可以在jupyter notebook中交互式地运行这些教程)。您可以将https://github.com/RobotLocomotion/drake/blob/master/tutorials/mathematical_program.ipynb作为起点,将https://github.com/RobotLocomotion/drake/blob/master/tutorials/nonlinear_program.ipynb作为基于梯度的非线性优化的起点。在教程https://github.com/RobotLocomotion/drake/blob/master/tutorials/debug_mathematical_program.ipynb中,我们还提供了一些非线性优化的调试技巧。所有教程都位于drake/tutorials文件夹中,您可以在该文件夹中找到有关其他主题的教程。
https://stackoverflow.com/questions/67608144
复制相似问题