Page 1 of 1

OpenSim IMUInverseKinematicsTool with IMU data

Posted: Wed Oct 07, 2020 11:09 am
by antoniusleenen
Dear all,

Unfortunately, I receive an error when calling the function opensim.IMUInverseKinematicsTool().set_base_imu_label() and opensim.IMUInverseKinematicsTool().set_base_heading_axis() similar to the used settings when calibrating the OpenSim Model in Python by the use of the opensim.imuPlacer.set_base_imu_label() opensim.IMUInverseKinematicsTool().set_base_heading_axis().

The error:
Traceback (most recent call last):
File "<input>", line 1, in <module>
File "/Applications/PyCharm.app/Contents/plugins/python/helpers/pydev/_pydev_bundle/pydev_umd.py", line 197, in runfile
pydev_imports.execfile(filename, global_vars, local_vars) # execute the script
File "/Applications/PyCharm.app/Contents/plugins/python/helpers/pydev/_pydev_imps/_pydev_execfile.py", line 18, in execfile
exec(compile(contents+"\n", file, 'exec'), glob, loc)
File "/Users/ajrleenen/PycharmProjects/opensim/import2opensim.py", line 149, in <module>
imuIK.set_base_imu_label(baseIMUName)
File "/Users/ajrleenen/PycharmProjects/opensim/venv/lib/python3.7/site-packages/opensim-4.1-py3.7.egg/opensim/simulation.py", line 72229, in <lambda>
__getattr__ = lambda self, name: _swig_getattr(self, IMUInverseKinematicsTool, name)
File "/Users/ajrleenen/PycharmProjects/opensim/venv/lib/python3.7/site-packages/opensim-4.1-py3.7.egg/opensim/simulation.py", line 80, in _swig_getattr
raise AttributeError("'%s' object has no attribute '%s'" % (class_type.__name__, name))
AttributeError: 'IMUInverseKinematicsTool' object has no attribute 'set_base_imu_label'

I have had a meeting with Ajay Seth, but unfortunately these functions are not available anymore in OpenSim 4.1, but I do need these for the orientation tracking in OpenSense.

Cheers! Ton

Re: OpenSim IMUInverseKinematicsTool with IMU data

Posted: Wed Oct 07, 2020 11:19 am
by aymanh
Hi Ton,

The setting of base_imu and axis is used exclusively during model calibration (use class IMUPlacer). The Inverse Kinematics tool itself uses an already calibrated model to solve IK, as such it doesn't need these settings. Please consult the tutorial (linked below) for the latest code/API for OpenSim 4.1
https://simtk-confluence.stanford.edu/d ... h+IMU+Data

Good to know that you're utilizing the latest OpenSense functionality and please let us know if you continue to have questions.

Best regards,
-Ayman

Re: OpenSim IMUInverseKinematicsTool with IMU data

Posted: Thu Oct 08, 2020 1:29 am
by antoniusleenen
Hi Ayman,

The strangest thing is that the calibration looks successful, but when I load the orientation data in the OpenSim GUI on the calibrated model the model rotates a bit around the vertical. Ajay interpreted this as a introduced offset, which should not happen. The reason for this should be the fact that the imu_base and axis should also be corrected during the orientation tracking? In the calibration phase I only use the first sample of the orientation data to calibrate the model, but I have the feeling that using the time series of the orientation data for tracking the motion on the calibrated model is not sufficient? I have to use the IMUInverseKinematicsTool.set_sensor_to_opensim_rotations() function similar to the imuPlacer..set_sensor_to_opensim_rotations() during the calibration of the model, but in my opinion it is strange that I have to use this function and don't have to use the other the other two functions: imu_base and axis?

Cheers! Ton

Re: OpenSim IMUInverseKinematicsTool with IMU data

Posted: Fri Mar 18, 2022 8:43 am
by dpar99
Hi,

Pushing this post as well - I am also facing similar issues as Ton, when a I run a new set of quaternion IMU data through the calibrated model file using the IMUInverseKinematicsTool(), the movements look exactly as expected but the base heading is rotated, it is not set to the z-axis anymore. Thoughts?

Dhyey Parikh

Re: OpenSim IMUInverseKinematicsTool with IMU data

Posted: Mon May 15, 2023 4:36 pm
by hsidphil
I'm having the same problem, there seems to be a rotation introduced somewhere along the lines. Has anyone found a solution to this?