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的调用,对吗?当需要添加上下文时,这怎么可能?我不确定何时是是时候打电话了在这种情况下不需要强制元素。请使用一个看起来更简单的输入端口查看我的答案!