Biomech-Sim-Toolbox 1
Toolbox for movement simulation and analysis
Loading...
Searching...
No Matches
Todo List
Member Collocation::addObjective (in obj, in fh, in weight, in varargin)
check if xmin, xmax, xinit have the correct size
Member Collocation::fromStandingConstraint (in obj, in option, in X)
Generalize this function and remove hard coded indices. E.g. we do not assume fixed indices for the states. The function should also work for 2D.
Member Collocation::getCEPower (in obj, in X)
Implement powerd. There were multiple implementations of it. See comments. Add a description for the outcome powerd and rename it!
Member Collocation::getMetabolicCost (in obj, in X, in name, in getCont, in epsilon, in exponent)
Agree for one method to define (compute or extract) speed!
Member Collocation::getSimData (in obj, in X, in simVar, in modelName)

Check again if we use always the correct discretization method. If we use BE, shouldn't we use states(idxSimVar, 2:nNodes+1) and controls(idxSimVar, 2:nNodes+1)?

Use model.GRFNAMES instead of hard coded indices. Eventally change the names in GRFNAMES

Check which unit is requested and convert the data if needed. However this is currently only done for angles which are automatically converted into degrees if the unit is 'deg'.

Member Collocation::isPeriodic (in obj)

What if symmetric and not symmetric movement is loaded?

: current hack without changing Model Class, is there a better way to make sure that always the right model is initialized?

What if symmetric and not symmetric movement is loaded?

: current hack without changing Model Class, is there a better way to make sure that always the right model is initialized?

Member Collocation::makeinitialguess (in obj, in init)
check if cmin and cmax have the correct size
Member Collocation::resampleInitialContact (in obj, in X, in foot, in contact_names)
Implement symmetric case, 3d-Curved running (?)
Member Gait2d_osim::bodymass
Is is not nice that the talus is missing in the computation of the bodyweight.
Member Gait2d_osim::scaleOsim (in opensimfile, in scale_factors, in bodymass, in varargin)
: .trc/xml scaling; load scalefactors from table?
Member Gait2d_osim::update_states (in obj)
Variables of contact points of neutral position shouldn't be zero.
Member Gait2d_osimTest::derivativetest_Fkin (in testCase)
Add error checking
Member Gait2d_osimTest::test_Fkin (in testCase)

Add error checking

Would be nice to do this interactively with slider GUI like in Opensim

Member Gait2d_osimTest::test_grf (in testCase)
Add error checking
Member Gait2d_osimTest::test_isometric (in testCase)
Add error checking
Member Gait2dc::showMarker (in obj, in x, in markerTable, in measuredMean)
The function is not yet supporting Gait2dc.slope ~= 0.
Member Gait2dc::showStick (in obj, in x, in range, in plotFeet, in plotGRF, in plotCPs, in plotJointCOSYs)
If the slope ~= 0, the ranges are not perfect yet. If ranges are given, they will not be kept constant. If no ranges are given, the stick figures are not perfectly centered.
Member Gait2dc::update_states (in obj)
Variables of contact points of neutral position shouldn't be zero.
Class Gait2dc_Exo
Write a test class inheriting from Gait2dcTest
Member Gait2dc_Exo::getDynamics (in obj, in x, in xdot, in u, in input)
Don't use fixed indices. Get them from the state vector table!
Member Gait2dcTest::test_dynamicGRF (in testCase)
Add error checking
Member Gait2dcTest::test_grf (in testCase)
Add error checking
Member Gait2dcTest::test_isokineticMuscles (in testCase)
Add error checking
Member Gait2dcTest::test_isometricMuscles (in testCase)
Add error checking
Member Gait3d::bodymass
Is is not nice that the talus is missing in the computation of the bodyweight.
Member Gait3d::update_states (in obj)
Variables of contact points of neutral position shouldn't be zero.
Member Gait3dTest::derivativetest_Fkin (in testCase)
Add error checking
Member Gait3dTest::test_Fkin (in testCase)

Add error checking

Would be nice to do this interactively with slider GUI like in Opensim

Member Gait3dTest::test_grf (in testCase)
Add error checking
Member Gait3dTest::test_isometric (in testCase)
Add error checking
Class Model
We should set init = 0 as soon as we are loading an other model. This should be also done for all models which are saved within an other object (e.g. problem.model). Furthermore, we should check init == 1 each time before calling the mex.
Class ModelTest

Consider using Parameterized Tests later (introduced 2014a). http://de.mathworks.com/help/matlab/matlab_prog/create-basic-parameterized-test.html

Consider to tag the tests later (introduced 2015a). https://de.mathworks.com/help/matlab/matlab_prog/tag-unit-tests.html# E.G.: (Test, TestTags = {'Acc_2D', 'objfun'}) => use a tag for the conditions (e.g Acc_2D) and one for the test (e.g. objfun) Then you can test single tags separalty. For example only tests related to tracking of accelerometer or only tests for objfun().

Member ModelTest::halfstim (in testCase, in t)
Does it make sense to use 0.5 for all? We should differentiate between muscle exctitation and torques
Member ModelTest::test_memory (in testCase)
Add error checking
Member ModelTest::test_showStickNeutral (in testCase)
Add error checking
Member ModelTest::test_simulateFreefall (in testCase)
The second simulation is not solving for 3D. And switching from Windows to Linux caused that also the first simulation is not solving. A difference in the compilers maybe caused this...
Member ModelTest::test_speedOfMex (in testCase)
Add error checking
Member ModelTest::test_speedOfSimuAccGyro (in testCase)
Add error checking
Member readMot (in filenameAll)
In future it might be helpful to convert the data struct into a table compatable with simVarTable.
Member readSto (in filenameAll)
In future it might be helpful to convert the data struct into a table compatable with simVarTable.
Class TrackingData

The property isSymmetric is very confusing. Because it is not telling something about the symmetry of the data. If we would like to track other movements later we should have both isSymmetric and isPeriodic.

Test the implementation with IMU data.

Member TrackingData::correctVariance (in obj, in plotIt)
If nTrial > 1, we set the minimum variance of speed and duration to 0.0001. This was an arbitrarily chosen value. We should think about this.
Member TrackingData::resampleData (in obj, in nNodes, in plotIt, in plotSamples, in plotVariance)
Rethink the adaption of the events. Currently we keep only the start at 1 and the end at nSamples+1. However, the events are not exactly at the index 1 or nSamples+1
Member TrackingData::takeMeanAndVar (in plotIt, in varargin)
We have to ensure if we can simply take the mean of the translations. If we do this, we are assuming that the cycle is always at the same position in the global reference frame.