Blender 2.8 industrial robot

Animating Industrial Robots with Blender

3 minutes read

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.

Robot armature in Blender

Robot armature in Blender

Animation

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.

Blender Animation Nodes

Blender Animation Nodes

Applications

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.

Conclusion

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.

Your
Machine Koder

Spread the love
  • 5
    Shares

Comments 15

  1. Pingback: RDP 040: Animating Industrial Robots with Blender with Alexander Rossler | The Construct

  2. This is interesting read! I've done something similar almost at the same time!:

    https://vimeo.com/300088897

    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.

    1. Post
      Author

      Hi Bart,

      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.

      Alex

    1. Post
      Author
  3. Hello,

    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?

    Thanks

    From Darren

    1. Post
      Author
      1. Hi Alex,

        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 .

        1. Post
          Author

          Hi Darren,

          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.

          Alex

  4. Hello Alex,

    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.

    thank you
    Sven

    1. Post
      Author
    1. Post
      Author

      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.

      Alex

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.