Руководство по настройке Damiao AGV

От распаковки до управления через браузер. Охватывает вопросы безопасности при распаковке, зарядке, программном обеспечении, дистанционном управлении, автономной навигации и креплении на кронштейне.

Тяжелое оборудование — требуется бригадный подъемник. Damiao AGV — это мощная мобильная платформа. Для распаковки и перемещения всегда используйте подъемник для двух человек. Перед первым включением питания убедитесь, что рабочее пространство имеет свободное пространство не менее 2 м во всех направлениях.
1

Распаковка и проверка безопасности

Осмотрите AGV и подготовьте рабочее место.

Требуется групповой подъемник. Используйте двух человек, чтобы вытащить AGV из транспортировочного ящика. Поднимайте за нижнюю часть шасси, ни в коем случае не за колеса или выступающую электронику. Установите платформу на ровную твердую поверхность с включенными тормозами (при наличии).
  1. Снимите упаковку. Осторожно снимите все пенопластовые вставки, кабельные стяжки и транспортировочные ограничители. Осмотрите колеса на предмет повреждений при транспортировке — все четыре колеса Mecanum должны свободно вращаться вручную.
  2. Осмотрите разъемы. Убедитесь, что все разъемы кабелей на главном контроллере установлены на свои места. Вибрация при транспортировке иногда ослабляет разъемы JST или Deans.
  3. Освобождение рабочего места. Перед включением питания освободите не менее 2 м открытого пространства во всех направлениях. AGV может быстро ускоряться — во время первых испытаний наблюдателям следует отойти в сторону.
  4. Аварийная остановка. Найдите главный выключатель питания на корпусе. Прежде чем включать питание, узнайте, как добраться до него. Во время первого сеанса всегда держите одну руку возле точки отсечки.
  5. Проверка поверхности. Для правильной работы во всех направлениях колесам Mecanum требуется плоская твердая поверхность (бетон, деревянный пол или гладкая плитка). Ковровое покрытие и неровные поверхности значительно снижают эффективность бокового контроля.
2

Зарядка аккумулятора и включение питания

Полностью зарядите аккумулятор перед первым использованием.

  1. Подключите зарядное устройство. Найдите порт зарядки аккумулятора на шасси AGV (обычно это большой цилиндрический разъем или порт XT60). Подключите прилагаемое зарядное устройство. Подключите зарядное устройство к заземленной розетке 110/220 В.
  2. Зарядите по полной. Перед первым использованием дайте аккумулятору полностью зарядиться — обычно это 2–4 часа в зависимости от исходного состояния. По завершении светодиод зарядного устройства загорится зеленым (или перестанет мигать). Не оставляйте без присмотра во время первой зарядки.
  3. Проверьте напряжение аккумулятора. После зарядки напряжение аккумулятора должно соответствовать номинальному уровню полностью заряженного аккумулятора (проверьте этикетку аккумулятора). Используйте мультиметр или встроенный дисплей, если он имеется.
  4. Последовательность включения. Подключите аккумулятор к основному контроллеру. Переключите главный выключатель питания. Контроллер должен загрузиться в течение 5–10 секунд — светодиоды-индикаторы стабилизируются. Не отправляйте команды движения во время загрузки.
Безопасность LiPo аккумуляторов. Если в AGV используется аккумулятор LiPo (общий), никогда не разряжайте элемент ниже минимального напряжения (обычно 3,0 В/элемент). Храните с 50% зарядом, если не используете более недели. Никогда не заряжайте вздутый или поврежденный LiPo.
3

Программное обеспечение и навигационный стек ROS2

Установите агент Python и дополнительные пакеты ROS2 на свой компьютер.

The dami_agent.py скрипт является основным мостом между платформой Fearless и оборудованием AGV. Для этого требуется Python 3.8+ и два пакета pip.

# Install dependencies
pip install pyserial websockets

# Confirm your USB-to-TTL adapter appears
ls /dev/ttyUSB*   # Linux

# Add your user to the dialout group (Linux) if you get permission errors
sudo usermod -aG dialout $USER
# Log out and back in for group change to take effect

Подключите адаптер USB-TTL: подключите адаптер TX контакт с главным контроллером AGV UART5_RX (контакт PD2). Подключите GND к GND. НЕ подключайте контакт RX адаптера или 5 В к AGV.

Для интеграции с ROS2 установите навигационный стек:

# ROS2 Humble (Ubuntu 22.04) — adjust for your distro
sudo apt install ros-humble-navigation2 ros-humble-nav2-bringup ros-humble-slam-toolbox
Сначала протестируйте без оборудования. Запустите агент в тестовом режиме, чтобы проверить весь командный конвейер перед подключением AGV:
python3 dami_agent.py --session RC-XXXX-XXXX --mock Режим Mock пропускает открытие последовательного порта. Весь синтаксический анализ команд WebSocket, пересылка телеметрии и логика безопасности по тайм-ауту выполняются одинаково.
4

Телеоперация

Управляйте AGV из браузера через платформу Fearless

  1. Открыть platform.roboticscenter.ai, перейдите в раздел Teleop и создайте новый сеанс. Скопируйте идентификатор сеанса (формат: RC-XXXX-XXXX).
  2. Запустите агент с вашим последовательным портом и идентификатором сеанса:
    python3 dami_agent.py \
      --session RC-XXXX-XXXX \
      --serial-port /dev/ttyUSB0 \
      --backend ws://localhost:8000
  3. Агент подключается к платформе, регистрирует узел AGV как device_type: "mobile_base", и начинает контур управления с частотой 30 Гц.
  4. Откройте URL-адрес сеанса в браузере. Используйте элементы управления направлением для отправки move команды. AGV реагирует в течение одного такта контура управления (33 мс при 30 Гц).

Типы команд, принимаемые агентом:

# Move forward along X axis
{"type": "move", "axis": "x", "dir": 1}

# Move laterally right (Y axis)
{"type": "move", "axis": "y", "dir": 1}

# Rotate counter-clockwise (Z axis)
{"type": "move", "axis": "z", "dir": -1}

# Stop all motion immediately
{"type": "stop"}

# Goal-based delta movement
{"type": "goal", "delta": {"x": 0.5, "y": 0.0, "yaw": 0.0}}

Для регулировки скорости движения используйте --amp параметр (по умолчанию 660, рекомендуемый диапазон 500–760). Более высокие значения обеспечивают более быстрое движение:

python3 dami_agent.py --session RC-XXXX-XXXX --serial-port /dev/ttyUSB0 --amp 500

Если AGV движется в неправильном направлении, используйте --invert-x, --invert-y, или --invert-z перевернуть оси без изменения прошивки.

5

Настройка автономной навигации

Настройте ROS2 nav2, SLAM и следование маршрутной точке.

Для автономной навигации публикуйте данные одометрии и датчиков (с LiDAR или камеры глубины на AGV) в темах ROS2, а затем используйте nav2 для планирования пути.

# Launch SLAM Toolbox for mapping
ros2 launch slam_toolbox online_async_launch.py

# In a second terminal — launch nav2 with the AGV base footprint
ros2 launch nav2_bringup navigation_launch.py \
  params_file:=/path/to/your/agv_nav2_params.yaml

# Send a navigation goal via CLI
ros2 action send_goal /navigate_to_pose nav2_msgs/action/NavigateToPose \
  "{pose: {header: {frame_id: map}, pose: {position: {x: 1.0, y: 0.5}, orientation: {w: 1.0}}}}"

Ключевые параметры nav2 для настройки Damiao AGV:

  • robot_radius — Установите половину ширины AGV плюс запас безопасности (обычно 0,4–0,6 м).
  • max_vel_x / max_vel_y — Установите на основе вашего --amp значение и измеренную максимальную скорость. Начните консервативно (0,3 м/с).
  • max_vel_theta — Ограничение скорости вращения. Измеряйте медленно --amp 400 сначала протестируй.
  • голономный — Установить на true в локальном планировщике DWB, чтобы включить планирование бокового движения (требуется для колес mecanum/omni).
Безопасность телеопаса во время навигации. Во время тестирования автономной навигации оставляйте панель телеоператора Fearless Platform открытой. Тайм-аут команды агента в 300 мс означает, что если nav2 прекратит публиковать цели, AGV автоматически остановится, обеспечивая защиту на программном уровне в дополнение к физическому выключателю.
6

Установка манипулятора робота

Прикрепите OpenArm или DK1 к верхней пластине и зарегистрируйте оба за один сеанс работы с платформой.

Верхняя пластина Damiao AGV предназначена для установки стандартных фланцев основания манипулятора робота. Этот шаг охватывает физическую интеграцию и настройку многоузлового сеанса Fearless Platform.

Физический монтаж

  1. Выключите AGV и поставьте на охрану. перед любыми механическими работами.
  2. Расположите опорную пластину манипулятора робота над монтажными отверстиями верхней панели AGV. Используйте прилагаемые болты с головкой под торцевой ключ M6 (или M5 для более легкого оружия). Нанесите резьбовой фиксатор на все крепежные детали.
  3. Проложите кабели питания рычага и кабели CAN/USB через канал для прокладки кабелей на верхней пластине в отсек шасси AGV. Закрепите с помощью кабельных стяжек — обеспечьте достаточную слабину для всего рабочего пространства руки, не натягивая ее.
  4. Питание манипулятора осуществляется от отдельной батареи или от регулируемого источника питания в шасси AGV. Не используйте батарею привода AGV совместно с контроллером руки без соответствующей изоляции.

Сеанс многоузловой платформы

Запустите оба агента, указывающие на один и тот же идентификатор сеанса. Они регистрируются как независимые узлы, и платформа записывает оба потока синхронно:

# Terminal 1 — AGV agent
python3 dami_agent.py \
  --session RC-XXXX-XXXX \
  --serial-port /dev/ttyUSB0 \
  --node-id damiao-base

# Terminal 2 — OpenArm agent (example)
python3 openarm_agent.py \
  --session RC-XXXX-XXXX \
  --can-interface can0 \
  --node-id openarm-right

На панели телеоперации «Бесстрашная платформа» появляются оба узла. Операторы могут отправлять команды движения на AGV (ось x/y/z) и команды постановки на охрану независимо в одном сеансе. Запись эпизода фиксирует телеметрию всех узлов в одном архиве JSONL — полную траекторию мобильных манипуляций, включая базовую скорость и положения суставов рук, синхронизированную по временной метке.

См. также. The Аппаратный хаб OpenArm 101 и Бимануальный комплект DK1 Страница содержит руководства по настройке для конкретной руки. Завершите настройку рычага перед этапом монтажа, описанным выше.
7

Конфигурация CAN-шины и двигателя

Настройте шину CAN FD и установите идентификаторы двигателей для любых приводов Damiao, установленных на AGV.

Когда рычаг OpenArm или DK1 установлен на верхней панели AGV, его двигатели Damiao QDD обмениваются данными с бортовым компьютером по шине CAN FD. В этом разделе описывается подключение шины, присвоение идентификатора двигателя, команды ввода в эксплуатацию и светодиодная диагностика.

Трансмиссия AGV по сравнению с моторами на руках. Движение AGV контролируется через UART5/DBUS, а не через CAN. Описанная здесь шина CAN FD предназначена исключительно для двигателей Damiao QDD в любой полезной нагрузке манипулятора робота, установленной на AGV. Не пытайтесь отправлять кадры CAN на контроллер трансмиссии AGV.

Установите can-utils

# Install SocketCAN utilities (Ubuntu / Debian)
sudo apt update && sudo apt install -y can-utils

Вызовите интерфейс CAN FD

CAN FD при номинальной скорости 1 Мбит/с + скорости передачи данных 5 Мбит/с является рекомендуемым режимом для всех новых развертываний:

# Bring interface down first if already up
sudo ip link set can0 down

# Configure CAN FD: 1M nominal baud, 5M data baud, FD mode enabled
sudo ip link set can0 type can bitrate 1000000 dbitrate 5000000 fd on

# Bring interface up
sudo ip link set can0 up

# Verify — output should show "fd on"
ip link show can0

Если у вас установлен OpenArm PPA, вспомогательный сценарий включает в себя следующие команды:

# CAN FD single arm
openarm-can-configure-socketcan can0 -fd -b 1000000 -d 5000000

# Classic CAN 2.0 (legacy / compatibility)
openarm-can-configure-socketcan can0

Следить за автобусом

# Dump all CAN frames — verify connectivity before sending commands
candump -x can0

# Dump with timestamps
candump -td can0

Назначение идентификатора двигателя (J1–J8)

Каждый двигатель Damiao на шине CAN должен иметь уникальную пару идентификаторов: идентификатор передатчика (хост → двигатель) и идентификатор приемника (двигатель → хост). Идентификаторы настраиваются с помощью инструмента отладки Damiao Windows перед сборкой рычага. Стандартное сопоставление OpenArm:

Соединение Модель двигателя Идентификатор TX (хост → двигатель) Идентификатор RX (двигатель → хост)
J1 — вращение базыDM-J4340p-2EC0x010x11
J2 — шаг плечаDM-J4340p-2EC0x020x12
J3 — перекат через плечоDM-J4340p-2EC0x030x13
J4 — шаг локтяDM-J4340-2EC0x040x14
J5 — перекат локтямиDM-J4340-2EC0x050x15
J6 — шаг запястьяDM-J4340-2EC0x060x16
J7 — перекат запястьемDM-J4310-2EC V1.10x070x17
J8 — захватDM-J4310-2EC V1.10x080x18

Идентификаторы уникальны для каждой CAN-шины, а не глобально. Бимануальная установка (две руки) использует вторую шину — can1 — с той же схемой идентификации.

можно отправить тестовые команды

Использовать cansend для низкоуровневого ввода в эксплуатацию. Заменять 001 с шестнадцатеричным идентификатором TX целевого соединения (например, 002 для J2).

## CAN FD commands (use when interface has "fd on")

# Enable motor — motor holds position and accepts commands
cansend can0 001##1FFFFFFFFFFFFFFFC

# Disable motor — motor becomes free-wheeling
cansend can0 001##1FFFFFFFFFFFFFFFD

# Clear motor error — required before re-enabling after a fault
cansend can0 001##1FFFFFFFFFFFFFFFB

## CAN 2.0 equivalents (use when interface is classic CAN, no fd on)
cansend can0 001#FFFFFFFFFFFFFFFC   # Enable
cansend can0 001#FFFFFFFFFFFFFFFD   # Disable
cansend can0 001#FFFFFFFFFFFFFFFB   # Clear error
Сопоставьте тип кадра с режимом шины. Используйте ##1 Синтаксис CAN FD, когда интерфейс был настроен с fd onи сингл # классический синтаксис для CAN 2.0. Смешение типов кадров на одной шине приведет к ошибкам шины.

Светодиодные индикаторы состояния

Каждый двигатель Damiao имеет один встроенный светодиод, видимый через окно корпуса:

Светодиодный узор Состояние Требуется действие
Зеленый (постоянный) Двигатель включен и готов Нет — двигатель активен и принимает команды
Красный (постоянный) Двигатель отключен (питание включено, не включено) Отправьте команду включения, чтобы активировать двигатель.
Красный (мигающий) Неисправность двигателя/состояние ошибки Отправьте команду «Очистить ошибку», выясните причину, затем снова включите

Распространенные причины неисправностей: перегрузка по току (уменьшите коэффициент усиления или нагрузку), перегрев (позволите охладить), ошибка энкодера (переподключите кабели), пониженное напряжение (питание ниже ~18 В в системе 24 В), отключение шины CAN (проверьте клеммы и проводку).

Предупреждения о флэш-записи

Ограничение записи флэш-памяти: ~ 10 000 циклов на двигатель. Для хранения идентификатора двигателя и параметров используется внутренняя флэш-память. Установите CAN ID и параметры калибровки один раз во время ввода в эксплуатацию и оставьте их навсегда. Изменения параметров времени выполнения применяются без --flash флаг идет только в ОЗУ и не использует циклы флэш-памяти. Избегайте сценариев, которые неоднократно перепрошивают параметры двигателя.
Для настройки идентификаторов требуется инструмент Damiao Windows. CAN ID должны быть установлены с помощью Debugging_Tools_v.1.6.8.8.exe — подключайте одновременно только один двигатель, чтобы избежать коллизий идентификаторов. Видеть полная ссылка на двигатель для пошаговых инструкций.
Посмотреть полные характеристики → Часто задаваемые вопросы и сообщество → Вики для разработчиков →

Нужна помощь?

Спросите сообщество или обратитесь в службу поддержки SVRC с выводом dami_agent.py --mock и ваш путь к последовательному порту.