Skip to content

Project Details (Fall 2011)

ashgti edited this page Sep 19, 2011 · 3 revisions

Architecture:

  • High Level Planner (Actionlib based)
  • Waypoint Navigation (Global Planner)
  • Local Planner/Motion Planner

High Level Planner's Purpose (Actionlib)

The purpose of the high level planner is to look at the field and develop a general coverage map divided into waypoints.

It would be really cool if we could generate coverage paths for arbitrary shapes (like the Auburn logo, perhaps?)

Functional Requirements

  • Generate a near optimal coverage path within a time constraint.
  • A time limitations could be the ability to regenerate the coverage path once the location of the flower bed is known. This means within the current coarse run we'd need the ability to re-calculate the path and have enough time left over to follow the path.

Waypoint Navigation (Global Planner)

The purpose of the way point navigation system is to move from one goal to the next by generating a path with A* or Dijkstra's algorithm but have a tendency to follow orthogonal lines along the map. The map server would tell the Global Planner what an Orthogonal line's orientation is.

Functional Requirements

  • Generate a path from a single waypoint to another waypoint.
  • Have a variable tendency to stick the orthogonal lines of the field. This means a diagnal move might end up looking like a saw toothed line or it might travel along the a, b of a given tringle, see image below.

Triangle

Local Planner

Local planning with a strong tendency to stay close to the global planners path.

Probably some near-optimal controller (nonlinearities and whatnot), that will drive the cutting deck to minimize lateral path error and path heading error.

This is going to require a rework of the navigation filter, I believe. William and I discussed it in broad terms, but I haven't hammered out anything specific yet.