改变视觉几何的事件

Events changing visual geometries

我正在尝试可视化碰撞和不同的事件,并且正在寻找在 RegisterVisualGeometry 注册后更新颜色或视觉元素属性的最佳方法。

我找到了 GeometryInstance class, which seems like a promising point for changing mutable illustration properties, but have yet to find and example where an instance is called from the plant (from a GeometryId from something like GetVisualGeometriesForBody?) 并且它的属性已更改。

作为一个基本示例,我想在两秒后更改框的视觉几何形状的颜色。我用

注册了预先确定的几何图形
// box         : Body added to plant
// X_WA        : Identity transform
// FLAGS_box_l : box side length
geometry::GeometryId box_visual_id = plant.RegisterVisualGeometry(
        box, X_WA,
        geometry::Box(FLAGS_box_l, FLAGS_box_l, FLAGS_box_l),
        "BoxVisualGeometry",
        Eigen::Vector4d(0.7, 0.5, 0, 1));

然后,我有一个 while 循环来在两秒内创建一个定时事件,我希望该框改变它的颜色。

double current_time = 0.0;
const double time_delta = 0.008;
bool changed(false);

while( current_time < FLAGS_duration ){

    if (current_time > 2.0 && !changed) {
        std::cout << "Change color for id " << box_visual_id.get_value() << "\n";
        // Change color of box using its GeometryId
        changed = true;
    }
    simulator.StepTo(current_time + time_delta);
    current_time = simulator_context.get_time();
}

最终我想用一个更具体的触发来调用这样的东西,比如接近另一个对象或速度,但现在我不确定我将如何注册一个简单的视觉几何变化。

感谢您提供详细信息。这足以让我对当前事态和未来(近期和 far-term 计划)提供有意义的答案。

以您的问题为例,更改视觉几何体的颜色可能意味着以下两种情况之一:

  1. 对象的颜色在 "attached" 可视化工具中发生变化(drake_visualizer 是主要示例)。
  2. 对象的颜色在模拟 rgb 相机中发生变化(当前 dev::RgbdCamera,但即将 RgbdSensor)。

根据您可能希望在模拟中更改的其他属性,可能还有其他 subtleties/nuances。但是使用上面的跳板,这里是详细信息:

  • 一个。直到最近 (drake PR 11796),根本无法在注册后更改属性
  • 乙。 PR 11796 是实现这一目标的第一步。但是,它 启用它以更改 ProximityProperties。 (ProximityProperties 与几何在邻近查询中扮演的角色相关联——接触、符号距离等)
  • C。更改 PerceptionProperties 是该 PR 中的一个 TODO,并将在接下来的几个月内跟进(个位数,除非出现更紧迫的需要来提高它的优先级)。 (PerceptionProperties 与几何在模拟传感器中的属性相关联——它们的外观等)
  • D.不支持更改 IllustrationProperties,并且不清楚 best/right 的方法可能是什么。 (IllustrationProperties 是像 drake_visualizer 这样的外部可视化工具。)这是最棘手的,因为 LCM 通信当前的表达方式。

因此,当我们将改变对象颜色(上面的 1 或 2)的可能影响与现有技术和 near-term 艺术(上面的 C 和 D)进行比较时,我们得出以下结论:

  • 在不久的将来,你应该可以在合成的RGB图像中改变它。
  • 没有在外部可视化器中更改它的实际计划。

(抱歉,答案似乎更接近 "oops...you can't do that"。)