Как металл двигается, простыми словами
Какой язык используют современные роботы?
Человек делает что то автоматически, просто сформировав мысль. У железа все сложнее. Для того чтобы цифровой интеллект смог взаимодействовать с физическим миром сейчас используют много интересных инструментов.
Как думают роботы
Самый маленький шаг для робота - это огромный обмен данными и вычисления, которые должны производиться за секунду. Чем быстрее и точнее будет думать робот, тем меньше шансов что он упадет или выполнит задачу неверно. Для маленькой задачи, например "взять мяч" или "сделать шаг влево", инженерам нужно использовать много технологий.
Стандарт для таких задач - ROS (Robot Operating System), гибкая программная среда с открытым исходным кодом. В ней есть инструменты для 3D визуализации, графики, много библиотек с инструментами для навигации и зрения. Так же позволяет коду работать не зависимо от того где он используется и куда отправляется.
Два языка, один мозг
Для разных задач, нужен разный подход. Какие то потребуют быстрой скорости, а какие то максимального удобства. В современной робототехнике задачи делят между двумя языками: C++ и Python.
Если представлять это как тело человека, то C++ будет отвечать за мышцы и рефлексы. На нем пишут управляющие моторами, считывающие датчики и отвечающие за баланс алгоритмы. Главный критерий - скорость и предсказуемость.
Python - это логика и зрение. С помощью библиотек для искусственного интеллекта и компьютерного зрения (OpenCV для обработки картинки и Ultralytics для поиска объектов), робот может строить маршруты и узнавать лица.
Органы - модули
Внутри ROS все процессы разбиты на модули, связанные узлами. У каждого узла есть своя маленькая задача. Чтобы действия между модулями были координированными, узлы посылают друг другу сообщения через топики. Они работают как издатель и подписчик.
Например: Камера постоянно отправляет в топик снимки. Нейросеть подписанная на этот топик собирает снимки, обрабатывает, видит препятствие и отправляет информацию об этом в топик. Двигатель подписанный на топик принимает информацию и дает команду торможения.
Таких модулей может быть насколько угодно больше или меньше, в зависимости от задачи, но все они непрерывно передают друг другу сообщения и работают сообща, как один большой организм.
Сначала симуляция, потом реальный мир
Вероятность того, что человек напишет алгоритм для ходьбы, а робот его поймет с первого раза, очень мала. Чтобы робот из за ошибки не убился об стену в первом же тесте, сначала его запускают в симуляциях: MuJoCo для роботов с ии, Webots для тестов движения, Gazebo для сложных миров и мобильных роботов и RoboDK для проверки промышленных манипуляторов.
В симуляцию с действующими законами физики из реального мира загружается копия робота со всеми физическими параметрами (вес, центр тяжести, ограничения суставов). После постановки задачи, робот делает кучу попыток, корректируя код и убирая ошибки, пока не достигнет цели.
ROS так же позволяет коду работать не зависимо от того где он используется и куда отправляется
В этом главная фишка ROS. Нет принципиальной разницы куда будут отправлять команды. Когда робот достигает поставленной цели, команды перенаправляют из симуляции на железо. Робот в реальном мире начинает делать то же самое, что делал до этого в симуляции
Для чего мы развиваем язык?
Язык заставлявший роботов двигаться прошел огромный путь от обычных сигналов до ROS и искусственного интеллекта. Он развивался в сторону контекстного понимания ситуации давая искусственному интеллекту адаптироваться на ходу становясь безопаснее, доступнее и удобнее. Возможно в будущем совершенствуя язык, роботы станут полноценной частью физического мира.