Сансара зависимостей: как мы перешли с ROS 1 на ROS 2 без массового переписывания кода
История о том, как мы в Venti Technologies меняли программную платформу автономных машин, пока сами машины продолжали перевозить контейнеры. В жизни технологического стартапа рано или поздно наступает момент, когда программное обеспечение, предназначенное для будущего, обнаруживает, что намертво привязано к прошлому. В нашем случае прошлое называлось ROS 1 Kinetic и Ubuntu 16.04. В сентябре 2024 года мы завершили миграцию на ROS 2 Humble Hawksbill и Ubuntu 22.04. Она заняла около десяти месяцев, потребовала создания параллельной системы сборки, собственного слоя совместимости, нескольких уровней тестирования и почти полугода валидации. При этом нам удалось сохранить практически всю прикладную логику и не останавливать разработку продукта. На момент начала работ общая кодовая база насчитывала примерно 1,5 миллиона строк. Сразу уточню, чтобы избежать недоразумений: сюда входили не только собственные исходники, но и тесты, сгенерированный код и сторонние зависимости. Мы не утверждаем, что собственноручно перенесли полтора миллиона строк прикладной логики. Эта история не о том, как ROS 2 волшебным образом решила все проблемы старой системы. Скорее о том, как создать условия, в которых старую платформу можно заменить новой, не заставляя весь остальной продукт участвовать в этом процессе. Читать далее
