Zelenyikot: Открытый космос

Водитель марсохода Curiosity отвечает Хабру

Это свершилось! Долгожданные ответы «водителя» MSL Curiosity на вопросы, которые ему задал Хабр. Паоло Беллутта работал еще с Opportunity и Spirit, поэтому у него богатый опыт, а главное он не стесняется о нем рассказывать.

Этот замечательный перевод осуществлен Singerofthefall. Текст Паоло прислал объемный, так что мы разделили ответы напополам, и вторую часть опубликует сам переводчик. Поэтому можете его поблагодарить сейчас, а сможете и позже, когда он закончит работу над второй частью и выложит ее.[1]
[1]В квадратных скобках примечания переводчика.
Полный английский текст я выложил на гуглодоке и кто желает, может обратиться к нему, но, поверьте, в этом нет необходимости ибо перевод отличный.

Итак, начнем наше интервью:

В: Каков ваш рабочий график?
О: После первых 90 дней, в течение которых мы жили по Марсианскому времени, мы перешли на обычное расписание. Обычно рабочий день продолжается с 8 утра до 8 вечера по Тихоокеанскому Стандартному Времени (PST). Работаем мы каждый день, включая субботу и воскресенье, но отдыхали, например, на День благодарения и Рождество. Перед праздниками мы заранее приготовили команды на несколько дней вперед, так что нам удалось побыть дома, а вот роверу пришлось работать без перерыва. Скоро мы перейдем на 6-дневную рабочую неделю, а после противостояния Марса [момента, когда Солнце оказывается точно на линии между Землей и Марсом, будет в апреле] перейдем, скорее всего, на обычную пятидневную. Хотя ровер по-прежнему будет работать каждый день, у него[1] выходных нет :-(

[1][Паоло отзывается о марсоходе в женском роде — she — видимо, по аналогии с кораблями, к которым в английском языке тоже применяют это местоимение. Хотя сейчас они ее уже практически одушевляют и относятся не как к кораблю, а как к девочке :) ]

Двери лифта в JPL NASA.

Поскольку для русской аудитории это непривычно, я буду использовать местоимение «он» — марсоход]

В: Как проверяется/отлаживается код для программы движения на следующий день? Сколько людей проверяют код перед отправкой? Применяются ли эмуляторы для проверки программы движения перед отправкой на марсоход? Что делают, если находят ошибки в отправленной программе движения?
О: Замечательные вопросы! Для подготовки команд мы используем программное обеспечение, специально разработанное для этих целей в JPL. У нас есть специализированный редактор под названием RoSE (Robot Sequence Editor — редактор последовательностей [действий] робота), который находит самые простые ошибки — опечатки в названиях команд, ошибки диапазона значений параметров, и так далее. К редактору подключен симулятор, который называется Hyperdrive. Он получает изображения, которые были сделаны в предыдущие Солы, и показывает трехмерное изображение окружающей ровер местности. Потом симулятор получает список команд и показывает, что будет делать марсоход, и как он будет взаимодействовать с окружением. Также можно симулировать базовую телеметрию, например, местоположение и направление.

Для наиболее важных заданий, таких как сверление с помощью манипулятора, мы иногда используем опытный образец.

Когда нам кажется, что набор команд не содержит ошибок, мы передаем его для проверки другим водителям. Обычно в каждую смену работает по крайней мере три человека (специалист по вождению, специалист по использованию роботизированной руки и специалист по использованию инструментов), но иногда остается больше людей, и они все проверяют подготовленные команды. Во время смены у нас также проходят пять формальных проверок, которые проводятся группой из дюжины человек, причем не все из них — водители марсохода, так как во время ежедневной работы нам приходится задействовать различные инструменты, и нужно убедиться, что ни одна из команд не может повлечь за собой отказ оборудования, или, чего доброго, повреждение ровера. У нас также есть ПО для дополнительной проверки команд, и длинный список вещей, которые каждый раз нужно проверять.

Мы стараемся не совершать ошибок, но иногда они случаются, и довольно большая часть ПО на ровере должна проверять, что команды не бессмысленны, и что мы не пытаемся сделать какую-нибудь глупость вроде выстрела из лазера в сам марсоход. Так что, если даже мы и совершим ошибку здесь, на Земле, ровер на Марсе обнаружит ее.

В: Как проходит тестирование на Земле (есть ли копия марсохода в пустыне на родной планете?)
О: У нас есть два аппарата. Первый называется VSTB (Vehicle Surface Testbed), и на него установлено все оборудование, включая камеры и руку, поэтому мы можем управлять им в точности так же, как и ровером на Марсе. Каждый раз, когда нам нужно обеспечить особую надежность программы, мы используем его. Вот тут — photojournal.jpl.nasa.gov/catalog/PIA15876 — есть его фото. Второй аппарат, который называется «пугало» (Scarecrow), оборудован только колесами и двигателем. Мы используем его для тестирования перемещения по различным типам поверхностей.

У нас в JPL также есть два полигона, один из них — в здании, называется он In-Situ Instrument Laboratory:

А другой — на открытом воздухе — Mars Yard, там мы можем провести больше тестов на движение.

(на 0:33 в кадре Паоло мелькает — кабель подтаскивает)

В мае 2012, перед посадкой ровера, мы отвозили Пугало в пустыню около Долины Смерти в Калифорнии, чтобы проверить, как он поведет себя на песке, так как нас беспокоило, что ровер мог приземлиться на песчаные дюны.

В: На чем тренируются программисты?
О: Мы учим друг друга. У кого-то есть опыт в управлении, кто-то помогал создавать ровер, кто-то участвовал в написании ПО. Поверьте, все это требует большого опыта и практики.

В: Планируется ли после выполнения ровером Curiosity всей запланированной программы исследований предоставить часть ресурсов и времени ровера (если на тот момент он будет работоспособен) в распоряжение студентов, для выполнения обучающих научных экспериментов?
О: На самом деле, над этой миссией работает огромное количество ученых и студентов различных университетов. Их задача — решать, какие эксперименты нам стоит провести, и следить за ходом их выполнения. Честно говоря, я не думаю, что мы когда-нибудь вообще закончим все наши эксперименты, так как их список постоянно пополняется — как только мы находим ответ на один из вопросов, у нас тут же появляются 10 других!

В: Есть ли в планах NASA посещение ровером мест посадки предыдущих аппаратов для исследования Марса? Большинство из них уже вышло из строя, но было бы интересно установить истинную причину на месте. Тем более фотографии этих некогда легендарных аппаратов имели бы очень высокую эстетическую, да и материальную ценность.
О: На настоящий момент, наша главная цель заключается в том, чтобы исследовать настолько большую часть планеты, насколько это вообще возможно, так что возвращаться туда, где мы уже побывали, было бы не очень полезно, даже если мы вернемся с бОльшим количеством инструментов. Понять причину, по которой наши старые роботы вышли из строя — задача все же менее важная, чем собрать новые научные данные. Так что, хоть я и разделяю ваше желание снова увидеть эти аппараты, я не думаю, что это случится в ближайшем будущем.

В: Как вы решаете проблему 7 минутной задержки сигнала? И является ли это большой проблемой?
О: Задержка сигнала из-за расстояния варьируется от 5 до 20 минут в одну сторону. Сейчас это время близко к максимальному, и составляет около 19 минут. Конечно, задержка слишком велика для того, чтобы мы могли управлять марсоходом в интерактивном режиме. Вдумайтесь — если вы увидите препятствие перед марсоходом, и сразу пошлете команду остановиться, то даже при наименьшей возможной задержке вы уже опоздаете на 10 минут! Поэтому мы и управляем им, посылая каждый день последовательность команд. К тому же, мы не могли бы управлять ровером в интерактивном режиме еще и потому, что Землю не всегда видно из кратера Гейла, в котором находится Curiosity. Ну и, наконец, даже если не принимать все это во внимание, позвонить роверу стоит довольно дорого — около $10000 в час!

Вообще, задержка перед получением данных обычно еще больше, так как мы передаем сигнал через спутники Mars Odyssey и Mars Reconnaissance Orbiter. Обычно на то, чтобы получить с роверов данные, уходит не менее нескольких часов.

В: Есть ли какой-то инструмент или устройство, которого очень не хватает на «Кьюриосити» в вашей работе?
О: Больше научных приборов, более мощный компьютер, больше места для хранения данных, больше возможностей для их передачи, больше энергии, камеры более высокого разрешения, мачту повыше…

В: Бывали ли случаи, когда вы написали программу на день, но уже во время её исполнения становилось ясно, что в работу программы закралась некритичная ошибка, которую уже поздно исправлять, а если не поздно, то как вы её исправляете?
О: Разумеется! На MER мы находили некоторые баги через годы после посадки. Один из критических багов был найден на марсоходе Spirit на 18й Сол, а другой мы нашли и вовсе в 2007 году, когда объезжали Кратер Виктория. У нас есть команда специалистов (включая и меня самого), которая анализирует телеметрию ровера. Каждый раз, когда мы находим нечто, что кажется нам странным, мы идем на тестовый стенд и пытаемся воссоздать условия и посмотреть, проявится ли проблема. Когда мы находим причину, мы можем либо изменить один из нескольких тысяч параметров ПО, либо отправить патч, который представляет собой небольшой кусок кода, призванный решить проблему. Ну и, очевидно, после того, как проблема решена, мы стараемся избегать условий, в которых возможно ее повторение.

В: Что является самым трудным в вашей работе?
О: Ну, помимо всей бумажной волокиты, которая является частью процесса управления Curiosity… ;-) Очень тяжело представлять себе всевозможные проблемы. Конечно, у нас есть огромный опыт управления ровером на Марсе, но нам все равно приходится всегда быть настороже, на тот случай, если что-то пойдет не так. Например, когда мы перемещаем ровер, мы всегда стараемся оставить хотя бы один путь, по которому в случае необходимости он точно сможет вернуться назад. Мы также стараемся избегать действий, которые, пусть даже с очень малой вероятностью, могут привести к катастрофическим последствиям.

В: Какие у Вас происходили курьёзы или нестандартные ситуации?
О: Один из самых забавных случаев произошел в 2006 году во время работы MER. Вообще, эта миссия была рассчитана всего на 90 Солов, и когда писался софт, на хранение номера Сола отвели всего три разряда. По мере того, как приближался 999й Сол, мы подготовили обновление ПО, и загрузили новую версию на марсоходы. Это была титаническая работа — у нас целый год заняло написание обновления и тестирование, плюс понадобилось несколько месяцев, чтобы загрузить обновление на роверы. Новое бортовое ПО [2] также потребовало изменений в наземном ПО [3], так как было несовместимо с его старой версией. Поэтому нам было необходимо перезагрузить оба ровера в один и тот же Сол, чтобы не получилось так, что один из них уже работает на новом ПО, а другой — все еще на старом. Итак, этот день наконец настает. Spirit’у выпадает честь перезагружаться первым, мы посылаем команду на перезагрузку с новым ПО, ровер присылает ответ, все здорово. Opportunity в это время находится на другой стороне планеты, и нам приходится ждать 12 часов перед тем, как мы сможем отправить ему нужную команду. И прямо перед этим, бэкбон [магистральная линия связи] в JPL отключается, а без него мы не можем передать команды от наших серверов на станцию DSN [Deep Space Network]. Итак, время на исходе, а бэкбон все еще не работает. Что же делать?! К счастью, у одного из компьютеров в центре управления была прямая линия со станцией DSN (в Канберре, кажется), а еще у этого компьютера был… floppy-привод! К счастью, у одного из компьютеров MER также есть floppy-привод, но у кого в 2006 году найдется дискета? Но ничего другого не оставалось, и мы начали бегать по всей лаборатории в поисках дискеты. Дискету мы в конце концов нашли в каком-то забытом ящике стола, быстро ее переформатировали, скопировали команды, и побежали в центр управления, чтобы их отправить. В конце концов, у нас даже осталось две минуты в запасе!

[2][Паоло использует термин flight software, котороый в авиации и космонавтике обычно означает «ПО управления полетом». В данном случае имеется в виду та часть ПО, которая находится на самом ровере.]
[3][Паоло использует термин ground software, и имеет в виду ту часть ПО, которая используется на Земле]

В: Сколько всего людей управляют марсоходом?
О: Ну, это зависит от того, что вы понимаете под словом «управляют». Сейчас у нас есть 16 водителей, но команда людей, которые управляют различным оборудованием (камерами, SAM, CheMin, ChemCam…) насчитывает, как мне кажется, почти 100 человек.

В: Есть ли на марсоходе встроенная «защита от дурака»?
О: Знаете, как говорят — не может быть полной «защиты от дурака», так как дураки слишком изобретательны.

В: Если запрограммированное движение руки-манипулятора может снести например какую-нибудь антенну или просто врезаться в корпус марсохода, то будет ли такая программа заблокирована автоматически (к примеру после проверки на компьютерной модели), или же за этим приходится следить вручную?
О: ПО ровера проверяет, не могут ли какие-либо его части столкнуться с другими, так что в этом случае команда просто не будет выполнена, будет сгенерирована ошибка, и ровер остановит манипулятор. Если какая-либо из последующих команд зависит от положения манипулятора (например, выстрел из лазера), то эти действия также не будут выполнены.

Но даже учитывая, что этот софт защищает ровер, мы все равно дважды (и трижды, и четырежды) проверяем, чтобы этого не могло произойти. Мы также стараемся удостовериться, что такое не может случиться, даже если манипулятор, или другие части ровера, окажутся не совсем там, где должны. Иногда предсказать точные условия на Марсе невозможно. Конечно, у нас есть камеры, и 3D-карта местности, но эти данные всегда могут содержать неточности, связанные с погрешностями измерения. Поэтому нам нужно убедиться, что запрограммированные действия будут выполнены безопасно даже если погрешность окажется достаточно высокой.

В: Как устроена связь с марсоходом? Какие антенны/модемы используются для этого? Какие низкоуровневые протоколы? Как протоколы высших уровней справляются с ошибками при передаче информации?
О: Мы посылаем команды с Земли прямо на антенну ровера, которая называется HGA (High Gain Antenna), используя одну из DSN-станций. Связь идет в X-диапазоне (7-8ГГц). Вот в этом PDF вы сможете найти всю информацию, которую только сможете себе представить.

Данные, которые ровер собирает за день, посылаются обратно с помощью антенны UHF [4] — она выглядит как черный цилиндр справа от RTG [черная она у наземной копии, а на Марсе она в серебристой фольге, RTG — это РИТЭГ, Прим Zelenyikot] — на один из спутников (MRO или ODY), после чего спутники передают данные на DSN-станции (снова в X-диапазоне, если не ошибаюсь). Обычно количество данных, которые мы получали от MER составляло около 100 мегабит. От MSL данных приходит гораздо больше — в среднем около 500 мегабит, но однажды у нас была прямо-таки гигантская передача в 1200 мегабит.

[4][Ultra High Frequency]

В: Какие основные особенности и отличия фотографирования в марсианских условиях по сравнению с земными? Какие дополнительные знания должен иметь марсианский «фотограф»? Например, происходит ли доминирование или деградирование определенных цветов по-другому, по сравнению с тем как мы привыкли видеть на Земле, подобно тому как эти отличия заметны при подводной съемке. В первую очередь интересуют привычные человеческому глазу фотографии, а не фотографии, отражающие невидимую часть спектра.

О: На этот вопрос гораздо больше информации смог бы предоставить Mike Caplinger [один из людей, ответственных за камеры], но я, конечно, постараюсь ответить.

Атмосфера Марса гораздо тоньше, чем у Земли, и гораздо более предсказуема. В атмосфере есть некоторое количество пыли, так что на больших расстояниях вы увидите некоторое ухудшение картинки; иногда атмосфера выглядит похожей на грязный воздух в бухте Лос-Анжелеса. Находясь от Солнца дальше, чем Земля, Марс получает чуть меньше света, но в целом, как мне кажется, никаких существенных различий нет. На самом деле, делать фото на Земле сложнее, чем на Марсе, так как здесь вы обнаружите гораздо бОльшие перепады в цвете, яркости и контрастности.

В: Программа съемки ровером самого себя была сложнее других ежедневных программ?

[Кажется, здесь Паоло не понял вопроса. Мы пытались спросить про автопортрет, а он отвечает про вот эту видеосъемку — Прим. Zelenyikot]:

О: Камеры, разработанные Mars Space Science Systems предназначены для снятия видео с частотой до 15 герц (или кадров в секунду, если хотите), и у них есть встроенная память, так что для нас это не представляет каких-либо проблем. Единственное, с чем потенциально могут возникнуть затруднения — это продолжительность видео, частота кадров, и то, чтобы убедиться, что видео начинается в нужный момент, а камеры повернуты в нужном направлении. Опять же, Mike Caplinger смог бы ответить на этот вопрос более детально, чем я.

В: Предусмотрены ли алгоритмы самостоятельного выхода из нештатной ситуации, или при ее возникновении программа прерывается и аппарат входит в режим ожидания?

О: Есть несколько уровней действий в случае нештатной ситуации. Если обнаруживается ошибка в тех командах, которые мы послали, то ровер просто откажется их выполнять. Если проблема возникает во время выполнения команды (как в примере с рукой, который я упоминал выше), то ровер пошлет сообщение об ошибке, и просто откажется использовать одно или более устройств. Наконец, если есть какой-то баг в ПО, то ровер перезагрузится и перейдет в «безопасный режим». В этом случае он выполнит заранее запрограммированный набор действий, в том числе отправит сообщение об ошибке, и будет ожидать инструкций с Земли, чтобы продолжить работу. На случай, если софт подвиснет, у нас есть watchdog-таймеры, которые смогут перезагрузить марсоход, и перевести его в безопасный режим. Так что у нас не бывает синего экрана смерти.

В: Какие параметры марсохода вы отслеживаете для этого в режиме «реального времени» или близком к нему?
О: Надеюсь, ответ на вопрос выше отвечает и на этот вопрос.

В: В каких случаях система безопасности марсохода самостоятельно прекращает выполнение программы?
О: Кажется, на MSL у нас была одна перезагрузка оборудования, но я не помню, в чем была причина. MER перезагружался много раз, включая неоднократные случаи, вызванные влиянием радиации на процессор и память. В зависимости от причины перезагрузки, такие ситуации рассматриваются как незначительные (как в случае с космической радиацией), или же как значительные (как, например, аномалия Spirit на 18й Сол).

В: Предусмотрены ли алгоритмы самостоятельного выхода из нештатной ситуации?
О: Как я только что сказал, это зависит от причин, которые вызвали нештатную ситуацию.

В: Используется ли на Curiosity протокол передачи данных/архитектура DTN и если да, то каковы минимально достигнутые задержки при передаче пакетов?
О: Минимальная задержка составляет 5 минут, максимальная — 20, но поскольку мы не работаем с марсоходами в режиме реального времени, эта задержка не влияет на управление. Мы не используем DTN, но у нас есть кое-какие технологии, помогающие устанавливать связь на таких дальних расстояниях. Обычно за один Сол мы собираем гораздо больше данных, чем можем передать, поэтому нам приходится выбирать, какие именно данные будут отправлены на Землю в каждый Сол. Каждый фрагмент данных получает приоритет, и наиболее важные из них будут переданы в первую очередь, а менее важные будут отправлены позже (или не будут отправлены вовсе). Конечно, если мы вдруг решим, что важность данных была оценена неверно, то мы можем изменить приоритеты. Например, если на миниатюре мы видим, что камера была повернута в неверную сторону, то мы либо понижаем приоритет, либо вовсе удаляем полноразмерное изображение, и наоборот: если у нас есть изображение с лучшей экспозицией, то его приоритет будет повышен. Более того, данные разбиваются на пакеты — это важно для передачи больших объемов информации, например, тех же изображений. Именно поэтому на некоторых изображениях, которые вы видели, были дырки. Часть данных могла потеряться во время передачи, или могла передаться с ошибками. Конечно, в случае ошибок, мы можем попробовать передать данные еще раз.
<…..>

Как видите эта часть интервью получилась более профессиональной. Здесь мы узнали Паоло как специалиста JPL. Я так распределил вопросы, чтобы сначала были серьезные, а дальше не совсем. На вторую часть серьезных тоже хватило, но она больше расскажет о Паоло как о человеке, а также о взаимоотношениях Curiosity и марсиан, о людях в черном, нанимающих на работу в NASA, и о том, мечтает ли водитель марсохода о Марсе.

Если очень хочется продолжения, могу пока предложить посмотреть вот это небольшое интервью Паоло на сайте NASA, и уж набраться терпения и подождать пару дней когда работа над переводом будет завершена. Спасибо еще раз Singerofthefall за его труд.

Продолжение.