robotics - Webots - 世界重新加载后机器人的 BoundingObject 变为空(如何防止这种情况?)
问题描述
我有一个带有子节点 = [SolidCylinderJoint] 的机器人节点。SolidCylinderJoint 是我创建的一个原型,它将一个 DEF 节点定义为一个字段,即
field SFNode geometry DEF BODY Cylinder {
height 0.1
radius 0.05
}
现在我使用 BODY DEF 节点作为机器人的 boundingObject,如下所示:
现在,这很好用,但是当我点击“重新加载世界”或重新启动 webbots 时,boundingObject 再次变为 NULL。我认为这是因为机器人节点在 Proto 之前加载,并且在尝试将 boundingObject 设置为 BODY 时,它没有找到该定义,因此默认为 NULL。
解决方案
首先,您的 PROTO 中有一个问题,不允许在字段的默认参数中创建 IS(即 baseColor IS baseColor):
field SFVec3f baseColor 0.985946 0 0.0481575
field SFNode appearance PBRAppearance { baseColor IS baseColor metalness 0.3 }
关于 DEF-USE 的问题,这确实是一个错误,似乎 PROTO 的默认参数是在根节点之后创建的,因此在创建根节点时找不到。我已经在这里报告了这个问题,希望它会在下一个版本的 Webots 中得到修复: https ://github.com/cyberbotics/webots/issues/1231
推荐阅读
- syntax - Error (10500): VDHL code line 88 (Quartus)
- javascript - 5.2 Eloquent Javascript - 第三版
- java - 对 Spring Data JPA 和泛型类型感到困惑
- javascript - How can I target an index in this array?
- crystal-reports - 组可能水平堆叠而不是垂直堆叠吗?
- python-sphinx - Prevent sphinx from restarting section numbering every file
- r - 闪亮的 reactivePoll 重用多个数据库表名
- android-asynctask - 在单个 Android 项目中实现多个 SQLite ORM 库
- c - 关于在 C 中以特定格式打印数字的问题
- javascript - 通过 Axios 将文件发送到 Asp.net Core Api?