Допустим, вы решили заняться беспилотными технологиями в стартапе или RnD подразделении при университете. У вас за плечами мобильный робот на условном Arduino. И вот появился заказчик, который хочет автоматизировать свои процессы и даже готов за это заплатить. Вам нужно взять некую технику, обвешать датчиками и приводами, добавить вычислитель и научить автономно двигаться, попутно решая проблему заказчика. У вас всё серьёзно: у проекта есть руководитель, электроникой занимаются электронщики, механикой - конструктора, есть специализация у программистов (системы восприятия, навигации, планирования и т.п.). Казалось бы, что может пойти не так?
Ниже я хотел бы описать ряд проблем, с которыми столкнулся (как программист) при работе над проектами по созданию беспилотных технологий. Врядли я кого-то удивлю, наверняка это всё “детские болезни”, которые решаются правильным планированием и в зрелых компаниях не встречаются. Но на начальном этапе о них полезно помнить.
Фокус на движении, а не решении задачи бизнеса
Если бы нужно было выбрать одну главную проблему, я бы оставил эту. Безусловно, если техника не сможет правильно ездить / плавать / летать, то и задачу решить не сможет. И для этого нужно учесть много факторов: навигация по спутникам или видеоизображению, выбор алгоритма планирования и управления, взаимодействие с препятствиями и другой техникой, требуемые электрические и механические доработки системы и пр. И вам кажется, что решение этих проблем это 90% решения общей задачи. Иногда так и есть. Но чаще в голове заказчика всё уже давно ездит и плавает, а основная работа в этой точке только начинается. В лучшем случае это чревато разочарованием, когда вам говорят, что “непонятно, чем вы вообще занимались”, в худшем - необходимостью в авральном режиме реализовывать то, что казалось очевидным и второстепенным, а на практике оказалось весьма нетривиальным.
Пренебрежение интерфейсом
По сути, это следствие предыдущей проблемы. Интерфейс пользователя видится чем-то второстепенным, мы ведь можем всё запустить из терминала, а если работаем в ROS (Robot Operating System), то использовать инструменты экосистемы типа Rviz и Rqt. Однако, по моим наблюдениям, заказчик считает основной программой именно то, что запущено на планшете или ноутбуке, а не в вычислителе беспилотной техники, даже если это всего лишь тонкий клиент. И именно по его удобству и функциональности оценивается работа всего комплекса.
Пренебрежение “второстепенными” специалистами
Аналитик. Команде нужен человек, который смог бы изучить техпроцессы и потребности бизнеса, и донёс их до разработчиков вместе с используемой заказчиком терминологией. Неприятно, когда не можешь понять, что тебе говорят, ещё неприятнее, когда незадолго до завершения проекта наконец узнаешь, какие режимы работы требуются и как они связаны друг с другом.
Архитектор ПО. Когда команда использует ROS, кажется, что об архитектуре можно не думать, просто пиши отдельные программные модули (ноды), которые будут обмениваться сообщениями, и всё само заработает. Однако, чем больше выделяется подсистем и чем больше программистов над ними заняты, тем меньше каждый из них понимает, как работает система в целом. Это путь в “чёрный ящик”.
Тестировщик. Когда наконец появляется прототип, в симуляторе или “в железе”, имеет смысл подключать тестировщика. Проверка работы физического объекта в реальном времени это обычно длительный процесс, особенно если необходимо выехать в какую-то удаленную локацию. Использование разработчика для этого часто неоправданно. К тому же, мы имеем привычку выполнять для тестирования одни и те же действия, а заказчик, почему-то, склонен выполнять другие, что на демонстрации приводит к “неожиданному” поведению.
Технический писатель. Завершение проекта обычно связано с написанием большого количества сопроводительной документации. Программисты хорошо пишут код, но с обычным текстом часто бывают проблемы. К тому же на финальных этапах они заняты исправлением багов и доработкой функционала системы.
Размытое техническое задание
Возможно, причина проблемы в том, что беспилотные системы - технология относительно молодая. В результате, либо заказчик не до конца понимает, что он хочет, либо исполнитель - что он может. Если у вас нет за плечами пары-тройки аналогичных проектов, шансы столкнуться с подобным очень велики, а интерпретация заказчиком пунктов ТЗ может вас весьма удивить.
Связанной проблемой является широкий спектр функций разрабатываемого изделия без обозначения приоритетов. Желательно сразу определить, какой функционал служит для решения задач бизнеса, а какой является вспомогательным, и распределять ресурсы исходя из этого.
Специфические проблемы
Можно перечислить много технических проблем, связанных с разработкой беспилотников. Вот те, что особенно запомнились.
Перенос из симулятора на железо занимает больше времени, чем планируется. Причины могут быть самые разные: инерционность и/или нелинейность моторов, отличие поведения реальный приборов от использованных в симуляции программных заглушек, настройки сетей, прав доступа и пр.
Система планирования считает, что распознавание никогда не ошибается.
Предполагается, что одометрия всегда актуальна и согласована с данными сенсоров.
Не учтены задержки при передаче сообщений (в системе типа ROS).
Много кода на Python. При переносе системы на бортовой вычислитель может оказаться, что модули, которые нормально работали по-отдельности, начинают конкурировать за ресурсы.
Последний пункт связан с такой особенностью робототехники как наукоемкость. Поэтому код часто пишут люди с хорошими знаниями в математике и физике, но не в технологии программирования. И если они добавляют unit-тесты, это уже огромный плюс для проекта.
Итого
В процессе разработки беспилотных систем важно помнить, что успех проекта зависит не только от технической реализации движения, но и от комплексного подхода к решению бизнес-задач. А грамотное распределение ролей в команде, чёткое техническое задание и внимание к интерфейсной части являются такими же важными факторами, как и следование траектории или обход препятствий.
Комментарии (3)

murkin-kot
23.08.2026 11:08В процессе разработки беспилотных систем важно помнить, что успех проекта зависит не только от технической реализации движения
Да, проект полностью зависит от наличия умелого продавца воздуха, обеспеченного достаточными ресурсами для подходов к серьёзным заказчикам.
Ну а технологии... Сначала надо продать, то есть получить много денег. А потом можно что-то и поразрабатывать. Правда тут внезапно всплывает авральный режим работы, ну и что? Все же так делают. Когда воздух продан и покупатель зявязан на вас весомой вложенной суммой, он будет согласен ждать сколько надо, ведь правильно?
mbait
В том году DARPA Challenge исполнилось 20 лет. Ещё через пару лет исполнится 20 лет первой версии ROS.
Я вижу только две проблемы:
Вы взялись разрабатывать коммерческое решение без опыта таких разработок.
Вы взялись решать задачу в области, в которой у вас недостаточно знаний и опыта.
И статья ни о чём. Вы откусили кусок, который не смогли прожевать? - Поздравляю, через это проходили чуть менее чем все. Но интересно было бы почитать про то, как исправляли ситуацию, как происходил диалог с заказчиком, что в итоге получилось (если получилось) и так далее.
stanislav_mikhel Автор
Хотелось подсветить вопросы, упещенные на старте.
А решалось всё банально: привлечение профильных специалистов, работа 24/7, смещения сроков, и на выходе вместо условного Феррари перемотанный скотчем Запорожец, но способный пройти ПМИ.