ROS и языки программирования.

Nov 03, 2017 17:17

Дослушал курс до конца, и даже выполнил все задания.
Оказалось полезно: ROS - система с развитой инфраструктурой, богатой деталями и тонкостями, разбираться с которой по текстам не имея конкретной задачи я уже много раз ленился, а искать задачу не разобравшись не рисковал.
Основная фича ROS - возможность создавать и связывать в единую систему микросервисы, работающие по принципам "статически типизированная подписка на топик". Типы сообщений представляют из себя аналог C-шных структур, алгебраические типы (и даже union) не поддерживаются.
Мы проходили API для C++. На дворе 21 век, а это API реализованно на callback-ах. При этом авторы API уже забыли про старый добрый C и не реализовали передачу пользовательских данных дополнительным аргументом, а про C++11 еще не слышали, и лямбды не принимают. В курсе общение между callback-ами делалось через глобальные переменные, но API все таки позволяет так не делать - вместо лямбд поддерживается boost::function (у которого есть конструктор из лямбды, так что не все так плохо), а вместо явного дополнительного параметра можно передать ссылку произвольный объект и на его метод (ссылки на методы я всегда считал странной, не совсем консистентной фичей, использование которой видел только в qt, который крив сам по себе, но здесь это решение оказалось вполне рабочим).
Большую роль в ROS играет страшный cmake, которым мы пользовались на уровне заклинаний "поправить такую-то строчку в таком то файле". При сборке в сообщениях проскаивает геренация библиотек не только для плюсов и питона, но еще для nodejs, lisp и какого-то eus.
У меня сложилость впечатление, что прорыв в программировании роботов произойдет тогда, когда миры робототехники и функционального программировния пересекутся - уж больно хорошо все это ложиться на функциональную парадигму. Задачи похожи на разработку UI (только вместо пользователя реальный мир, можно сказать WI), только больше и сложнее, а в интерфейсах функциональщина сильно все упрощает.
В общем возникает сильное желание попробовать там Purescript, поверх nodejs, а потом прикрутить еще Rust/gluon и Julia.
Previous post Next post
Up