Skip to main content

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
  • numpy
  • ur_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

ur5lib-1.0.3.tar.gz (28.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ur5lib-1.0.3-py3-none-any.whl (37.4 kB view details)

Uploaded Python 3

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

Hashes for ur5lib-1.0.3.tar.gz
Algorithm Hash digest
SHA256 e57bd6cc6e5badf9e6d5bfc66dc6b57936f5a1e941ee52ad00735962b6b5fbe0
MD5 72055ef2a8a91ffec7e5800fca35cc12
BLAKE2b-256 c4e5a88ecddc56b57bab1242b52c648282a32f4da774a065bb9006d1a08f3ef9

See more details on using hashes here.

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

Hashes for ur5lib-1.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 7bcc5e027f19f3ff71bebcadae2c74bd3be34911de7f949562b77f95f986bec2
MD5 2178dd489b59ab53c667ce369fdec2dd
BLAKE2b-256 1f32f4599409b344d3be7525f5151d4671ef24a6e60a05dc33a1f622f27ba0a8

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page