Todo List
Global ADJUST_SA
Set ADJUST_SA as a parameter so that it can be set without re-compiling. This implies to add an 'scale' field to the AtlarRRT structure and to modify some function interfaces and the SaveAtlasRRT (and the load) accordingly.
Global APPROXIMATED_CHARTS_IN_GRADIENT
Verify that this results in actual speed up.
Global BuildAtlasFromPoint (Tparameters *pr, double *p, boolean simpleChart, TAtlasBase *w, Tatlas *a)
Make collision detection re-entrant so that we can use openMP with it This basically means to have as many collision detection structures as prallel threads.
Global CheckCollision (boolean all, THTransform *tl, TLinkConf *def, THTransform *tlPrev, TLinkConf *defPrev, TworldCD *cd)
Implement link deformation in CD engines other than SOLID.
Global COUPLE_ORIENTATION
Generalize the orientation constraint betwee tensegrity elements so that we can set a fixed rotation between them.
File cuikaddjacobian.c
Define tools to generate equation systems to detect particular singularities (end effector, actuator,...). These tools will be less flexible that the combined use of cuiksingequations and cuikaddjacobian but will be useful for most of the cases.
File cuikcad.c
Implement cuikcad.c.
Global CuikNewtonSimp (Tparameters *p, double *x, TCuikSystem *cs)
Reduce the duplicity of code between CuikNewtonSimp and CuikNewtonInBox. This is not easy since CuikNewtonInBox includes lots of code to take into account box bondaries and inequalitites and code to convert from boxes in the original system to boxes in the simplified system at the beggining of the function and the revese change at the end of the function.
File cuikslam.c
Implement cuikslam.c. This implies to find a proper way to define the constraints between poses and between those and landmarks.
File cuiktransform.c
Integrate the CuikSuite with a proper 3D modeler such as blender.
File cuikurdf2world.cpp
Integrate the urdf2world into ROS to use all the ROS tools. However, this means that the application would require a full ROS installation.
File energy.cpp
Remove this from the repository.
Global EQ_MIN_IN_CENTER
Just select the evaluation method that is better and remove the other.
Directory examples/WSSingularities
Develop tools to automatically generate the equations for the singularity-related problems.
Global EXPLORATION_RRT
Set this as a parameter and not as a compilation flag.
Global FindPointInOtherBranch (Tparameters *pr, unsigned int bID, double *phi, double **p, Tatlas *a)
Intoduce checks to see is we converged relatively close to the departing point. If we converge too far away we had better not use the the final point.
Global FindSingularPoint (Tparameters *pr, unsigned int bID, Tatlas *a)
Stop the search if we end up in the other branch just by chance.
File geom.h
Separate non-geometric functions fom the purely geometric ones.
Global GetSPolytopeBoxSide (Tscpolytope *mp)
Frontier charts should be represented by balls and not by boxes.
Global GradientSmooth (Tparameters *pr, unsigned int nCores, unsigned int maxIterations, boolean *sv, Tstatistics *stime, unsigned int *np, double ***point, TStepCost stepCost, TStepCostGradient stepCostGradient, TAtlasBase *w)
Implement a parallel version of the GradientSmooth function.
Global InitTensegrityFromFile (Tparameters *p, char *fn, Tworld *w)
Right now we use a link-based representation for tensegrities since it is clear and close to the representations used for parallel platforms. In this way, the integration of the tensegrities in the CuikSuite is relatively simpel. However this representation uses too many variables. We could think on implementing a particular type of representation for tensegrities based on representing only the coordinates of the tensegrity nodes. This will be more compact. However it introduces complexity in the translation from/to degrees of freedom and other related procedues. In this yet to implement representatoin we need coordinates (x,y,z) for the tensegrity nodes, the norm of the tensegrity elements l=||n_1-n_2|| (which can be fixed or variable) and auxiliary variable 'd' such that l*d=l-r, with r the rest length. with this variable the force of an element is f=k*d*n_1-k*d*n_2, with n1, n2 the coordiantes of the connected nodes. The main issue with this representation is the absence of loops which is a core-assumption in the CuikSuite.
File linear_constraint.h
It might be possible to joint into a single type Tequation and TLinearConstraint. Some of the functions in the simplex could be slightly solwer but we could simplify a little the CuikSuite structure.
Global NEW_BRANCH_EXTENSION
Remove the old versions and keep only the new ones. Remove this flag.
Global NEWTON_WITHIN_RANGES
Remove this if box limits do not help at all
Global PlotChart (Tparameters *pr, FILE *fcost, TJacobian *sJ, unsigned int xID, unsigned int yID, unsigned int zID, Tplot3d *p3d, Tchart *c)
Speed up this function caching the vertex projection on the manifold instead as recomputing them as many times as needed.
Global PolynomialMonomial (Tmonomial *f)
Replace the term monomial by factor.
Global ProcessBifurcation (Tparameters *pr, unsigned int bID, TAtlasStatistics *ast, Tatlas *a)
Implement this!
Global RANDOMNESS
Remove this in the final version. This is for debug only
Global SaveAtlas (Tparameters *pr, Tfilename *fname, Tatlas *a)
Save atlas (and charts) in binary format.
Global SaveRRT (Tfilename *fname, Trrt *rrt)
Save RRT in binary format.
File Serial6RRX60.world
Introduce the range limitations for each one of the degrees of freedom of the Staubli RX60.
Class TAtlasRRTStatistics
Switch to thread-save statistics before implementing a parallel version of the AtlasRRT.
Class Tjoint
Right now only prismatic, spherical, revolute, universal and spherical-spherical joints are defined. Although it is not urgent, we have to define more types of joints: CYL_JOINT (cylindrical joint), and HEL_JOINT (helical joint).
To define a new type of joint, we have to define a new constructor, to to extend the GenerateJointEquations and the GenerateJointRangeEquations functions.
Class TRRTStatistics
Switch to thread-save statistics before implementing a parallel version of the RRT.
Class Tscpolytope
Implement the conversions between Tpolytope and Tspolytope.