pyCub Documentation
pyCub is iCub humanoid robot simulator written in Python. It uses PyBullet for simulation and Open3D for visualization.
Installation
- Requires python3.10 to 3.12
- newer python versions are now not supported due to incompatible with some dependencies
- We recommend using virtual environment when installing from PyPi or from source
-
python3 -m venv pycub_venv source pycub_venv/bin/activate OTHER_COMMANDS
-
- (Recommended) Install from PyPi
python3 -m pip install icub_pybullet
- Install from source
- Pull this repository
-
cd PATH_TO_THE_REPOSITORY/icub_pybullet python3 -m pip install --upgrade pip python3 -m pip install .
- Native Docker (GNU/Linux only)
- see Docker Native Version section
- VNC Docker
- see Docker VNC Version section
- Gitpod
- open https://app.gitpod.io/#https://github.com/rustlluk/pycub
and log in with GitHub account
- then open a port 6080 and in terminal run
start-vnc-session.shto start the VNC server- if using VScode browser version, on top left click on three lines -> Terminal -> New Terminal
- then open a port 6080 and in terminal run
- open https://app.gitpod.io/#https://github.com/rustlluk/pycub
and log in with GitHub account
Examples
- push_the_ball_pure_joints.py contains an example that shows how to control the robot in joint space
- push_the_ball_cartesian.py contains an example that shows how to control the robot in Cartesian space
- skin_test.py contains an example with balls falling the robot and skin should turn green on the places where contact occurs. You may want to slow the simulation a little bit to see that :)
Information
- documentation can be found at https://lukasrustler.cz/pyCub/documentation or in pycub.pdf
- presentation with description of functionality can be found at pycub presentation
- simulator code is in pycub.py
- it uses PyBullet for simulation and provides high-level interface
- visualization code in visualizer.py
- it uses Open3D for visualization as it is much more customizable than PyBullet default GUI
FAQ
-
You get some kind of error with the visualization, e.g., segmentation fault.
- Try to check graphics mesa/opengl/nvidia drivers as those are the most common source of problems for the openGL visualization
- Try Native Docker
- In given config your load set in GUI standard=False; web=True to enable web visualization
- Try VNC Docker
- Try Gitpod Docker
-
You get import errors, e.g. cannot load pycub from icub_pybullet
- Install from pip with
python3 -m pip install icub_pybullet - Install the package correctly with
python3 -m pip install .from icub_pybullet directory of this repository - put icub_pybullet directory to your PYTHONPATH
- Install from pip with
Docker
Native Version
- version with native GUI; useful when you have problems with OpenGL (e.g., usually some driver issues)
- only for GNU/Linux systems (Ubuntu, Mint, Arch, etc.)
- install docker-engine
(DO NOT INSTALL DOCKER DESKTOP)
- perform post-installation steps
- Build/Pull the Docker Image
- clone this repository
cd SOME_PATH git clone https://github.com/rustlluk/pyCub.git - pull the docker image (see Parameters for more parameters)
cd SPATH_TO_THE_REPOSITORY/Docker ./deploy.py -p PATH_TO_THE_REPOSITORY -c pycub -pu - or, build the docker (see Parameters for more parameters)
cd SOME_PATH/pycub_ws/Docker ./deploy.py -p PATH_TO_THE_REPOSITORY -c pycub -b - after you pull or build the container, you can run it next time as
./deploy.py -c pycub -e - if you want to open new terminal in existing container, run
./deploy.py -c pycub -t
- clone this repository
VNC Version
- this version works also on Windows and MacOS because it uses VNC server to show the GUI, i.e., the output will be shown on http://localhost:6080
- Install docker-engine (GNU/Linux only) or
docker-desktop (all systems)
- perform post-installation steps
- The same as for Native Version, but use
-vncoption, e.g., to pull and run the imagecd PATH_TO_THE_REPOSITORY/Docker ./deploy.py -p PATH_TO_THE_REPOSITORY -c pycub -pu -vnc - run
start-vnc-sessions.shscript in the container - Open http://localhost:6080
Docker + PyCharm
Native Version:
You have two option:
- Either run pycharm from docker
- Open your pycharm on your host machine:
- add ssh interpreter
- user docker
- ip can be localhost or ip where you run the docker
- port 2222
- uncheck automatic upload to remote folder
- change remote path to /home/docker/pycub_ws
- add ssh interpreter
VNC/Gitpod version
- open pycharm from inside the container
Deploy Parameters
cdto folder with Dockerfile./deploy.py-bor--buildwhen building- default: False
-eif you just want to run existing docker without building- default: False
-por--pathwith path to current folder- default: ""
-puor--pullto pull the image from dockerhub- default: False
-cor--containerwith desired name of the new, created container- default: my_new_docker
-tor--terminalto run new terminal in running docker session- default: False
-pvor--python-versionto specify addition python version to install- default: 3.11
-pcvor--pycharm-versionto specify version of pycharm to use- default: 2023.2.3
-bior--base-imageto specify base image that will be used- default: ubuntu:20.04
- other can be found at hub.docker.com
Do this on computer where you will run the code. If you have a server you have to run it on the server over SSH to make things work properly.
Docker FAQ
- you get error of not being in sudo group when running image
- check output of
id -ucommand. If the output is not 1000 you have to build the image by yourself and can not pull it- this happens when your account is not the first one created on your computer
- check output of
sudo apt install somethingdoes not work- you need to run
sudo apt updatefirst after you run the container for the first time- apt things are removed in Dockerfile, so it does not take unnecessary space in the image
- you need to run
Known bugs
- visualization with skin dies after ~65k steps
License
This work is licensed under a Creative Commons Attribution 4.0 International License.
Metadata
Release files for icub-pybullet 1.3.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| icub_pybullet-1.3.1.tar.gz | 6.4 MB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| icub_pybullet-1.3.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 12.7 MB
Release files / icub_pybullet-1.3.1.tar.gz
| Download URL | icub_pybullet-1.3.1.tar.gz |
|---|---|
| Size | 6.4 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
5db2d622e33d809c956d64ef3d0ba5321cd6f7a2ba5fe5d33f8573cb15570edf
|
|
BLAKE2b-256 checksum How to use checksums |
cb7b6b70256b0467e82ed3703a1c08aef5186e97e0bf6b17f4ee197ff96ced9d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.11.14
|
Release files / icub_pybullet-1.3.1-py3-none-any.whl
| Download URL | icub_pybullet-1.3.1-py3-none-any.whl |
|---|---|
| Size | 6.4 MB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
137067c0514a62484932885180a380416c36add16ca6c57a484651b86bd8beeb
|
|
BLAKE2b-256 checksum How to use checksums |
cf5e789ae60b8c83ca7544b01ac168c43515d609f4bdc5b3de2b1b183b52efde
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.11.14
|