Skip to content
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

Setting minimum_turning_radius to 0 for SmacPlannerHybrid causes error #4845

Open
tonynajjar opened this issue Jan 13, 2025 · 3 comments
Open
Labels
question Further information is requested

Comments

@tonynajjar
Copy link
Contributor

tonynajjar commented Jan 13, 2025

Bug report

Required Info:

  • Operating System:
    • Ubuntu 24
  • ROS2 Version:
    • Jazzy

Steps to reproduce issue

planner_server:
  ros__parameters:
    expected_planner_frequency: 20.0
    planner_plugins: ["GridBased"]
    GridBased:
      plugin: "nav2_smac_planner::SmacPlannerHybrid"
      tolerance: 0.2
      downsample_costmap: false
      downsampling_factor: 1
      allow_unknown: true
      max_iterations: 1000000
      max_on_approach_iterations: 1000 
      max_planning_time: 1.5 
      motion_model_for_search: "REEDS_SHEPP" 
      angle_quantization_bins: 64 
      analytic_expansion_ratio: 3.5
      minimum_turning_radius: 0.0
      reverse_penalty: 10.0 
      change_penalty: 0.15 
      non_straight_penalty: 1.50
      cost_penalty: 0.1
      lookup_table_size: 10.0
      cache_obstacle_heuristic: False
      debug_visualizations: false
      smoother:
        max_iterations: 1000
        w_smooth: 0.3
        w_data: 0.2
        tolerance: 1.0e-10

Expected behavior

Actual behavior

I get GridBased plugin failed to plan from (10.38, 0.41) to (10.35, -3.65): "Start occupied". when calling ComputePathThroughPoses (although it's really not occupied). Setting it dynamically to e.g. 0.1 fixes the issue

Additional information


@SteveMacenski
Copy link
Member

SteveMacenski commented Jan 13, 2025

That is not a valid configuration, there must be a non-zero value for the minimum turning radius. The motion model requires a turning radius to compute the minimum turning arcs. It does not support point changes, as that would be discontinuous and therefore infeasible kinematically by the motion model's formulation. If you didn't need a feasible planner, you could use Smac 2D, NavFn, or Theta* as potential other options that don't rely on feasibility constraints.

Otherwise, you could also use the State Lattice planner, which can be configured with a minimum control set with in-place rotations that would be virtually allowing stop and rotate maneuvers (in conjunction with some minimum turning radius turning moves as well). That is just with the generator we provide that you can configure easily. If you want something more bespoke, that is part of the value of the State Lattice planner; you can create your own minimum control set / generator and we provide the file format that they're read into the planner to use by. The generator we provide is good for many types of robots and situations, but bespoke situations or 'abnormal' robot configurations would need to create their own

@SteveMacenski SteveMacenski added the question Further information is requested label Jan 13, 2025
@SteveMacenski
Copy link
Member

I just updated the docs to mention that as well

@SteveMacenski
Copy link
Member

I think this can be closed?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
question Further information is requested
Projects
None yet
Development

No branches or pull requests

2 participants