- 2025-04-19: Added support for initial parameters for all robot arms + updated Chinese documentation
- 2025-04-16: Optimized yaw drift compensation with more robust auto-calibration
- 2025-02-24: Added compatibility with Robosuite
- 2025-02-12: Added support for RLBench-ACT data collection
git clone https://github.com/box2ai-robotics/joycon-robotics.git
cd joycon-robotics
pip install -e .
sudo apt-get update
sudo apt-get install -y dkms libevdev-dev libudev-dev cmake git
make install- Enter Pairing Mode
- Hold the small circular button on the Joy-Con for 3 seconds.
- In your system Bluetooth settings, connect to
Joycon (L)orJoycon (R).
- Confirm Connection
- Joy-Con will vibrate when connected.
- Single Controller Mode: Hold
R + ZRfor 3 seconds. - Dual Controller Mode: After both Joy-Cons vibrate, press:
- Left:
L(upper trigger) + Right:R(upper trigger)
- Left:
- For already paired devices, press
LorRto auto-reconnect. - Wait for vibration confirmation and repeat step 2 above.
from joyconrobotics import JoyconRobotics
import time
joyconrobotics_right = JoyconRobotics("right")
for i in range(1000):
pose, gripper, control_button = joyconrobotics_right.get_control()
print(f'{pose=}, {gripper=}, {control_button=}')
time.sleep(0.01)
joyconrobotics_right.disconnnect()# Initial pose [x, y, z, roll, pitch, yaw]
init_gpos = [0.210, -0.4, -0.047, -3.1, -1.45, -1.5]
# Pose limits: [[min], [max]]
glimit = [
[0.210, -0.4, -0.047, -3.1, -1.45, -1.5],
[0.420, 0.4, 0.30, 3.1, 1.45, 1.5]
]
offset_position_m = init_gpos[:3]JR_controller = JoyconRobotics(
device="right",
glimit=glimit,
offset_position_m=offset_position_m,
pitch_down_double=True,
gripper_close=-0.15,
gripper_open=0.5
)import math
JR_controller = JoyconRobotics(
device="right",
offset_position_m=offset_position_m,
pitch_down_double=False,
offset_euler_rad=[0, -math.pi, 0],
euler_reverse=[1, -1, 1],
direction_reverse=[-1, 1, 1],
pure_xz=False
)๐ More code examples: Quick Start Tutorial Notebook
- Home:
(offset_position_x, offset_position_y, offset_position_z) - Forward:
X+ - Right:
Y+ - Up:
Z+
| Action | Direction |
|---|---|
| Joystick โ | Forward (X+) |
| Joystick โ | Backward (Xโ) |
| Joystick โ | Strafe Left (Yโ) |
| Joystick โ | Strafe Right (Y+) |
| Joystick โ (Press) | Down (Zโ) |
| R/L | Up (Z+) |
| Function | Left Joycon | Right Joycon |
|---|---|---|
| Reset Pose | Capture (O) |
Home |
| Gripper | ZL |
ZR |
| Delete and Record | โ | A (custom) |
| Save and Record New | โ | Y (custom) |
All other buttons are user-configurable.
Solution:
- Re-run
make install - Remove and re-pair Bluetooth devices
- Restart your computer
- Fully power off Joy-Con, re-enter pairing mode
Solution:
- Charge Joy-Con for 30+ minutes
Remove the Bluetooth pairing info from your computer- Restart both computer and Joy-Con
- โ Ubuntu Bluetooth compatibility can vary by device
| System | Supported |
|---|---|
| Ubuntu 20.04 | โ |
| Ubuntu 22.04 | โ |
| Windows / WSL / Mac / VM | โ (due to kernel-level drivers) |
-
China Mainland:
ๆทๅฎๅบ้บ ๐ ็ๅญๆกฅๆทๅฎๅบ้บ -
International Users:
Via AIFITLAB ๐ Purchase Link
- Video Tutorials: Bilibili ่ง้ข่ดฆๅท
- QQไบคๆต็พค๏ผ948755626
- Open-source license: For research/robotics use only. Strictly prohibited for gaming or Nintendo systems.
- Use at your own risk โ no warranty provided.
If you find this project helpful, please star the repo! โญโญโญโญโญ




