/icub_make_it_roll

Primary LanguageC++GNU General Public License v3.0GPL-3.0

Operational Control with iCub

Gitpod

Prerequisites

By now, you should be an expert of the following components 😉:

Assignment

We want you to develop a rather simple module that employs the Cartesian Interface and the Gaze Interface to accomplish the following tasks:

  1. Make iCub look down at the table.
  2. Detect the blue ball in both image planes.
  3. Retrieve the ball position in the Cartesian domain.
  4. Let iCub look at the ball.
  5. 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.

⚠️ Don't require the operational controllers to perform too fast movements: you will find yourself tuning up your code to make it run on the real robot smoothly.

Once done, you can test your code in two ways:

  1. Manually: running the yarpmanager scripts provided from within app/scripts and yielding corresponding commands to the module rpc port.
  2. Automatically: running the script test.sh in the smoke-test directory. Take into account these important points:
    1. 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.
    2. When you reply to rpc commands, we assume the robot has finished the movement.
    3. 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!