Дополнение 01. Управление Joy-Con в Robosuite (Linux)
# Создать окружение conda
conda create -n robosuite python=3.10
conda activate robosuite
# Установить robosuite
git clone https://github.com/box2ai-robotics/robosuite-joycon.git
cd robosuite-joycon
pip3 install -r requirements.txt
pip3 install -r requirements-extra.txt
# Установить joycon-robotics
cd ..
git clone https://github.com/box2ai-robotics/joycon-robotics.git
cd joycon-robotics
pip install -e .
sudo apt install dkms
make install
---
cd ..
cd robosuite-joycon
# По умолчанию — управление с клавиатуры
python robosuite/demos/demo_device_control.py
sudo apt install libhidapi-dev
# Один Joy-Con (R)
python robosuite/demos/demo_device_control_joycon_single.py
# Два Joy-Con (двуручный режим)
python robosuite/demos/demo_device_control_joycon_bimanual.py
sudo snap install bun-js
Поиск и устранение неисправностей
1. Не хватает зависимостей
Python-пакет hid (он же hidapi) не может найти системную библиотеку, которую он вызывает.
Проблема состоит из двух уровней:
- Пакет Python (
hid): установлен в окруженииmicromamba. Сам по себе он не общается с устройством, а служит «переводчиком» или «пультом». - Системная библиотека (
libhidapi-*.so): установлена в операционной системе как библиотека на языке C. Именно она отвечает за связь с USB HID-устройствами, например Joy-Con.
Сообщение Unable to load any of the following libraries: libhidapi-hidraw.so ... означает, что Python не нашёл «двигатель», с которым может работать.
Решение 🛠️
Нужно установить недостающую библиотеку hidapi для вашей операционной системы.
1. Установите библиотеку разработки hidapi
Имя пакета отличается в разных дистрибутивах Linux. Откройте терминал и выполните:
-
Debian / Ubuntu (в том числе Ubuntu в WSL):
sudo apt update sudo apt install libhidapi-devВерсия
-devобычно тянет за собой и библиотеки времени выполнения (libhidapi-hidraw0и др.), а также заголовочные файлы для сборки. Это самый надёжный вариант. -
Arch Linux:
sudo pacman -S hidapi -
Fedora / CentOS:
sudo dnf install hidapi-devel
2. (Важно) Настройте правила udev
После установки библиотеки обычно нужно выдать права на устройство Joy-Con. Иначе обычный пользователь не сможет к нему обратиться, и программа не подключится к контроллеру, даже если библиотека найдена.
-
Создайте файл правил udev: команда даёт всем пользователям права на чтение и запись для всех устройств Nintendo (Vendor ID
057e):echo 'SUBSYSTEM=="hidraw", ATTRS{idVendor}=="057e", MODE="0666"' | sudo tee /etc/udev/rules.d/99-joycon.rules -
Перезагрузите правила udev, чтобы они сразу начали работать:
sudo udevadm control --reload-rules sudo udevadm trigger
3. Переподключите Joy-Con 🎮
Отключите Bluetooth-соединение Joy-Con и подключите его заново, чтобы новые правила udev применились к устройству.
4. Запустите Python-программу ещё раз
После этих шагов вернитесь в окружение micromamba и снова запустите скрипт. Теперь модуль hid должен импортироваться и находить устройство.
python /home/user/17robo/robosuite-joycon/robosuite/demos/demo_device_control_joycon_bimanual.py