5 проверенных стратегий предотвращения столкновений роботов (и резервный план)
Как остановить робот от столкновений с объектами в рабочей зоне? Вот как избежать коллизий, не усложняя себе жизнь.
Недавний вопрос на форуме RoboDK подчеркнул распространенную проблему. Пользователь Micronexx спросил, как избежать столкновений. Генерирует ли RoboDK траектории без коллизий автоматически или пользователю нужно вносить ручные правки?
Эта проблема сложнее, чем кажется на первый взгляд. RoboDK действительно включает функции для предотвращения столкновений, в том числе автоматическую маршрутизацию. Однако «избегание коллизий» в робототехнике — глубокая и сложная тема. Целые исследовательские проекты посвящены планированию траекторий и избеганию столкновений. Разрабатываются даже продвинутые алгоритмы ИИ для этого.хорошая новость в том, что для большинства из нас всё может быть намного проще. Существуют более легкие способы предотвратить столкновения робота с объектами.
5 простых способов избежать столкновений роботов
Обычно лучше начинать с простого.
Это хорошее эмпирическое правило при решении любой проблемы в программировании роботов. Даже если роботы способны на сложные функции, простые инженерные решения часто оказываются лучшими.
Вот 5 простых способов остановить столкновения робота с объектами.
1. Правильно спланируйте рабочее пространство с самого начала
Столкновения чаще всего происходят, когда рабочее пространство не было хорошо спланировано. Любую интеграцию робота следует начинать с планирования пространства, например, черновика на бумаге.
Определите, в каких зонах будет двигаться робот, а какие будут вне зоны его досягаемости. Попробуйте «сыграть» последовательность движений робота собственной рукой перед программированием — это очень эффективный метод для выявления потенциальных проблем заранее, и это очень быстро.
2. Физически устраните потенциальные препятствия
Лучший способ избежать столкновений — обеспечить отсутствие объектов для столкновения. Это означает удаление всего, что может препятствовать движению робота, из рабочей зоны.

Убедитесь, что между различными зонами рабочего пространства есть свободный проход. Если робот будет захватывать объекты в одной зоне и собирать в другой, удалите всё из пространства между этими двумя локациями.
Это может показаться очевидным, но легко забыть об этом при офлайн-программировании. Например, вы видите колонну в рабочей зоне робота и думаете: «Не страшно, я просто обойду её в программе». Но затем, программируя в симулированной среде, где колонны нет, вы забываете о ней и закладываете движение робота сквозь неё.
3. Согласуйте реальный мир с симуляцией
Реальный мир и симуляция в RoboDK должны максимально соответствовать друг другу. Это можно достичь двумя способами:
- Создайте точную модель физического рабочего пространства в симуляции — это требует измерения точного расположения каждого объекта и моделирования его в ПО. Это может быть очень трудоемко, и чем больше вы полагаетесь на точность симуляции, тем меньше остается места для ошибки.
- Удалите из реального мира объекты, отсутствующие в симуляции — это упрощает реальное рабочее пространство путем удаления предметов.
На практике лучшим вариантом является комбинация этих подходов. Вы удаляете все лишние объекты из физического пространства и добавляете все необходимые в симуляцию.
4. Вручную корректируйте программные точки
Прежде чем использовать сложные алгоритмы избегания коллизий, попробуйте сами скорректировать движения робота. Для большинства приложений ручное перемещение точек в RoboDK — быстрое, эффективное и надежное решение.
Например, если робот сталкивается с объектом во время команды Joint Move, просто добавьте пару дополнительных путевых точек для обхода. Или — еще лучше — спросите, нужен ли вообще этот объект в рабочей зоне.
Одна практика, которая может значительно снизить столкновения — определить, является ли каждое движение «транзитным» или «рабочим». Выполняйте транзитные движения только в свободном пространстве без препятствий. Затем остановитесь на небольшом расстоянии от операции (так называемое «расстояние подхода») и аккуратно перейдите к задаче перед выполнением рабочего движения.
5. Используйте новую функцию Мастера обработки
Робототехническая обработка — задача, где, вероятно, потребуется автоматическое планирование траектории. RoboDK упрощает генерацию траекторий обработки с помощью встроенного Мастера обработки.
Большинство времени коллизий не будет, если вы следуете советам выше. Однако есть опция автоматического избегания столкновений во время обработки, добавленная в последней версии RoboDK. Прочитайте ответ Альберта на форуме с объяснением, как использовать эту новую функцию.
Эта функция избегает коллизий путем автоматического вращения робота вокруг оси Z инструмента. В результате она не избегает все столкновения, но повышает надежность Мастера обработки.
Последний рубеж: используйте продвинутый планировщик движений
Если вы прошли все шаги выше и решили, что вам все еще нужен автономный обход препятствий, пора достать «тяжелую артиллерию». Это означает использование сторонних алгоритмов планирования движений для генерации траектории робота.
Существует множество планировщиков траекторий, автоматически обнаруживающих и избегающих столкновения. Однако большинство находятся на ранних стадиях исследований и, как следствие, не очень надежны. Кроме того, большинство предназначены для мобильных роботов, движущихся только в 2 измерениях.
Тем не менее, есть несколько достойных планировщиков для промышленных манипуляторов. Будьте предупреждены: для их использования придется серьезно поработать над программированием.
- MoveIt! — один из самых развитых графических планировщиков движений для роботизированной манипуляции. Использует фреймворк OMPL и предоставляет довольно простой графический интерфейс. Интегрирован в ROS. Если вы уже знакомы с ROS, это может быть хорошим вариантом. Если нет — ожидает крутой кривая обучения.
- Open Motion Planning Library (OMPL) — можно использовать OMPL отдельно, без MoveIt! Обеспечивает библиотеки на C++ и имеет привязки к Python. Документация довольно обширна, но все равно потребуется время на обучение, так как библиотека имеет много функций.
- Bubbles — небольшая библиотека, которую рекомендует CEO RoboDK Альберт Нубиола. Это автономный планировщик для манипуляторов, использующий вероятностный алгоритм дорожной карты (PRM). Написана на C++ и имеет очень мало документации. Но если вы виртуоз программирования и готовы к вызову, она может дать менее «раздутое» решение по сравнению с MoveIt.
В общем, лучше избегать столкновений простыми методами. Но если нужны продвинутые алгоритмы, тема избегания коллизий увлекательна.
Какие столкновения создавали проблемы в ваших робототехнических приложениях? Расскажите в комментариях ниже или присоединитесь к обсуждению в LinkedIn, Twitter, Facebook, Instagram или на форуме RoboDK.
Промышленный робот
- 5 проверенных стратегий для более экологичной доставки последней мили
- Otto DIY+ — Bluetooth-робот на Arduino: продвинутый 3D-набор для сборки
- 6 проверенных тактик для повышения эффективности CNC-программы
- 4 проверенные стратегии повышения топливной эффективности экскаватора
- 10 инновационных перспектив роботизированной автоматизации для современного производства
- 4 простых способа охладить шаговые двигатели 3D-принтера
- Превратите неудачные 3D-печати в ресурс: 4 простых способа переработки
- Эффективные роботские стратегии преодоления нехватки рабочей силы
- Тренды робототехники 2022: инновационные стратегии автоматизации для производителей
- PACKEX Toronto: Примите бесшовную автоматизацию сегодня