Skip to content

Working list of algorithms to include #1710

@SteveMacenski

Description

@SteveMacenski

Hi all,

I have a working list of planners / controllers that I've been compiling and I wanted to share them here for potential ideas if anyone's interested in developing / adapting one in particular. Feel free to ping me about this and I'll help however I can

Planners

  • A* - holonomic robots or robots small relative to environment
  • Dij. - holonomic robots or robots small relative to environment
  • OMPL - non-holonomic and non-circular footprint robots, potential formulation to include dynamic obstacles [IN PROGRESS] state lattice and hybrid-A* supersedes
  • GPS / cartesian route following - taking in a list of semantic GPS waypoints and issuing a path based on it to follow exactly. GPS waypoint navigation demo #1631 (comment). Or more generally a teach and repeat for non-GPS too. Teach via recording while moving or manual annotation.
  • Hybrid-A* - non-holonomic and non-circular robots with smoothed paths
  • Vornoi / potential field planner - for a robot to stay far, far away from things as its primary goal NavFn, Theta*, and other planners can be tuned to highly penalize costed regions. While these are easy to implement, the quality is low so its not a good addition for a modern stack. Very 1990s.
  • Theta* - doing straight line planning based on LoS
  • State Lattice - non-holonomic and non-circular robots, useful in analog situations as Hybrid-A* but for arbitrary motion models (omni, diff, non-cars, forklifts) Hybrid-A* meets this need, might be adding state lattice template node to smac
  • non-zero via-point planning (e.g. calling a continuous, kinematically feasible planner from A->1->2->3->…->B and then adding them all to a single path) -- route server Route Server anologous to Planner Server #2229 ? Or new action interface in planner server to have multiple via-points to plan (!)

Controllers

  • DWA - compute trajectories based on weighted heuristics
  • TEB - compute trajectories based on optimal bands
  • MPPI / MPC /Nonlinear MPC- compute trajectories by model simulation supporting high speeds. Exact path follower / dynamic obstacles in formulation in progress
  • LQR/iLQR/CiLQR - "MPC-lite" is the easiest way to describe it supporting high speeds MPPI supersedes
  • Pure Pursuit - following a carrot

Recoveries

  • Spin - spin in place
  • Backup - back up from pose
  • Alerts - sound, lights, etc to alert obstacle to move too usecase specific
  • Wait - wait out some duration or until event occurs
  • Push - if you know its safe, push a thing out of the way too usecase specific
  • Call for help - Slack, msgs, email, operations center request for assistance
  • Clear - clear state, plans, and costmaps
  • "Get out of here" - find some permissible path using a dynamically feasible trajectory to just get out of this area some fixed distance, if any way of motion is possible too usecase specific

feel free to comment to add more and how they're useful

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions