【问题标题】:Changing global coordinate frame in webots在 webbots 中更改全局坐标系
【发布时间】:2019-02-06 15:58:36
【问题描述】:

我刚开始使用 webbots,遇到以下问题:

Webots 全局坐标系将其 y 轴定义为向上显示(具有负 y 分量的重力矢量)。但是,我想围绕 z 轴向上显示的坐标系构建一个世界。

是否有可能在全球范围内改变这一点?

感谢您的回复。

【问题讨论】:

    标签: webots


    【解决方案1】:

    是的,这可以按照以下步骤进行:

    • 应旋转对象(Webots PROTO 或“0 级”变换),使其底部指向 Z 轴(负)。选择对象后,您可以使用 3D 视图的小工具执行此操作。
    • WorldInfo.gravity 字段应更改为0 0 -9.81。除了改变重力之外,该参数还会影响视点使用鼠标移动的方式。
    • 如果您计划在模拟中使用 Compass 传感器,则应修改 WorldInfo.north
    • 在 Webots 中为背景天空立方体发布的立方体纹理沿 y 轴定向。旋转它们不是直截了当的。删除Background.cubmap 是一个快速的解决方案,但它会避免呈现好看的渲染(如果没有纹理背景,PBR 材质将无法正常工作)。为了更进一步,您必须为您的世界创建一组自定义纹理 ($YOUR_PROJECT/worlds/textures/cubic/*.png)。可能切换/旋转/重命名纹理就足够了。

    请注意,在 Webots 中,由于 VRML 和 X3D 遗留问题,全局 y 轴向上。许多 X3D 导出​​器(如 Blender)允许在导出期间更改下轴。 =>向下使用y轴不是一个坏主意:-)

    【讨论】:

    • webbots 文档中有一个参数,coordinateSystem,可以取值 ENU、NUE 或 EUN。看起来它应该完成这项工作。不幸的是,在 webbots R2020a rev1 的场景树中无法找到该字段。
    • 确实,R2021a 已经引入了这个字段。要使用它,您应该升级 Webots。我希望它可以解决我的回答中提到的一些问题,但肯定不是全部。 IMO 这个新领域相当混乱……
    【解决方案2】:

    自 Webots R2020b 以来,重力不再是矢量。相反,您可以在WorldInfo 节点中将coordinateSystem 字段的值设置为ENU
    https://cyberbotics.com/doc/reference/worldinfo

    但是,请注意coordinateSystem 字段不会影响对象的轴系。如果要将对象的轴系更改为例如FLU (x-Forward, y-Left, z-Up) 那么你必须手动修改对象。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-04
      • 2010-09-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多