Before submit new issue, let me Sincere thanks for your work!
Your idea is really creative, use the human body model in OpenSim to optimize the sensor calculation results. In addition, in your paper, the calibration process using IMU is explained in detail.
In addition, there are many warm tips in your article,for example
“Moreover, the author is convinced that having a clear detailed list like is presented here will for a large part avoid making mistakes. Especially when a large set of sensors is used for which it will become more difficult to perform all necessary calibration steps for each sensor. Therefore, all the performed steps, as were also carried out when actual experiments for this thesis were conducted, will be outlined in a systematic fashion. Lastly, it is also recommended to label each IMU and clearly have in mind which IMU will eventually be attached to which body.”
In addition to the bugs in the code, I also have some suggestions on document optimization and questions about the model,Write all below.
The content is longer, I set up a directory for the document
Table of contents generated with markdown-toc
Some bugs in algorithms
Path error
When I run KuKa_iiwa_7_IEKF.m in IEKF_OS_ACtual_Experiments, it prompts
Cannot change directory to /Users/daandekanter/Stack/Documenten/Thesis/MethodsGithub/KUKAIntermediateFramesActualExperiment (Name
is nonexistent or not a directory)。
Error Kuka_iiwa_7_IEKF (line 67)
cd(mainFolder)
After Changeing 45 ~ 51 lines of code to my own directory, Succeed!
No function or variable CVX defined_ begin
After solving IEKF_ OS_ Actual_ KUKA in experiments_ iiwa_ 7_ After IEKF path error, another error occurred at runtime
Function or variable 'cvx_begin'。
Error AccelerometerEllipsoidFitting (line 16)
cvx_begin
Error CalibrateIMUData (line 266)
[Bias_Acc_1, Dinv_Acc_1] = AccelerometerEllipsoidFitting(RawAcc_1);
Error Kuka_iiwa_7_IEKF (line 182)
[Xsens, CalParam, Covariances] = CalibrateIMUData(SampleFreq, XsensRaw);
he main error is an error in the function, check the function
The main error is an error in the AccelerometerEllipsoidFitting.m. Check the function
% Solve the convex optimization problem using CVX
cvx_begin
variable A(3,3)
variable b(3,1)
variable c(1,1)
minimize( norm( M * [vec(A); b; c], 2) ) % 2-norm
subject to
trace(A) == 1
A - 0.0001*eye(3) == semidefinite(3)
cvx_end
earch on the Internet and finally find that there are fewer CVX packages installed. By querying the CVX sample code, you can find code similar to that in the article,
So, I need install CVX. The offical website: CVX: Matlab Software for Disciplined Convex Programming | CVX Research, Inc.
The loading path does not exist and no error is reported
see it in the code of KuKa_iiwa_7_IEKF.m in IEKF_OS_ACtual_Experiments
% Import geometry files:
path='/Applications/OpenSim 4.1/OpenSim 4.1.app/Contents/Resources/OpenSim/Geometry';
ModelVisualizer.addDirToGeometrySearchPaths(path);
But on my computer, there is no / applications / opensim 4.1 / opensim 4.1. App / contents / resources / opensim / geometry
When I annotate this line of code, it still doesn't affect the result.
The function or variable'importrobot' is not defined
When I run code in IEKF-OS_KUKA_Infinity_Shape
report an error, The function or variable'importrobot' is not defined. Althrough I try to install Robotics Toolboox in Matlab, I failed run code.
But when I try to the code in Matlab 2020a, it successed. You can supplement the matlab version in your README
Some suggestions on documentation
The core algorithm of IEKF-OS mainly contains three folders, and each folder contains many files. Seeing these codes, I am very confused. Fortunately, each file has a detailed README.md, and there are detailed comments in the code, I will show more detailed comments and file descriptions below.
- IEKF_Double_Pendulum_3D_Motion,Which folder is a simple double pendulum model in OpenSim for IEKF-OS algorithm verification
- IEKF_OS_Actual_Experiments,which folder contains the complete process of testing IMU and IEKF-OS algorithms
- IEKF_OS_KUKA_Infinity_Shape,which folder contains a simple algorithm that the robot runs
After sorting out the structure of different folders, I also sorted out the role of different files in the IEKF_OS_Actual_Experiments file:
Functions:
- Kuka_iiwa_7_IEKF.m
- LoadEncoderValues.m Load code value
- CalibrateIMUData.m Integrate static, dynamic and acceleration data
- XsensOrientationParameters.m Load Xsens orientation data,
- IEKF_int Extended Kalman filter algorithm, initialized
- IEKF_predict_step_part_1
- IEKF_predict_step_part_2
- IEKF_update_step.m Extended Kalman filter with new step size
- RMS Calculate the root mean square amplitude
Scripts:
- PrescribeObtainedJointAngleIEKFOS.m Calculate Kalman evaluation status
- XsensOrientationParameters.m:Called in Kuka_iiwa_7_IEKF to generate XsensOrientationParameters, this file is OpenSim's virtual coordinate system to load Xsens orientation parameters, calibration file
Not Found:
- AccelerometerEllipsoidFitting.m Perform accelerometer correction [not found]
OpenSim Model:
Some questions about the details of the algorithm
How is Rotm_KUKA_Link1 in IEKF_OS_Actual_Experiments\XsensOrientationParameters.m determined? How to determine this parameter if it is changed to the human body?
% Determine the rotation parameters of Xsens IMU 1.
Rotm_KUKA_Link1 = [-0.009910 -0.999508 -0.029753
-0.219128 0.031202 -0.975197
0.975646 -0.003145 -0.291330];
If I place the sensor on the human body, how should I place it? I want to apply your method to obtain kinematic parameters of lower limbs. Will my placement of the sensor on the mid-thigh or small thigh have any effect on the angle calculation?
The robot arm is a hinge structure, so I plan to try to calculate the knee joint angle using only sensors. This is the smallest change compared to your experiment.
When I apply your algorithm on the human body, is there anything else I should pay attention to?
BeSides,Can you tell me your email address? I still have some code issues and would like to consult you. I also want to make friends with someone like you who has the spirit of sharing. My email is waterfree@foxmail.com
Before submit new issue, let me Sincere thanks for your work!
Your idea is really creative, use the human body model in OpenSim to optimize the sensor calculation results. In addition, in your paper, the calibration process using IMU is explained in detail.
In addition, there are many warm tips in your article,for example
The content is longer, I set up a directory for the document
Table of contents generated with markdown-toc
Some bugs in algorithms
Path error
When I run KuKa_iiwa_7_IEKF.m in IEKF_OS_ACtual_Experiments, it prompts
After Changeing 45 ~ 51 lines of code to my own directory, Succeed!
No function or variable CVX defined_ begin
After solving IEKF_ OS_ Actual_ KUKA in experiments_ iiwa_ 7_ After IEKF path error, another error occurred at runtime
he main error is an error in the function, check the function
The main error is an error in the AccelerometerEllipsoidFitting.m. Check the function
earch on the Internet and finally find that there are fewer CVX packages installed. By querying the CVX sample code, you can find code similar to that in the article,
So, I need install CVX. The offical website: CVX: Matlab Software for Disciplined Convex Programming | CVX Research, Inc.
The loading path does not exist and no error is reported
see it in the code of KuKa_iiwa_7_IEKF.m in IEKF_OS_ACtual_Experiments
But on my computer, there is no / applications / opensim 4.1 / opensim 4.1. App / contents / resources / opensim / geometry
When I annotate this line of code, it still doesn't affect the result.
The function or variable'importrobot' is not defined
When I run code in IEKF-OS_KUKA_Infinity_Shape
report an error, The function or variable'importrobot' is not defined. Althrough I try to install Robotics Toolboox in Matlab, I failed run code.
But when I try to the code in Matlab 2020a, it successed. You can supplement the matlab version in your README
Some suggestions on documentation
The core algorithm of IEKF-OS mainly contains three folders, and each folder contains many files. Seeing these codes, I am very confused. Fortunately, each file has a detailed README.md, and there are detailed comments in the code, I will show more detailed comments and file descriptions below.
After sorting out the structure of different folders, I also sorted out the role of different files in the IEKF_OS_Actual_Experiments file:
Functions:
Scripts:
Not Found:
OpenSim Model:
Some questions about the details of the algorithm
How is Rotm_KUKA_Link1 in IEKF_OS_Actual_Experiments\XsensOrientationParameters.m determined? How to determine this parameter if it is changed to the human body?
If I place the sensor on the human body, how should I place it? I want to apply your method to obtain kinematic parameters of lower limbs. Will my placement of the sensor on the mid-thigh or small thigh have any effect on the angle calculation?
The robot arm is a hinge structure, so I plan to try to calculate the knee joint angle using only sensors. This is the smallest change compared to your experiment.
When I apply your algorithm on the human body, is there anything else I should pay attention to?
BeSides,Can you tell me your email address? I still have some code issues and would like to consult you. I also want to make friends with someone like you who has the spirit of sharing. My email is waterfree@foxmail.com