Сообщество Damiao AGV и часто задаваемые вопросы
Часто задаваемые вопросы о протоколе DBUS, навигации, устранении неполадок и мобильных манипуляциях с OpenArm. Ссылки на форум и поддержку.
Часто задаваемые вопросы
Каковы точные настройки последовательного порта для Damiao AGV?
Прошивка AGV прослушивает UART5 (контакт PD2, RX) по адресу 100 000 бод с 8 битами данных, контролем четности и 2 стоповыми битами (8E2). В pyserial откройте порт с помощью:
serial.Serial(
port='/dev/ttyUSB0',
baudrate=100000,
bytesize=serial.EIGHTBITS,
parity=serial.PARITY_EVEN,
stopbits=serial.STOPBITS_TWO
)
Очень распространенной ошибкой является использование 8N1 (без четности, 1 стоповый бит). AGV будет выглядеть подключенным, но будет молча игнорировать или неправильно анализировать все кадры. Всегда используйте PARITY_EVEN и STOPBITS_TWO.
Как 18-байтовый кадр DBUS кодирует скорость?
Кадр DBUS упаковывает четыре 11-битных значения канала (ch0–ch3) в байты 0–5 с использованием упаковки битов с прямым порядком байтов. Каждый канал находится в диапазоне от 0 до 2047, где 1024 является центральным (нейтраль/стоп). Карта скорости: ch3 = 1024 + vx × amp (вперед), ch2 = 1024 + vy × amp (боковой), ch0 = 1024 + (−vw) × amp (вращение). Байты 6–15 — это обнуленные поля мыши/клавиатуры. Байты 16–17 содержат ch4 с фиксированным номером 1024. См. Характеристики для полной таблицы карты каналов.
AGV ненадолго движется, а затем останавливается — что происходит?
Это срабатывание функции безопасности по тайм-ауту команды. Если в течение --cmd-timeout-ms (по умолчанию 300 мс), агент автоматически обнуляет все каналы скорости и AGV останавливается. Обычно это означает, что платформа отправляет команды недостаточно быстро или существует задержка в сети, вызывающая сбои. Решения: (1) увеличить --cmd-timeout-ms 500 для соединений с высокой задержкой (2) убедитесь, что телеоп-панель браузера активно отправляет повторяющиеся move команды на частоте ~ 10 Гц, удерживая кнопку направления, (3) проверьте RTT вашей сети на платформе.
AGV движется в неправильном направлении — как это исправить?
Используйте флаги инверсии осей на агенте — никаких изменений прошивки не требуется:
# Flip forward/backward python3 dami_agent.py --session RC-XXXX --serial-port /dev/ttyUSB0 --invert-x # Flip lateral (left/right) python3 dami_agent.py ... --invert-y # Flip rotation direction python3 dami_agent.py ... --invert-z
Проверьте каждую ось по отдельности (например, отправьте только команду X, наблюдайте за движением), чтобы определить, какие флаги необходимы для вашей физической ориентации установки.
Могу ли я провести тестирование без физического AGV?
Да. Проходить --mock при запуске dami_agent.py. В макетном режиме последовательный порт никогда не открывается. Цикл управления по-прежнему кодирует кадры DBUS (хранятся в памяти), телеметрия пересылается на платформу WebSocket, и весь анализ команд работает идентично. Это позволяет вам проверить весь конвейер WebSocket, протестировать пользовательский интерфейс платформы и интегрироваться в CI без аппаратного обеспечения:
python3 dami_agent.py --session RC-XXXX-XXXX --mock
Я получаю pyserial.SerialException при запуске — что мне проверить?
Первый: ls /dev/ttyUSB* для подтверждения появится адаптер. В противном случае драйвер адаптера USB-TTL, возможно, не загружен (попробуйте другой порт USB). Если порт отображается, но появляется ошибка разрешения, добавьте пользователя в группу дозвона:
sudo usermod -aG dialout $USER
# Log out and back in, then retry
Если порт отображается в списке устройств, но агент по-прежнему не может его открыть, возможно, он открыт другим процессом (например, предыдущим экземпляром агента или последовательным монитором). Закройте все остальные процессы, использующие порт.
Агент подключается, но платформа не показывает телеметрию — что не так?
Подтвердите идентификатор сеанса, переданный --session все еще активен в пользовательском интерфейсе платформы. Сессии могут истечь, если они неактивны. Проверьте выходные данные терминала агента на наличие ответа на подтверждение регистрации — если он печатает «сбой квитирования» или не печатает «готов», возможно, срок сеанса истек. Создайте новый сеанс на платформе и передайте новый идентификатор агенту. Также убедитесь, что --backend указывает на правильный URL-адрес WebSocket платформы.
Как настроить скорость AGV?
Отрегулируйте --amp параметр. Это устанавливает смещение канала от центра (1024), которое представляет команду движения. По умолчанию установлено значение 660, что соответствует примерно 64% максимальной скорости. Для более медленной и более контролируемой работы при выполнении манипуляций на руке используйте --amp 400. Для достижения максимальной скорости на открытом полу используйте до --amp 900. Обратите внимание, что колеса Mecanum теряют некоторую боковую эффективность на очень высоких скоростях. --amp ниже 800 для боковых маневров.
Советы по интеграции с OpenArm
Спланируйте прокладку кабеля перед установкой кронштейна
Проложите кабели CAN/USB рычага через внутренний канал управления кабелями AGV, прежде чем прикручивать рычаг. После того, как рычаг установлен, проложить кабели, не снимая его, будет сложно. Оставьте 20–30 см лишнего троса на запястье — рабочее пространство руки простирается в стороны и назад, где натяжение троса может создать неожиданное сопротивление на траекториях сустава.
Используйте нижний усилитель, когда рука установлена и находится в движении.
Роботизированная рука на AGV поднимает центр масс. Быстрое боковое ускорение может привести к раскачиванию платформы, что приведет к отклонениям в траектории движения руки, особенно в положениях с большим вылетом. Начните с --amp 400 для базового движения во время работы руки и увеличивайте только при необходимости. При сборе данных телеоперации последовательное медленное базовое движение дает более чистые тренировочные данные, чем быстрые, отрывистые движения.
Зарегистрируйте обоих агентов с разными значениями --node-id.
При одновременном запуске агента AGV и агента Arm в одном сеансе платформы задайте каждому отдельный --node-id. Это гарантирует, что платформа отображает отдельные потоки телеметрии, а архив JSONL эпизода независимо маркирует данные каждого узла. Рекомендуемое соглашение об именах: damiao-base для АГВ и openarm-right / openarm-left для узлов рук.
Координируйте базовое движение и движение рук в телеопере.
На панели телеоперации «Бесстрашная платформа» оба узла появляются одновременно. Полезная схема телеоперации: остановите базу, переместите руку, чтобы схватить, переместите базу, чтобы изменить положение, повторите. В архиве JSONL эпизода синхронно фиксируются телеметрические данные всех узлов по временным меткам, поэтому нижестоящие политики могут учиться на всей траектории манипуляций с мобильными устройствами. Рассмотрите возможность использования маркеров записи платформы, чтобы отмечать, где базовое движение переходит в движение руки в каждом эпизоде.
Добавьте датчик Paxini GEN3 для сбора данных о мобильных манипуляциях, насыщенных контактами.
Устанавливать Паксини PX-6AX GEN3 тактильные датчики на кончиках пальцев OpenArm или концевом эффекторе. Зарегистрируйте сенсорный мост в качестве третьего узла в том же сеансе. Платформа синхронно записывает потоки тактильной скорости, скорости суставов рук и базовой скорости, создавая богатые наборы данных мобильных манипуляций с учетом контактов для клонирования поведения и обучения с подкреплением.
Документация и сопутствующее оборудование
Форум и поддержка
У вас есть вопрос, на который здесь нет ответа? Спросите сообщество SVRC или обратитесь в службу поддержки оборудования.
Перейти на Форум → Обратиться в службу поддержки →