In this lab experience we'll introduce a new sensor, based on computer vision. The robot is given the same task of experience 2, that is, reaching a goal on a map with moving obstacles, but this time your system will be driven by an omnidirectional vision sensor.
You are asked to develop a module capable of finding the white lines of the map, and evaluate the distance of the robot to each of them. Moreover, you should also be able to recover the robot orientation with respect to such lines: this turns out to be a very useful feature, since it lets you adjust the robot trajectory very quickly.
After you developed the requested module, you will see that its output is completely different from what was provided by the IR sensor. This will push you to modify the robot behavior, in order to exploit the new, higher level data provided. This can be either an easy or difficult task, depending on how you designed your software in experience 2. If your design is modular, you will just need to drop some function calls, otherwise...
At the end of the experience...
Objectives
- Calibrate the omnidirectional camera by means of OCamCalib
- Exploit the omnidirectional camera: extract information using computer vision algorithms
- Exploit calibration data to evaluate 3D information
- Make the robot reach the goal or report if it is not reachable (as in experience 2)
Plus
- Reuse your code as much as possible
- Organize camera acquisition into a separate ROS module
- Detect obstacles and measure their distance to the robot
- Use the gyroscope to improve the robot performances
Challenges
- Develop your first computer vision algorithms
- Handle calibration
What we want
- Code (BitBucket)
- Video (YouTube) -- including a video of the output of your computer vision algorithms
- Report (PDF using BitBucket) containing at least
- The algorithm overview
- Description of all steps of your vision algorithm
- The role of each node you developed
- The three nodes interaction
- The parameter file/launcher description
- The CMakeLists.txt description