phobos builds URDF and SDF robot models inside Blender
An add-on for Blender allowing to create URDF, SDF and SMURF robot models in a WYSIWYG environment.
At a glance
- What is it?
- phobos is a Blender add-on and Python package that lets you assemble a robot from Blender objects and bones, then export the result as URDF, SDF or SMURF for ROS, ROCK, MARS or Gazebo. Its core idea is to reuse Blender's own hierarchical object graph and armature bones as the kinematic chain, so the model you see in the viewport is the model the simulator loads.
- Who is it for?
- Adopt phobos if you model robots for ROS, ROCK, MARS or Gazebo and would rather assemble the kinematic chain in Blender with WYSIWYG feedback than hand edit URDF or SDF. Do not adopt it if you need URDF features Blender bones and object hierarchies cannot express, since the export is bounded by what the scene graph can represent, and do not expect it to replace a dedicated URDF authoring tool for transmissions, mimic joints or sensor plugins.
- Can I use it commercially?
- Yes. BSD-3-Clause is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
- Is it still maintained?
- Yes. The repository last received commits 101 days ago.
- What is it written in?
- Mainly Python, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on October 23, 2026, and from our analysis. They are not legal advice.
Editorial analysis
The problem: robot models are structured data, Blender is not
A robot description is not a mesh. It is a kinematic chain of links and joints, with collision geometry, inertials and often sensor definitions, and the usual way to author one is to edit XML by hand. Phobos is an add-on for the open source 3D modelling software Blender v3.3LTS that supports robot model creation and editing, and the README describes the result as WYSIWYG robot models. The phrase WYSIWYG is the pitch: what you see in the Blender viewport is what comes out in the export. The formats are the ones the simulation world already speaks. Phobos exports URDF, SDF and SMURF, plus common mesh formats, namely Stereolithography (.stl), Wavefront (.obj) and Collada (.dae). The targets are named too, which tells you who the users are. The robot frameworks are ROS and ROCK, and the real time simulations are MARS and Gazebo. A model exported from Phobos is a model intended to be loaded by one of those. The project comes from 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, and it is published in the Journal of Open Source Software with a DOI and a citation request. So the audience is robotics engineers who already think in URDF but would rather assemble a robot in a 3D editor than in a text editor.
Bones and parent objects become links and joints
The mechanism is a repurposing of Blender's animation rig, and the README explains it directly. Phobos makes use of Blender's hierarchical object graph and its bone objects. These objects, normally used for animating 3D characters, allow it 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. That restriction is the key idea. A URDF joint is exactly that, a range of motion on an axis, and instead of asking you to type joint limits into a panel, Phobos lets you constrain a bone in Blender and reads the constraint back out. Together with the hierarchical tree of parent and child objects, the complete branching kinematic chain of a robot can be reconstructed from the scene. The link and joint structure of a URDF model is therefore a direct mapping of the object tree you built in Blender. That approach has an obvious appeal for a whole class of robots, since it maps onto what a mechanical designer already thinks in. It also has an obvious limit, which the README does not spell out but which follows from the design: the fidelity of the export is bounded by what Blender's object graph and bone constraints can express. An URDF with a mimic joint, a non-trivial transmission, or a sensor plugin is not something you configure by moving objects in a viewport, and the export formats the project supports, URDF, SDF and SMURF, each carry features the others do not. The practical workflow is that you model in Blender and let the add-on write the description, rather than modelling in XML and importing the visual result.
Installing as a Blender add-on, and the Windows runtime caveat
The add-on install is a zip plus a dependency step, and the README is precise about the order. To install Phobos in Blender you download the phobos.zip of the release, or you zip the phobos subdirectory yourself, for example with zip -r phobos.zip phobos. Phobos has several Python dependencies, and those have to be installed in Blender before you can use Phobos. There are two ways of doing that. The recommended one is to install the phobos.zip directly in Blender through Edit, Preferences, Addons, Install, activate it, restart Blender, and activate the Phobos add-on again. The alternative, which offers inspection of the requirements before installing them, is to run the install_requirements.py script with Blender's own Python before installing the zip.
${BLENDER_EXECUTABLE} -b --python install_requirements.pyAfter installation the Phobos main menu is on the right hand side of the 3D Viewport, and if it is not visible there is a very small arrow to open the Blender toolbar. There is one platform note that will save someone an afternoon. On Windows you must have the latest Microsoft Visual C++ Redistributable installed, otherwise Blender's Python will not work properly. Two more constraints are worth stating plainly. If you already have Phobos installed and want to update, you have to remove the old version first and close Blender before reinstalling. And Phobos is currently tested and running with Blender v3.3 LTS, which is a specific version rather than a range.
The CLI path, since 2.0 is also an ordinary Python package
Version 2.0.0 of Phobos refactored the project so that it can be used as a normal Python package and command line tool, and that is what makes the add-on installation path optional rather than mandatory. The CLI install is two steps. First you install the requirements by executing install_requirements.py with the Python you want to install Phobos to.
cd phobos
python3 install_requirements.pyThen you install the package itself with pip.
cd phobos
pip install .There is a third path for a specific audience. With autoproj, the ROCK build system, you add the package to your buildconf/package_set and install it via amake. The setup.py in the repository shows what the runtime needs. The requirements dictionary lists pyyaml, networkx, numpy, scipy, trimesh, setuptools for pkg_resources, pycollada and pydot, and the comments mark networkx and trimesh as optional for Blender. There is a second dictionary of optional requirements, pybullet, open3d and python-fcl, each marked optional for Blender as well. So the core package is deliberately small, and the heavier simulation and geometry libraries are opt-in. That split matters for the add-on case, where every dependency has to be installed inside Blender's own Python.
What changed in 2.0, and the SMURF round trip advice
The README gives a migration story that tells you what the refactoring actually broke, and it is unusually blunt about the recovery path. For most cases you should be able to update a model created with an older version of Phobos by simply exporting it to SMURF and then importing it again from that SMURF file. That advice is a design signal rather than a workaround. SMURF is the project's own intermediate description of a robot, and if a model can survive a round trip through it, then SMURF is the canonical form and the other exports are views onto it. The other break is materials. Due to the changes between Blender 2 and 3 it might be necessary to check whether your materials already use the Specular BSDF or Principled BSDF shaders, and if not you would have to update this manually. A separate note says that when running the new Phobos on a model created with an older version, make sure to have a backup. The releases themselves carry names. The tags are 2.0.2, Phobos 2.0.2 Perilled Pangolin, from 2025-05-13, 2.0.1 from 2025-02-24 and 2.0.0 from 2023-09-27. The 2.1.0 section, which the README places above the others, describes a refactoring of the phobos-ci usage and an improvement in configurability by config inheritance, and it says plainly that these are breaking changes to the pipeline configuration, with the details in PR #364. In other words, the continuous integration side of the project has its own version history of breaking changes, separate from the add-on.
Development tooling and the surrounding files
The repository is set up like a research software package rather than a hobby script, and the top level entries reflect that. There is a Makefile with a self-documenting help target listing apidoc, clean, format, help, install and version. The install target runs pip3 install ., which also sets up the configuration folder for Phobos. The clean target removes the installation configuration file without removing the Phobos installation or the configurations, which is a careful distinction. The format target is a three step pipeline: pyment with the google option rewrites docstrings to Google style, a grep and sed pass replaces empty docstrings with a TODO marker so that missing documentation shows up, and then black with a line length of 100 and the skip string normalisation flag applies the hard formatting rules.
black -l 100 -S .The apidoc target regenerates the Sphinx documentation and moves it to the gh-pages branch, which is what produces the API docs linked from the README. There is more in the tree worth noting. A manifest.xml for the Blender add-on metadata, a codemeta.json that the setup.py reads to build the package metadata, paper.md and paper.bib for the JOSS submission, a TODO.md, a templates_py/ directory, a models/ directory with example robot models, and a tests/ directory. The Makefile also uses pyment and the black formatter, and the README carries a Made with Sphinx badge and an API docs workflow badge.
BSD-3, a published paper, and the maintenance picture
The licence is BSD-3-Clause, stated in the setup.py header as the 3-Clause BSD License in the LICENSE file, and the README links a COPYING file. That is one of the most permissive licences available. It allows use in commercial and closed source products with only the obligation to keep the copyright notice and the disclaimer. For a research tool at a research institute, that is the sensible choice, and it is a genuine advantage over a copyleft licence if you are building a commercial robot product on top of the exported models. The project asks users to cite it, and says why in plain terms: they ask users to cite the use of Phobos, as it allows them to keep the project alive. When citing, the README asks for the Phobos version you used, whether you were using additional Phobos plugins or configurations, and the general Phobos paper. The Journal of Open Source Software paper is at doi 10.21105/joss.01326, and there is a separate FAQ section on the wiki about how to cite it, with a BibTeX entry. On activity, the repository is not archived and the last push was on 2026-07-14. The tagged releases are 2.0.2 from 2025-05-13, 2.0.1 from 2025-02-24 and 2.0.0 from 2023-09-27, so the released line is stable while the README already documents 2.1.0 with its breaking pipeline changes. The support channels are the usual ones: GitHub discussions for questions and ideas, GitHub issues for bugs and feature requests, and a named contact at DFKI for anything not suited to the issues page.
Editorial conclusion
Adopt phobos if you model robots for ROS, ROCK, MARS or Gazebo and would rather assemble the kinematic chain in Blender with WYSIWYG feedback than hand edit URDF or SDF. Do not adopt it if you need URDF features Blender bones and object hierarchies cannot express, since the export is bounded by what the scene graph can represent, and do not expect it to replace a dedicated URDF authoring tool for transmissions, mimic joints or sensor plugins. Before you migrate a model, back it up and round trip it through SMURF as the README advises, and check your materials use the Principled BSDF after the Blender 2 to 3 shader changes.
Frequently asked questions
What is Phobos and what formats does it export?
Phobos is both a CLI tool and a Blender add-on for creating and editing robot models. It exports URDF, SDF and SMURF descriptions, along with Stereolithography (.stl), Wavefront (.obj) and Collada (.dae) meshes, for use with ROS, ROCK, MARS and Gazebo.
How do I install the Phobos Blender add-on?
Download the phobos.zip of the release, install it through Blender, Edit, Preferences, Addons, Install and activate it, then restart Blender and activate the add-on again. Before that you must install the Python dependencies into Blender, either with the recommended route or by running install_requirements.py with Blender's Python.
Can I install Phobos as a normal Python package?
Yes, since version 2.0. Run python3 install_requirements.py in the phobos directory and then pip install . in the same directory. With autoproj you would instead add the package to your buildconf/package_set and install it via amake.
How do I migrate a robot model made with an older Phobos version?
The README says that for most cases you should be able to update a model by exporting it to SMURF and then importing it again from that SMURF file. It also warns you to back up the model first, and to check whether your materials use the Specular BSDF or Principled BSDF shaders after the Blender 2 to 3 changes.
Which Blender version does Phobos support?
Phobos is currently tested and running with Blender v3.3 LTS. On Windows you also need the latest Microsoft Visual C++ Redistributable installed, otherwise Blender's Python will not work properly.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/dfki-ric-phobos)Was this useful?