In this article, you will learn about the opportunities of using Blender to animate industrial robots.
Blender is an open source 3D animations software, which is used by 3D artists all over the world to create 3D art and cinematics scene, including blockbuster movies.
A couple of weeks ago, someone mentioned to me that Blender 2.8 will be a revolutionary release, fixing one of the most significant problems the OSS software had, the user interface. Moreover, everything should move to a node-based workflow (everything nodes), and the new render engine EEVEE renders photorealistic scenes in real-time.
Since I had some spare time, I took the opportunity to learn the basics of Blender and to test-drive its applicability for animating industrial robots.
Rigging and Inverse Kinematics
The process of adding bones to an object or model is called rigging. Regarding of 3D animation software, a bone is essentially what we call link in robotics.
Unfortunately, there aren't any good tutorials on rigging robot arms in Blender yet. However, I managed to rig my 6-DOF Borunte robot arm after understanding the basics of rigging.
After rigging, we have two options to animate a robot arm:
- We can use forward kinematics (FK) move the bone / joint positions.
- We can use inverse kinematics (IK) to let the IK solver figure out the bone / joint positions.
For animating robots, we usually want to use an IK with the tool center point as a target.
Blender 2.8 comes with two IK solvers:
- Standard IK Solver
- iTaSC IK Solver
For our application, the iTaSC IK solver is the better choice, as it is designed for robotic applications.
Unfortunately, I haven't found a solution for limiting the joint velocity and acceleration. But I'm very sure that it is possible to solve this problem with better understanding of iTaSC.
Blender offers multiple ways to animate objects.
- Animation via keyframes and properties.
- Animation along a path.
- Programmatic animation via Animation Nodes.
I've tested all three options, and I couldn't find any of them more useful than the other for animating a robot arm.
For some applications, it's easier to create a path or spline to be followed, for others it might be more useful to drag the robot arm by hand to the target positions. In some cases, it might be helpful to program the movement via Animation Nodes.
In my opinion, programming robots via animation are most useful for the entertainment industry. This includes for example film making, animatronics, and show lighting. Autodesk is currently working on a similar project, MIMIC.
The extendable 3D environment is the biggest advantage of Blender compared to alternatives based on game engines or 3D frameworks. For example, ROS Rviz or RoboDK are great for visualizing robots, but not so good for a complete simulation of the environment, due to missing design tools.
However, I can see how Blender could be useful for simulation of machines, robots or even complete factories. Blender also has a VR extension which would enable to design, program and simulation full industrial machines before assembly.
ROS and Machinekit Integration
Of course, animating industrial robots is only useful when we can use the generated trajectories. For this purpose, I created an interface package, which executes the trajectory using ros_control and the hal_ros_control on the Machinekit based open source robotics controller.
For other robots, which come with a closed controller, we could use a post-processor to generate native robot code such as KRL.
Blender could prove useful for animating industrial robots.
Besides animation, I see huge potential to use Blender for robotics simulation.
For programming industrial robots, I could see how graph-based programming could be used as an alternative to writing robot source code.
I'm going to continue to work on this project to find out how it could be applied for applications beyond animation.
Feel free to contact me if you are interested in learning more.
Pingback: RDP 040: Animating Industrial Robots with Blender with Alexander Rossler | The Construct
This is interesting read! I've done something similar almost at the same time!:
The inspiration was my friend who use similar robot for sandblasting and I came out with production planning tool. It ended up as 3D printed movable model due to difficulties with learning Blender for personel, but then I did this animation to show novel 3D printing concept.
I have similar thoughts as yours. It start to be seen even (or especially) major companies like Autodesk, ArcelorMittal, all automotive did a shift towards "digital twin". The possibilities are in personel training and production planning.
Thank you for sharing the video. I really like the idea of robots building up their own rails on construction sites.
Autodesk's efforts really seem to get some traction in the movie industry. How well this approach applies to industrial applications still has to be proven.
I can only use gazebo and ros.
What do you mean? ROS ships only Gazebo, that's right, but Blender is I think, a possible good alternative for photorealistic simulation.
Hi I would love to apply blender animations to dinosaurs animatronic, with cyclic loop animations that would make them move around a certain area. My idea was to create a mini-zoo that tourist would enjoy and obviously pay good money to see. Would that be possible? And if yes, who could I contact to make this project a reality?
Great idea! I think this is a perfect application for this option to program robots.
It’s exhausting to find educated individuals on this subject, however you sound like you realize what you’re talking about! Thanks
Has anyone tried or figured out a way to use the Mimic plugin for Maya with Blender V 2.8 / V 2.81.
Is this possible?
Not that I'm aware of. Parts of the source code probably could be made compatible with Blender, other parts like the UI might not serve useful. https://github.com/AutodeskRoboticsLab/Mimic
Thank you for your reply,
I had checked out Mimic on github before and saw the information there but I am not a programmer
so there isn't that much that I can do with that information.
I thought that I could make an actual robot and then make a virtual robot in Blender and hopefully
control it using the Mimic plugin in Blender.
I wanted to use an Arduino for the circuit board for the actual robot and I had found some guy named Dan Thompson online who was a visual effects artist who had combined Maya and an Arduino to drive a servomotor. He had done this in 2010. The Arduino sketch he wrote in code to do this is all open source.
The code he wrote was named "Servo Tools For Maya 1.0.1".
Apparently the arduino sketch that Dan wrote was for controlling 1 servo but he mentioned a way
to modify the code to be able to control more (around 8 to 16 servos).
I seen another guy that had taken the software and must have modified the code because he
was controlling an leg spiderbot with it.
Also, a third guy I found on YouTube was moving a puppet input device that had potentiometers
on the joints which moved an animated model in Maya while at the same time recording the movements and controlling an actual robot arm in real time.
So, I have see people do basically what I want to do in real life but they were using Maya, I wanted to
use Blender because it is free and open source and if I wanted to make and control many robots then I would need and want to do it in the most cost effective way.
Thank you for your time.
Maybe you will get curious enough by the information that I have provided for you to look into
it further to see if there is actually a way to get the Mimic plugin for Maya to work in Blender.
For some reason I think it may be possible but like I said I am no programmer.
Please email me if you figure anything out .
If you just want to control an Arduino or similar device to play out the animations it's much simpler than to use Maya. Have you tried figuring out how to animate your robot/animatronic in Blender? For me at least that's the hard part.
for a small project I am trying to animate a six axis robot in blender. I currently made a blender file and tried to rig a 4 axis robot, before moving on to six axes.
However, I currently have some issue. The IK are working, and the arms are moving the way they are supposed to, however when I move the target (an empty) which the end effector must follow, the arms suddenly flip to an other orientation. It only happens at certain positions, if I move the empty back then the robot arms also flip back to the correct position..
I don't really know how to correct this behavior. Could you share how you set up the rig to be controlled with the end effector? I can also send you the blend file if that would be helpful.
Make sure to select the `iTaSC` solver in `Simulation` mode in the Inverse Kinematics tab.
I'm wondering if using the Mimic in Maya then exporting an FBX file would transfer all the controls necessary for your project.
I want to get the path to fill the curved surface using the robot arm. Is it possible with a blender?
I'm very sure there is a way to achieve this using the Blender tools, best ask on stack exchange or Blender forum.
However, it sounds like you want to do 3D printing with the robot. Maybe you should take a look at ROS Additive Manufacturing (RAM) instead.
Hello , please can you do tutorial how you have it done plus how did you added that robot control panel also with possibilities to open Gripper...thank you million time
Or please write me email how you did it...
Is this something youre still developing? I been looking into usign blender to move KUKA robots for 3D printing and milling.
No, it was more like a prototype. If you want to 3D print or mill with the robot, best take a look at a CAM software such as SprutCAM or Fusion360 for example.