Существуют требования, которые заставляют инженеров-программистов попотеть. Массовое распространение на тысячи узлов. Высокая надежность и доступность. Несколько различных платформ. Быстрый рост сети. Аппаратные платформы, которые меняются за несколько дней или недель. А еще нужно разместить платформы в космосе.
Такова мировая программа Starlink компании SpaceX, которая поставила перед собой цель обеспечить высокоскоростным широкополосным интернетом места, где доступ был ненадежным, дорогим или полностью отсутствовал.
Stack Overflow поговорил с двумя руководителями программного обеспечения Starlink — Акашем Бадшахом и Энди Боном — об их методах и практике разработки. Программное обеспечение делится на две части: 1) программное обеспечение необходимое для полета, и 2) программное обеспечение, которое поддерживает летающие компоненты, управляет сетями, контролирует «созвездие» спутников Starlink — спутники Starlink на орбите — и поддерживает связь между созвездием и обычным наземным Интернетом.
В настоящее время «созвездие» Starlink состоит из сотен небольших и недорогих спутников на низкой околоземной орбите, и компания планирует увеличить его до тысяч. Низкая высота необходима для обеспечения низкой задержки. Современные геостационарные спутники находятся на орбите на расстоянии 26 200 миль от центра Земли и 22 300 миль над поверхностью, что означает, что сигналу требуется примерно 0,240 секунды, чтобы совершить путешествие туда и обратно. В настоящее время Starlink находится на орбите на высоте 340 миль, что сокращает задержку почти до сотой доли.
Бон, менеджер группы сетевого программного обеспечения, сказал: «У нас есть наземный кластер служб, выясняющих, кто с кем общается в сети. Что интересно в наших спутниках, так это то, что они находятся очень близко. Поэтому спутник может находиться над вами всего несколько минут. Поэтому антенна на крыше клиента должна часто менять спутник, с которым она общается».
«Рассмотрим, как ваш сотовый телефон общается со стационарными вышками связи. Время от времени вашему телефону приходится переключаться с одной вышки на другую, но обычно связь стабильна», — говорит Бон. «Для Starlink одна из главных проблем заключается в том, что наши „вышки“ вращаются вокруг Земли, и из-за этого приходится очень часто переподключаться к ним. Моя команда организует этот танец, вычисляя желаемые сетевые топологии, распространяя этот план среди ресурсов в сети и настраивая оборудование для его реализации».
Конечно, спутники Starlink создают свои собственные проблемы. Каждый спутник отвечает не только за поддержание связи с наземными станциями, находящимися в поле зрения, но, в отличие от большинства спутников, спутники Starlink в значительной степени ориентируются самостоятельно. При запуске сотен спутников нет времени выводить каждый на свою орбиту; вместо этого наземное управление задает каждому спутнику место в созвездии, и спутник сам направляется на это место. Затем сеть на Земле обеспечивает непрерывное обновление информации об условиях движения и изменениях в созвездии, в то время как каждый спутник информирует землю о своей запланированной траектории.
«Комбинаторика проблемы делает масштабирование этой системы для многих миллионов людей непростой задачей», — говорит Бон. «При обслуживании пользователей спутникам Starlink необходимо окрашивать землю лучами данных разных частот, чтобы избежать помех. В итоге мы решаем проблему окраски и предотвращения помех в глобальном масштабе, что является еще одной из наших больших задач, которую необходимо решать в режиме реального времени».
Программное обеспечение Starlink, как на спутниках, так и на Земле, написано почти полностью на C++, с некоторыми разработками прототипов на Python. Программное обеспечение разрабатывается в среде непрерывной интеграции, при этом команды часто сливают изменения в основную ветвь разработки и каждую неделю развертываются на созвездии спутников в космосе.
«Мы используем C++ для большинства программ управления аппаратом. В SpaceX с ним связано много наследия, поскольку это очень низкоуровневый язык, который мы можем использовать на „голых“ микроконтроллерах. Это позволяет нам использовать его на встроенных компьютерах с Linux, которые мы используем во всех наших различных аппаратах», — объясняет Бадшах. «Мы многое узнали благодаря Dragon и Falcon о том, как можно запустить самодостаточную архитектуру на трех компьютерах, которые обмениваются данными и решают одни и те же задачи».
Новый код проходит через обширный цикл тестирования с использованием множества различных тестовых схем, от простых модульных тестов до запуска в массивных симуляторах. Некоторые из наиболее интересных тестов включают в себя все: от помещения спутников в безэховую изоляцию от наземных станций и тестирования их связи до теста, который представляет тестовой платформе симуляцию всей среды, в которой будут работать спутники. По сути, Starlink создал симуляцию, имитирующую пространство-время, по крайней мере, в окрестностях Земли.
«Для разработки и тестирования этих алгоритмов у нас есть полномасштабная сетевая симуляция, работающая в режиме непрерывной интеграции на высокопроизводительном вычислительном кластере. Эта симуляция способна выполнять продакшн код на C++, а также работать с кодом прототипа, написанным на Python», — говорит Бон. «Версия на Python позволяет быстро проводить итерации на этапе проектирования. Как только мы будем удовлетворены результатами алгоритма, мы перенесем его на C++, чтобы он эффективно работал в продакшене».
Одна из серьезных проблем для Starlink заключается в том, что сами спутники часто меняются. В Starlink говорят, что у них еще не было ни одного запуска, при котором спутники, входящие в созвездие, не изменились бы по сравнению с предыдущим запуском. В большинстве случаев это было бы серьезной проблемой (читай: рецептом катастрофы). Starlink решила эту проблему, внедрив разработчиков программного обеспечения непосредственно в производственный цикл.
Вместо того, чтобы новое оборудование «выбрасывалось за стену» разработчикам, разработчики программного обеспечения интегрируются в производственный процесс вплоть до того, что они находятся в цеху. Чтобы обеспечить синхронизацию аппаратного и программного обеспечения на протяжении всего процесса, программное обеспечение иногда тестируется на спутниках, сходящих с производственной линии и направляющихся на орбиту.
Когда программное обеспечение спутника готово к полету, его собирают для передачи на спутники. Релизы сначала развертываются на нескольких спутниках на орбите и тестируются на месте. Если возникают сбои, программное обеспечение может быть откатано. Если оно признается удовлетворительным, программное обеспечение развертывается на остальных спутниках по экспоненте.
Еще одно преимущество C++ — в области управления памятью. Неважно, сколько раз вы проверяете код перед запуском, вы должны быть готовы к повреждению программного обеспечения, когда окажетесь на орбите. «Мы создали базовую инфраструктуру, которая позволяет нам знать, что мы выделяем всю нашу память во время инициализации. Если что-то не удается выделить, мы делаем это заранее», — говорит Бадшах. «У нас также есть различные инструменты для того, чтобы любое состояние, сохраняемое приложением, управлялось в определенном месте памяти. Это позволяет нам знать, что оно правильно распределяется между компьютерами. Чего вы не хотите, так это ситуации, когда один из компьютеров получает удар радиации, немного переворачивается, и он не находится в общей памяти с другими компьютерами, и он может как бы отключиться сам по себе».
- Первая в России серийная система управления двухтопливным двигателем с функциональным разделением контроллеров
- В современном автомобиле строк кода больше чем…
- Бесплатные онлайн-курсы по Automotive, Aerospace, робототехнике и инженерии (50+)
- McKinsey: переосмысляем софт и архитектуру электроники в automotive
У вас будет возможность разрабатывать софт разного уровня, тестировать, запускать в производство и видеть в действии готовые автомобильные изделия, к созданию которых вы приложили руку.
В компании организован специальный испытательный центр, дающий возможность проводить исследования в области управления ДВС, в том числе и в составе автомобиля. Испытательная лаборатория включает моторные боксы, барабанные стенды, температурную и климатическую установки, вибрационный стенд, камеру соляного тумана, рентгеновскую установку и другое специализированное оборудование.
Если вам интересно попробовать свои силы в решении тех задач, которые у нас есть, пишите в личку.
- Старший инженер программист
- Системный аналитик
- Руководитель группы калибровки
- Ведущий инженер-испытатель
- Инженер по требованиям
- Инженер по электромагнитной совместимости
- Системный аналитик
- Старший инженер-программист ДВС
Мы, пожалуй, самый сильный в России центр компетенций по разработке автомобильной электроники. Сейчас активно растем и открыли много вакансий (порядка 30, в том числе в регионах), таких как инженер-программист, инженер-конструктор, ведущий инженер-разработчик (DSP-программист) и др.
У нас много интересных задач от автопроизводителей и концернов, двигающих индустрию. Если хотите расти, как специалист, и учиться у лучших, будем рады видеть вас в нашей команде. Также мы готовы делиться экспертизой, самым важным что происходит в automotive. Задавайте нам любые вопросы, ответим, пообсуждаем.
- Бесплатные онлайн-курсы по Automotive, Aerospace, робототехнике и инженерии (50+)
- [Прогноз] Транспорт будущего (краткосрочный, среднесрочный, долгосрочный горизонты)
- Лучшие материалы по взлому автомобилей с DEF CON 2018-2019 года
- [Прогноз] Motornet — сеть обмена данными для роботизированного транспорта
- Компании потратили 16 миллиардов долларов на беспилотные автомобили, чтобы захватить рынок в 8 триллионов
- Камеры или лазеры
- Автономные автомобили на open source
- McKinsey: переосмысляем софт и архитектуру электроники в automotive
- Очередная война операционок уже идет под капотом автомобилей
- Программный код в автомобиле
- В современном автомобиле строк кода больше чем…
Комментарии (6)
roverseti
31.08.2021 20:51"«Комбинаторика проблемы делает масштабирование этой системы для многих миллионов людей непростой задачей», — говорит Бон. «При обслуживании пользователей спутникам Starlink необходимо окрашивать землю лучами данных разных частот, чтобы избежать помех. В итоге мы решаем проблему окраски и предотвращения помех в глобальном масштабе, что является еще одной из наших больших задач, которую необходимо решать в режиме реального времени»"
Как можно окрашивать землю лучами разных частот??? Это Google ?
8-\
ToSHiC
01.09.2021 01:04Тут отсылка к теореме о четырёх красках. Каждая "краска" - диапазон частот, который использует спутник для вещания в конкретном луче (если их может быть несколько).Только в случае старлинка границы "карты" ещё и постоянно передвигаются, что делает задачу существенно сложнее.
leok
09.09.2021 22:04Тут столько акцента на том, что они двигаются и ни разу не упомянуто, что двигаются они предсказуемо и плавно.
zillant
Вот она - жизнь, когда нет приёмки....
GavrisAS
Тем не менее они уже предоставляют услуги и зарабатывают на этом. Да и приёмка, как видим, той же науке не помогла...