我已经用两个对象构造了一个MBP,A(焊接到世界)和B(未焊接)。B位于A的顶部。在模拟了一段时间后,我想移除A(或以其他方式禁用触点)以允许B开始下落。
似乎我可以通过(1)动态更改碰撞过滤或(2)更改焊接接头的姿势来做到这一点。没有研究(1),但是(2)似乎是不存在的-似乎没有一种方法可以在构造后改变焊缝的姿势。是真的吗?如果是真的,为什么不呢?
发布于 2021-03-22 23:35:19
当前,可以通过将焊接接头的一个框架设置为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上工作,通过更改焊接接头本身的参数来使这一点更方便。
发布于 2021-03-19 23:46:01
我们还没有修改焊接接头姿势的功能。请参见issue #13520。
发布于 2021-03-20 06:37:04
也许可以考虑使用LinearBushingRollPitchYaw,并将平移和转动刚度/阻尼从刚性值更改为0。
有关如何拾取值以模拟焊缝的信息,请参阅https://drake.mit.edu/doxygen_cxx/classdrake_1_1multibody_1_1_linear_bushing_roll_pitch_yaw.html#Basic_bushing_torque_stiffness_and_damping
Joe Masterjohn可能知道是否有一种方法可以将衬套参数化。
https://stackoverflow.com/questions/66711103
复制相似问题