Modular Python library for controlling a UR5 robot (real/sim)
Project description
ur5lib
Modular Python library for controlling UR5 robots — supports both a real robot (via RTDE) and a built-in simulator.
Requirements
- Python >= 3.7
numpyur_rtde(only required when connecting to a real robot)
Installation
Clone the repo and install in editable mode:
git clone <repo-url>
cd ur5lib
pip install -e .
Or install directly:
pip install .
For real robot support, also install the RTDE package:
pip install ur_rtde
Quick Start
Simulator mode
from ur5lib.io.simulator import UR5Sim
from ur5lib.motion.executor import MotionExecutor
from ur5lib.types.common_types import JointAngles, Pose
# Create and connect a simulated robot
robot = UR5Sim()
robot.connect_()
executor = MotionExecutor(robot)
# Move to a joint configuration (angles in radians)
target = JointAngles(joints=[0.1, -0.5, 0.3, -1.2, 1.5, 0.0])
executor.move_to_joint_position(target)
# Move to a Cartesian pose (x, y, z, rx, ry, rz)
pose = Pose(0.4, -0.2, 0.3, 0.0, 3.14, 0.0)
executor.move_to_pose(pose)
Real robot mode (RTDE)
from ur5lib.io.ur_rtde import UR5RTDE
from ur5lib.motion.executor import MotionExecutor
from ur5lib.types.common_types import JointAngles
robot = UR5RTDE(config={"robot_ip": "192.168.0.100"})
robot.connect_()
executor = MotionExecutor(robot)
target = JointAngles(joints=[0.0, -1.57, 1.57, -1.57, -1.57, 0.0])
executor.move_to_joint_position(target)
CLI
After installation, a ur5lib-cli command is available:
# Simulator — move joints to specified angles (radians)
ur5lib-cli --sim --move-joints 0.1 -0.5 0.3 -1.2 1.5 0.0
# Real robot — specify IP and target joint angles
ur5lib-cli --ip 192.168.0.100 --move-joints 0.0 -1.57 1.57 -1.57 -1.57 0.0
Key Types
| Type | Fields | Description |
|---|---|---|
JointAngles |
joints: List[float] |
Six joint angles in radians |
Pose |
x, y, z, rx, ry, rz |
TCP pose in meters / axis-angle rotation |
Project Structure
ur5lib/
├── core.py # Abstract base class UR5Base
├── cli.py # Command-line interface
├── io/
│ ├── simulator.py # UR5Sim — software-only simulator
│ └── ur_rtde.py # UR5RTDE — real robot via RTDE
├── motion/
│ ├── planner.py # MotionPlanner — joint & Cartesian interpolation
│ └── executor.py # MotionExecutor — plan + execute moves
├── types/
│ └── common_types.py # JointAngles, Pose
├── examples/
│ └── demo_joint_motion.py
└── config/
└── default_config.yaml
Running the Example
python examples/demo_joint_motion.py
Extending the Library
To add a new robot backend, subclass UR5Base and implement the three abstract methods:
from ur5lib.core import UR5Base
class MyRobot(UR5Base):
def connect_rtde(self): ...
def get_joint_angles(self): ...
def get_current_pose(self): ...
def run_motion(self, motion_plan): ...
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 ur5lib-1.0.3.tar.gz.
File metadata
- Download URL: ur5lib-1.0.3.tar.gz
- Upload date:
- Size: 28.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e57bd6cc6e5badf9e6d5bfc66dc6b57936f5a1e941ee52ad00735962b6b5fbe0
|
|
| MD5 |
72055ef2a8a91ffec7e5800fca35cc12
|
|
| BLAKE2b-256 |
c4e5a88ecddc56b57bab1242b52c648282a32f4da774a065bb9006d1a08f3ef9
|
File details
Details for the file ur5lib-1.0.3-py3-none-any.whl.
File metadata
- Download URL: ur5lib-1.0.3-py3-none-any.whl
- Upload date:
- Size: 37.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7bcc5e027f19f3ff71bebcadae2c74bd3be34911de7f949562b77f95f986bec2
|
|
| MD5 |
2178dd489b59ab53c667ce369fdec2dd
|
|
| BLAKE2b-256 |
1f32f4599409b344d3be7525f5151d4671ef24a6e60a05dc33a1f622f27ba0a8
|