-
Notifications
You must be signed in to change notification settings - Fork 119
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
PathController: Get next maneuver #155
Comments
Can you request the next maneuver when the vehicle is at the worst case distance (e.g. distance of max turn radius), and then delay the switch according to the angle in the path controller rather than exchanging PC/PCS messages? Or am I missing something here |
I interpret your comment to suggest that I signal completion of a maneuver at a "worst case" distance (possibly far away from the actual completion of the maneuver), but then still use the old value of TrackingState (start/stop_lat/lon etc) until the actual completion of the maneuver, and then start using the next TrackingState. |
Thanks for the clarification, I didn't consider the case of multiple path controllers. Another possibility is to add fields to the DesiredPath message, such that the fields consist of start_lat/start_lon, end_lat/end_lon and next_lat/next_lon or something along those lines (DesiredTrajectory?). Anyway, I don't have too much further to add this. I think smoother motion between maneuvers is something that definitely makes sense though. |
I have finally had some time to think more about this, and have arrived at the following suggestion on how to pass information about the upcoming maneuver all the way down to the pathcontroller (following an idea from @paulosousadias , I believe). The idea is to mimic how a maneuver is passed down from PlanEngine and ends up as a DesiredPath in PathController. These are the suggested changes: Plan Engine changes In addition to the changes to the tasks above, this will require 2 new IMC messages: PeekManeuver and PeedDesiredPath, which are exact copies of Maneuver and DesiredPath. I decided to call it PeekManeuver instead of NextManeuver, to not risk confusion with some maneuver that we are about to change to. Any comments on this? I'm also working in a class of "path smoothers" that I plan to use to smooth the transition between straight line paths. My plan is to make this a class that can be inherited to implement different types of smoothing strategies between straight paths (e.g. inscribing a circle, using a clothoid or a fermat spiral, etc, see this paper by my colleague Tasos Lekkas)
Open for inputs on this as well, even though I realize that this is more specific, and that it might be a challenge to ever get this part merged :) |
Hi,
For vehicles with a limited turning radius, it makes sense to consider the maximal turning radius when switching to the next maneuver. To enable a smooth transition between two straight lines, I would like to add the possibility to dynamically adjust the TimeFactor based on how sharp the turn is: transition earlier the more acute the angle between the two straight lines is. From the PathController side, this can be achieved by overloading the getTimeFactor function, but the problem is that it will require knowledge of the next maneuver before the transition is made. What is the best way to achieve this?
I've looked into this, and have arrived at the following suggestion:
How does this sound? Do you agree that this is the most straight forward approach? I know that this will introduce some (minimally invasive) changes to the "holy" PathController base class, so I would like some input before I potentially start this process.
Thanks!
The text was updated successfully, but these errors were encountered: