2
$\begingroup$

We are in the process of moving our warehouse simulation from Gazebo to Webots. We would like to set up a "realistic" warehouse environment in Webots. The factory sample already provides a lot of props for this, but we have not yet found warehouse shelf models for Webots.

One option would be to convert the AWS RoboMaker worlds from SDF to Webots: https://github.com/aws-robotics/aws-robomaker-small-warehouse-world

Is there a tool to make this conversion, or do we have to do it manually?

If no automated solution is available, what is the best approach to import the models manually?

$\endgroup$

1 Answer 1

3
$\begingroup$

Although not automatic, it should be pretty straightforward to re-use the shelf object from this AWS RoboMaker world by simply re-using its meshes to create a Shelf.proto file in your local protos folder:

#VRML_SIM R2023a utf8
# A shelf.

PROTO Shelf [
  field SFVec3f    translation 0 0 0
  field SFRotation rotation    0 0 1 0
  field SFString   name        "shelf"
  field SFBool     locked      FALSE            # Is `Solid.locked`.
]
{
  Solid {
    translation IS translation
    rotation IS rotation
    children [
      CadShape {
        url "https://raw.githubusercontent.com/aws-robotics/aws-robomaker-small-warehouse-world/ros1/models/aws_robomaker_warehouse_ShelfD_01/meshes/aws_robomaker_warehouse_ShelfD_01_visual.DAE"
      }
    ]
    name IS name
    model "shelf"
    boundingObject Mesh {
      url "https://raw.githubusercontent.com/aws-robotics/aws-robomaker-small-warehouse-world/ros1/models/aws_robomaker_warehouse_ShelfD_01/meshes/aws_robomaker_warehouse_ShelfD_01_collision.DAE"
    }
    locked IS locked
  }
}

Here is what it looks like in Webots: Shelf.proto Here is the sample.wbt world file showing it in Webots:

#VRML_SIM R2023a utf8

EXTERNPROTO "webots://projects/objects/backgrounds/protos/TexturedBackground.proto"
EXTERNPROTO "webots://projects/objects/backgrounds/protos/TexturedBackgroundLight.proto"
EXTERNPROTO "../protos/Shelf.proto"

WorldInfo {
}
Viewpoint {
  orientation -0.11384659601330234 -0.3187749829101217 0.9409683644240309 5.557715208500585
  position -5.776529177279546 4.724710358949437 2.980453565305262
}
TexturedBackground {
}
TexturedBackgroundLight {
}
Shelf {
  rotation 0 0 1 1.5708003061004252
}

You can also view it in 3D online on webots.cloud.

Note: Using meshes for the bounding object is not optimal, especially in this case where the bounding object could be replaced with a compound object made up of simple boxes, e.g., using a Group node that contains a series of Transform nodes containing a Box node in their Shape node.

Disclaimer: I am a Webots developer working at Cyberbotics.

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.