Developing in Simulation

task GIF

The goal here is to solve the complete delivery robot navigation task which is a combination of the three tasks completed in Phase 1, namely:

  • Sidewalk following (with obstacle avoidance)
  • Traffic sign detection and recognition
  • Go-to-goal navigation (with obstacle avoidance)

In this Phase 2, you are required to do the following:

  • Refine your solution to the different tasks to make sure they function as expected
  • Combine your solutions together into one complete solution that manages the different tasks together in real-time (as shown in image above)

Task Guidelines

Note

Make sure you have completed the Getting Started in Simulation before starting the task.

1. Launching the Task
  • In a new terminal, run the following launch file to bring up the robot in Gazebo and RViz:
roslaunch turtlebot_parc turtlebot_parc.launch
  • You should see the display below in Gazebo. To the right, there's the robot and to the left is the circular green marker on the wall which represents the final goal location.

task overview

  • The arrow in the figure below shows the robot in the goal location, facing the circular green marker. The goal is to get as close to the green marker and then stop. The robot camera view is also show below.

goal-position

2. Explore Multiple Routes
  • We have prepared two pre-defined routes you can use as you develop your solution. The default route is route1, but you can select the second route option (route2) by passing the argument in the roslaunch command as follows:
roslaunch turtlebot_parc turtlebot_parc.launch route:=route2
  • We recommend you play around with at least these two routes to ensure your solution is robust to different start locations.
3. Explore Multiple Start Delays
  • We have provided a simple way to set arbitrary values for the traffic light durations such as red_green_duration, yellow_red_duration and green_yellow_duration. This can be done by passing an argument for any or all of them as follows:
roslaunch turtlebot_parc turtlebot_parc.launch red_green_duration:=10 green_yellow_duration:=8
  • While developing, we recommend you play around with different values for the traffic light durations to ensure your solution is robust.
3. Preparing your Solution
  • Consistent with the approach from Phase 1, your solution should be prepared as ROS packages to be saved in your solution folder. Create a launch file in your ROS package which runs ALL the code you need in your solution. Name this launch file: task_solution.launch.

  • Hence, your solution should be run by calling the following commands simulatenously:

In one terminal:

roslaunch turtlebot_parc turtlebot_parc.launch

In another terminal:

roslaunch <your-package-name> task_solution.launch

Note

Ensure you DO NOT provide a solution with hard-coded positions for the robot to move to or hard-coded obstacle positions because in evaluation, the robot initial position and locations of obstacles would be randomized in the field.