-
Notifications
You must be signed in to change notification settings - Fork 1.3k
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
SmacPlanner-Hybrid generate really not optimal path #4727
Comments
Sorry for the delay, ROSCon and ROS-I (+ a short vacation) kept me from my terminal. This does seem concerning to me and worth looking into. Can you create a reproducable example of this happening so that I can personally look into it? We have a nice tool that Dexory put together (https://github.com/botsandus/planner_playground) which you can put in your planner, global costmap parameters and map. Then, you can set the start/goal point so that we can see this in action in a reproducable way to debug. The first path you sent seems on the surface reasonable -- like the minimum turning radius is just slightly larger than what the robot can accomplish from its pose, so you need to do that maneuver by the constraints you set on the turning radius. I'd have to see precise start / goal poses and do some math to know if we're on the right side of that calculation or not to know if there's an issue. The second path is very weird and clearly not correct. This is actually so simple that the analytic expansion should be able to immediately find a route to that goal without even going through the planning phase. Though I can't tell scale, if its less than What are the green arrows though? If those are NavigateThroughPose (or eq.) pose constraints that the path has to go through, that would explain all of the 2 images you showed. It very well may not have been possible from the minimum turning radius you set to be able to go from the robot pose into the first arrow around a round-about maneuver. Eyeballing it, it looks a little short to me, but again I'd need reproducable exact numbers to calculate radiuses based off of to understand if its possible to do the direct path with your settings. If you modestly reduce your turning radius in these examples, does this go away? If so, that would point to the radius of turn you requested given the constraints being smaller than the minimum turning radius the planner is allowed to use. I do note that your |
Hi Steve, I've managed to reproduce the problem using the planner_playground. I've attached the configuration I used for the tests: planner_playground_config.zip. A README file within the folder provides detailed steps on how to replicate the issue. I've included two paths generated with the same planner from the same starting point. The notable detail is that the only difference between these two paths is the goal orientation, rotated by only 0.5°: Short path Quaternion: (x=0.0, y=0.0, z=1.0, w=0.0) Could you shed some light on why such a small change in goal orientation leads to a major deviation in path generation? Best regards. |
That appears to be more than 0.5 degrees from what the plans show. What happens if you set I'm noticing that you have quite a large turning radius / resolution but still a very finite number of angular quantizations (72, by default, by not setting otherwise). Back of the envelope calculations show me that this set of configurations would result in each motion primitive being sufficiently wide to cause leaving 1 cell-bin to be equal to 9-10 angle quantizations -- effectively reducing the resolution of search from 72 to 7-8. That's why a seemingly small change in angle look so large, its not actually searching at the 72 resolution you asked it to due to your kinematic/costmap settings. Each primitive is then really like 45 degrees then. Yicks. And that looks like what you showed too. By setting that to |
Unfortunately, this parameter is not available in the version we are using (1.2.9). |
You'd wamt to upgrade then :-) Iron is EOL this month, so you would want to upgrade around now anyhow. The other option is looking into a backport of this feature into Iron without breaking ABI, but I'm not sure that's worth your energy if you have to move off of it in the immediate future anyhow |
@FrGrQuim any update? |
@SteveMacenski I had the same problem with SmacPlannerHybrid
|
That probably makes sense then - if you have navigate through poses on, and you set a pose that requires some orientation change it'll do a turn. Then when you move onto the next pose that is in the opposite direction, it'll "complete" the loop. This is the maneuver that you've requested by your pose constraints, which consider the orientation of the intermediary goals since Smac is a feasible path planner. Is that what you're seeing? |
Bug report
Required Info:
Steps to reproduce issue
1 - provide to the smac planner two goals that are placed like this:
The smac planner have the following parameters:
Expected behavior
The planner output this kind of path:
Actual behavior
The planner outputs these kind of paths.
or
Additional information
Do you have any idea why this behavior occurs and how to fix it?
The text was updated successfully, but these errors were encountered: