Phobos is an add-on for the open-source 3D modeling software Blender that enables the creation and modification of WYSIWYG robot models for use in robot frameworks like ROS and ROCK or in real-time simulations such as MARS or Gazebo. Phobos allows to export completed models in formats such as URDF or SMURF and meshes as STereoLithography (.stl), Wavefront (.obj) or Collada (.dae).
Phobos was initiated and is currently developed at the Robotics Innovation Center of the German Research Center for Artificial Intelligence (DFKI) in Bremen, together with the Robotics Group of the University of Bremen.
User documentation can be found in the Phobos Wiki and source documentation on Phobos' Github Page.
Please contact Kai von Szadkowski for any inquiries, or any questions and feedback not suited for the issues page.
2017-10-24 - Phobos' current development is focused on adding new features after the major refactoring that was finished earlier this year. Some of the new features and updating of existing features takes longer than expected and we don't want to roll out a release that is still missing a lot of important components. Allowing time to update the documentation as well, this means that new versions of Phobos will not be released before the end of the year. Please note that the current version of Phobos (i.e. the master branch of this repo) does not necessarily work with the latest version of Blender (at the time of writing, 2.79) due to changes in its API and internal python version, such that previous versions may have to be used (e.g. 2.74).
Model of the SpaceClimber robot in Blender, next to the Phobos toolbar displayed on the left.
Phobos makes use of Blender's hierarchical object graph and its bone objects. These objects, normally used for animating 3D characters, allow to store 3D coordinate systems and apply constraints to their movements, for instance to restrict the movement of an object to a certain range on a specific axis. This allows to replicate the links and joints defined in a URDF model and together with the hierarchical tree of parent and child objects, the complete, branching kinematic chain of a robot can be represented. By attaching meshes or primitives to the bones, Phobos allows to add visual and collision objects to a model. Additional objects allow storing further information, e.g. centers of mass of each part of a robot, thus refining the physical representation. Sensor objects can be added to correctly place and orient devices such as laser scanners, cameras or contact sensors. Making use of Blender's custom object properties, any necessary information can be added to the model, from inertia tensors to opening angels of cameras.
Decomposition of the different elements from which Phobos models are composed in Blender. These elements can be arranged in Blender on different layers, thus avoiding confusion or obstruction of view when editing very complex models.
- WYSIWYG editor for robot models using Blender
- Definition of robot kinematics (links and joints)
- Annotation of motors/sensors to joints/links
- Visualization of joint constraints
- Numerous tools for fast editing:
- Batch editing of object properties
- Auto-generation of collision objects
- Auto-generation of inertia tensors from mass and shape
- Calculation of merged inertia for complex links
- Numerous tools for error-free editing:
- Verbose logging
- Measurements (e.g. distance of parts, sum of masses)
- Synchronization of mass information
- Import and export of URDF, SMURF and other formats
- Export with defined floating point precision
Phobos is distributed under the GNU Lesser General Public License.