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

Uploaded Python 3

File details

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

File metadata

  • Download URL: ur5lib-1.0.2.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.2.tar.gz
Algorithm Hash digest
SHA256 16d345dfbe83a974b4da7a4c3c87547f90ba646af74ff302f569af858191e300
MD5 3f41b85454a8cb264402e62802c1182f
BLAKE2b-256 adbf0a19786dfa844d2929c0e129532b62cb26ee5ef2010d10e60d96e4d02a3a

See more details on using hashes here.

File details

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

File metadata

  • Download URL: ur5lib-1.0.2-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.2-py3-none-any.whl
Algorithm Hash digest
SHA256 33afbbeb820052b53e74742a55927d81104e27198768defd9fe7e4b1c9180b85
MD5 8d45a19acf8ef8bdb02c0787812a8512
BLAKE2b-256 3a5379edd9d04958d9a4f72cf6786698163ebad67738d55b21beedc7034847b5

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