Search
The first part of the subject aims to get you acquainted with programming of a humanoid robot. We will use a Python simulator of humanoid robot iCub.
PyBullet documentation can be useful and can be found here.
This picture shows the joints of iCub with their names and indexes that can be used to control the robot in joint space in the PyCub simulator.
The simulator is written in Python3 and uses PyBullet as a physics engine and Open3D for visualization. It should run without problem on any system with Python3 (it is tested in Python3.11; anything over 3.8 should be fine; the theoretical limit is 3.6 because of f-strings).
The whole documentation can be found here.
A presentation with a description of basic functionality can be found here.
Installation instructions can be found on Github or this presentation. But basically, you need to clone the repository and install dependencies: numpy, scipy, pybullet, open3d (and their dependencies).
git clone https://github.com/rustlluk/pycub
cd pyCub && mkdir venv && cd venv && virtualenv . && source bin/activate && pip3 install numpy scipy pybullet open3d roboticstoolbox-python
python3 setup.py install
export PYTHONPATH=$PYTHONPATH:/home.nfs/your_ctu_username/pyCub/icub_pybullet
You will need to run source /home.nfs/your_ctu_username/pyCub/venv/bin/activate every time you open new terminal
source /home.nfs/your_ctu_username/pyCub/venv/bin/activate
This lab is focused on line and smooth movements. You can use this template to play together with the lab tutor and later implement the function move(args) to test your solution in the test environment.
The goal of function move() is to perform smooth line and circle movements. Th function have to return start and end pose of the trajectory (type icub_pybullet.utils.Pose; can be obtained by pycub.end_effector.get_position())
Resolved-Rate Motion Control (RRMC) The goal of this lab is to use the skin of the robot to detect collision and utilize RRMC to move away from the collision. Please, use the attached template to complete the task. There is no automatic evaluation, but if you submit a correct solution to BRUTE, you will get bonus points from the lab tutor.
The template contains a few lines of code, but you do not have to use them; they are there just for your convenience and to guide you towards the solution.
The task is to detect the biggest cluster of activated skin points and then move the body part that contains the activated skin part away from the collision (away means against the normal of the contact) using RRMC. See the video below.
Try to play with both Jacobian inverse and transpose. Together with the code, you can also submit a text file that contains reasoning about the following questions:
rrmc.mp4