SDF File Overview
We are now going to walk you through the process of defining your robot and the world (scene) in which it operates in an SDF file, as well as how to define the sensors of the simulated robot that enable MOV.AI to receive input from the simulated robot, and to define the controllers of the simulated robot that enable MOV.AI to send it commands.
What is SDFormat (SDF)?
SDFormat (Simulation Description Format or SDF) is an XML format that describes objects and environments for robot simulators. It was originally developed as part of the Gazebo robot simulator.
Gazebo Fortress reads the textual descriptions in a SDF file to create the visual representation and behavior of the robot and the scene in which it operates. No image files are provided. For example, the geometry of a wheel is represented as a cylinder with a radius and a length, as well as a mesh to describe its surface. For example –
MOV.AI’s Sample SDF File
The MOV.AI installation comes without any SDF file. You are able to load sdf files from the Gazebo Fortress public repository directly to Gazebo Fortress using our world launcher.
alternatively, you can download model robots from the Gazebo Fortress fuel website.
If you want to edit, or fork an existing sdf file, use the folder – HOME/simulator/models_database/my_models.
Using Gazebo Fortress to Create the Robot and Its Environment
The details of creating an SDF file in a text editor are quite lengthy and complicated, as described starting from Models.
But there is an easier way! Gazebo Fortress provides a straightforward simple graphical tools for defining a robot and the environment in which that robot operates. It enables you to export that definition into an SDF file. You may refer to the Defining a Robot’s Environment in Gazebo Fortress for a description of this easier way to define the robot environment.
Currently, however, Gazebo Fortress does not enable you to define a robot’s sensors and controllers, so even if you create the robot and its environment in Gazebo Fortress, you must still export it as an SDF file, open that file and then add the robot’s sensors and controllers/plugins as text in the SDF file. The good news is that Gazebo Fortress’s roadmap indicates that this feature is coming soon.
Using Blender to Create Objects and Visual Effects
Blender is a free and open-source 3D computer graphics software toolset for 3D modeling https://www.blender.org/ that you can use to create your robot model, objects in the environment and visual effects. Here’s a link to a tutorial provided by Gazebo Fortress that describes how to create objects in Blender –(https://ignitionrobotics.org/api/gazebo/6.2/model_and_optimize_meshes.html)
Afterwards, use the following script in Blender to convert a 3D object from Blender to an SDF file. This will export the objects that you defined, as well as its associated textures, lights and DAE file.
In Blender, you can define the links and joints, but you cannot yet define sensors and controllers. This means that you will need to open this exported SDF format and define the robot’s sensors and controllers.
To export a robot or an object from Blender to SDF format –
- See https://ignitionrobotics.org/api/gazebo/6.4/blender_sdf_exporter.html
– OR –
- A better option might be to refer to https://github.com/ignitionrobotics/ign-gazebo/blob/ign-gazebo5/examples/scripts/blender/sdf_exporter.py.
Perform the following –
- Download the blender script named sdf_exporter.py.
- Open the script in Blender's Scripting tab and run it.
- In the window that is displayed, specify the location to save the files and click Save. This creates the meshes/model.dae, model.config and model.sdf files in the location that you specified.
Note – Here’s another useful link provided by Ignition that has tutorials, such as how to create an SDF file –
Updated 5 months ago