我想为罗盘步态系统设置轨迹优化(如讲座视频所提示,使用控制权限可以扩大吸引力区域,从而实现稳定的行走)。
在尝试在罗盘步态上使用DirectTranscription
类时,我遇到了以下问题:
plant = CompassGait()
context = plant.CreateDefaultContext()
DirectTranscription(plant, context, 21, TimeStep(0.01))
导致以下错误:
An exception has occurred, use %tb to see the full traceback.
SystemExit: Failure at bazel-out/k8-opt/bin/systems/framework/_virtual_includes/context/drake/systems/framework/context.h:111 in num_total_states(): condition 'num_abstract_states() == 0' failed.
是否有解决此问题的快速方法?在查看指南针步态实现时,抽象状态仅用于可视化。原则上,我可以复制指南针步态实现并注释掉抽象状态。但是我正在使用colab笔记本环境,所以我不确定如何轻松地做到这一点。
谢谢!
DirectCollocation
实现有一个选项,assume_non_continuous_states_are_fixed
针对我在这里的无轮毂示例解决了这个问题:http://underactuated.mit.edu/contact.html
我将尽快将该功能推入DirectTranscription
。但是您应该可以立即使用DirectCollocation
。那行得通吗?