pylekiwi
Python package for controlling the LeKiwi robot.
Quick Start
Web UI
Log into the robot and run the following command:
ssh <your robot ip>
sudo chmod 666 <your_follower_robot_serial_port>
uvx pylekiwi webui --serial-port <your_follower_robot_serial_port>
Then, open a web browser and navigate to http://<your robot ip>:8080 to see the web UI.
Leader and Follower/Client Nodes
Run the following command to start the follower node (host) on the robot (Respberry Pi):
ssh <your robot ip>
sudo chmod 666 <your_follower_robot_serial_port>
uvx pylekiwi host --serial-port <your_follower_robot_serial_port>
Run the following command to start the leader node (client) on the remote machine:
sudo chmod 666 <your_leader_robot_serial_port>
uvx --from 'pylekiwi[client]' pylekiwi leader --serial-port <your_leader_robot_serial_port>
Use pylekiwi client on the remote machine for one-off remote operations without
starting the continuous leader controller.
Available command groups:
state: read the current remote robot statecapture: save one JPEG from thebaseorarmcamerapose: go to, save, list, or delete named arm posesposition/inching: move the end effector in the base framegrasp/release: close or open the gripperarm: inspect modeled link frames or toggle arm torquecalibrate: inspect, back up, zero, or restore remote arm calibration
Common examples:
Inspect state or capture images:
uvx pylekiwi client state
uvx pylekiwi client capture --camera base --output photo.jpg
uvx pylekiwi client capture --camera arm --output wrist.jpg
Move the arm or gripper:
uvx pylekiwi client pose go <preset_name>
uvx pylekiwi client pose go "10,20,30,40,50"
uvx pylekiwi client position --x-mm 180 --y-mm 0 --z-mm 120
uvx pylekiwi client inching --x-mm 10 --z-mm -5
uvx pylekiwi client grasp
uvx pylekiwi client release
Manage presets or maintenance:
uvx pylekiwi client pose save <name>
uvx pylekiwi client pose list
uvx pylekiwi client pose delete <name>
uvx pylekiwi client arm off
uvx pylekiwi client arm on
uvx pylekiwi client calibrate status
uvx pylekiwi client calibrate backup
Inspect modeled frames:
uvx pylekiwi client arm links actual --frame lekiwi_chassis
uvx pylekiwi client arm links actual --frame lekiwi_base_camera_mount
uvx pylekiwi client arm links actual --frame lekiwi_base_camera_optical
uvx pylekiwi client arm links actual --frame wrist_camera_mount
The lekiwi_chassis and lekiwi_base_camera_mount frames are now seeded from the
public LeKiwi CAD/URDF rather than placeholders. lekiwi_base_camera_mount tracks
the upstream CAD camera-body link, and lekiwi_base_camera_optical adds an
approximate lens-center frame derived from the CAD mesh.
Referenced LeKiwi CAD sources:
- Public Fusion 360 CAD: https://a360.co/4k1P8yO
- Upstream LeKiwi URDF exported from CAD: https://github.com/SIGRobotics-UIUC/LeKiwi/blob/main/URDF/LeKiwi.urdf
If automatic discovery does not work across machines, you can connect explicitly to the robot:
# On the robot (Raspberry Pi)
uvx pylekiwi host --serial-port <your_follower_robot_serial_port> --listen-host 0.0.0.0 --listen-port 7447
# On the remote machine, add --host/--port before the client subcommand
uvx --from 'pylekiwi[client]' pylekiwi leader --serial-port <your_leader_robot_serial_port> --host <your robot ip> --port 7447
uvx pylekiwi client --host <your robot ip> --port 7447 state
uvx pylekiwi client --host <your robot ip> --port 7447 capture --camera base --output photo.jpg
uvx pylekiwi client --host <your robot ip> --port 7447 position --x-mm 180 --y-mm 0 --z-mm 120
For timestamped camera observations, command expiry, and IK usage, see Robot control.
Release files for pylekiwi 0.13.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| pylekiwi-0.13.0.tar.gz | 2.6 MB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| pylekiwi-0.13.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 5.2 MB
Release files / pylekiwi-0.13.0.tar.gz
| Download URL | pylekiwi-0.13.0.tar.gz |
|---|---|
| Size | 2.6 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
c9881cc746ba278d8ea24a9906ecd2abaee09ebf520ebc59e529f4d0ba4f7b32
|
|
BLAKE2b-256 checksum How to use checksums |
a5041a743634171025d0e85942b51d1d1aa068789932d3ae550bb9ce5e619a1c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.9.18 {"installer":{"name":"uv","version":"0.9.18","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / pylekiwi-0.13.0-py3-none-any.whl
| Download URL | pylekiwi-0.13.0-py3-none-any.whl |
|---|---|
| Size | 2.6 MB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
85e1b30703a570adeac6867dea5fa6ae60a49759ea5c5db091e7c845da89f0ac
|
|
BLAKE2b-256 checksum How to use checksums |
ffb0868a7983a3f474c21907d37de5284f71063274797aa5b85c56df10bc8a9e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.9.18 {"installer":{"name":"uv","version":"0.9.18","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|