Assignment 4


Autonomous Robotic Systems / Assignment 4

In this practical assignment you are going to build a 2D navigation system for a simulated robot using ROS (Robot Operating System).

Naturally navigation task is crucial for robot operation and ROS has a full scale navigation stack operated by move_base package. This assignment aims at replacing the existed stack with a more basic version.

You are provided with the known environment, configurations and a base code for the Navigation class you are going to contribute to.

Installation:

Install these packages (navigation_world and navigation) we created for you, you should just unzip them in your ~/catkin/src workspace directory. After that:

  1. Compile your catkin workspace. (see Assignment 1, how to do this)
  2. There are two launch files available, which make it more convenient for you to run all components of ROS that are needed for the exercise. The launch files are called swarmlab.launch and willow.launch are located in the navigation_world package. The Swarmlab map is a simple map, the Willow map is a more complex map. Launching this should open up two windows displaying the robot and a map.
  3. In order to try-out different starting positions you can use the turtlebot_teleop node (see Assignment 1 for reference).
  4. Run the navigation node, which should just cleanly start and output you some info about the world it fetched.
  5. Target point can be input to the navigation node in two ways, by:
    • adding command line arguments, i.e.
      rosrun navigation navigation tgtX tgtY

      , where tgtX and tgtY are your values;

    • using the “Publish Point” utility in RViz (just place the point anywhere on the map and your path-planning routine will get invoked).

The assignment

Navigation class, declared in navigation.hpp and specified in navigation.hpp, has more-or-less empty methods for path-finding and path visualization. The code provided gathers the all the required information about the world for you.

The source files contain the instructions and explanations needed to complete the assignment.

Requirements:

  • Prepare the received knowledge about the world in a way to be later used by your path-planning algorithm.
  • Perform path-planning, allowing the robot to plan its travels from any point A to any point B on the map.
  • Get the path visualized in RViz.
  • Make sure that the suggested plan correctly (dis-)allows the bot to travel through the narrow spots and go around the corners.
  • Add functionality allowing the bot to actually travel from point A to point B, by following the path suggested. Ensure that the path execution is done without significant drift-off.
  • (Optionally) Try to optimize the path-planning algorithm computation time, suggested path length, and # of robot heading changes — in order to efficiently deal with the resources.
  • (Optionally == Bonus point) Extend the path-planning in such a way that a shortest path is found for an unordered set of N-path-points. Let the robot follow this more complex path.