Несмотря на то, что звенья промышленных роботов позиционируются достаточно точно относительно друг друга, при обработке заготовок очень сложно достичь точного позиционирования рабочего инструмента относительно них. Помимо этого, часть технологических процессов требует воздействия с заданной силой или моментом.
В таких случаях на энд-эффектор робота устанавливается силомоментный датчик, в моём случае - ATI F/T IP60 Delta, а уже на него рабочий инструмент. Тогда, зная теоретические и реальные силу и момент, создаваемые рабочим инструментом, можно получить избыточные значения. Эти избыточные значения будут вызваны реакцией заготовки на воздействие инструментом.
Для демонстрации силомоментного очувствления я разработал программу, которая по сети считывала показания силомоментного датчика, определяла теоретическое воздействие рабочего инструмента. После этого она пересчитывала избыточные показания в абсолютную систему координат и формировала задание, куда сместить рабочий инструмент.
Получилось два режима работы. В первом можно было давить рукой на рабочий инструмент робота, и он смещался в соответствующую сторону. Такой режим называется Force Feedback. Демо-видео можно посмотреть
здесь.
Во втором режиме можно было поворачивать рабочий инструмент за счёт приложенных внешних моментов. Режим управления по моментам называется Torque Feedback. Демо-видео можно посмотреть
здесь. Подробнее об этой работе можно прочитать в моей
бакалаврской диссертации.
Чтобы построить такую систему, мне пришлось разобраться с внутренним языком Kawasaki, он довольно плохо документирован. В итоге выяснилось, что самый оптимальный способ управления – это контроль позиции. На контроллере в бесконечном цикле обрабатываются входящие команды по ethernet, пока не будет получена команда завершения работы. При этом пока не будет отработано предыдущее задание, отработка нового не начнётся. Структуру пакета пришлось составлять самостоятельно.
Строго говоря, такой робот вообще не был рассчитан под работу с обратной связью, поэтому быстрая работа системы происходила рывками, а плавный режим получался слишком медленным. Передвигать робота рукой, как на видео, без соответствующего алгоритма нельзя. Он поддерживает заданное положение и компенсирует все внешние воздействия.
Программа управления была написана на Java состояла из двух модулей: клиент и сервер. Сервер обобщал все показания системы и получал задание по перемещению от клиента. В качестве клиента я написал отдельно десктоп-программу для управления с обратной связью, отдельно Android-приложение, которое позволяло перемещать робота в заданное положение и поворачивать звенья в заданную конфигурацию. Также отображались показания силомоментного датчика. Для работы с датчиком ATI в матлаб была написана библиотека. Демо-видео можно посмотреть
здесь.