Solve with maximum curvature constraint?
Opened this issue · 1 comments
I was thinking I could write a custom solver to replace SolveG2, or I would have an outer solver that looks at the results of SolveG2 and then if there is too much curvature injects an extra control point between the two provided and moves it around in the solver while minimizing total length and curvature rate- but if there is an easier way (and faster in execution time) I'd like to avoid that.
The SolveG2 solver is based on a heuristic designed to make the curve "visually pleasing" and "well behaved" which may conflict with your overarching goal of minimizing total length and curvature rate. I suspect the two-tiered solver approach would still work, but may not give true optimal values for the underlying problem. If I'm understanding correctly, you want to generate a max/min curvature constrained path between two points with specified tangents and curvatures. As noted in the original paper on the algorithms by Bertolazzi, this problem is generally quite different from the one this work is meant to solve and has been studied extensively in other work. It's essentially a problem of optimal control rather than geometry, and is best solved using optimal control methods. Perhaps you would be best served by looking into colocation methods and using premade specialized optimal control solver for your problem. While I've studied the methods used, I don't often solve these types of problems in python so I may not be the best person to recommend a software package for you, but I did a quick google and found this that seems to fit at least part of the bill.