Настройка программного обеспечения и драйверов
Установите Paxini SDK, передавайте данные о давлении в Python, визуализируйте тепловые карты контактов, добавьте дополнительную интеграцию с ROS2 и синхронизируйте с манипулятором робота для полного сбора данных.
Установите Paxini SDK
Paxini Gen3 обменивается данными через USB HID — модули ядра или драйверы поставщиков не требуются. Python SDK охватывает низкоуровневый протокол HID и предоставляет чистый потоковый API.
Проверьте установку:
Обнаружение датчика
Подключите датчик Gen3 к компьютеру через USB-C. Используйте утилиту обнаружения устройств SDK, чтобы убедиться, что оно распознано:
Для настроек с несколькими датчиками (например, пять пальцев на USB-концентраторе):
sudo python -m paxini.install_udev один раз, чтобы установить правило, затем отключите и снова подключите датчик.
API потоковой передачи Python
Основной API представляет собой поток на основе обратного вызова. Каждый кадр передает ТактильнаяРамка объект, содержащий полный массив давления и метаданные.
Все общедоступные методы API:
| Метод/Свойство | Описание | Возврат |
|---|---|---|
| датчик.start() | Начать трансляцию; неблокирующий | Никто |
| датчик.стоп() | Остановите поток чисто | Никто |
| датчик.поток() | Генератор, создающий объекты TactileFrame с настроенной частотой Гц. | Генератор[TactileFrame] |
| датчик.последний() | Возвращает самый последний кадр без блокировки | ТактильнаяРамка |
| датчик.set_rate(Гц) | Установите частоту дискретизации (50–500 Гц для USB-C, 50–200 Гц для BLE) | Никто |
| датчик.калибровать() | Калибровка смещения нуля по текущей нагрузке покоя | Никто |
| датчик.серийный | Строка серийного номера устройства | ул. |
| датчик.вариант | "кончик пальца" | "подушечка пальца" | "ладонь" | ул. |
Тактильный формат данных
Каждый ТактильнаяРамка содержит:
| Поле | Тип | Описание |
|---|---|---|
| кадр.timestamp_ns | интервал | Наносекундная метка времени (монотонная, часы хоста) |
| frame.pressure_map | np.ndarray(В, Ш) float32 | Давление в кПа на таксель. Форма варьируется в зависимости от варианта: кончик пальца — 8×8, ладонь — 16×12. |
| Frame.contact_mask | np.ndarray (H, W) bool | Истинно, когда давление превышает порог контакта (по умолчанию: 5 кПа) |
| frame.contact_area_mm2 | плавать | Сумма активных площадей такселей в мм² |
| Frame.total_force_n | плавать | Интегрированная нормальная сила по всем такселям в Ньютонах |
| Frame.contact_centroid | (плавать, плавать) | (строка, столбец) центроид области контакта в координатах такселя |
| Frame.in_contact | логическое значение | Истинно, если total_force_n превышает порог контакта (по умолчанию: 0,05 Н) |
| фрейм.seq | интервал | Монотонно увеличивающийся порядковый номер кадра |
Живая визуализация тепловой карты
В состав SDK входит готовый к работе визуализатор в реальном времени. Запустите его прямо из командной строки:
Или вставьте в свой собственный скрипт, используя paxini.viz модуль:
Интерфейс РОС2
Мост ROS2 публикует Sensor_msgs/Изображение (карта давления) и пользовательская paxini_msgs/TactileFrame тема для каждого датчика. Требуется ROS2 Humble или Jazzy.
При использовании нескольких датчиков каждое устройство публикуется под своим серийным номером. Вы можете переназначить темы в файле запуска, используя стандартное переназначение ROS2.
Интеграция манипулятора робота
Чтобы синхронизировать данные Paxini с состоянием сустава руки робота, используйте команду paxini.sync модуль. Он присваивает временные метки всем кадрам датчика по общим часам и предоставляет API блокировки, который создает синхронизированные пары (arm_state, tactile_frame):
MultiSourceSync класс обрабатывает интерполяцию, когда скорости руки и датчика различаются.
3 главных проблемы
Датчик не обнаруживается. Проверьте по порядку: (1) Попробуйте использовать другой кабель USB-C — некоторые кабели предназначены только для зарядки и не передают данные. (2) В Linux запустите sudo python -m paxini.install_udev затем отключите/переподключите датчик. (3) Убедитесь, что светодиод датчика горит (не мигает) — мигание означает, что он находится в режиме обновления прошивки; удерживайте кнопку сброса в течение 5 секунд, чтобы выйти.
Датчик нуждается в калибровке или установлен слишком высокий порог. Бегать sensor.calibrate() при разгруженном датчике (нет контакта). Если проблема не устранена, проверьте, соответствует ли вариант датчика вашему креплению — датчик ладони, установленный на кончике пальца, будет показывать очень низкие значения давления из-за большей площади такселя. Также подтвердите версию прошивки 1.2+ с помощью python -m paxini.discover.
Часы интерфейса руки и временная метка датчика отличаются более чем на max_dt_ms. Обычно это вызвано тем, что Arm SDK возвращает устаревшее состояние соединения (например, буферизуется с более низкой скоростью). Увеличивать max_dt_ms до 10.0 в качестве первого теста, а затем выясните, почему частота обновления состояния охраны ниже ожидаемой. Для USB-руководств убедитесь, что частота опроса USB не регулируется управлением питанием (sudo powertop в Linux).
Все еще застрял? Опубликовать в ветка вопросов на форуме с вашей ОС, версией SDK (paxini.__version__) и точный вывод ошибки.