The microcontroller reads every sensor's orientation in quaternions and sends them bundled in a string over bluetooth to the computer. There the python script in Blender receives the data and breaks it into individual sensor angles which are then passed to each bone in the armature to be updated in the 3D view.

The IMUs used here are Bosch's BNO055, which in addition to an accelerometer, gyroscope and magnetometer includes a 32-bit cortex M0+ microcontroller running a sensor fusion algorithm that is able to produce orientation in both euler angles and quaternions.

These sensors work over I2C, but have only two selectable addresses. To overcome this, an I2C multiplexer board based on the PCA9548 is used to have different I2C buses with one or two sensors per bus. This expands the number of sensors from 2 (on the microcontroller's bus) to 18 ( eight new buses plus the microcontroller's one). Even more sensors can be added simply adding another multiplexer, up to eight boards can be connected to the same bus (If you need more... multiplex multiplexors! :) ).

To make the suit plug-and-play a bluetooth to usb bridge module was added. The suit's bluetooth is set as master and instructed to connect to the bridge's MAC address, while the computer searches for any device of type '/dev/ttyACMx'.

On the computer side, two Blender files are available in github. The 'MotioSuit.blend' is the file ready to be used as in the video, whereas 'Armature.blend' contains the script, logic and armature needed but no model. Use this file to be able to control your own 3D model with the suit, by simply parenting the model to the bones.

The benefit of using a suit based on IMUs versus other optical systems like visual markers or Kinect cameras is the lower cost, no need to set up a stage and the ability to be used outdoors.

Due to the high number of comments regarding speed, I've made a second video showing it functioning in real time.

The first video was captured on the laptop running a screen capture program at the same time as blender, which made both go slower.

Check the README in github for details on the license.