Webots:RHex仿真平台搭建——(二)给不规则腿部设置boundingObject
将模型导入成功之后点击启动仿真,模型并不会有任何变化,给整个机器人添加physics,点击启动仿真,机器人直接穿过地面掉落,原因是没有对腿部添加boundingObject。一般在直接使用Webots自带的几何形状构建模型时,添加boundingObject只需要选择相同的几何形状即可,但是由于我们的腿部是自己导入的,因此不能使用这种方法。接下来介绍两种为导入的不规则模型添加boundingObject的方法。
方法一:通过给shape命名的方法直接use已有的几何信息
展开在HingeJoint的endPoint节点处导入的leg,找到children的最下级Shape,将其命名为leg。
命名完成后双击该endPoint节点下的任一boundingObject,选择use,选择刚命名的leg,点击添加即可。
该方法极为简单,唯一可能出现的麻烦就是分级太多,不知道给哪个节点命名是可以直接使用的几何信息。此处给出一些提示:
1. 能直接USE作为boundingObject的几何信息一般为Shape节点。因此,找到最底层的Shape节点给其命名即可。
2. 无法确定是哪个需要的节点,可以随手给所有的可命名节点命名。
方法二:自定义boundingObject的PROTO节点
双击boundingObject NULL添加boundingObject节点时可以看到Webots Projects中提供了一些节点,其中有一个十分简单的矩形平面可以作为boundingObject。
打开Webots按照目录D:\Program Files\Webots\projects\objects\geometries\protos可以看到一个文件Rectangle.proto,使用记事本打开,可以看到如下代码
#VRML_SIM R2020a utf8
# license: Apache License 2.0
# license url: http://www.apache.org/licenses/LICENSE-2.0
# tags: static
# Single/double sided and adjustable rectangle shape.
PROTO Rectangle [
field SFVec2f size 0.1 0.1 # Defines the size of the rectangle shape.
field SFBool doubleSided TRUE # Defines whether the shape has two sides or not.
]
{
%{
-- Size verification
if fields.size.value.x < 0 or fields.size.value.y < 0 then
print('The rectangle size should be strictly positive')
end
-- Parameters transformation
-- Convention from https://www.cyberbotics.com/doc/reference/imagetexture
-- (s0