> I've always implemented pure pursuit in the traditional way, with the
> lookahead point a fixed distance away from the car. In this case, the
> desired curvature never changes instantaneously, although you can
> still have ringing at sharp corners.
Also the turns probably end up asymmetric, right? That was one annoyance
I found with path following 90 degree bends.
> You can implement this by just checking for the intersection of the
> circle centered at the car with the current line segment and enough of
> the subsequent ones to guarantee success. Circle-line segment
> intersection formulas can be found pretty easily.
It took me a surprisingly long time to find one :) But I did, finally. I
think last time I gave up and worked on deriving an equation to find the
lookahead point on the path. Seems like I had it working fine in
simulation but ran into issues that I didn't have time to troubleshoot
last year.
On the other hand, I kind of like what I have. Aside from awkward corner
transitions, I'm not sure I see what the disadvantages really are at
this point. It has the advantage of being simple (at least for me) to
grasp the math and compute and it seems to work at least in
simulation... I was able to source a gearset locally so I hope to find
out about real world performance later today.
> I also force the look ahead distance to be at least some >1.0x
> multiplier of the crosstrack in addition to the overall minimum to
> prevent blowup.
Interesting.
I don't know, I kind of like my pseudo-pure pursuit for the moment. I'm
still debating what to do about corners and ringing.
I learned a bit about Bezier curves yesterday; guaranteed tangential to
the control (path) lines, provides curve continuity from straight line,
seems relatively simple to grasp the geometry, at least. Sounds like
goodness to me.
> One particularly easy route, is to supersample your long path segments
> into shorter ones, then run an iterative smoother on them.
I went ahead and signed up for the new version of the Udacity CS373 and
went through the smoothing portions of the class. Very simple,
practical, straightforward. I may just go this route (ahem).
Supersampling and smoothing sounds like the best idea at this point. I
could do that offline so I can see where the robot will travel in Google
Earth.
I find it interesting that PID path following was taught in the class.
And, apparently, that's being used by the Google Car? I thought everyone
used pure pursuit or something like it?
>> A Linear-Quadratic Regulator? Minimizing a cost function (describing
>> deviations, with costs given weights) for a system with system
>> dynamics as a set of linear differential equations? Hm, that'd take
>> me another couple years to wrap my head around. :D
> It is easier than it sounds if you do all the derivatives
> numerically. :)
Uh huh, I'll believe it when I see it. :D I'd love to hear more about
it, though, in all seriousness.
Michael