ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question

Looking for Blender robot model example to use with ROS

asked 2011-07-22 11:38:41 -0500

Pi Robot gravatar image

updated 2011-07-24 13:20:39 -0500

Hello ROS Fans,

Until now I have been using a "box and cylinder" hand edited URDF/Xacro file for my robot (Pi Robot). I would now like to make a mesh-based model that I can then use with Gazebo, RViz and OpenRAVE but I have not used a CAD program before. This earlier question led me to Blender as a possible tool for creating the model and the online tutorials make it look very easy. In particular, the Armature feature looks perfect for creating all the joints.

If anyone has used Blender to create a robot model that you use with ROS, I'd love to be able to see your Blender file so that I can use it as a learning template. Otherwise, any other tips would be appreciated.


UPDATE: After playing around with Blender 2.58, I realize I should have specified the following: I ultimately want to use the Collada model of my robot directly with ROS (via the collada_urdf package) and OpenRAVE. I think the two answers below refer to using Blender as the simulation/display environment instead of RViz or Gazebo. Instead, I just want to build my robot in Blender, export it to Collada, then carry on in ROS without having to connect back to Blender.

In the meantime, I have discovered the following issues that have prevented my success:

  • (From Rosen Diankov at OpenRAVE) The Collada file exported by Blender 2.58 defines a single mesh even if you have designed a multi-jointed robot. To also get the kinematic chain into the Collada file, you have to use something like the OpenGrasp Robot Editor. However, OpenGrasp requires Blender 2.49 and Python2.5 and so far I have been unable to get it to work without various Python import errors.

  • Even if I could get it to work, it seems that the collada_urdf package in Diamondback may have a bug that prevents using Collada files directly with RViz. See my other question here.

edit retag flag offensive close merge delete


I use Blender to create Collada files for use in Gazebo and Rviz. I quickly realized the same issues as you. I just define link as a separate model and export each separately. I then use the URDF file to connect the joints. Have you come up with a solution to this problem?
DimitriProsser gravatar image DimitriProsser  ( 2011-09-14 04:35:02 -0500 )edit

2 Answers

Sort by ยป oldest newest most voted

answered 2011-07-22 22:16:11 -0500

Bemfica gravatar image

There is a project called MORSE that actually supports direct communication over ROS to Blender. For the armature structure you'll like to search for "RagDoll". There are two ways to do it. One way is by using the "IPO/F curves", where basically you create a cyclic bone movement which, in Game Time, is started/stoped by some Game Logic (sensor + and + F-Curve actuator). Another way is creating an armature associated (parent) to your rigid body structures and adding bone constraints (copy rotation + copy location). Then you need to add an aways sensor + and + run armature and you will have a "on line" solution. Then you can directly close the loop control without using Gazebo, because you can directly apply torque/force/angle/acc/vel to the joints/rigid-bodies using python.

The main problem that I couldn't solve is about collisions. My rigid bodies didn't collide when connected through an armature/constraints, even if the collision option is set. I'll be glad to pass you some experimental blend files.

edit flag offensive delete link more

answered 2011-07-22 21:41:06 -0500

KoenBuys gravatar image

Have a look at MORSE in here there are some robots modeled in Blender and connected to ROS. One of my interns is currently finishing the PR2 model in MORSE.

edit flag offensive delete link more


when I've been trying to make a manipulator-like mesh my links didn't collide between then even if the collision option was set. How did you solve this? I was using armature ragdoll in Game Engine. Thks
Bemfica gravatar image Bemfica  ( 2011-07-22 22:19:30 -0500 )edit
Thanks Koen and Bemfica--this is outstanding. I wish I could check off both answers so I tossed a coin and checked Bemfica's. Also, Bemfica's "RagDoll" reference led me to this very useful video tutorial
Pi Robot gravatar image Pi Robot  ( 2011-07-23 01:21:00 -0500 )edit
Notice that the posted video uses Blender2.49 (py 2) and an IPO curve "record-play loop". The newest version (2.5x - py 3) gives you the possibility to "run" an armature in Game Time (physics within the on-line scene). Have a look at this approach.
Bemfica gravatar image Bemfica  ( 2011-07-23 05:54:07 -0500 )edit
Thanks again Bemfica--you saved my day since I was unknowingly using Blender2.49 from the Ubuntu 10.04 debs and none of the tutorials were making sense. Now I have 2.5 and things are going smoothly.
Pi Robot gravatar image Pi Robot  ( 2011-07-23 12:19:39 -0500 )edit

Question Tools

1 follower


Asked: 2011-07-22 11:38:41 -0500

Seen: 4,694 times

Last updated: Jul 24 '11