未强制执行棱柱关节限制
PrismaticJoint limits not enforced
我正在创建一个主体系统,该系统具有与 PrismaticJoints 连接的径向扩展主体,并发现尽管我用关节位置限制初始化了每个关节,但由于重力等外力,关节很容易超过这些限制。这是一个图表,显示了一些关节随时间的平移,以显示它们如何通过 3.5 和 4.2 的下限和上限:
我错过了什么?我创建关节的调用如下所示:
const multibody::Joint<double>& joint = plant_->AddJoint<drake::multibody::PrismaticJoint>(
shpere_name + "_joint",
center_body, std::nullopt,
connect_body, std::nullopt,
unitVlist()[j], r_low, r_upp, 0);
哪里
- *_body 是身体,
- unitVlist() returns 要提取的单位向量列表,
- r_low和r_upp是对应上下限的double。
目前 Drake 中的关节限制仅由离散求解器强制执行,也就是说,如果您在 MultibodyPlant 构造函数中提供时间步长,您将得到什么。我们的持续集成商还没有看到极限。我们知道这一点,但我实际上找不到抱怨它的 GitHub 问题——你介意提交一个吗?你可以做到 here (select "New Issue").
我正在创建一个主体系统,该系统具有与 PrismaticJoints 连接的径向扩展主体,并发现尽管我用关节位置限制初始化了每个关节,但由于重力等外力,关节很容易超过这些限制。这是一个图表,显示了一些关节随时间的平移,以显示它们如何通过 3.5 和 4.2 的下限和上限:
我错过了什么?我创建关节的调用如下所示:
const multibody::Joint<double>& joint = plant_->AddJoint<drake::multibody::PrismaticJoint>(
shpere_name + "_joint",
center_body, std::nullopt,
connect_body, std::nullopt,
unitVlist()[j], r_low, r_upp, 0);
哪里
- *_body 是身体,
- unitVlist() returns 要提取的单位向量列表,
- r_low和r_upp是对应上下限的double。
目前 Drake 中的关节限制仅由离散求解器强制执行,也就是说,如果您在 MultibodyPlant 构造函数中提供时间步长,您将得到什么。我们的持续集成商还没有看到极限。我们知道这一点,但我实际上找不到抱怨它的 GitHub 问题——你介意提交一个吗?你可以做到 here (select "New Issue").