Robotblockset (RBS) allows control of various robots and provides common functions such as transformations.
Project description
RobotBlockset for Python (RBS)
[TOC]
Synopsis
RobotBlockset (RBS) is a comprehensive robotics framework for Python that unifies robot application design, simulation, testing, and execution on real systems. Its main goal is to bridge the gap between virtual and physical environments, so the same high-level workflow can be used from motion planning in simulation to deployment on a real robot with minimal additional coding.
The toolbox provides spatial representations based on homogeneous transformations and quaternions, together with the necessary conversion and quaternion operations. For robot manipulators, it includes tools for trajectory generation, forward and inverse kinematics, handling intrinsic and user-defined redundancy, and motion control. RBS uses an object-oriented design for robots, grippers, sensors, and other devices, and exposes a unified higher-level interface across different targets.
RBS can connect robot applications to simulators such as MuJoCo, Genesis, and CoppeliaSim, as well as to real robotic platforms. It includes models for common manipulators including Franka Robotics robots, Universal Robots, KUKA LWR and iiwa, and Yaskawa systems, enabling fast design iterations and a smoother transition from simulation to real-world execution.
Installation
RBS is a normal Python package. You can install it either from a release wheel or directly from this repository.
Recommended Python version: Python 3.10+.
Base installation
From a downloaded release wheel from repo.ijs.si:
pip install <downloaded-wheel>.whl
From this repository:
pip install .
The base package installs the dependencies used by the core tutorials and utilities:
numpy>=1.24quaternionic>=1.0.12matplotlib>=3.7.5scipysympypyyaml
This is sufficient for the pure Python parts of RBS and most kinematics and transformation utilities
For generation of kinematic models also install:
pip install yourdfpy
Optional packages by backend
Install only the packages needed for the workflows you use.
MuJoCo
Official website and documentation:
Required when MuJoCo is used as backend as in most of the general tutorials and parts of the camera calibration tutorials:
pip install mujoco mediapy
For collision-free planning with OMPL:
pip install ompl
RBS uses the official mujoco Python package and also supports simmujoco, an extended build of MuJoCo simulate with a socket interface for external control. Build and usage instructions are in robotblockset/mujoco/simmujoco/README.md.
MJCF models
RBS provides a set of ready-to-use MJCF robot and scene models. They are included in the package under robotblockset/mujoco/mjcf_models, with related meshes and textures under robotblockset/mujoco/mjcf_models/assets.
Included models cover several robots and scenes such as Panda, FR3, iiwa14, UR10e, HC20, MiR100, TiagoBase, Unitree B2, grippers, camera models, calibration scenes, and example workcells.
Genesis
Official website and project pages:
Required by tutorial_genesis:
pip install genesis-world torch
RBS imports genesis from the genesis-world package, and the backend also requires PyTorch.
Franka Robotics via panda_py
Official project pages:
Required by tutorial_franka_pandapy.ipynb and the modules in robotblockset.franka:
pip install panda-python
This backend is intended for direct connection to Franka Panda / FR3 robots. In practice you also need:
- a robot with FCI enabled
- network access to the controller
- a
panda_py/libfrankaversion compatible with your robot software
Universal Robots via RTDE
Official project pages:
Required by tutorial_ur_rtde.ipynb and the modules in robotblockset.ur:
pip install ur_rtde
CoppeliaSim
Official website and documentation:
Required by the modules in robotblockset.coppelia:
pip install coppeliasim-zmqremoteapi-client
You also need a local CoppeliaSim installation with the zmqRemoteApi server enabled.
Cameras and calibration
The camera modules are split by hardware. The image-processing utilities and calibration notebooks rely mainly on OpenCV, Pydantic, and often MuJoCo.
Common camera/calibration packages:
pip install opencv-contrib-python pydantic open3d
Additional packages by camera type:
- Intel RealSense:
pip install pyrealsense2Official docs: https://dev.intelrealsense.com/docs/docs-get-started - Basler:
pip install pypylonOfficial docs: https://docs.baslerweb.com/pythonProgGuide.html - ZED: install the ZED SDK first, then its Python bindings Official docs: https://www.stereolabs.com/docs/
The camera calibration tutorials also import:
pip install mujoco mediapy
ROS / ROS2
Official documentation:
If you use the ROS or ROS2 backends, install the middleware through your ROS distribution rather than plain pip.
ROS1:
sudo apt install python3-rospy
ROS2:
sudo apt update
sudo apt install ros-<ros-distro>-rclpy
For ROS2 camera support you typically also need:
sudo apt install ros-<ros-distro>-cv-bridge
⚠️Important: if you use
cv_bridge, prefer a NumPy 1.x environment for now, for example:
pip install "numpy<2"
The reason is that cv_bridge builds distributed through ROS packages are often compiled against NumPy 1.x and may fail to import with NumPy 2.x, typically with errors such as _ARRAY_API not found.
For Franka ROS2 support, RBS expects packages such as franka_ros2 and franka_msgs to be available in the ROS workspace.
If you work with custom message packages or a preconfigured environment, using the institute Docker/workspace setup may be easier:
Optional devices and utilities
SpaceMouse
To use a 3Dconnexion SpaceMouse with RBS:
pip install pyspacemouse easyhid
On Windows, you may also need hidapi.dll available on PATH.
On Linux, if the device is detected but cannot be opened, create an appropriate udev rule, reload the rules, and ensure your user belongs to the input group.
Other useful packages
Depending on your workflow, these can also be useful:
pip install pynput
pip install pyformulas
pip install aiohttp aiofiles
Documentation
RBS provides several tutorial notebooks in robotblockset/tutorials, which can help you to get started and explore specific backends and workflows:
tutorial_spatial_operationstutorial_motion_generationtutorial_robotstutorial_platformstutorial_mobile_robotstutorial_multi_robotstutorial_kinematic_modelstutorial_optimal_trajectorytutorial_generation_collision-free_trajectoriestutorial_image_video_pymujocotutorial_mujocotutorial_generate_MJCF_scenetutorial_genesistutorial_graphicstutorial_franka_pandapytutorial_rbftutorial_ur_rtdetutorial_calibrate_camera_charucotutorial_calibrate_camera_checkertutorial_image_transform
RBS also provides example notebooks and scripts in robotblockset/examples, which can be additional help when adapting the toolbox to your own robots, scenes, and applications.
API documentation
The repository includes a Sphinx configuration under docs for generating API documentation directly from module, class, method, and function docstrings.
Install the package together with the documentation dependency:
pip install -e ".[docs]"
Then build the HTML documentation:
sphinx-build -b html docs docs/_build/html
Open docs/_build/html/index.html in a browser after the build completes.
The Sphinx setup mocks optional backend dependencies such as ROS, MuJoCo, camera SDKs, and vendor-specific drivers so the API reference can be built without installing every robotics stack.
Troubleshooting
If you get on Windows following error:
tkinter.TclError: Can't find a usable init.tcl in the following directories: C:/Python313/lib/tcl8.6 C:/lib/tcl8.6 C:/lib/tcl8.6 C:/library C:/library C:/tcl8.6.14/library C:/tcl8.6.14/library
This probably means that Tcl wasn't installed properly.
the solution is to set the environment variable manually:
- Open Control Panel → System → Advanced system settings.
- Go to Environment Variables.
- Under System Variables, click New.
- Set:
- Variable name:
TCL_LIBRARY - Variable value:
C:\Python313\tcl\tcl8.6(adjust if your folder is different)
- Variable name:
Citation
Please cite the following article in your publications if it helps your research :
@InProceedings{10.1007/978-3-031-59257-7_44,
author="{\v{Z}}lajpah, Leon and Petri{\v{c}}, Tadej",
editor="Pisla, Doina and Carbone, Giuseppe and Condurache, Daniel and Vaida, Calin",
title="RobotBlockSet (RBS)---A Comprehensive Robotics Framework",
booktitle="Advances in Service and Industrial Robotics",
year="2024",
publisher="Springer Nature Switzerland",
address="Cham",
pages="439--450",
isbn="978-3-031-59257-7"
}
Copyright: Leon Žlajpah, Jožef Stefan Insitute
Project details
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 rbs_test-1.0.3.tar.gz.
File metadata
- Download URL: rbs_test-1.0.3.tar.gz
- Upload date:
- Size: 98.7 MB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f7ca27b3335ccec6bbddccab259c6c49ac502ca383888bae1338e2835c51e60b
|
|
| MD5 |
7ec3ea1f3b3b5e0d6a33092e8c537d23
|
|
| BLAKE2b-256 |
8bac2ad3d548d6959a71e387dc7e1c108704c9ab8c9247e21ade7bf923f6b856
|
Provenance
The following attestation bundles were made for rbs_test-1.0.3.tar.gz:
Publisher:
python-publish.yml on smihael/robotblockset_python
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
rbs_test-1.0.3.tar.gz -
Subject digest:
f7ca27b3335ccec6bbddccab259c6c49ac502ca383888bae1338e2835c51e60b - Sigstore transparency entry: 1341666778
- Sigstore integration time:
-
Permalink:
smihael/robotblockset_python@787ae53fec3bcc36333984a5bd887d001834adae -
Branch / Tag:
refs/tags/v0.2 - Owner: https://github.com/smihael
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-publish.yml@787ae53fec3bcc36333984a5bd887d001834adae -
Trigger Event:
release
-
Statement type:
File details
Details for the file rbs_test-1.0.3-py3-none-any.whl.
File metadata
- Download URL: rbs_test-1.0.3-py3-none-any.whl
- Upload date:
- Size: 99.4 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bb2a7495e923cb76893ae41e8c0a873c5da6eb8e5af691d27b595a45b00053c9
|
|
| MD5 |
b55069d3d87f8865df88489cca1cc4f6
|
|
| BLAKE2b-256 |
dcf2366a81210d39be29f06466c819dd545b74c24be275924be6a007a2a93986
|
Provenance
The following attestation bundles were made for rbs_test-1.0.3-py3-none-any.whl:
Publisher:
python-publish.yml on smihael/robotblockset_python
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
rbs_test-1.0.3-py3-none-any.whl -
Subject digest:
bb2a7495e923cb76893ae41e8c0a873c5da6eb8e5af691d27b595a45b00053c9 - Sigstore transparency entry: 1341666786
- Sigstore integration time:
-
Permalink:
smihael/robotblockset_python@787ae53fec3bcc36333984a5bd887d001834adae -
Branch / Tag:
refs/tags/v0.2 - Owner: https://github.com/smihael
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-publish.yml@787ae53fec3bcc36333984a5bd887d001834adae -
Trigger Event:
release
-
Statement type: