Todo List
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.
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 cuiksmoothpath.c
Implement a cuikatlassmoothpath to exploit the atlas parametrization in the smoothing.
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.
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 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, Tstatistics *stime, unsigned int *np, double ***point, TAtlasBase *w)
Implement a parallel version of the GradientSmooth function.
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.
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!
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.
Introduce the range limitations for each one of the degrees of freedom of the Staubli RX60.
Spherical-Prismatic-Spherical joints implicitly define two cylinders between the two extremes of the joint. Right now, there is no way to include this cylinder in the collision checking.
Spherical-Spherical joints implicitly define a cylinder between the two extremes of the joint. Right now, there is no way to include this cylinder in the collision checking.
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.