# Dora ULite6 Node Dora node for controlling a UFactory Lite6 robot via REST API, web UI, and publishing joint/TCP state. ## Dataflow ```yaml - id: ulite6 build: uv pip install -e dora_ulite6 path: dora_ulite6/dora_ulite6/main.py inputs: tick: dora/timer/millis/10 outputs: [status, joint_pose, tcp_pose] env: ROBOT_IP: "192.168.1.192" DEFAULT_SPEED: "30" DEFAULT_UNITS: "mm" API_HOST: "0.0.0.0" API_PORT: "8080" VACUUM_ENABLED: "false" ``` ## Configuration | Env Variable | Default | Description | |--------------|---------|-------------| | `ROBOT_IP` | `192.168.1.192` | Robot IP address | | `DEFAULT_SPEED` | `30` | Movement speed (mm/s) | | `DEFAULT_UNITS` | `mm` | Position units (mm or m) | | `API_HOST` | `0.0.0.0` | API server host | | `API_PORT` | `8080` | API server port | | `VACUUM_ENABLED` | `false` | Enable vacuum gripper controls | ## Web UI Access at `http://localhost:8080/` - Live status, TCP pose, and joint angles - Home and Reset buttons - Move to position form - Vacuum gripper controls (when enabled) ## REST API Interactive docs at `http://localhost:8080/docs` | Method | Endpoint | Description | |--------|----------|-------------| | GET | `/` | Web control interface | | GET | `/api/status` | Robot status (connected, errors) | | GET | `/api/pose` | Current TCP pose | | GET | `/api/joints` | Current joint angles | | GET | `/api/config` | API configuration | | POST | `/api/home` | Go to home position | | POST | `/api/reset` | Clear errors and reset state | | POST | `/api/move_to` | Move to position | | POST | `/api/move_to_pose` | Move to full pose | | POST | `/api/disconnect` | Disconnect from robot | ### Vacuum Gripper (when `VACUUM_ENABLED=true`) | Method | Endpoint | Description | |--------|----------|-------------| | GET | `/api/vacuum` | Get vacuum status | | POST | `/api/vacuum/on` | Turn vacuum on | | POST | `/api/vacuum/off` | Turn vacuum off | ## CLI Examples ```bash # Get pose curl http://localhost:8080/api/pose # Go home curl -X POST http://localhost:8080/api/home # Move to position curl -X POST http://localhost:8080/api/move_to \ -H "Content-Type: application/json" \ -d '{"x": 200, "y": 0, "z": 300}' # Move with orientation curl -X POST http://localhost:8080/api/move_to_pose \ -H "Content-Type: application/json" \ -d '{"x": 200, "y": 0, "z": 300, "roll": 180, "pitch": 0, "yaw": 0}' ``` ## Dora Outputs - `status` - JSON: `{ok, action, message, timestamp_ns}` - `joint_pose` - 6 joint angles in degrees - `tcp_pose` - `[x, y, z, roll, pitch, yaw]` in mm/deg