如何为机器人环境中的模型设置锚定(Anchored)属性?
为几何模型设置锚定属性的方法
核心方案:使用FixModelInstance直接锚定
加载模型后,调用plant.FixModelInstance()就能一步完成锚定——它会自动把模型的根框架焊死在世界坐标系上,同时标记模型为非动态(不会参与动力学计算),完全符合你要的锚定状态。
示例代码:
Parser parser(plant); // 加载环境模型,取第一个实例ID const ModelInstanceIndex env_model_id = parser.AddModels("environment.sdf")[0]; // 标记为锚定 plant.FixModelInstance(env_model_id);
若已用WeldFrames固定框架,补做静态标记
如果已经通过WeldFrames把模型框架和世界/其他锚定框架焊在一起,但模型还没被标记为锚定,直接调用SetModelInstanceIsStatic()修改动力学属性就行:
// 假设已经完成WeldFrames操作 plant.SetModelInstanceIsStatic(env_model_id, true);
补充说明
FixModelInstance是一站式解决方案,比先焊框架再改属性更高效;- 单纯的
WeldFrames只负责位置固定,不会改变模型的动力学状态,所以必须额外设置静态标记才能实现锚定。
内容的提问来源于stack exchange,提问作者Wei Hu
相关产品推荐
相关产品推荐

