Open jeljaik opened 9 years ago
Luca's paper on skin stiffness matrix. lucasPaperIROS14.pdf | uploaded via ZenHub
pc104
: robotInterface --config icub_all_norightarm_headtest.xml
. Those particular configuration files can be found in ~/.local/share/yarp/robots/iCubGenova01
@pc104
torso
from 0 0 0
to 0 0 60
left_arm -home position-
right_leg 25 0 0 0 -2 -2
left_leg 25 0 0 0 0 0
torso
from 0 0 20
to 0 0 -18.1
in 1.0 sec
right_leg -10 0 0 0 -2 -2
left_leg -10 0 0 0 0 0
python dataDumperAppGenerator.py --ports /icub/right_leg/state:o /icub/left_leg/state:o /icub/torso/state:o /icub/inertial /icub/right_leg/analog:o /icub/left_leg/analog:o /icub/left_foot/analog:o /icub/skin/right_foot --host icub15 --name "tippingExperiments
python dataDumperAppGenerator.py --ports /icub/left_leg/analog:o /icub/skin/left_foot /icub/inertial /icub/torso/state:o --host icub15 --name "forwardTippingTest01"
and the corresponding xml has been pushed in https://github.com/jeljaik/extended-kalman-filter/commit/6b91c554b9c6a2b18ed7c6cc26f2f4e4553069e0Skin raw readings must be processed as done in load_n_filter.m
and get_input_output.m
, i.e.:
n x 384
(from the third column onwards, if read via yarpdatadumper
. Use new functions in localParamEKF/skinFunctions/
as, e.g.
totalForceFromSkinData('backwardTipping', 4, 'left');
Output of wholeBodyDynamicsTree
:
icub@icub15:~$ wholeBodyDynamicsTree
||| clearing context
||| adding context [wholeBodyDynamicsTree]
||| configuring
||| no policy found
||| default config file specified as wholeBodyDynamicsTree.ini
||| checking [/home/icub/wholeBodyDynamicsTree.ini] (pwd)
||| checking [/home/icub/.config/yarp/robots/iCubGenova01] (robot YARP_CONFIG_HOME)
...
...
wholeBodyDynamicsThread started
[INFO] wholeBodyDynamicsThread: complete calibration at system time : 24-02-2015 10:54:50
[INFO] wholeBodyDynamicsThread: new calibration for FT 0 is 84.4066 -18.5809 251.86 -0.844597 -5.08643 0.273151
[INFO] wholeBodyDynamicsThread: new calibration for FT 1 is 146.851 -13.9138 125.512 0.137384 -1.66051 0.109277
[INFO] wholeBodyDynamicsThread: new calibration for FT 2 is 23.0772 92.4128 -102.178 -7.17163 0.225915 -1.79807
[INFO] wholeBodyDynamicsThread: new calibration for FT 3 is -20.8565 -16.5023 11.3506 -0.204595 1.28343 -0.0546408
[INFO] wholeBodyDynamicsThread: new calibration for FT 4 is 5.64907 4.74285 -51.5791 -0.67231 1.58887 0.00297924
[INFO] wholeBodyDynamicsThread: new calibration for FT 5 is 0.875248 -0.913526 -9.40195 0.0152946 0.165867 -0.0175137
wholeBodyDynamicsTree: double support calibration for allrequested
wholeBodyDynamicsThread::calibrateOffsetOnDoubleSupport called with code all
wholeBodyDynamicsThread::calibrateOffset: current calibration for FT 0 is 84.4066 -18.5809 251.86 -0.844597 -5.08643 0.273151
wholeBodyDynamicsThread::calibrateOffset: current calibration for FT 1 is 146.851 -13.9138 125.512 0.137384 -1.66051 0.109277
wholeBodyDynamicsThread::calibrateOffset: current calibration for FT 2 is 23.0772 92.4128 -102.178 -7.17163 0.225915 -1.79807
wholeBodyDynamicsThread::calibrateOffset: current calibration for FT 3 is -20.8565 -16.5023 11.3506 -0.204595 1.28343 -0.0546408
wholeBodyDynamicsThread::calibrateOffset: current calibration for FT 4 is 5.64907 4.74285 -51.5791 -0.67231 1.58887 0.00297924
wholeBodyDynamicsThread::calibrateOffset: current calibration for FT 5 is 0.875248 -0.913526 -9.40195 0.0152946 0.165867 -0.0175137
wholeBodyDynamicsThread::calibrateOffset all called successfully, starting calibration.
wholeBodyDynamicsThread: new calibration for FT 0 is 84.1018 -18.3825 250.834 -0.822744 -5.09786 0.276386
wholeBodyDynamicsThread: new calibration for FT 1 is 146.262 -13.7526 124.946 0.142152 -1.67094 0.107521
wholeBodyDynamicsThread: new calibration for FT 2 is -4.11735 111.148 -131.104 -13.423 1.36924 -1.04304
wholeBodyDynamicsThread: new calibration for FT 3 is -52.0296 -5.64247 -18.0923 -0.516052 9.91345 0.717567
wholeBodyDynamicsThread: new calibration for FT 4 is -5.65084 -10.5031 -24.6174 1.95779 2.61084 0.0036913
wholeBodyDynamicsThread: new calibration for FT 5 is -17.4992 -0.910681 18.0613 -0.824831 3.32657 -0.252851
wholeBodyDynamicsThread::waitCalibrationDone() returning: calibration finished with success
Which translates into:
% Left arm
FT0 = [84.1018 -18.3825 250.834 -0.822744 -5.09786 0.276386];
% Right arm
FT1 = [146.262 -13.7526 124.946 0.142152 -1.67094 0.107521];
% Left leg
FT2 = [-4.11735 111.148 -131.104 -13.423 1.36924 -1.04304];
% LEft Foot
FT3 = [-52.0296 -5.64247 -18.0923 -0.516052 9.91345 0.717567];
% Right Leg
FT4 = [-5.65084 -10.5031 -24.6174 1.95779 2.61084 0.0036913];
% Right foot
FT5 = [-17.4992 -0.910681 18.0613 -0.824831 3.32657 -0.252851];
Taxels positions are not correct as these locations saved in Tmatrix.mat
come from a calibration procedure which gives this output.
For future references: The parent/child relationship between links and joints in URDF format is as follows:
@naveenoid I checked the output of the IMU and according to the datasheet the output signal is composed like this:
[ euler angles (deg) ] [ accelerometer (m/s^2)] [ gyroscope (m/s)] [ magnetometer ]
This has been confirmed from both the datasheet and the iCub wiki
http://wiki.icub.org/wiki/Inertial_Sensor
http://wiki.icub.org/images/8/82/XsensMtx.pdf
Also assigned labels and legends to the corresponding plot and it's now all clear.
Since I think this is our most sensitive sensor I would choose the start and end time of our experiments based on those readings. As it can be seen from the angular speed, we can consider the experiment started after roughly 7 seconds. We could choose 6 secs as the starting point and I would go till the very end, i.e. ~9 secs, because I usted to stop the experiment right after the robot tipped (about 1 sec after. Yeah, I Know, I'm damn fast! :runner:)
NOTE: The linear 3D accelerometers measure all accelerations, including the acceleration due to gravity. This is inherent to all accelerometers. Therefore, if you wish to use the 3D linear accelerations output by the MTi / MTx to estimate the “free” acceleration (i.e. 2nd derivative of position) gravity must first be subtracted
Paper tasks
CHECK INDIVIDUAL SECTIONS
Other tasks
02-03-2015 Naveen
symbolic.m
remember to add the "skin normal force" version ofline 45
.dynamicsFunction/rigidBodyOutput.m
changeline 43
to take into account skin's output.CoP on solefoot CoM (Waiting for Silvio Reply) Transformation matrix from F/T sensor to ankle can be found in http://wiki.icub.org/images/9/97/NewiCubRefFrames1.pngwholeBodyModel
. (Waiting for Silvio Reply)02-03-2015 Jorhabib
computeTotalForce.m
finish theforceTorques
option.realMeasurement_withSkin.m
normalForce
version as done inload_n_filter.m
. answer: What has to be multiplied by the stiffness vector is just the raw third component of the force measurement as seen inline 38
ofget_input_output.m
. Should we use the norm instead?Xts
andyts
subsample
for which the submatrix is full columnrank(Xtr)
.idxTaxelsNeverActive
fromload_n_filter()
intest_on_large_data()
to remove the same taxels in our collected skin data, as in this estimation the always inactive taxels have been removed. Solution The function for estimation must be called in the following way[best_w, best_w_lsqlin, activeTaxelsIndeces] = test_on_large_data()
andactiveTaxelsIndeces
which corresponds to a vector of all the taxels that were activated at least once in the dataset MUST be stored an added to/localParamEKF/skinFunctions
.plot_weights_on_skin()
to plot foot with the new reduced weights vector containing taxels whose stiffnes is not estimated (zero is being assigned to those taxels). Solution: A new vectorbest_w_padded
was created containing the weights (stiffness values) of the taxels for which the estimation was performed, and zero for all the others.plot_weights_on_skin()
such that the foot drawing does not contain those awful black lines of the mesh.axisAngle2rotationMatrix
upperleg
(thigh sensor) toWRF
andankle sensor
toWRF
for the initial leg configuration we used in the experiments. Solution: in/localParamEKF/utils
you will find a simulink model calledmdlForRotoTransMatrices
which usesiCubHeidelberg01
and retrieves the desired rototranslations saving them in.mat
files.General Pending Tasks
Tmatrix
from CAD files for right foot.realMeasurent.m
separating right and left foot.Data collection 18-02-2015
Orientation perturbation.