Skip to content

Commit 33a3546

Browse files
authored
Bump to 0.3.2
- Update author email in project files - Enhance README with Python version and downloads badges, fix image URL - Add installation notice for Universal Robots RTDE library - Update optional dependencies in pyproject.toml - Remove UR RTDE package from poetry.lock and pyproject.toml (moved to dynamic install) - Refactor RTDE import and installation logic into scoped UR class
1 parent ccb5452 commit 33a3546

File tree

6 files changed

+57
-50
lines changed

6 files changed

+57
-50
lines changed

CITATION.cff

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,10 @@ message: "If you use this software in your research, please cite it using the fo
44
authors:
55
- family-names: "Gross"
66
given-names: "Michael"
7-
email: "your@email.com"
8-
version: "0.3.0"
7+
email: "[email protected].com"
8+
version: "0.3.2"
99
date-released: "2025-03-09"
1010
license: "MIT"
1111
url: "https://github.com/MGross21/armctl"
1212
abstract: |
13-
armctl is a Python library for controlling various robotic arms, providing utilities and templates for communication, motion, and integration with different robot brands.
13+
armctl is a unified Python interface for controlling a variety of industrial and hobbyist robots from different manufacturers.

README.md

Lines changed: 22 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,14 @@
11
<div align="center">
2-
<h1><img src="assets/logo/armctl_logo_orange.png" alt="armctl" width="300px"></h1>
2+
<h1><img src="https://raw.githubusercontent.com/MGross21/armctl/main/assets/logo/armctl_logo_orange.png" alt="armctl" width="300px"></h1>
33
</div>
44

5+
<p align="center">
6+
<!-- <img src="https://github.com/MGross21/armctl/actions/workflows/ci.yml/badge.svg" alt="Build Status"> -->
7+
<img src="https://img.shields.io/badge/python-3-orange.svg" alt="Python Version">
8+
<img src="https://img.shields.io/github/license/MGross21/armctl?color=orange" alt="License">
9+
<a href="https://pypi.org/project/armctl/"><img src="https://static.pepy.tech/personalized-badge/armctl?period=total&left_color=gray&right_color=orange&left_text=downloads" alt="Downloads"></a>
10+
</p>
11+
512
A unified Python interface for controlling a variety of industrial and hobbyist robots from different manufacturers.
613

714
## Supported Manufacturers & Robot Series
@@ -30,22 +37,16 @@ The `armctl` library currently supports the following manufacturers and robot mo
3037

3138
### Installation
3239

33-
```text
34-
pip install git+https://github.com/MGross21/armctl.git
35-
```
36-
37-
#### Adding to Project Dependencies
38-
39-
*`requirements.txt`*
40+
*From PyPI:*
4041

41-
```text
42-
git+https://github.com/MGross21/armctl.git
42+
```bash
43+
pip install armctl
4344
```
4445

45-
*`pyproject.toml`*
46+
*From GitHub:*
4647

47-
```toml
48-
armctl = {git = "https://github.com/MGross21/armctl.git"}
48+
```bash
49+
pip install git+https://github.com/MGross21/armctl.git
4950
```
5051

5152
### Importing the Library
@@ -54,7 +55,7 @@ armctl = {git = "https://github.com/MGross21/armctl.git"}
5455
from armctl import *
5556
```
5657

57-
> [!NOTE]
58+
> **Note:**
5859
> For improved runtime performance and clarity, you may import specific manufacturers and robot series directly.
5960
6061
### Simple Example with Manufacturer Defaults
@@ -98,7 +99,7 @@ with (
9899
r2.move_joints([...])
99100
```
100101

101-
> [!TIP]
102+
> **Tip:**
102103
> For more precise and synchronous control of two or more robots, it is recommended to manage each robot within its own thread or process.
103104
104105
#### Multithread Control
@@ -126,7 +127,7 @@ for t in threads:
126127

127128
## API Reference
128129

129-
> [!NOTE]
130+
> **Note:**
130131
> The API has been designed for maximum compatibility across supported robots. Additional commands, such as gripper controls and other advanced features, are planned for future releases to further expand functionality.
131132
132133
### Control Template
@@ -226,3 +227,8 @@ Please feel free to submit a pull request or open an issue for any enhancements
226227
## License
227228

228229
This project is licensed under the MIT License. See the [LICENSE](https://github.com/MGross21/armctl/blob/main/LICENSE) file for more details.
230+
231+
### Notice
232+
233+
> This package automatically installs the [Universal Robots RTDE Python Client Library](https://github.com/UniversalRobots/RTDE_Python_Client_Library) when needed.
234+
> The RTDE library is provided by Universal Robots and is subject to their licensing terms.

armctl/__init__.py

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,6 @@
44
55
A unified interface for controlling robotic arms from multiple manufacturers.
66
7-
Supported Manufacturers and Robots:
8-
- Elephant Robotics: myCobot Pro600 (Ethernet)
9-
- Universal Robots: UR3, UR5, UR5e, UR10, UR16 (Ethernet)
10-
- Grippers: OnRobot (Ethernet)
11-
- Vention (Ethernet)
12-
- Jaka Robotics: Jaka (Ethernet)
137
"""
148

159
# from .dobot import Dobot
@@ -40,7 +34,7 @@
4034
"Logger",
4135
]
4236

43-
__version__ = "0.3.0"
37+
__version__ = "0.3.2"
4438

4539
class Logger:
4640
"""Global logger utility for armctl."""

armctl/universal_robots/universal_robots.py

Lines changed: 25 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,36 @@
11
from armctl.templates import Commands
22
from armctl.templates import SocketController as SCT
33
from armctl.templates.logger import logger
4-
from .protocols.rtde import RTDE
54

65
import math
76
from time import sleep as _sleep
87

9-
108
class UniversalRobots(SCT, Commands):
9+
def _check_rtde(self):
10+
try:
11+
from .protocols.rtde import RTDE
12+
except ImportError:
13+
from subprocess import run
14+
import sys
15+
16+
logger.warning(
17+
"RTDE Python Client Library not found. Installing from GitHub..."
18+
)
19+
run(
20+
[
21+
sys.executable,
22+
"-m",
23+
"pip",
24+
"install",
25+
"--quiet",
26+
"git+https://github.com/UniversalRobots/RTDE_Python_Client_Library.git@main",
27+
],
28+
check=True,
29+
)
30+
from .protocols.rtde import RTDE
31+
1132
def __init__(self, ip: str, port: int | tuple[int, int] = 30_002):
33+
self._check_rtde()
1234
super().__init__(ip, port)
1335
self.JOINT_RANGES = [
1436
(-math.pi, math.pi),
@@ -26,6 +48,7 @@ def __init__(self, ip: str, port: int | tuple[int, int] = 30_002):
2648

2749
def connect(self):
2850
super().connect()
51+
from .protocols.rtde import RTDE
2952
self.rtde = RTDE(self.ip) # Initialize RTDE connection
3053

3154
def disconnect(self):

poetry.lock

Lines changed: 1 addition & 17 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pyproject.toml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,9 @@ build-backend = "poetry.core.masonry.api"
44

55
[project]
66
name = "armctl"
7-
version = "0.3.0"
8-
description = "Agnostic Robotic Manipulator Controller"
9-
authors = [{ name = "Michael Gross", email = "MGross21@TODO.com" }]
7+
version = "0.3.2"
8+
description = "Agnostic Robotic Manipulator Controller (armctl)"
9+
authors = [{ name = "Michael Gross", email = "MGross21@users.noreply.github.com" }]
1010
readme = {file = "README.md", content-type = "text/markdown"}
1111
license = { file = "LICENSE" }
1212
keywords = ["robotics", "socket", "control", "automation"]
@@ -22,7 +22,7 @@ Tracker = "https://github.com/MGross21/armctl/issues"
2222

2323
[tool.poetry.dependencies]
2424
python = "^3.9"
25-
urrtde = {git = "https://github.com/UniversalRobots/RTDE_Python_Client_Library.git"}
25+
# urrtde = { git = "https://github.com/UniversalRobots/RTDE_Python_Client_Library.git", branch = "main" }
2626

2727
[tool.poetry.urls]
2828
Homepage = "https://github.com/MGross21/armctl"
@@ -58,6 +58,6 @@ force_grid_wrap = 0
5858
use_parentheses = true
5959

6060
[tool.mypy]
61-
python_version = 3.9
61+
python_version = "3.9"
6262
strict = true
6363
ignore_missing_imports = true

0 commit comments

Comments
 (0)