Given a map composed of nxm squares, make the robot go from a Start square to a Goal square while avoiding obstacles. You can see an example of map in Figure 1.
The robot can only go in the north, south, east and west squares, namely it cannot move diagonally. In the first scenario the map is fixed so you know where the obstacles are. In the second scenario the map can change, so you cannot assume to know it in advance. Video 1 shows a possible procedure to reach the goal.
http://robotics.dei.unipd.it/images/video/exp2.m4v
At the end of the experience...
Objectives
- Make the robot reach the goal or report if it is not reachable
- Use the infrared sensor
- Create more then one node (at least three: Robot, Navigation, Mapping)
- Read the map parameters from a file (.yaml) or the launcher (as args)
- Understand the basic ROS concepts (node parameters, use of topics)
Plus
- Use the third engine to move the ultrasonic sensor
- Object Oriented (OO) approach
- Draw the map (e.g. using OpenCV)
- Assume that the obstacles are not fixed. That is, if the goal seem not to be reachable, try again paths already tested.
Challenges
- Solve a known a priori map, given the start and goal cells
- The map is unknown (you don't know where the obstacles are, you only know the start and goal cells)
What we want
- Code (BitBucket)
- Video (YouTube or BitBucket)
- Report (PDF using Moodle) containing at least
- The algorithm overview
- At each step, how you choose the next cell to move in and why
- The role of each node you developed
- The three nodes interaction
- The parameter file/launcher description
- The CMakeLists.txt description
Sensors messages
Header header float64 intensity float64 r float64 g float64 b