If OpenSim suitable for IMU motion capture enhancement?
Posted: Mon Jun 03, 2019 9:02 am
Hi there!
I'm working on an IMU-based motion capture system for rehabilitation and investigating whether I can use Simbody/OpenSim to improve current system. Current system is basically a mapping of 10 IMU quaternion orientations directly to a very simple human model in Unity. It suffers from usual IMU problems like gyro drift, magnetic fields, etc., wich sometimes cause Unity skeleton to be invalid (bones may look broken) and whole model looks clunky.
The idea is to build biologically more valid skeletal model of human body (~20 bones and joints) without muscles (maybe add the muscles at some point) and map IMU quaternion data to this model. I want to add constraints on joints, maybe derive some optimization criteria for the whole skeleton or anything else, that may enhance current solution =)
The data-flow can be something like: I have a stream of IMU data, then it "goes through" the opensim/simbody skeletal model (getting enhanced meanwhile), and then I stream it further, i.e. into the Unity.
After searching the forum it looks like OpenSim currently doesn't support IMU sensors out of the box, but it's possible to work with `OSensors` using Simbody api (https://github.com/opensim-org/opensim- ... matics.cpp). So basically the questions are:
1) Can I use opensim to enhance sometimes really bad IMU data by applying model constraints and maybe by some other optimization techniques? Or is it a bad idea, and OpenSim is not suitable for such a task?
2) Is it ok to have, let's say, 10 IMU orientation sensors and fit them to the model with not 10, but more body segments, like 20? Will other 10 body segments, which are not "welded" to IMU sensors, be adjusted by IK as well in order to fit the whole body?
Thanks for your help in advance and thanks for the cool open-source project you're doing!
I'm working on an IMU-based motion capture system for rehabilitation and investigating whether I can use Simbody/OpenSim to improve current system. Current system is basically a mapping of 10 IMU quaternion orientations directly to a very simple human model in Unity. It suffers from usual IMU problems like gyro drift, magnetic fields, etc., wich sometimes cause Unity skeleton to be invalid (bones may look broken) and whole model looks clunky.
The idea is to build biologically more valid skeletal model of human body (~20 bones and joints) without muscles (maybe add the muscles at some point) and map IMU quaternion data to this model. I want to add constraints on joints, maybe derive some optimization criteria for the whole skeleton or anything else, that may enhance current solution =)
The data-flow can be something like: I have a stream of IMU data, then it "goes through" the opensim/simbody skeletal model (getting enhanced meanwhile), and then I stream it further, i.e. into the Unity.
After searching the forum it looks like OpenSim currently doesn't support IMU sensors out of the box, but it's possible to work with `OSensors` using Simbody api (https://github.com/opensim-org/opensim- ... matics.cpp). So basically the questions are:
1) Can I use opensim to enhance sometimes really bad IMU data by applying model constraints and maybe by some other optimization techniques? Or is it a bad idea, and OpenSim is not suitable for such a task?
2) Is it ok to have, let's say, 10 IMU orientation sensors and fit them to the model with not 10, but more body segments, like 20? Will other 10 body segments, which are not "welded" to IMU sensors, be adjusted by IK as well in order to fit the whole body?
Thanks for your help in advance and thanks for the cool open-source project you're doing!