DJI Mavic, Air and Mini Drones
Friendly, Helpful & Knowledgeable Community
Join Us Now

Waypoint Mission (IMPOSSIBLE) !!!!! 🇦🇮🦘

What DJI has implemented is not "lazy programming" with regard to the use of a spline. It is the correct implementation of a Centripetal Catmull-Rom spline applied to waypoints in 3D space. What DJI could do is to provide some stats such as the minimum (and perhaps maximum) heights of the resulting flight path.

They don't. Hence the "lazy programming".

Provide a means to visualize the path in 3D. The libraries to do this already exist, so use them.

Also, when the ranging sensor detects a surface getting close, abort the mission. Also relatively small potatoes engineering since the basic functionality is already implemented as Landing Protection.

Making some vague statement in the manual and then allowing the product to take a swim is, simply, unacceptable. Especially when it's avoidable.

FYI all, you can play with Catmull-Rom splines here.
 
Last edited:
  • Like
Reactions: MARK (LI)
They don't. Hence the "lazy programming".
In your previous message your "lazy programming" comment was referring not defining the spline is 2D while using linear interpolation for heights. Here you apply your "lazy programming" comment to DJI not providing a 3D visualization of the flight path. While I'm not here to defend DJI, I will not be pulled into your straw man arguments.

I do agree that DJI can do a lot better. I have always referred to their implementation of waypoints as a "proof of concept" only. I do not agree with your idea of combining a 2D spline with linear height interpolation to produce a 3D path. That would produce inferior results.
 
  • Like
Reactions: okw
DJI uses a Centripetal Catmull-Rom spline to define the flight path. A Catmull-Rom spline has C1 continuity. If you are not familiar with parametric continuity you can read about it here:


When compared to other types of splines, the Centripetal Catmull-Rom spline provides some features that are well-suited for drone flight paths. If a Catmull-Rom spline was implemented in 2D and altitude transitions were made linear, it would result in a path that has C0 continuity. This means that the 1st derivative at the waypoints would not be continuous and would require infinite acceleration at those points. This would be similar to a straight-line mission where the flight path abruptly changes at the waypoints. Litchi and DJI handle such cases by having the drone stop momentarily at each waypoint. The WPML language used by DJI calls this waypoint mode "toPointAndStopWithDiscontinuityCurvature".

Additionally, if a spline with C0 continuity was used to define a flight path in which video was captured, the resulting video would have abrupt changes at the waypoints rendering the video less than pleasing.

What DJI has implemented is not "lazy programming" with regard to the use of a spline. It is the correct implementation of a Centripetal Catmull-Rom spline applied to waypoints in 3D space. What DJI could do is to provide some stats such as the minimum (and perhaps maximum) heights of the resulting flight path. DJI's implementation of waypoints has always seemed like more of a proof-of-concept where only the most basic waypoint functions are provided. Applications such as DroneLink or Litchi provide more advanced waypoint design features making the creation of waypoint missions much more efficient.
Thank you for your knowledgeable explanation. Yuneec also uses this for their Curved Cable Cam mode of flight. It produces a very cinematic flight path.
 
In your previous message your "lazy programming" comment was referring not defining the spline is 2D while using linear interpolation for heights. Here you apply your "lazy programming" comment to DJI not providing a 3D visualization of the flight path. While I'm not here to defend DJI, I will not be pulled into your straw man arguments.

No need to get testy.

I fully acknowledge I used the criticism in two different instances. I meant it in both cases.