问题描述
我用两个对象构建了一个 MBP,A(焊接到世界)和 B(未焊接)。 B 位于 A 之上。在模拟了一段时间后,我想移除 A(或以其他方式禁用接触)以让 B 开始下降。
看来我应该能够通过 (1) 动态更改碰撞过滤或 (2) 更改焊接接头的姿势来做到这一点。还没有调查 (1),但 (2) 似乎已经结束——似乎没有办法在施工后改变焊缝的姿势。真的?如果是真的,为什么不呢?
解决方法
目前,您可以通过将焊接接头的其中一个框架设为 FixedOffsetFrame
并修改其参数来实现此目的。这是一个带有示例的片段:
// Weld body B to body A and move body B.
// Original transform for the weld between body_A and body_B
math::RigidTransform<double> X_AB(...);
const FixedOffsetFrame<double>& frame_on_A = plant->AddFrame(
std::make_unique<FixedOffsetFrame<double>>(body_A.body_frame(),X_AB));
plant->WeldFrames(frame_on_A,body_B.body_frame());
// ... create a context and simulate ...
// New transform for the weld between body_A and body_B
math::RigidTransform<double> X_AB_new(...)
frame_on_A.SetPoseInBodyFrame(context,X_AB_new);
我将在 #13520 上工作,通过更改焊接接头本身的参数来使这更方便。
,我们还没有修改焊接接头姿势的能力。 请参阅问题 #13520。
,也许可以考虑使用 LinearBushingRollPitchYaw 并将平移和旋转刚度/阻尼从刚度值更改为 0。
Joe Masterjohn 可能知道是否有方法举例说明如何对套管进行参数化。