Водитель Curiosity продолжает отвечать на вопросы Хабра

:

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

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


[Весь текст, заключенный в квадратные скобки — примечания переводчика]

В: Может ли произойти ситуация, когда все колеса ровера застрянут в песке и ровер не сможет двигаться?
О: Да. Вне зависимости от типа поверхности, 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. А еще я обожаю марсианские ландшафты, и даже когда я смотрю на них через камеры роверов, я чувствую себя так, как будто я сам стою там.

Большое спасибо Zelenyikot за предоставленную возможность задать вопросы Паоло, и всем те, кто предлагал интересные и вдумчивые вопросы.
Ну и, конечно, огромное спасибо самому Паоло, давайте пожелаем успехов и ему лично, и всей программе исследования Марса!