# Cyberwave Robotics Integrations
Robot drivers, hardware interfaces, and CLI plugins for the Cyberwave Digital Twin Platform.
## Installation
```bash
pip install cyberwave-robotics-integrations
```
Or with the main SDK:
```bash
pip install cyberwave cyberwave-robotics-integrations
```
## Supported Robots
- **🦾 SO100** - 6-DOF robotic arm by Standard Robots
- **🦾 SO_ARM100** - Advanced robotic arm with gripper
- **🐕 Boston Dynamics Spot** - Quadruped robot
- **🚁 DJI Tello** - Educational drone
- **🦾 KUKA KR3** - Industrial robotic arm
## Quick Start
### Using with Cyberwave SDK
```python
import cyberwave as cw
# Create digital twins for real robots
spot = cw.twin("spot/spot_mini")
so101 = cw.twin("cyberwave/so101")
tello = cw.twin("dji/tello")
# Control robots through digital twins
spot.move(x=1, y=0, z=0)
so101.joints.shoulder = 45 # degrees
tello.move(x=0, y=0, z=1) # takeoff
```
### Direct Driver Usage
```python
from cyberwave_robotics_integrations.drivers import so100_driver, spot_driver
from cyberwave_robotics_integrations.factory import Robot
# Method 1: Direct driver import
driver = so100_driver.SO100Driver()
driver.connect()
driver.move_joint("shoulder", 45)
driver.disconnect()
# Method 2: Factory pattern
robot = Robot("spot")
robot.connect()
robot.move_to(1.0, 2.0)
robot.sit()
robot.disconnect()
# Method 3: Via main SDK
from cyberwave import RobotDriver
RobotDriver("kuka_kr3").connect()
```
## CLI Usage
The package provides CLI commands for direct robot control:
```bash
# Install CLI support
pip install cyberwave-cli cyberwave-robotics-integrations
# Start robot drivers
cyberwave drivers start spot
cyberwave drivers start so100
cyberwave drivers start tello
# Check status
cyberwave drivers status spot
cyberwave drivers list
# Stop drivers
cyberwave drivers stop spot
```
### Advanced CLI Options
```bash
# Start with specific device ID and token
cyberwave drivers start tello --device-id 123 --token <offline-token>
# Automatic device registration
cyberwave drivers start tello # Auto-registers device
# Start with telemetry forwarding
cyberwave drivers start spot --forward-telemetry --backend-url http://localhost:8000
```
## Robot Driver Details
### SO100 Robotic Arm
```python
from cyberwave_robotics_integrations.drivers.so100_driver import SO100Driver
driver = SO100Driver()
driver.connect()
# Joint control
driver.move_joint("shoulder", 45) # degrees
driver.move_joint("elbow", -30)
driver.move_joint("wrist", 90)
# Cartesian control
driver.move_to_position([0.3, 0.1, 0.4]) # x, y, z in meters
driver.disconnect()
```
### Boston Dynamics Spot
```python
from cyberwave_robotics_integrations.drivers.spot_driver import SpotDriver
driver = SpotDriver()
driver.connect()
# Basic movements
driver.stand()
driver.sit()
driver.move_to(1.0, 2.0) # x, y coordinates
# Advanced control
driver.set_body_pose(roll=0.1, pitch=0.0, yaw=0.2)
driver.walk_velocity(0.5, 0.0, 0.0) # forward velocity
driver.disconnect()
```
### DJI Tello Drone
```python
from cyberwave_robotics_integrations.drivers.tello_driver import TelloDriver
driver = TelloDriver()
driver.connect()
# Flight control
driver.takeoff()
driver.move_up(50) # cm
driver.move_forward(100) # cm
driver.rotate_clockwise(90) # degrees
driver.land()
driver.disconnect()
```
## Input Controllers
Create custom control interfaces for robots:
```python
from cyberwave_robotics_integrations.input_controller import BaseInputController
class KeyboardController(BaseInputController):
def handle_input(self, key):
if key == 'w':
self.robot.move_forward(0.1)
elif key == 's':
self.robot.move_backward(0.1)
# ... more controls
# Use with any robot
controller = KeyboardController(robot=spot_driver)
controller.start()
```
## Configuration
### Environment Variables
```bash
export CYBERWAVE_API_KEY="your-api-key"
export CYBERWAVE_BASE_URL="http://localhost:8000"
export CYBERWAVE_ENVIRONMENT_ID="your-env-id"
```
### Config File
Create `~/.cyberwave/config.yaml`:
```yaml
api_key: "your-api-key"
base_url: "http://localhost:8000"
default_environment: "your-env-id"
robots:
spot:
ip: "192.168.1.100"
username: "admin"
so100:
port: "/dev/ttyUSB0"
baudrate: 115200
```
## Development
### Running Tests
```bash
pytest tests/
```
### Contributing
1. Fork the repository
2. Create a feature branch
3. Add tests for new drivers
4. Submit a pull request
## License
MIT License - see LICENSE file for details.
Raw data
{
"_id": null,
"home_page": null,
"name": "cyberwave-robotics-integrations",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.9",
"maintainer_email": null,
"keywords": "robotics, digital-twin, automation, drivers, cli",
"author": null,
"author_email": "Simone Di Somma <sdisomma@cyberwave.com>",
"download_url": "https://files.pythonhosted.org/packages/18/c9/28b64b2ecbfb2f2835d661d28fcbf7030e43d8e513782c3b3cdc2a9cfd68/cyberwave_robotics_integrations-0.1.1.tar.gz",
"platform": null,
"description": "# Cyberwave Robotics Integrations\n\nRobot drivers, hardware interfaces, and CLI plugins for the Cyberwave Digital Twin Platform.\n\n## Installation\n\n```bash\npip install cyberwave-robotics-integrations\n```\n\nOr with the main SDK:\n```bash\npip install cyberwave cyberwave-robotics-integrations\n```\n\n## Supported Robots\n\n- **\ud83e\uddbe SO100** - 6-DOF robotic arm by Standard Robots\n- **\ud83e\uddbe SO_ARM100** - Advanced robotic arm with gripper\n- **\ud83d\udc15 Boston Dynamics Spot** - Quadruped robot\n- **\ud83d\ude81 DJI Tello** - Educational drone\n- **\ud83e\uddbe KUKA KR3** - Industrial robotic arm\n\n## Quick Start\n\n### Using with Cyberwave SDK\n\n```python\nimport cyberwave as cw\n\n# Create digital twins for real robots\nspot = cw.twin(\"spot/spot_mini\")\nso101 = cw.twin(\"cyberwave/so101\")\ntello = cw.twin(\"dji/tello\")\n\n# Control robots through digital twins\nspot.move(x=1, y=0, z=0)\nso101.joints.shoulder = 45 # degrees\ntello.move(x=0, y=0, z=1) # takeoff\n```\n\n### Direct Driver Usage\n\n```python\nfrom cyberwave_robotics_integrations.drivers import so100_driver, spot_driver\nfrom cyberwave_robotics_integrations.factory import Robot\n\n# Method 1: Direct driver import\ndriver = so100_driver.SO100Driver()\ndriver.connect()\ndriver.move_joint(\"shoulder\", 45)\ndriver.disconnect()\n\n# Method 2: Factory pattern\nrobot = Robot(\"spot\")\nrobot.connect()\nrobot.move_to(1.0, 2.0)\nrobot.sit()\nrobot.disconnect()\n\n# Method 3: Via main SDK\nfrom cyberwave import RobotDriver\nRobotDriver(\"kuka_kr3\").connect()\n```\n\n## CLI Usage\n\nThe package provides CLI commands for direct robot control:\n\n```bash\n# Install CLI support\npip install cyberwave-cli cyberwave-robotics-integrations\n\n# Start robot drivers\ncyberwave drivers start spot\ncyberwave drivers start so100\ncyberwave drivers start tello\n\n# Check status\ncyberwave drivers status spot\ncyberwave drivers list\n\n# Stop drivers\ncyberwave drivers stop spot\n```\n\n### Advanced CLI Options\n\n```bash\n# Start with specific device ID and token\ncyberwave drivers start tello --device-id 123 --token <offline-token>\n\n# Automatic device registration\ncyberwave drivers start tello # Auto-registers device\n\n# Start with telemetry forwarding\ncyberwave drivers start spot --forward-telemetry --backend-url http://localhost:8000\n```\n\n## Robot Driver Details\n\n### SO100 Robotic Arm\n```python\nfrom cyberwave_robotics_integrations.drivers.so100_driver import SO100Driver\n\ndriver = SO100Driver()\ndriver.connect()\n\n# Joint control\ndriver.move_joint(\"shoulder\", 45) # degrees\ndriver.move_joint(\"elbow\", -30)\ndriver.move_joint(\"wrist\", 90)\n\n# Cartesian control\ndriver.move_to_position([0.3, 0.1, 0.4]) # x, y, z in meters\n\ndriver.disconnect()\n```\n\n### Boston Dynamics Spot\n```python\nfrom cyberwave_robotics_integrations.drivers.spot_driver import SpotDriver\n\ndriver = SpotDriver()\ndriver.connect()\n\n# Basic movements\ndriver.stand()\ndriver.sit()\ndriver.move_to(1.0, 2.0) # x, y coordinates\n\n# Advanced control\ndriver.set_body_pose(roll=0.1, pitch=0.0, yaw=0.2)\ndriver.walk_velocity(0.5, 0.0, 0.0) # forward velocity\n\ndriver.disconnect()\n```\n\n### DJI Tello Drone\n```python\nfrom cyberwave_robotics_integrations.drivers.tello_driver import TelloDriver\n\ndriver = TelloDriver()\ndriver.connect()\n\n# Flight control\ndriver.takeoff()\ndriver.move_up(50) # cm\ndriver.move_forward(100) # cm\ndriver.rotate_clockwise(90) # degrees\ndriver.land()\n\ndriver.disconnect()\n```\n\n## Input Controllers\n\nCreate custom control interfaces for robots:\n\n```python\nfrom cyberwave_robotics_integrations.input_controller import BaseInputController\n\nclass KeyboardController(BaseInputController):\n def handle_input(self, key):\n if key == 'w':\n self.robot.move_forward(0.1)\n elif key == 's':\n self.robot.move_backward(0.1)\n # ... more controls\n\n# Use with any robot\ncontroller = KeyboardController(robot=spot_driver)\ncontroller.start()\n```\n\n## Configuration\n\n### Environment Variables\n\n```bash\nexport CYBERWAVE_API_KEY=\"your-api-key\"\nexport CYBERWAVE_BASE_URL=\"http://localhost:8000\"\nexport CYBERWAVE_ENVIRONMENT_ID=\"your-env-id\"\n```\n\n### Config File\n\nCreate `~/.cyberwave/config.yaml`:\n\n```yaml\napi_key: \"your-api-key\"\nbase_url: \"http://localhost:8000\"\ndefault_environment: \"your-env-id\"\nrobots:\n spot:\n ip: \"192.168.1.100\"\n username: \"admin\"\n so100:\n port: \"/dev/ttyUSB0\"\n baudrate: 115200\n```\n\n## Development\n\n### Running Tests\n\n```bash\npytest tests/\n```\n\n### Contributing\n\n1. Fork the repository\n2. Create a feature branch\n3. Add tests for new drivers\n4. Submit a pull request\n\n## License\n\nMIT License - see LICENSE file for details.\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "Robot driver interfaces and CLI plugin for Cyberwave",
"version": "0.1.1",
"project_urls": {
"Documentation": "https://github.com/cyberwave-os/cyberwave-python-robotics-integrations#readme",
"Homepage": "https://github.com/cyberwave-os/cyberwave-python-robotics-integrations",
"Issues": "https://github.com/cyberwave-os/cyberwave-python-robotics-integrations/issues",
"Repository": "https://github.com/cyberwave-os/cyberwave-python-robotics-integrations"
},
"split_keywords": [
"robotics",
" digital-twin",
" automation",
" drivers",
" cli"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "21e662f2bf8be8bcc112cfc816f19f3a34c9c0f66edb9ba0d1219f7ea85bc862",
"md5": "da64319bbc3ba27395dfc81804d3a080",
"sha256": "e2e50c9fb17c4d1e83e94c49eceeba1e82ebe1ac26bed1219578ffe23e05189a"
},
"downloads": -1,
"filename": "cyberwave_robotics_integrations-0.1.1-py3-none-any.whl",
"has_sig": false,
"md5_digest": "da64319bbc3ba27395dfc81804d3a080",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.9",
"size": 37902,
"upload_time": "2025-08-20T09:54:04",
"upload_time_iso_8601": "2025-08-20T09:54:04.391181Z",
"url": "https://files.pythonhosted.org/packages/21/e6/62f2bf8be8bcc112cfc816f19f3a34c9c0f66edb9ba0d1219f7ea85bc862/cyberwave_robotics_integrations-0.1.1-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "18c928b64b2ecbfb2f2835d661d28fcbf7030e43d8e513782c3b3cdc2a9cfd68",
"md5": "e935740cc6aa44f02247942a18ee68f8",
"sha256": "ef49e0b274350a9217024af00d7e15e8550afffbd3424ff8544cf8523afb6fc7"
},
"downloads": -1,
"filename": "cyberwave_robotics_integrations-0.1.1.tar.gz",
"has_sig": false,
"md5_digest": "e935740cc6aa44f02247942a18ee68f8",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.9",
"size": 25754,
"upload_time": "2025-08-20T09:54:05",
"upload_time_iso_8601": "2025-08-20T09:54:05.508200Z",
"url": "https://files.pythonhosted.org/packages/18/c9/28b64b2ecbfb2f2835d661d28fcbf7030e43d8e513782c3b3cdc2a9cfd68/cyberwave_robotics_integrations-0.1.1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-08-20 09:54:05",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "cyberwave-os",
"github_project": "cyberwave-python-robotics-integrations#readme",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "cyberwave-robotics-integrations"
}