Repository navigation
Navigation Node
This document details the role of the Navigation Node, the Navigation Node subscribers, the Navigation Node subscribers, and the details of the Navigation Node Implementation in order to let other Trickfire members make design decisions that work nicely with this node.
The navigation node keeps track of our navigation status and plans a path to the goal location if one has not been planned.
- /projected_map (OccupancyGrid): A one-dimensional array representing a two-dimensional map of the environment with obstacles mapped out.
- /anchor_position (Float64MultiArray): The GPS coordinate the rover starts at, used to gain a point of reference for navigation
- /goal_latlon (NavSatFix): The GPS coordinate the rover must navigate to
- /odometry/filtered (Odometry): The record of how far the rover has moved. The rover starts at 0,0, and is updated via this message. /fix (NavSatFix): The current GPS coordinate the rover is at.
-
/navigation_status (string): “No anchor provided, navigation stopped” “No waypoint provided, navigation stopped” “Successfully reached waypoint” “En Route to waypoint”
-
/path (nav_msgs.msg: Path) A list of Tuples[float,float]. This is a list of waypoints made relative to the “map” frame to be used by a local path planning node.
To fulfill the role specified in “Navigation Node Role”, the navigation node checks to see if its subscribers have received an anchor position, a costmap, the odometry position, and the goal GPS position. As of now, the navigation node creates fake data for testing if it has not received a waypoint or anchor because the algorithm is only running small scale tests that do not require the use of GPS. If it has this data, it checks whether or not a path to the goal location has been planned. If one has not been planned, it runs the planPath function, an A* search algorithm that plots a path all the way to the goal location, then publishes the path it has created.