首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >几何学的角色变化

几何学的角色变化
EN

Stack Overflow用户
提问于 2022-09-30 18:10:16
回答 1查看 70关注 0票数 0

我试着从某些几何图形中移除接近的作用。但是,我收到的错误是我的植物源id没有注册:

代码语言:javascript
复制
Referenced geometry source 0 is not registered.

我已经检查了工厂是否真的注册了,因为呼叫

代码语言:javascript
复制
plant->RegisterAsSourceForSceneGraph(scene_graph);

!geometry_source_is_registered()失败。

我还创建了几何图形(通过添加sdf模型),因此source_id应该是有效的。以下是我尝试的方法:

代码语言:javascript
复制
drake::systems::DiagramBuilder<double> builder;
drake::multibody::MultibodyPlant<double>* plant{};
drake::geometry::SceneGraph<double>* scene_graph{};
std::tie(plant, scene_graph) = drake::multibody::AddMultibodyPlantSceneGraph(&builder, timestep);

drake::multibody::Parser parser(plant, scene_graph);

const auto robot_model_index = parser.AddModelFromFile(sdf_filepath, "robot");

plant->Finalize();
const auto& source_id = plant->get_source_id().value();

const auto& inspector = scene_graph->model_inspector();

auto all_geom_ids = inspector.GetAllGeometryIds();
for (auto& geom_id : all_geom_ids) {
    const auto frame_id = inspector.GetFrameId(geom_id);
    const auto geom_model_index = inspector.GetFrameGroup(frame_id);
    // https://stackoverflow.com/questions/68225198/does-a-modelinstance-in-a-multibodyplan-have-a-unique-source-id-for-determining
    if (geom_model_index == robot_model_index) {

        // This fails: Referenced geometry source 0 is not registered.
        scene_graph->RemoveRole(source_id, geom_id, drake::geometry::Role::kProximity);
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-09-30 22:25:05

如果要更改与a MultibodyPlant关联的几何,则要使用的source_id是plant.get_source_id()

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73912495

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档