Mission Planner

missionThe AUV’s mission planner is written using ROS’s SMACH state machine library. With the library, the mission is able to execute states linearly, concurrently or iteratively by using the corresponding state containers. The library also allows for nested state machines which help the team to reuse mission code between tasks; this greatly simplifies the code and reduces error. The other important aspect about SMACH is the ability to visualize using the smach_viewer software. By spawning an introspection server within the mission code, the mission developer is able to visually   see the state machine and debug any mistakes prior to running a mission.

 

There are a few main states used in BBAUV’s mission planner. Common to all states is a time out feature that will pre-empt the state when time is up. This allows the mission to move on in the event that the vehicle cannot see the task element.

 

GoToHeading – brings the vehicle to a particular heading; accepts both relative and absolute heading

 

GoToDistance – Bring the vehicle to a particular distance in either the surge or sway direction

 

GoToDepth – Brings the vehicle to a particular depth; also checks to make sure that the vehicle does not surface unintentionally

NavMoveBase – Connects to ROS’s move_base  action server to bring the vehicle to a global coordinate in a map frame via a global path

 

StoreGlobalCoord – Stores global coordinates from DVL into roscore’s Parameter Server. This is useful if the mission requires the vehicle to return to a “last seen” location

 

WaitOut – This state waits for the vision task state machines to complete

 

LinearSearch – Move along the sway or surge axis and turn on search mode of vision task