By now, you should be an expert of the following components 😉:
We want you to develop a rather simple module that employs the Cartesian Interface
and the Gaze Interface
to accomplish the following tasks:
- Make iCub look down at the table.
- Detect the blue ball in both image planes.
- Retrieve the ball position in the Cartesian domain.
- Let iCub look at the ball.
- Finally, ask iCub to reach for the ball and make it roll.
This assignment is peculiar in that we can interface the simulator and the real robot indifferently.
The outcome should look like the animation below:
Some of the points reported above have been already addressed in the code (e.g. detection of the blue ball), so you need to fill in the missing gaps highlighted by the comment // FILL IN THE CODE
in the src/main.cpp
module.
Once done, you can test your code in two ways:
- Manually: running the yarpmanager scripts provided from within app/scripts and yielding corresponding commands to the module rpc port.
- Automatically: running the script test.sh in the smoke-test directory. Take into account these important points:
- We use a timeout of 120 seconds to check the status of rpc communication, meaning that you have 120 seconds max to accomplish each rpc command.
- When you reply to rpc commands, we assume the robot has finished the movement.
- The smoke-test will add a little random displacement to the initial position of the ball 😉
If you pass the test on the simulator, 🕒 book the robot 🤖 to get a real experience!