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.1.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.1-py3-none-any.whl (37.5 kB view details)

Uploaded Python 3

File details

Details for the file ur5lib-1.0.1.tar.gz.

File metadata

  • Download URL: ur5lib-1.0.1.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.1.tar.gz
Algorithm Hash digest
SHA256 bec6ac08eab01ae42eecaf256df7da5e95e98222192832a87d081a88af2d842c
MD5 2aff10b206bf429d189bc4c762d385dd
BLAKE2b-256 f660d6939378bb2a6c69406dc3863869317fa926aa29a04e823849f8fc388a79

See more details on using hashes here.

File details

Details for the file ur5lib-1.0.1-py3-none-any.whl.

File metadata

  • Download URL: ur5lib-1.0.1-py3-none-any.whl
  • Upload date:
  • Size: 37.5 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.1-py3-none-any.whl
Algorithm Hash digest
SHA256 0f000c10fb8f5dc07779ab0a214c11b363472712aff3e8a6b461dc439017d84e
MD5 63dffc3d5d149d53c1592718ee205ea4
BLAKE2b-256 29bdb219e1c4a3945dd231515c5a91f72a1ef4badf1efe1dfa95846f93e174a8

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