robotclaw 0.1.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,31 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project will be documented in this file.
4
+
5
+ The format is based on [Keep a Changelog](https://keepachangelog.com/),
6
+ and this project adheres to [Semantic Versioning](https://semver.org/).
7
+
8
+ ## [0.1.0] - 2026-03-15
9
+
10
+ ### Added
11
+
12
+ - `ServoBus` — LOBOT LX serial bus servo protocol driver
13
+ - Frame building, checksum, thread-safe read/write
14
+ - Commands: move, read position/voltage/temperature, load/unload, scan
15
+ - `RobotConfig` — Hardware configuration data classes
16
+ - `JointConfig`, `LegConfig`, `RobotConfig` with JSON serialization
17
+ - `DEFAULT_CONFIG` — 10 servos, dual-leg biped layout
18
+ - `Robot` — High-level robot controller
19
+ - Joint-level control with automatic direction/offset mapping
20
+ - Context manager support
21
+ - Batch operations: go_home, get_positions, set_joints
22
+ - **Motion Recorder** subsystem
23
+ - `MotionRecorder` — Keyframe-based motion teaching
24
+ - `MotionPlayer` — Playback with variable speed control
25
+ - `MotionClip` / `Keyframe` — JSON-serializable data model
26
+ - **CLI tools**
27
+ - `roboclaw-scan` — Servo bus diagnostic scanner
28
+ - `roboclaw-teach` — Interactive motion teaching terminal
29
+ - **OpenClaw integration**
30
+ - `OpenClawSkill` — Skill adapter for OpenClaw AI agent platform
31
+ - `SKILL.md` — OpenClaw skill descriptor file
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 RoboClaw Contributors
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,3 @@
1
+ include LICENSE
2
+ include README.md
3
+ include CHANGELOG.md
@@ -0,0 +1,196 @@
1
+ Metadata-Version: 2.4
2
+ Name: robotclaw
3
+ Version: 0.1.0
4
+ Summary: Bridge OpenClaw AI agents with physical servo robots — connecting the digital mind to the physical world
5
+ Author: RoboClaw Contributors
6
+ License-Expression: MIT
7
+ Project-URL: Homepage, https://github.com/roboclaw-project/roboclaw
8
+ Project-URL: Repository, https://github.com/roboclaw-project/roboclaw
9
+ Project-URL: Issues, https://github.com/roboclaw-project/roboclaw/issues
10
+ Project-URL: Changelog, https://github.com/roboclaw-project/roboclaw/blob/main/CHANGELOG.md
11
+ Keywords: openclaw,robot,servo,ai-agent,robotics,lobot,bus-servo
12
+ Classifier: Development Status :: 3 - Alpha
13
+ Classifier: Intended Audience :: Developers
14
+ Classifier: Intended Audience :: Science/Research
15
+ Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
16
+ Classifier: Topic :: Scientific/Engineering :: Interface Engine/Protocol Translator
17
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
18
+ Classifier: Programming Language :: Python :: 3
19
+ Classifier: Programming Language :: Python :: 3.10
20
+ Classifier: Programming Language :: Python :: 3.11
21
+ Classifier: Programming Language :: Python :: 3.12
22
+ Classifier: Programming Language :: Python :: 3.13
23
+ Classifier: Operating System :: OS Independent
24
+ Requires-Python: >=3.10
25
+ Description-Content-Type: text/markdown
26
+ License-File: LICENSE
27
+ Requires-Dist: pyserial>=3.5
28
+ Provides-Extra: dev
29
+ Requires-Dist: pytest>=7.0; extra == "dev"
30
+ Requires-Dist: build; extra == "dev"
31
+ Requires-Dist: twine; extra == "dev"
32
+ Dynamic: license-file
33
+
34
+ # 🦾 RoboClaw
35
+
36
+ > Bridge OpenClaw AI agents with physical servo robots — connecting the digital mind to the physical world.
37
+
38
+ **RoboClaw** 是一个 Python 库,将 [OpenClaw](https://openclaw.ai) 自主 AI 代理平台与 LOBOT LX 总线舵机机器人深度集成。通过 `pip install roboclaw`,即可让 AI 获得控制物理机器人的能力。
39
+
40
+ ---
41
+
42
+ ## ✨ Features
43
+
44
+ - 🔌 **LOBOT LX Protocol Driver** — Full implementation of the LX serial bus servo protocol
45
+ - 🤖 **High-Level Robot API** — Joint-level control with direction/offset mapping
46
+ - 🎬 **Motion Teaching** — Record, save, and playback robot movements with variable speed
47
+ - 🧠 **OpenClaw Integration** — Skill adapter for AI agent → robot control
48
+ - 🛠️ **CLI Tools** — `roboclaw-scan` for diagnostics, `roboclaw-teach` for interactive teaching
49
+ - ⚡ **Thread-Safe** — All serial operations protected by mutex locks
50
+
51
+ ## 📦 Installation
52
+
53
+ ```bash
54
+ pip install roboclaw
55
+ ```
56
+
57
+
58
+ For development:
59
+ ```bash
60
+ pip install roboclaw[dev]
61
+ ```
62
+
63
+ ## 🚀 Quick Start
64
+
65
+ ### Basic Servo Control
66
+
67
+ ```python
68
+ from roboclaw import ServoBus
69
+
70
+ # Connect to servo bus
71
+ bus = ServoBus()
72
+ bus.connect("COM3", baudrate=115200)
73
+
74
+ # Move servo ID=1 to position 500 in 1 second
75
+ bus.move(servo_id=1, position=500, time_ms=1000)
76
+
77
+ # Read current position
78
+ pos = bus.read_position(servo_id=1)
79
+ print(f"Position: {pos}")
80
+
81
+ bus.disconnect()
82
+ ```
83
+
84
+ ### High-Level Robot Control
85
+
86
+ ```python
87
+ from roboclaw import Robot, DEFAULT_CONFIG
88
+
89
+ with Robot(config=DEFAULT_CONFIG, port="COM3") as robot:
90
+ # All joints to home position
91
+ robot.go_home(time_ms=2000)
92
+
93
+ # Move a single joint
94
+ robot.set_joint("left_hip_pitch", position=350, time_ms=500)
95
+
96
+ # Read all joint positions
97
+ positions = robot.get_positions()
98
+ print(positions)
99
+ ```
100
+
101
+ ### Motion Teaching & Playback
102
+
103
+ ```python
104
+ from roboclaw import Robot, DEFAULT_CONFIG
105
+ from roboclaw.recorder import MotionRecorder, MotionPlayer
106
+
107
+ with Robot(config=DEFAULT_CONFIG, port="COM3") as robot:
108
+ # Record a motion
109
+ recorder = MotionRecorder(robot)
110
+ recorder.start_recording("wave_hand")
111
+
112
+ robot.unload_all() # Let user pose the robot
113
+ input("Press Enter to capture frame 1...")
114
+ recorder.capture_frame()
115
+
116
+ input("Press Enter to capture frame 2...")
117
+ recorder.capture_frame()
118
+
119
+ clip = recorder.finish_recording()
120
+ recorder.save(clip, "motions/wave_hand.json")
121
+
122
+ # Play it back at 1.5x speed
123
+ robot.load_all()
124
+ player = MotionPlayer(robot)
125
+ player.play(clip, speed=1.5)
126
+ ```
127
+
128
+ ### CLI Tools
129
+
130
+ ```bash
131
+ # Scan for connected servos
132
+ roboclaw-scan --port COM3
133
+
134
+ # Interactive motion teaching
135
+ roboclaw-teach --port COM3
136
+ ```
137
+
138
+ ## 🧠 OpenClaw Integration
139
+
140
+ RoboClaw ships with a built-in [OpenClaw](https://openclaw.ai) skill that allows AI agents to control the robot through natural language commands:
141
+
142
+ ```
143
+ You: "让机器人回到初始位置"
144
+ AI: → robot.go_home(2000) ✅
145
+
146
+ You: "播放走路动作,2倍速"
147
+ AI: → player.play(walk_clip, speed=2.0) ✅
148
+
149
+ You: "检查所有舵机的电压"
150
+ AI: → robot.scan() → 报告电压状态 ✅
151
+ ```
152
+
153
+ ## 🔧 Hardware Requirements
154
+
155
+ | Component | Specification |
156
+ |-----------|---------------|
157
+ | Servos | LOBOT LX-16A / LX-224 / LX-225 bus servos |
158
+ | Interface | USB-to-TTL serial adapter |
159
+ | Baudrate | 115200 (direct) or 9600 (controller board) |
160
+ | Power | 6-8.4V DC, ≥5A for 10 servos |
161
+ | Default Config | 10 servos, 5 per leg (biped) |
162
+
163
+ ## 📁 Project Structure
164
+
165
+ ```
166
+ src/roboclaw/
167
+ ├── __init__.py # Public API exports
168
+ ├── servo_bus.py # LOBOT LX protocol driver
169
+ ├── robot_config.py # Hardware configuration
170
+ ├── robot.py # High-level robot controller
171
+ ├── cli.py # CLI entry points
172
+ ├── openclaw_skill.py # OpenClaw skill adapter
173
+ ├── SKILL.md # OpenClaw skill descriptor
174
+ └── recorder/ # Motion teaching subsystem
175
+ ├── motion_data.py # Keyframe & MotionClip models
176
+ ├── recorder.py # Motion recorder
177
+ └── player.py # Motion player
178
+ ```
179
+
180
+ ## 🤝 Contributing
181
+
182
+ Contributions are welcome! Please see the [CHANGELOG](CHANGELOG.md) for recent changes.
183
+
184
+ ```bash
185
+ # Clone and install in development mode
186
+ git clone https://github.com/roboclaw-project/roboclaw.git
187
+ cd roboclaw
188
+ pip install -e ".[dev]"
189
+
190
+ # Run tests
191
+ python -m pytest tests/ -v
192
+ ```
193
+
194
+ ## 📄 License
195
+
196
+ [MIT License](LICENSE)
@@ -0,0 +1,163 @@
1
+ # 🦾 RoboClaw
2
+
3
+ > Bridge OpenClaw AI agents with physical servo robots — connecting the digital mind to the physical world.
4
+
5
+ **RoboClaw** 是一个 Python 库,将 [OpenClaw](https://openclaw.ai) 自主 AI 代理平台与 LOBOT LX 总线舵机机器人深度集成。通过 `pip install roboclaw`,即可让 AI 获得控制物理机器人的能力。
6
+
7
+ ---
8
+
9
+ ## ✨ Features
10
+
11
+ - 🔌 **LOBOT LX Protocol Driver** — Full implementation of the LX serial bus servo protocol
12
+ - 🤖 **High-Level Robot API** — Joint-level control with direction/offset mapping
13
+ - 🎬 **Motion Teaching** — Record, save, and playback robot movements with variable speed
14
+ - 🧠 **OpenClaw Integration** — Skill adapter for AI agent → robot control
15
+ - 🛠️ **CLI Tools** — `roboclaw-scan` for diagnostics, `roboclaw-teach` for interactive teaching
16
+ - ⚡ **Thread-Safe** — All serial operations protected by mutex locks
17
+
18
+ ## 📦 Installation
19
+
20
+ ```bash
21
+ pip install roboclaw
22
+ ```
23
+
24
+
25
+ For development:
26
+ ```bash
27
+ pip install roboclaw[dev]
28
+ ```
29
+
30
+ ## 🚀 Quick Start
31
+
32
+ ### Basic Servo Control
33
+
34
+ ```python
35
+ from roboclaw import ServoBus
36
+
37
+ # Connect to servo bus
38
+ bus = ServoBus()
39
+ bus.connect("COM3", baudrate=115200)
40
+
41
+ # Move servo ID=1 to position 500 in 1 second
42
+ bus.move(servo_id=1, position=500, time_ms=1000)
43
+
44
+ # Read current position
45
+ pos = bus.read_position(servo_id=1)
46
+ print(f"Position: {pos}")
47
+
48
+ bus.disconnect()
49
+ ```
50
+
51
+ ### High-Level Robot Control
52
+
53
+ ```python
54
+ from roboclaw import Robot, DEFAULT_CONFIG
55
+
56
+ with Robot(config=DEFAULT_CONFIG, port="COM3") as robot:
57
+ # All joints to home position
58
+ robot.go_home(time_ms=2000)
59
+
60
+ # Move a single joint
61
+ robot.set_joint("left_hip_pitch", position=350, time_ms=500)
62
+
63
+ # Read all joint positions
64
+ positions = robot.get_positions()
65
+ print(positions)
66
+ ```
67
+
68
+ ### Motion Teaching & Playback
69
+
70
+ ```python
71
+ from roboclaw import Robot, DEFAULT_CONFIG
72
+ from roboclaw.recorder import MotionRecorder, MotionPlayer
73
+
74
+ with Robot(config=DEFAULT_CONFIG, port="COM3") as robot:
75
+ # Record a motion
76
+ recorder = MotionRecorder(robot)
77
+ recorder.start_recording("wave_hand")
78
+
79
+ robot.unload_all() # Let user pose the robot
80
+ input("Press Enter to capture frame 1...")
81
+ recorder.capture_frame()
82
+
83
+ input("Press Enter to capture frame 2...")
84
+ recorder.capture_frame()
85
+
86
+ clip = recorder.finish_recording()
87
+ recorder.save(clip, "motions/wave_hand.json")
88
+
89
+ # Play it back at 1.5x speed
90
+ robot.load_all()
91
+ player = MotionPlayer(robot)
92
+ player.play(clip, speed=1.5)
93
+ ```
94
+
95
+ ### CLI Tools
96
+
97
+ ```bash
98
+ # Scan for connected servos
99
+ roboclaw-scan --port COM3
100
+
101
+ # Interactive motion teaching
102
+ roboclaw-teach --port COM3
103
+ ```
104
+
105
+ ## 🧠 OpenClaw Integration
106
+
107
+ RoboClaw ships with a built-in [OpenClaw](https://openclaw.ai) skill that allows AI agents to control the robot through natural language commands:
108
+
109
+ ```
110
+ You: "让机器人回到初始位置"
111
+ AI: → robot.go_home(2000) ✅
112
+
113
+ You: "播放走路动作,2倍速"
114
+ AI: → player.play(walk_clip, speed=2.0) ✅
115
+
116
+ You: "检查所有舵机的电压"
117
+ AI: → robot.scan() → 报告电压状态 ✅
118
+ ```
119
+
120
+ ## 🔧 Hardware Requirements
121
+
122
+ | Component | Specification |
123
+ |-----------|---------------|
124
+ | Servos | LOBOT LX-16A / LX-224 / LX-225 bus servos |
125
+ | Interface | USB-to-TTL serial adapter |
126
+ | Baudrate | 115200 (direct) or 9600 (controller board) |
127
+ | Power | 6-8.4V DC, ≥5A for 10 servos |
128
+ | Default Config | 10 servos, 5 per leg (biped) |
129
+
130
+ ## 📁 Project Structure
131
+
132
+ ```
133
+ src/roboclaw/
134
+ ├── __init__.py # Public API exports
135
+ ├── servo_bus.py # LOBOT LX protocol driver
136
+ ├── robot_config.py # Hardware configuration
137
+ ├── robot.py # High-level robot controller
138
+ ├── cli.py # CLI entry points
139
+ ├── openclaw_skill.py # OpenClaw skill adapter
140
+ ├── SKILL.md # OpenClaw skill descriptor
141
+ └── recorder/ # Motion teaching subsystem
142
+ ├── motion_data.py # Keyframe & MotionClip models
143
+ ├── recorder.py # Motion recorder
144
+ └── player.py # Motion player
145
+ ```
146
+
147
+ ## 🤝 Contributing
148
+
149
+ Contributions are welcome! Please see the [CHANGELOG](CHANGELOG.md) for recent changes.
150
+
151
+ ```bash
152
+ # Clone and install in development mode
153
+ git clone https://github.com/roboclaw-project/roboclaw.git
154
+ cd roboclaw
155
+ pip install -e ".[dev]"
156
+
157
+ # Run tests
158
+ python -m pytest tests/ -v
159
+ ```
160
+
161
+ ## 📄 License
162
+
163
+ [MIT License](LICENSE)
@@ -0,0 +1,55 @@
1
+ [build-system]
2
+ requires = ["setuptools>=68.0"]
3
+ build-backend = "setuptools.build_meta"
4
+
5
+ [project]
6
+ name = "robotclaw"
7
+ version = "0.1.0"
8
+ description = "Bridge OpenClaw AI agents with physical servo robots — connecting the digital mind to the physical world"
9
+ readme = "README.md"
10
+ license = "MIT"
11
+ requires-python = ">=3.10"
12
+ authors = [
13
+ { name = "RoboClaw Contributors" },
14
+ ]
15
+ keywords = ["openclaw", "robot", "servo", "ai-agent", "robotics", "lobot", "bus-servo"]
16
+ classifiers = [
17
+ "Development Status :: 3 - Alpha",
18
+ "Intended Audience :: Developers",
19
+ "Intended Audience :: Science/Research",
20
+ "Topic :: Scientific/Engineering :: Artificial Intelligence",
21
+ "Topic :: Scientific/Engineering :: Interface Engine/Protocol Translator",
22
+ "Topic :: Software Development :: Libraries :: Python Modules",
23
+ "Programming Language :: Python :: 3",
24
+ "Programming Language :: Python :: 3.10",
25
+ "Programming Language :: Python :: 3.11",
26
+ "Programming Language :: Python :: 3.12",
27
+ "Programming Language :: Python :: 3.13",
28
+ "Operating System :: OS Independent",
29
+ ]
30
+ dependencies = [
31
+ "pyserial>=3.5",
32
+ ]
33
+
34
+ [project.optional-dependencies]
35
+ dev = [
36
+ "pytest>=7.0",
37
+ "build",
38
+ "twine",
39
+ ]
40
+
41
+ [project.urls]
42
+ Homepage = "https://github.com/roboclaw-project/roboclaw"
43
+ Repository = "https://github.com/roboclaw-project/roboclaw"
44
+ Issues = "https://github.com/roboclaw-project/roboclaw/issues"
45
+ Changelog = "https://github.com/roboclaw-project/roboclaw/blob/main/CHANGELOG.md"
46
+
47
+ [project.scripts]
48
+ roboclaw-scan = "roboclaw.cli:scan_main"
49
+ roboclaw-teach = "roboclaw.cli:teach_main"
50
+
51
+ [tool.setuptools.packages.find]
52
+ where = ["src"]
53
+
54
+ [tool.pytest.ini_options]
55
+ testpaths = ["tests"]
@@ -0,0 +1,4 @@
1
+ [egg_info]
2
+ tag_build =
3
+ tag_date = 0
4
+
@@ -0,0 +1,21 @@
1
+ """RoboClaw - Bridge OpenClaw AI agents with physical servo robots.
2
+
3
+ Connecting the digital mind to the physical world by integrating
4
+ OpenClaw autonomous AI agent platform with LOBOT LX bus servo robots.
5
+ """
6
+
7
+ __version__ = "0.1.0"
8
+
9
+ from .servo_bus import ServoBus
10
+ from .robot_config import JointConfig, LegConfig, RobotConfig, DEFAULT_CONFIG
11
+ from .robot import Robot
12
+
13
+ __all__ = [
14
+ "__version__",
15
+ "ServoBus",
16
+ "JointConfig",
17
+ "LegConfig",
18
+ "RobotConfig",
19
+ "DEFAULT_CONFIG",
20
+ "Robot",
21
+ ]