ndcurves issueshttps://gepgitlab.laas.fr/loco-3d/ndcurves/-/issues2020-05-11T14:24:31Zhttps://gepgitlab.laas.fr/loco-3d/ndcurves/-/issues/23hermite spline should be implemented as a Bezier curve2020-05-11T14:24:31ZPierre Fernbachhermite spline should be implemented as a Bezier curveOriginal issue : https://gepgitlab.laas.fr/loco-3d/multicontact-api/issues/11
Summary of the original discussion, please correct me if I'm wrong:
* Current class `cubic_hermite_spline` have a misleading name as it is actually an array ...Original issue : https://gepgitlab.laas.fr/loco-3d/multicontact-api/issues/11
Summary of the original discussion, please correct me if I'm wrong:
* Current class `cubic_hermite_spline` have a misleading name as it is actually an array of cubic hermite spline.
* Internal maths of the `cubic_hermite_spline` (like the evaluation and the derivative) are similar to the `bezier` formulation.
Proposition :
* `cubic_hermite_spline` should be reworked to inherit from `bezier` and factorize as much as possible the code for evaluation/derivative. It should simply add a constructor taking a pair of points and theirs derivative and correctly build a bezier from this.
* Current usage of `cubic_hermite_spline` in multicontact-API package should be replaced by `piecewise<cubic_hermite_spline>` (already implemented).
* An helper should be added to build a `piecewise<cubic_hermite_spline>` from a list of points/derivatives and timing (already implemented for `piecewise<polynomial>` so it's easy to add it), as done is multicontact-api.
https://gepgitlab.laas.fr/loco-3d/ndcurves/-/issues/30split tests files2020-05-05T10:13:11ZGuilhem Saurelsplit tests filesHi,
The README advertises the user to read `test.py`, as it is "self explanatory".
But this file is like 1200 lines of code. This is not really appealing. I think we should split it.
Main.cpp is also 2700 lines of code. It's going to b...Hi,
The README advertises the user to read `test.py`, as it is "self explanatory".
But this file is like 1200 lines of code. This is not really appealing. I think we should split it.
Main.cpp is also 2700 lines of code. It's going to be hard to maintain that.
I think that splitting those files to get functions would improve readability and parallelization possibilities.Guilhem SaurelGuilhem Saurelhttps://gepgitlab.laas.fr/loco-3d/ndcurves/-/issues/12add UnitTest to check behavior when Safe = False2020-05-05T08:43:03ZPierre Fernbachadd UnitTest to check behavior when Safe = FalseCheck the behavior of all the classes of curves when evaluated at a time outside of the definition range with the parameter Safe = False.
It should not raise any error nor return undefined value. It should either :
* Evaluate the curve...Check the behavior of all the classes of curves when evaluated at a time outside of the definition range with the parameter Safe = False.
It should not raise any error nor return undefined value. It should either :
* Evaluate the curve at the given time, even if it's outside the given interval, if it make sense mathematically
* Return the final/initial value of the curve if it's outside the mathematical definition interval.sot-talos-balance requirementshttps://gepgitlab.laas.fr/loco-3d/ndcurves/-/issues/13[python] add parameters to define curves with Safe = False2020-05-04T17:01:52ZPierre Fernbach[python] add parameters to define curves with Safe = FalseI am not sure about the best way to implement this, but we should be able to instantiate curves with the template parameter `Safe = False` from python.
I don't think that it should become the default behavior, what do you think about i...I am not sure about the best way to implement this, but we should be able to instantiate curves with the template parameter `Safe = False` from python.
I don't think that it should become the default behavior, what do you think about it ? @stonneausot-talos-balance requirementshttps://gepgitlab.laas.fr/loco-3d/ndcurves/-/issues/34Check time interval with a tolerance2020-05-04T16:49:31ZPierre FernbachCheck time interval with a toleranceAs we are working with floating points, the check to compare a time value to the lower/upper bounds of the defined time interval should be done with a tolerance.As we are working with floating points, the check to compare a time value to the lower/upper bounds of the defined time interval should be done with a tolerance.https://gepgitlab.laas.fr/loco-3d/ndcurves/-/issues/33Reduce memory footprint for piecewise linear interpolation2020-05-04T15:44:15ZPierre FernbachReduce memory footprint for piecewise linear interpolationWhen creating a `piecewise<polynomial>` from a set of discrete points (eg. with https://gitlab.laas.fr/loco-3d/curves/-/blob/master/include/curves/piecewise_curve.h#L271) all the points except the first and last one are stored twice. Onc...When creating a `piecewise<polynomial>` from a set of discrete points (eg. with https://gitlab.laas.fr/loco-3d/curves/-/blob/master/include/curves/piecewise_curve.h#L271) all the points except the first and last one are stored twice. Once as the final point of one polynomial, and a second time as the initial point of the next polynomial.
Having a specific implementation for this case would allow to cut the memory usage by half, but add a little complexity in the code.https://gepgitlab.laas.fr/loco-3d/ndcurves/-/issues/24require struct to have different curves formulation for different index2020-05-04T14:31:12ZPierre Fernbachrequire struct to have different curves formulation for different indexeg. I want a curve of dimension 6 where the first 3 dimensions are formulated as a Bezier and the last 3 as a polynomial.
It can already be done with the polynomial class as all curves can be converted to polynomial, but it could be sim...eg. I want a curve of dimension 6 where the first 3 dimensions are formulated as a Bezier and the last 3 as a polynomial.
It can already be done with the polynomial class as all curves can be converted to polynomial, but it could be simplified with a dedicated struct or helper.https://gepgitlab.laas.fr/loco-3d/ndcurves/-/issues/18Template parameters: Time vs Numeric2020-01-10T15:26:05ZGabriele BuondonnoTemplate parameters: Time vs NumericIs it really necessary to have a different template parameter for `Time` and `Numeric`?Is it really necessary to have a different template parameter for `Time` and `Numeric`?https://gepgitlab.laas.fr/loco-3d/ndcurves/-/issues/7Implement constant class2019-10-11T12:11:07ZPierre FernbachImplement constant classSee https://gepgitlab.laas.fr/loco-3d/curves/issues/1
It can already be done with the generic polynomial class. But a specific class may be useful as we could make a more efficient implementation and mostly because we could remove the t...See https://gepgitlab.laas.fr/loco-3d/curves/issues/1
It can already be done with the generic polynomial class. But a specific class may be useful as we could make a more efficient implementation and mostly because we could remove the time interval and allow to evaluate this curve for any time (as required for sot-talos-balance).V1.0https://gepgitlab.laas.fr/loco-3d/ndcurves/-/issues/11Name convention2019-10-11T09:35:25ZGabriele BuondonnoName conventionWhy are all classes named using `lowercase_with_underscores`? Shouldn't it be `UpperCamelCase`?Why are all classes named using `lowercase_with_underscores`? Shouldn't it be `UpperCamelCase`?https://gepgitlab.laas.fr/loco-3d/ndcurves/-/issues/3Require SO3 curve2019-10-10T10:03:32ZPierre FernbachRequire SO3 curveIn multicontact-api and MLP we use SO3 (and SE3) curves.
SO3 should be initialized with 2 quaternion and a duration and output a quaternion which is the result of the slerp method. Main issue here is that the return dimension is 4 but ...In multicontact-api and MLP we use SO3 (and SE3) curves.
SO3 should be initialized with 2 quaternion and a duration and output a quaternion which is the result of the slerp method. Main issue here is that the return dimension is 4 but the return size of the derivative is 3.
SE3 is not really required but would be easier for the user. It is basically the composition of a SO3 and any kind of curve of dimension 3.
I can implement them but I am not sure about the best way to do it (ie what should be their parent class) ? Ideally we should be able to make piecewise SO3/SE3 without changing the code of the piecewise templated class.V1.0