При разработке четвероногих роботов, гуманоидных роботов или высокопроизводительных роботизированных манипуляторов традиционные режимы независимого управления положением, скоростью и крутящим моментом зачастую не способны удовлетворить требованиям высокочастотного управления динамикой всего тела из-за ограничений частоты передачи кадров по каналу связи. Поэтому MIT Mode стал предпочтительным методом управления для разработчиков.
В этом руководстве пошагово показано, как настроить и управлять CubeMars AK60-6 (KV80) Robotic Actuator в MIT Mode с использованием C++ через шину CAN. Следуя данному руководству, вы освоите основную логику базового коммуникационного протокола и сможете раскрыть возможности привода, обеспечивающего высокую скорость отклика и минимальную задержку управления.
Перед тем как приступить к написанию программы на C++, убедитесь, что у вас подготовлено следующее аппаратное и программное обеспечение:
Основное оборудование: CubeMars AK60-6 (KV80) Robotic Actuator, надежный интерфейс CAN (например, USB-to-CAN адаптер, CANoe или отладочная плата с интерфейсом CAN).
Программная среда: Компилятор C++ (например, GCC или MSVC), а также сторонняя библиотека для работы с CAN (например, PCAN-Basic, SocketCAN и др.).
Вспомогательное ПО: Официальное программное обеспечение CubeMars для настройки (используется для первоначальной конфигурации параметров).
Перед написанием кода важно понять, почему используется MIT Mode. В традиционных режимах управления за один CAN-пакет можно передать только один параметр (например, положение или скорость). В отличие от них, MIT Mode позволяет упаковать следующие пять ключевых параметров в один стандартный CAN-кадр размером 8 байт:
Целевое положение
Целевая скорость
Целевой крутящий момент (Torque / Kt × I)
PD-коэффициент положения (Kp)
PD-коэффициент скорости (Kd)
Такая унифицированная структура сообщения значительно уменьшает задержку передачи данных и является основой высокочастотного управления движением робота и управления усилием с податливостью.
Перед запуском программы убедитесь, что привод правильно подключен и настроен.
Подключение оборудования: Подключите линии CAN_H и CAN_L вашего CAN-интерфейса соответственно к CAN_H и CAN_L привода AK60-6. Убедитесь, что все устройства имеют общую землю.
Настройка с помощью программного обеспечения CubeMars:
Подключитесь к приводу через официальное программное обеспечение CubeMars.
Установите CAN ID привода на требуемое значение (например, 0x01) и запомните его, так как оно будет использоваться в вашей программе на C++.
Установите Baud Rate на 1 Mbps (1000 kbps) — это рекомендуемая скорость обмена для MIT Mode.
Нажмите кнопку "Enter MIT Mode". После успешной активации при вращении вала вручную будет ощущаться заметное электромагнитное сопротивление.
В среде C++ логика управления AK60-6 состоит из следующих трех основных этапов (полный проект и функции преобразования данных можно скачать в приложении ниже):
Отправка команды Enable: После перехода в MIT Mode привод по умолчанию остается в защищенном состоянии. Перед отправкой управляющих команд необходимо отправить специальный кадр Enable (обычно это 8-байтовый кадр, заполненный 0x00, либо другой кадр Enable, определенный протоколом), чтобы разблокировать привод. Только после звукового сигнала подтверждения привод считается успешно активированным.
Преобразование чисел с плавающей точкой в беззнаковые целые: Это наиболее важный алгоритм реализации MIT Mode на C++. Поскольку CAN-кадры могут передавать только целочисленные данные, физические величины (например, целевое положение -12.5 rad) необходимо преобразовать в 16-битные или 12-битные беззнаковые целые числа.
Логика: Используйте функцию линейного преобразования float_to_uint(x, x_min, x_max, bits).
Операция: Ограничьте значения целевого положения, скорости, крутящего момента, Kp и Kd допустимыми диапазонами привода, после чего пропорционально преобразуйте их в соответствующие шестнадцатеричные значения.
Формирование и отправка 8-байтового CAN-кадра: Упакуйте пять целочисленных параметров, полученных на предыдущем этапе, в массив размером 8 байт (64 бита) в соответствии с расположением битов, определенным коммуникационным протоколом CubeMars. Затем с помощью используемой CAN-библиотеки отправьте кадр приводу с указанием настроенного CAN ID. После получения кадра привод немедленно обработает данные и выполнит команду.
После компиляции и запуска (или прошивки) программы на C++ подайте питание на привод AK60-6.
Запустите приложение на C++, и вы увидите, как привод плавно и быстро реагирует в соответствии с заданными в программе значениями положения, скорости и крутящего момента. Вы также можете динамически изменять значения Kp и Kd, чтобы наглядно оценить изменения жесткости и податливости привода.
В1: После отправки CAN-кадров привод не реагирует или сообщает об ошибке.
О: Проверьте следующие пункты:
Была ли успешно отправлена команда Enable?
Совпадает ли CAN ID в вашей программе на C++ с CAN ID, установленным в приводе?
Находятся ли передаваемые значения в пределах ограничений, определенных протоколом (например, P_MAX и V_MAX)? Значения, выходящие за допустимые пределы, будут отклонены приводом.
В2: Как правильно обрабатывать порядок байтов (Byte Order) в коде?
О: Протокол CAN CubeMars обычно использует формат Big-Endian. При формировании 8-байтового CAN-кадра в C++ необходимо внимательно соблюдать порядок старшего (MSB) и младшего (LSB) байтов. Неправильный порядок байтов приведет к ошибочной интерпретации значений положения и крутящего момента. Подробное описание порядка байтов приведено в Communication Protocol Manual.
В3: Как выполнить калибровку нулевого положения (Zero Position) привода?
О: В режиме MIT Mode отправьте специальную CAN-команду "Set Current Position as Zero" (конкретные CAN ID и формат кадра приведены в Communication Protocol Manual). После этого привод сохранит текущее положение ротора как механическую нулевую точку. Рекомендуется выполнять данную процедуру при каждой инициализации системы после включения питания.
Благодаря компактному фланцу диаметром 60 мм и превосходным динамическим характеристикам AK60-6 (KV80) идеально подходит для легких роботизированных манипуляторов, карданных подвесов и суставов ног четвероногих роботов.
[Узнайте больше о CubeMars AK60-6 (KV80), включая подробные технические характеристики и габаритные размеры.]