# neo_goal_sequence_driver¶

## Summary¶

The neo_goal_sequence_driver package is a exclusively ROS-1 only package, that provides a means to command a user defined sequence of goals, optionally in a looped mode too.

Tip

Prerequisite knowledge: Installation and Navigation with Move Base for neo_simulation package

Attention

Currently neo_goal_sequence_driver only supports ROS-1

## Nodes¶

Services:
• /goal_sequence_driver/run
• /goal_sequence_driver/stop
Parameters:
The following parameters could be found in driver_config.yaml and can be modified:
Parameter Default Description Options
infi_param false Robot will (or not) continuously repeat the sequence until it’s shutdown by calling service. true, false
manual_stepping false if to require calling /next for each goal bool
patience 5 User can define the time length spent on one single goal (in seconds). integer
print_option all User can define which information is to be printed in terminal. local, total, all

## Usage¶

### Initial Startup¶

Start the robot (or simulator) and launch navigation stack first, e.g. using simulator:

roslaunch neo_simulation simulation.launch


### Goal Configuration¶

Goals to the driver can be given in two ways:

#### Manual¶

Manual methodology will allow the users to set the co-ordinates of the goals by directly editing the YAML file

roslaunch neo_goal_sequence_driver neo_goal_sequence_driver.launch


Note

#### Automated¶

Automated methodology will allow the users to set the goals on the fly in RViz.

Note

In order to use the functionality in simulation, set the “move_base” argument to “false” in the ($Desire_robot)_autonomous_navigation.launch file. For the real robot, just start the neo_localization node : (if you have mp_500, use the below command! Else, change it based on your robot type) roslaunch neo_mp_500 neo_localization.launch  Now run: roslaunch neo_goal_sequence_driver neo_goal_sequence_driver_autoamated.launch  automated_sequence node enables to use the “2D Nav goal” option to continuously set any number of goals in sequence which are then visualized using the pose arrays. Node updates the selected goal sequence in the YAML file. In simulation run: roslaunch neo_simulation ($Desire_robot)_move_base.launch


In real-robot now run: (if you have mp_500, use the below command! Else, change it based on your robot type)

roslaunch neo_mp_500 move_base.launch


### Setup server¶

Run goal_sequence_driver_server and goal_sequence_visualizer with launch file:

roslaunch neo_goal_sequence_driver neo_goal_sequence_driver_visualized.launch


if the visualization of goal list is not necessary, just launch the server by:

roslaunch neo_goal_sequence_driver neo_goal_sequence_driver.launch


Warning

Make sure the system time on the platform is the same as on the machine which is running neo_goal_sequence_driver, otherwise it may not work.

If every thing is now set up, it looks like the picture below, you can move on to next step and demand the robot to first goal!

Change configurations:

1. shutdown the server node
2. modify yaml files
3. run server node again

### Start driver¶

Start the driver by calling:

rosservice call /goal_sequence_driver/run


Now the robot should be moving toward it’s goals until it reaches the final one(if the default configurations are applied).

Stop by calling:

rosservice call /goal_sequence_driver/stop


And if the former service is called again, it restarts the drive from 1st goal.