首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将Drake系统中的一些状态转换为输入

将Drake系统中的一些状态转换为输入
EN

Stack Overflow用户
提问于 2021-08-17 21:07:02
回答 1查看 38关注 0票数 0

考虑一个现有的Drake System (例如MultibodyPlant)。有没有办法将System封装在Diagram中,从而将内部System的一些状态转换为输入,即直接从外部Diagram的输入端口设置

其动机本质上是在模型决策上做出改变。例如,四旋翼的sometimes considered是将其角速率和集体推力作为输入,而不是集体推力和身体力矩(或类似地,单个转子命令)。

在更复杂的系统中,也许我可以假设我能够瞬时控制某些速度(例如,内部的、具有快速动力学特性的全驱动关节),但仍然希望对整个多体系统的动力学进行建模,以科里奥利项等形式说明当前速度的选择。

我所得到的实际上非常类似于Flat-Plate Glider Model中电梯的建模选择-但我希望避免手动实现LeafSystem,因为我的系统具有非平凡的多体动力学。

我的感觉是,这可能是不可能的,因为我不知道Diagram有任何方法来干扰System的内部动态,所以“删除”状态并将其提升为输入似乎是不可能的。但我想可能会有一些聪明的方法来做到这一点。

提前感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-08-22 10:53:17

我同意你的分析。最简单的答案是“否”--声明状态的系统不能被后期分解,以使该状态来自输入端口。但是对于你提到的具体例子,有一些可能性/相关的想法。

第一个是规定的运动约束的概念--例如,可以直接在MultibodyPlant中设置关节的位置/速度。不幸的是,我们还没有实现它,但这是一个合理的请求,我们偶尔会讨论一下(这里有一个例子:https://github.com/RobotLocomotion/drake/issues/14694)。

正如您所说,您可以在系统外部实现PD控制器,以达到所需的效果。这与我们在内部实现规定的运动约束的方式之间唯一的真正区别是,我们可以很好地选择增益,并直接通知求解器有关该约束的信息。

另一种可能性是实现一个“在”工厂内部工作并接受输入端口的force元素。这将允许您应用力来实现您的建模思想,即使是以通过actuation_input_port不可能实现的方式(例如,无法通过声明的执行器实现)。

你链接的滑翔机例子是一个很好的例子。在这种情况下,我非常担心有一个模型可以避免将电梯的速度声明为状态(因为我们的验证方法的复杂性与状态空间的维度成比例)。目前,这仍然需要编写一个定制的LeafSystem实现。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68824034

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档