pyCub - iCub in PyBullet
Project description
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.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file icub_pybullet-1.3.1.tar.gz.
File metadata
- Download URL: icub_pybullet-1.3.1.tar.gz
- Upload date:
- Size: 6.4 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5db2d622e33d809c956d64ef3d0ba5321cd6f7a2ba5fe5d33f8573cb15570edf
|
|
| MD5 |
62edea6b47f986b1d2a7c9e701a87537
|
|
| BLAKE2b-256 |
cb7b6b70256b0467e82ed3703a1c08aef5186e97e0bf6b17f4ee197ff96ced9d
|
File details
Details for the file icub_pybullet-1.3.1-py3-none-any.whl.
File metadata
- Download URL: icub_pybullet-1.3.1-py3-none-any.whl
- Upload date:
- Size: 6.4 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
137067c0514a62484932885180a380416c36add16ca6c57a484651b86bd8beeb
|
|
| MD5 |
5570b3fa904a850ac0e4f320894fbe8f
|
|
| BLAKE2b-256 |
cf5e789ae60b8c83ca7544b01ac168c43515d609f4bdc5b3de2b1b183b52efde
|