Drake 向车身立柱添加力?

Drake 向车身立柱添加力?,drake,Drake,我正在建立一个简单的模拟,我想要一个物体(一个盒子)在重力场中下降半秒钟,然后由于我施加在它上面的力而上升,这个力克服了重力 我尝试过使用三种方法来实现此强制,分别是使用AddInForce、AddInForceInWorld和AddForceElement。由于这是在模拟运行时调用的,AddForceElement按预期抛出了一个错误。然而,对于另外两个,没有抛出错误或警告,但箱子显然没有新的作用力作用于其上 我已经用num\u force\u elements()检查了一个新的force元素

我正在建立一个简单的模拟,我想要一个物体(一个盒子)在重力场中下降半秒钟,然后由于我施加在它上面的力而上升,这个力克服了重力

我尝试过使用三种方法来实现此强制,分别是使用
AddInForce
AddInForceInWorld
AddForceElement
。由于这是在模拟运行时调用的,
AddForceElement
按预期抛出了一个错误。然而,对于另外两个,没有抛出错误或警告,但箱子显然没有新的作用力作用于其上

我已经用
num\u force\u elements()
检查了一个新的force元素,但没有添加任何元素

以下是我为此次活动计时的循环:

while(当前时间0.5&&!强制){

std::cout快速提示:您需要的是一个始终存在的力元素,但它的力输出会随时间而变化。没有一个内置元素会以这种方式运行,因此您必须编写一个。

@Joaquin Giraldo

向模型添加外力的方法是使用输入力。Drake中的所有内容都是输入/输出端口。在这种情况下,必须使用
MultibodyPlant::get_applied_spatial_force_input_port()

查看文件
multibody/plant/test/external\u applied\u spatical\u force\u test.cc
了解如何执行此操作的示例。

gotcha!我将研究如何执行类似操作解决此问题-似乎需要预先完成对AddInfo的调用,对吗?当需要添加上下文时,这怎么可能?我不确定何时是是时候打电话了在这种情况下不需要强制元素。请使用一个看起来更简单的输入端口查看我的答案!