MotioSuit is an open-source, active motion capture suit. It reads the angles at which each of the user's limbs are oriented and sends them over Bluetooth to the computer, where the model is updated in Blender to follow the movement.
The original intent for this project was to develop a full-body game controller, but other uses can be animating 3D models with natural movements and in a fraction of the time or even controlling a humanoid robot!
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 multiplexers! 🙂 ).
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.
To start the program press on "Start Game Engine". Optionally, press on "Record Animation" to record the session.
Both python 3 and pyserial need to be installed for the communication to work.
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.