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

Это свершилось! Долгожданные ответы «водителя» MSL Curiosity на вопросы, которые ему задал Хабр. Паоло Беллутта работал еще с Opportunity и Spirit, поэтому у него богатый опыт, а главное он не стесняется о нем рассказывать.
[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:
image

А другой — на открытом воздухе — 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, и о том мечтает ли водитель марсохода о Марсе.

В: Может ли произойти ситуация, когда все колеса ровера застрянут в песке и ровер не сможет двигаться?
О: Да. Вне зависимости от типа поверхности, Curiosity не может двигаться, если угол подъема превышает 25 градусов. На мягком песке он не может подниматься под углом, превышающим 12 градусов.

Команда марсохода в попытках найти способ вытащить Spirit из песчаной дюны кратера Троя.
Справа на изображении Паоло вводит управляющие команды в компьютер.

В: Есть ли способ выйти из подобного положения?
О: В первую очередь, мы, конечно, стараемся просто не попадать в такие ситуации. Если же нам приходится рискнуть, например, чтобы добраться до интересного с научной точки зрения объекта, мы всегда стараемся предусмотреть маршруты отхода. Например, когда Opportunity пытался забраться на подножье Cape Verde (увы, неудачно), он имел два таких маршрута.

В: Насколько точны часы на марсоходах, возможна ли коррекция их хода и если да, то как это происходит?
О: Для наглядности, приведу пример. Часы Opportunity за 9 лет сбились примерно на 20 минут. Обычно мы не корректируем часы, так как это может повлиять на ведение марсоходом журнала, но мы всегда можем рассчитать, насколько они сбились. Для этого мы просим ровер послать «бииииип» определенной длительности в определенный момент времени. Потом мы слушаем передачу, и определяем, когда звук стал слышен на самом деле – точнее, нас больше интересует, когда звук закончится, так как начало его мы можем и пропустить. Поскольку мы знаем, сколько времени нужно сигналу, чтобы дойти до нас с Марса, мы можем довольно точно определить разницу хода часов.

В: По понятным причинам Марсианский календарь отличается от Земного. Расскажите про особенности использования календаря на марсоходах
О: Ось вращения Марса, как и Земная, наклонена, так что там есть времена года. Для совершения одного оборота вокруг Солнца, Марсу требуется примерно два земных года, так что сезоны там примерно вдвое длиннее, но поскольку орбита Марса — не идеальная окружность, их продолжительность не обязательно одинакова. Марсианский день называется Сол, а его длительность примерно на 39 минут превосходит земной. Мы не используем марсианские месяцы или недели, но у нас есть марсианские секунды, минуты и часы. Вообще, наш марсианский календарь оперирует только количеством Солов, прошедших с момента приземления. У нас даже есть несколько неологизмов: Tosol (от today — сегодня), Yestersol (от yesterday — вчера), Morrowsol (от tomorrow — завтра), Soliday (от holiday — выходной).


Наглядное изображение соотношения марсианских и земных «месяцев»

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

В: Есть ли у NASA проекты марсоходов которые будут следить за своим техническим состоянием, и в случае необходимости печатать на встроенном 3D-принтере нужные детали и проводить саморемонт?
О: Я о таком не слышал, да и вообще было бы сложновато доставить 3d-принтер на Марс 🙂 Гораздо эффективнее делать системы избыточными. У Curiosity множество устройств имеются в двух экземплярах – речь идет о компьютерах, камерах, сенсорах, и т.д. Если что-то случиться с одним из этих инструментов, мы всегда можем задействовать второй. Несмотря на то, что набор колес у нас всего один, в случае поломки одного из моторов мы можем перевести колесо на «нейтраль», чтобы нам не пришлось волочить его, как в случае со Spirit.

В: Сколько новых строчек кода требуется для написания программы на очередной день?
О: Для программирования ровера мы используем специальный язык, но бывает, что на день пишется всего лишь около 1000 строк. Часть кода может используется повторно, так что мы оставляем его на ровере, часть – каждый раз пишется заново. Некоторые более сложные операции — например, сбор и обработка образцов — могут потребовать тысяч строк кода.

То, что мы отсылаем каждый день, больше похоже на скрипты, и обычно содержит набор действий не на один Сол, а на несколько, чаще всего — сразу на три Сола. В первый Сол выполняются самые важные действия, а в остальные — проводятся базовые научные процедуры. Это делается для того, чтобы ровер не потерял целый Сол впустую, если по каким-то причинам нам не удастся передать данные вовремя. Чаще всего это случается, когда происходят отказы на DSN-станции (некоторое оборудование у них довольно старое), или из-за плохой погоды. А однажды нам не удалось передать команды, потому что на пути сигнала между Землей и Марсом образовалось препятствие — Луна!


потрясающее фото одной из антенн комплекса DSN в Канберре

В: Насколько высокоуровневые феймворки/операции используются: работают ли программисты напрямую с указателями, памятью и т.п. или пишут код декларативно, на уровне операций, которые надо выполнить «двигаться вперед до..», «остановиться если..», «взять камень если он зеленый» и т.п.
О: Отличные вопросы! Во-первых, язык, который мы используем, поддерживает многопоточность, но типичной для многопоточности инфраструктуры, у нас нет, например, синхронизация – задача для нас весьма нетривиальная. Мы можем запрашивать и проверять некоторые из внутренних параметров ровера:

if tilt > 10 deg then stop

но у нас нет, например, циклов for, do, или while, так как они могут привести к зацикливанию системы. Мы можем сказать роверу «двигайся, пока ты не доберешься до вон того места«, но в то же время мы говорим «остановись, если ты проехал больше, чем на 3 метра вперед«. Мы должны быть уверены, что ровер всегда будет реагировать на команды за заранее определенный промежуток времени.

Перемещением аппарата можно управлять на различных уровнях. На самом низком уровне мы можем сказать что-то вроде «подать 5.7 вольта на привод левого переднего колеса на 4.5 секунды«; или «включить тот же самый мотор до тех пор, пока колесо не повернется на 14 градусов«; или «проедь 1.3 метра вперед«. Однако в то же время мы можем работать и на более высоком уровне, например, попросить ровер добраться до некоторой точки (X,Y), избегая препятствий, и замеряя уровень проскальзывания колес, ой, а еще, пока ты будешь этим заниматься, делай пожалуйста замеры DAN через каждый метр. Еще мы можем сказать роверу, чтобы тот добрался, например, до определенной скалы, которую мы можем видеть на тех или иных пикселях изображения. Тем не менее, на настоящий момент возможности сказать «езжай к тому камню, и используй на нем MAHLI», у нас нет[1].

[1][Паоло имеет в виду, что использование каких-либо инструментов, например, фотокамеры на манипуляторе – задача очень сложная, требует отдельного кода и ровер не способен делать это самостоятельно. Так что доехать до камня он сможет, а вот использовать свое оборудование – нет]

В: Чтобы запрограммировать движение к маленькому камушку и его поднятие, нужна огромная точность определения координат. Как она достигается?
О: Увы, наш черпак маловат для того, чтобы поднимать камни 😉
Если нам нужно подвинуть ровер с большой точностью, мы используем изображения, полученные с камер NAVCAM, и определяем расстояния до различных объектов и рельеф местности, после чего решаем, какой маршрут будет наиболее предпочтительным. Например, мы обычно стараемся использовать как можно меньше шагов и поворотов, и пытаемся по возможности двигаться по прямой, желательно по ровным участкам местности. Иногда приходится быть осторожными, чтобы не наехать на что-нибудь, что может представлять научную ценность; иногда приходится принимать во внимание гравий.

Для особо точного позиционирования, мы используем визуальную одометрию [Visual odometry — VO]. Когда ровер находится в движении, его компьютер рассчитывает местоположение и направление (крен, тангаж и, собственно, направление движения), но при этом не знает, проскальзывают ли колеса. VO использует стереокартинки, снятые через NAVCAM, чтобы измерить реальную величину перемещения, учитывая в том числе и проскальзывание. Это позволяет перемещать ровер очень аккуратно, иногда с точностью всего до нескольких сантиметров! VO реализована в виде ПО, работающее на ровере, причем работает оно довольно медленно, так что мы стараемся использовать его только когда это действительно необходимо.

В: Какие регуляторы двигателей используются в руке-манипуляторе? Используется ли там обычное ПИД-регулирование или Вы используете регуляторы на нечеткой логике или нейронных сетях? Можно ли перепрограммировать регуляторы удаленно, с Земли? Учитывается ли как-нибудь изменение параметров двигателей в процессе работы? Хотелось бы узнать как можно больше подробностей про разработку и тестирование именно низкоуровневого железа для ровера.
О: Я не уверен в том, что есть опубликованный документ о системе управления двигателями. Я проверю, один из водителей писал код. В манипуляторе-руке используются бесколлекторные двигатели с датчиками для увеличения точности позиционирования. Система управления двигателями реализована на FPGA, которая подключена к CPU. CPU посылает команды на движение в FPGA, которая непосредственно и занимается управлением манипулятором. Существует огромное количество настраиваемых параметров системы управления, например коэффициенты ПИД-регулятора, но я не уверен в том, что мы можем удаленно перепрограммировать FPGA. К слову о ПИД-регуляторах. На Opportunity мы пытались очистить зеркало в MiniTES, которое было выведено из строя пылевой бурей в 2007. Мы перенастроили ПИД-регулятор привода зеркала таким образом, чтобы получить высокочастотные колебания и тем самым стряхнуть песок, но попытка, к сожалению, не увенчалась успехом.[*]

[*][Спасибо Karlson_rwa за уточнение перевода этого ответа]


«Рука» Curiosity за работой

В: Как часто вы используете автономную навигационную систему «Curiosity», которая дает марсоходу возможность самостоятельно выбирать путь движения без дополнительных команд с Земли? Насколько это безопасно? Какое оборудование марсохода (кроме колес, разумеется) используется для обеспечения автономного передвижения? Есть ли у данной системы на «Curiosity» какие-то новые возможности, по сравнению с аналогичной системой, доказавшей свою эффективность на «Спирите» и «Оппортьюнити»?
О: AutoNav может использоваться, если нам нужно проехать чуть дальше, чем расстояние, на которое мы можем видеть с помощью камер – обычно это дистанции порядка 30-40 метров. Мы еще не использовали эту систему на Curiosity, но когда мы начнем движение к горе Шарп, мы скорее всего будем пользоваться ей почти каждый день.
На MER мы довольно много пользовались ей на обоих роверах. У меня нет точной статистики, но процент ее использования был весьма велик.

В: Были ли в работе системы баги, которые особо запомнились, о которых вы можете рассказать( учитывая NDA)? Сколько понадобилось времени на его устранение?
О: За исключением аномалии Spirit на 18-й Сол, все неисправности в ПО мы находили довольно быстро. Тем не менее, исправление ошибки может занять значительное время – не потому, что ее трудно исправить саму по себе, а потому, что нам нужно убедиться, что исправление не испортит чего-нибудь еще. Иногда подготовка исправления занимает всего день или два, но его тестирование – гораздо, гораздо дольше.

В: Что Вы думаете о перспективах миссии Mars ARES? Сложно ли управлять марсоходом? Почему? И, по вашему мнению, сильно ли сложнее будет управлять марсианским самолетом?
О: Управление и уровень автономности у воздушного судна кардинально отличается от показателей наземного робота. Например, могут возникнуть ситуации, когда вам придется действовать очень быстро, в то время как управляй вы ровером, у вас было бы более чем достаточно времени. У JPL есть несколько проектов (все они еще на стадии проектирования), которые рассматривают возможность использования автономных летательных аппаратов для проведения исследований. Конечно, у нас есть и вертолеты, и квадрокоптеры, и аэростаты, но я не уверен, насколько подобные аппараты подходят для использования на Марсе.


Mars ARES, видимо прототип

В: Хотелось бы увидеть ночные снимки неба, звезды, планеты. Почему этого нет?
О: Совсем недавно мы сделали несколько снимков, используя встроенную подсветку MAHLI, после чего, в тот же Сол, направили камеры на небо. На самом деле, ночная съемка связана с некоторыми трудностями:

  • Питание ровера должно быть включено
  • Электроника и инструменты (MAHLI или MASTCAM) должны быть прогреты
  • При съемке с большой выдержкой, зашумление изображения из-за особенностей камеры становится весьма заметно, и будет нелегко отличить, что на фотографии является звездами, а что – шумом.

Не стоит забывать, что подобные действия (пусть все это и очень круто) расходуют энергию и память, но дают не очень много ценной информации. Эти ресурсы могут быть использованы для получения большего количества научных данных, если мы будем использовать их в течение дня. Но я уверен, что мы будем еще проводить ночные съемки, так что потерпите немного!


Калибровочная мишень MAHLI, сфотографированная с помощью LED-подсветки (слева), и марсианский камень в ультрафиолетовой подсветке (справа)

В: Где можно получить водительские права на управление марсоходом? Требуется ли для этого безупречное понимание инженерной части марсохода? Как долго вы тренировались на Земле, чтобы однажды сказать себе «Теперь он точно будет меня слушаться»? Сильно волнуетесь перед отсылкой очередной партии команд? Каких ошибок в процессе управления марсоходом стоит остерегаться в первую очередь?
О: На самом деле, у нас нет никаких «прав», и мы даже не сдаем никаких экзаменов – ни письменных, ни на вождение. Мы стараемся учить друг друга, и проверяем работу друг друга. Если один из нас считает, что что-то не в порядке, мы либо анализируем код бортового ПО, либо проверяем команды на полигоне. Иногда, если нам кажется, что какие-то действия потенциально опасны, мы просто принимаем решение их не выполнять.

Случается и обратная ситуация – когда водители считают, что все в порядке, но другие члены команды не соглашаются. Тогда нам приходится приходить к какому-то общему мнению по поводу того, какие действия могут быть потенциально опасными, а какие – нет. Даже после 8 лет работы и более 15 километров, которые роверы проехали под моими управлением на Марсе, я все еще не уверен на 100%, что все пойдет как надо. Вы даже представить себе не можете, сколько бессонных ночей у меня было за последние пару лет 🙂

В: Что Вам больше всего нравится в вашей работе?
О: Каждый день случается что-то новое – новые задания, или новые проблемы, которые нужно решать. Конечно, некоторые из моих обязанностей скучноваты, но мне никогда не надоедает, ведь каждый день дает мне возможность чему-то научиться!

В: А вы случайно не смотрите Космических братьев?
О: Нет.

В: Насколько реалистично там, по-вашему, показан процесс функционирования NASA?
О: Поскольку я не видел ни одной серии, я действительно не знаю. Простите!

В: Есть ли у марсохода какое-либо оружие типа ружья, помимо лазера? (для борьбы с инопланетянами или другими роботами)
О: Нет конечно! Вообще, если мы найдем какие-нибудь формы жизни, то мы постараемся их изучить, а не расстрелять!

В: Какие из Трёх Законов Робототехники были заложены в программу Curiosity? Каков объём кода, отвечающего за эти законы?
О: Поскольку на Марсе нет людей, Первый закон нам не понадобился. Второй и Третий законы, в определенном смысле, действительно присутствуют в ПО ровера, но они распределены по огромному количеству строк кода. Это особенно относится к Третьему закону о самозащите.

В: Хотели бы вы лично побывать на Марсе?
О: ДА!!! На Марсе есть места, за посещение которых я отдал бы все на свете. Мне даже иногда снится, как я попадаю на Марс.

В: Помогают ли местные жители в избегании сложных ситуаций, плохих дорог и зыбучих песков?
О: Увы, ровер передвигается так медленно, что если бы мы даже и застряли где-нибудь в грязи, обычные способы, вроде раскачки вперед-назад, не очень бы помогли. К тому же, почва на Марсе сильно отличается от земной из-за разнице в количестве влаги, так что в целом дорожные условия на Земле далеко не такие же, как на Марсе. Однако, вместо [аборигенов] у нас есть группа геологов – специалистов по механике почв – которые помогают нам решать наиболее сложные проблемы, как например случай, когда Spirit застрял в кратере Troy.

В: Как вы попали в NASA? Однажды все подходы к вашему дому были перекрыты черными джипами, над домом повисли пара BlackHawk’ов, в дверь постучали и сказали «вы пойдете с нами!»? Или это было как-то иначе?
О: Ха-ха 😉 Нет-нет, ничего такого не было! Много, много лет назад я наткнулся на объявление о вакансии в JPL. Я отправил свое резюме, был приглашен на интервью, и видимо я им понравился, потому что меня взяли на работу. Несколько лет спустя, когда я уже некоторое время работал в JPL, меня позвали для работы с MER, а затем и с MSL.

В: Вообще, как попадают в NASA?
О: На сайте JPL есть ссылка, по которой вы можете посмотреть открытые вакансии и отправить резюме. Вы также можете ознакомиться с информацией о разных отделах, чтобы понять, работа в каком была бы вам наиболее интересна, и напрямую связаться с одним из руководителей.

В: Если бы вы могли купить себе собственный ровер, какой бы и тех, которыми вы управляли, вы бы приобрели? Почему?
О: Если бы я мог, я купил бы Opportunity. Это был первый ровер, которым я управлял на Марсе, и я все еще отлично помню мою первую поездку!


Паоло с марсоходами. Если честно, до того, как я увидел эту картинку, я не вполне осознавал размеры Curiosity…

В: Представим, что водитель марсохода обнаруживает нечто интересное на фотографии, присланной с «Curiosity» пару минут назад. Возможно ли, что он подбежит к кому-то из научной команды со словами: «Смотри! Это же СУПЕРСКИЙ камень! Давай, притормозим тут на пару дней и изучим его как следует»? Либо же это невозможно, а команда управления марсоходом и специалисты, анализирующие научные данные, не вмешиваются в сферы интересов друг друга?
О: Вы совершенно точно можете отправить письмо в отдел JPL по связям с общественностью, и изложить им ваши предложения, или задать вопрос. Как это нетрудно предположить, они получают огромное количество таких писем, так что возможно вам придется подождать некоторое время, чтобы получить ответ.
[Кажется этот вопрос он не понял или он выходит за рамки дозволенного, — Zelenyikot]
[Возможно также, что Паоло решил ответить на вопрос чуть более абстрактно – каждый может высказать предложение, но никто точно не знает, какое решение будет принято в конце концов, — SingerOfTheFall]

В: Много ли конкурентов в работе водителя?
О: Да, но мне удалось попасть в эту небольшую команду. Обратная сторона медали состоит в том, что ни в одном другом месте в мире мне такой работы не найти 🙂

В: Это работа вашей мечты?
О: Да! Я вообще обожаю водить, и много раз отправлялся путешествовать по Европе и США. Каждый раз, когда я вижу дорогу, я начинаю думать о том, куда она может привести. Я провел много часов, рассматривая места, в которые я никогда не смогу попасть, на Google Maps. А еще я обожаю марсианские ландшафты, и даже когда я смотрю на них через камеры роверов, я чувствую себя так, как будто я сам стою там.

Источник: Водитель марсохода Curiosity отвечает Хабру / Geektimes

Комментарии