If Simbody fits my potential project
Posted: Fri May 31, 2019 8:59 am
Hi there!
I'm trying to understand if Simbody fits my potential project, so hope somebody who knows the library well can help me .
I have 10 IMU sensors and want to make a motion capture system of the human body better, than I have now. The idea is to build a human-like model, which can improve "bare" IMU orientation data. I plan to:
1) describe skeleton tree-like model in terms of rigid bodies (bones) and Mobilized bodies (joints) - ~20 bones or so,
2) describe constraints for the angles of particular axes of the joints. Like lower arm/ulna bone can "bend" only ~150 degrees, and not 360. https://www.kineman.com/new/webapp/index.php - here's a good visualization of constraints of the body bones,
3) then I plan to stream data from 10 IMU sensors (which sometimes can be not very accurate because of gyro drift or magnetic fields), apply inverse-kinematics, and I hope I can get a decent ~20-bones model,
4) and it would be nice to apply IK continuously in real-time, as IMU data comes
I've spent some time reading documentation and here's what I found on every task:
1) skeleton tree-like model looks totally doable
2) I couldn't find the constraint on angle range, but I think I can make custom constraints with equations, describing desired behavior of allowed angle range. Also hope I can then add some additional things, like slowing down the movement of rigid body, as it comes closer to the max\min allowed angles.
3) For now I can' t understand if it will be doable - to have ~20 rigid bodies with mobilizers, 10 IMU's, and be able to fit them all smoothly with IK or some kind of optimization task or something else.
4) As I understood from pdf user guide and some examples, the basic flow is to set up the system\subsystems, then call `realizeTopology()`, and then I can continuously call `ik.track(); ik.updateFromInternalState(state);` . And since the whole engine is pretty fast, it could be done in real time.
I'll continue investigating the documentation and examples, but if somebody can evaluate potential pitfalls or problems with the ideas and comment on particular points it would be super helpful!
I'm trying to understand if Simbody fits my potential project, so hope somebody who knows the library well can help me .
I have 10 IMU sensors and want to make a motion capture system of the human body better, than I have now. The idea is to build a human-like model, which can improve "bare" IMU orientation data. I plan to:
1) describe skeleton tree-like model in terms of rigid bodies (bones) and Mobilized bodies (joints) - ~20 bones or so,
2) describe constraints for the angles of particular axes of the joints. Like lower arm/ulna bone can "bend" only ~150 degrees, and not 360. https://www.kineman.com/new/webapp/index.php - here's a good visualization of constraints of the body bones,
3) then I plan to stream data from 10 IMU sensors (which sometimes can be not very accurate because of gyro drift or magnetic fields), apply inverse-kinematics, and I hope I can get a decent ~20-bones model,
4) and it would be nice to apply IK continuously in real-time, as IMU data comes
I've spent some time reading documentation and here's what I found on every task:
1) skeleton tree-like model looks totally doable
2) I couldn't find the constraint on angle range, but I think I can make custom constraints with equations, describing desired behavior of allowed angle range. Also hope I can then add some additional things, like slowing down the movement of rigid body, as it comes closer to the max\min allowed angles.
3) For now I can' t understand if it will be doable - to have ~20 rigid bodies with mobilizers, 10 IMU's, and be able to fit them all smoothly with IK or some kind of optimization task or something else.
4) As I understood from pdf user guide and some examples, the basic flow is to set up the system\subsystems, then call `realizeTopology()`, and then I can continuously call `ik.track(); ik.updateFromInternalState(state);` . And since the whole engine is pretty fast, it could be done in real time.
I'll continue investigating the documentation and examples, but if somebody can evaluate potential pitfalls or problems with the ideas and comment on particular points it would be super helpful!