I' m looking for a trajectory generator (the algorithm doesn't matter, since I m going to write it using C++ ) that generates a trajectory (a parametric curve in space) defined point by point which is going lately to be feed into my quadrotor drivers.
I'm honest: I don't know where to start.
- Reading the following interesting answer. But the problem here is: the trajectory has a PD controller with it. My quadrotor should take just a parametric curve as input.
- OMPL: this library seems very powerful and interesting. It let the user to define a planner which many different algorithms. The problem is that it is not well documented, good examples and explanations are missing and till now I could'nt find anything related to quadrotors, which does use that library. There is an example for a quadrotor, which doesn't find my expectations and I cannot figure out, how to implement it in my package. I don't want just copy and paste code that I don't understand.
- B-Spline and Bezier Curve...and the whole family of parametric curves. I found very interesting libraries in internet that implement those algorithm directly C++. The problem here is: I can define some points in space, generate a spline that contains them and interpolate points for the PID controller in the quadrotor. The basic idea is like a dog chasing a rabbit. A point is generated from the start point of the spline and regularly sent to the quadrotor. The latter flies behind the point, trying to reach it until a goal point has been reached. What is the problem here?!? In this case I can only generate a curve based on geometric properties and not considering the dynamic and the kinematic of the quadrotor (which I would consider for a future project). The rabbit runs and has a tighter curve radius than the dog, which could result in a strange behavior of the quadrotor.
I'd like same good tips to point to the right direction.
Which kind of trajectory planner are usually developed fr such an application?
Thanks! Regards
arcsin()yields undefined number due to the fact thatUx*sin(psi) + Uy*cos(psi)is out ofarcsindomain. – CroCo May 22 '15 at 19:44Runge-Kuttain boost library. In your code, is there any constrain on the generated angles? In my code, `DesiredPsi = atan2( Yd - x[2], Xd - x[0] );DesiredPhi = asin( Uxsin( DesiredPsi ) - Uycos( DesiredPsi ) );
DesiredTheta = asin( (Uxcos(DesiredPsi) + Uysin(DesiredPsi)) / cos(DesiredPhi) );` with no constrains.
– CroCo May 23 '15 at 20:24asinin your code? Or you simply chose the parameters in such a way that the value that is passed toasinin the proper range ofasin. – CroCo May 23 '15 at 20:29a saturation functionhow did you implemented? Thank you again for being informative and helpful. I really appreciate your kindness – CroCo May 24 '15 at 15:53