KDL - Trajectory generation with non-zero initial velocity
Submitted by phamelin on Fri, 2010-01-29 15:48 |
Hi,
I need to modify a trajectory profile while it's not completely done. I'm
currently using the VelocityProfile_Trap class to generate a trajectory but
unfortunately I see no way to force an initial velocity. I saw the
VelocityProfile_TrapHalf class but it seems that the initial velocity must
be egal to the desired maximum velocity. Is there a way to do that with the
current classes of KDL or I would need to code a new type of profile?
Thank you,
Philippe Hamelin
KDL - Trajectory generation with non-zero initial velocity
On Fri, 29 Jan 2010, Philippe Hamelin wrote:
> I need to modify a trajectory profile while it's not completely done. I'm currently using the
> VelocityProfile_Trap class to generate a trajectory but unfortunately I see no way to force an
> initial velocity. I saw the VelocityProfile_TrapHalf class but it seems that the initial velocity
> must be egal to the desired maximum velocity. Is there a way to do that with the current classes
> of KDL or I would need to code a new type of profile?
The algorithm to work with arbitrary initial or end velocities is _much_
more complex than the current one, and it does not have a closed form
solution. Even the numerical solution is _very_ complex... So what you are
searching for is not so easy :-( (I have spent/lost several months on that
problem when I was a PhD student...)
We have some people working on better algorithms, via (convex)
optimization, but those algorithms are not yet mature...
Herman
KDL - Trajectory generation with non-zero initial velocity
We already have a working implementation of a "n-axis" generic trajectory
generation in our library called Microb (
http://www.robotique.ireq.ca/microb/). However, it uses the matrix library
(Vectmath) of Microb of that I wouldn't like to be dependant in my Orocos
program. I think that I will try to re-code this class using only stl
containers. Thus, maybe we will submit it to KDL in the futur.
Philippe
2010/1/29 Herman Bruyninckx <Herman [dot] Bruyninckx [..] ...>
> On Fri, 29 Jan 2010, Philippe Hamelin wrote:
>
> I need to modify a trajectory profile while it's not completely done. I'm
>> currently using the
>> VelocityProfile_Trap class to generate a trajectory but unfortunately I
>> see no way to force an
>> initial velocity. I saw the VelocityProfile_TrapHalf class but it seems
>> that the initial velocity
>> must be egal to the desired maximum velocity. Is there a way to do that
>> with the current classes
>> of KDL or I would need to code a new type of profile?
>>
>
> The algorithm to work with arbitrary initial or end velocities is _much_
> more complex than the current one, and it does not have a closed form
> solution. Even the numerical solution is _very_ complex... So what you are
> searching for is not so easy :-( (I have spent/lost several months on that
> problem when I was a PhD student...)
>
> We have some people working on better algorithms, via (convex)
> optimization, but those algorithms are not yet mature...
>
> Herman
>
KDL - Trajectory generation with non-zero initial velocity
On Fri, 29 Jan 2010, Philippe Hamelin wrote:
> We already have a working implementation of a "n-axis" generic trajectory generation in our
> library called Microb (http://www.robotique.ireq.ca/microb/). However, it uses the matrix library
> (Vectmath) of Microb of that I wouldn't like to be dependant in my Orocos program. I think that I
> will try to re-code this class using only stl containers. Thus, maybe we will submit it to KDL in
> the futur.
Perfect! Do you really have closed form solution?!?! :-)
Herman
>
> Philippe
>
> 2010/1/29 Herman Bruyninckx <Herman [dot] Bruyninckx [..] ...>
> On Fri, 29 Jan 2010, Philippe Hamelin wrote:
>
> I need to modify a trajectory profile while it's not completely done. I'm
> currently using the
> VelocityProfile_Trap class to generate a trajectory but unfortunately I see no
> way to force an
> initial velocity. I saw the VelocityProfile_TrapHalf class but it seems that
> the initial velocity
> must be egal to the desired maximum velocity. Is there a way to do that with
> the current classes
> of KDL or I would need to code a new type of profile?
>
>
> The algorithm to work with arbitrary initial or end velocities is _much_
> more complex than the current one, and it does not have a closed form
> solution. Even the numerical solution is _very_ complex... So what you are
> searching for is not so easy :-( (I have spent/lost several months on that
> problem when I was a PhD student...)
>
> We have some people working on better algorithms, via (convex)
> optimization, but those algorithms are not yet mature...
>
> Herman
>
>
>
>
--
K.U.Leuven, Mechanical Eng., Mechatronics & Robotics Research Group
<http://people.mech.kuleuven.be/~bruyninc> Tel: +32 16 328056
EURON Coordinator (European Robotics Research Network) <http://www.euron.org>
Open Realtime Control Services <http://www.orocos.org>
Associate Editor JOSER <http://www.joser.org>, IJRR <http://www.ijrr.org>
KDL - Trajectory generation with non-zero initial velocity
2010/1/29 Herman Bruyninckx <Herman [dot] Bruyninckx [..] ...>
> On Fri, 29 Jan 2010, Philippe Hamelin wrote:
>
> We already have a working implementation of a "n-axis" generic trajectory
>> generation in our
>> library called Microb (http://www.robotique.ireq.ca/microb/). However, it
>> uses the matrix library
>> (Vectmath) of Microb of that I wouldn't like to be dependant in my Orocos
>> program. I think that I
>> will try to re-code this class using only stl containers. Thus, maybe we
>> will submit it to KDL in
>> the futur.
>>
>
> Perfect! Do you really have closed form solution?!?! :-)
>
>
No this is a numeric solution. The algorithm just consider the 4 possible
cases of the trapezoidal velocity profile, ie:
1. v_init < v_max & v_final < v_max
2. v_init < v_max & v_final > v_max
3. v_init > v_max & v_final < v_max
4. v_init > v_max & v_final > v_max
For each cases, there's a set of 3 equations. Then the velocity is
integrated to obtain the position. This is not the best solution, but at
least this works for arbitrary initial and final conditions.
Philippe