Компьютерное зрение марсохода Curiosity

Когда агентство NASA официально объявило о за­вер­ше­нии мис­сии мар­со­хода Op­port­uni­ty, ста­ло ясно, что его 15-лет­ний стаж сви­де­тель­ст­ву­ет о го­тов­нос­ти к дол­го­вре­мен­ным ав­то­ном­ным мис­сиям на дру­гих пла­не­тах. Ко­неч­но, Op­port­uni­ty и все еще про­дол­жа­ю­щий ис­сле­до­ва­ния Curiosity, не яв­ля­ют­ся в пол­ной ме­ре ав­то­ном­ны­ми ро­ве­ра­ми. Они не ре­ша­ют са­мо­сто­я­тель­но, ку­да им ид­ти, по­то­му что их трас­са про­гно­зи­ру­ет­ся ко­ман­дой ин­же­не­ров NASA в Ла­бо­ра­то­рии ре­ак­тив­но­го дви­же­ния (JPL).

Что­бы рас­счи­тать мар­со­хо­дам днев­ной марш­рут, ко­ман­да драй­ве­ров из Jet Propulsion Laboratory ис­поль­зу­ет слож­ное на­зем­ное про­грам­мное обес­пе­че­ние — Rover Sequencing and Visualization Program. RSVP состоит более, чем из мил­ли­о­на строк ко­да на Java и C++.

Основной компонент, используемый для планирования, моделирования и определения директив для мар­со­хо­да называется HyperDrive. Это система для анализа изображений и рельефа местности в 3D, глазами которой являются видеокарты NVIDIA Quadro, формирующие сте­ре­о­и­зо­бра­же­ние. Работая по протоколу RSVP на вы­со­ко­про­из­во­ди­тель­ных рабочих станциях Linux и используя очки NVIDIA 3D Vision, водители ро­ве­ра еже­днев­но оце­ни­ва­ют ок­ру­же­ние Curiosity и генерируют инструкции для действий на следующий день. В качестве языка уп­рав­ле­ния за­да­ни­я­ми ис­поль­зу­ет­ся XML, который затем ком­пи­ли­ру­ет­ся в двоичный код для отправки его на Марс. Каждый день JPL шлет Curiosity сотни команд, организуя его пе­ре­дви­же­ние по по­верх­нос­ти да­ле­кой планеты.

Основной компонент, используемый для планирования, моделирования и определения директив для марсохода Curiosity называется HyperDrive

 

Код RSVP был написан переменным составом (около 8 человек) из группы разработчиков, которые уп­рав­ля­ют ро­ве­ром — Mars Science Laboratory. Он вырос из кода, написанного еще для первого мар­со­хо­да So­journ­er, который тогда назывался Rover Control Workstation и состоял из 80 тыс. строк кода C++. Так по­я­ви­лась первая версия RSVP для ро­ве­ров Spirit и Opportunity.

Несмотря на то, что управление Opportunity строилось на более ранней версии RSVP, эта же базовая архитектура бы­ла взя­та за основу для Curiosity, хотя и подверглась усовершенствованиям и доработкам. Так, компонент Hyper­Drive был полностью переписан, поэтому сегодня он способен поддерживать одновременно несколько миссий. Код для кон­крет­ной миссии (например, для Curiosity) изолирован от кода, который применяется для параллельного про­ек­та или мо­жет быть востребован в будущем.

Группа Mars Science Laboratory учла уроки, извлеченные из управления мар­со­хо­да­ми Spirit и Opportunity, что­бы сде­лать вождение Curiosity более эффективным и менее рискованным. В целом команда потратила четыре го­да на улуч­ше­ние RSVP при подготовке к миссии Curiosity, хотя доработки и усо­вер­шен­ст­во­ва­ния соф­та про­дол­жа­ют­ся, по­сколь­ку они получают больше информации про местность, на которой работает ро­вер, и обстановку на ней. В HyperDrive по­я­ви­лось много новых графических функций, например, после приземления, которые помогают без­о­пас­но дви­гать­ся по пе­ре­се­чен­ной мест­но­с­ти и оценивать качество грунта с помощью навесных инструментов.

NASA, конечно, славится разработкой «идеального» программного обеспечения для космического челнока. Про­грам­мный код RSVP, который не участвует в пилотируемой миссии, такой задачей не отягощен. Однако, преж­де чем ко­ман­ды бу­дут отправлены на ро­вер, они тщательно ве­ри­фи­ци­ру­ют­ся, сначала в ав­то­ма­ти­че­ском режиме проверки, за­тем драй­ве­ры из Mars Science Laboratory моделируют их с помощью HyperDrive. Лю­бые ошибки в коде ре­ги­ст­ри­ру­ют­ся и от­сле­жи­ва­ют­ся через Jira.

В разработке ПО важным моментом является то, что члены команды разработчиков в итоге станут и ко­неч­ны­ми поль­зо­ва­те­ля­ми. Команда использует сочетание традиционных подходов к созданию программного ко­да и Agile-методов, включая парное программирование, больше похоже на программирование в малых груп­пах.

Сегодня с участием RSVP выполняется управление платформой InSight Lander

 

Опыт, наработанный в процессе развития RSVP, будет использован в эксплуатации всех марсианских миссий. Се­го­дня с его участием работает ПО, управляющее платформой InSight Lander, прибывшей на Марс в про­шлом го­ду. Ве­ро­ят­но, на базе RSVP будет построено управление следующего ро­ве­ра, за­пуск ко­то­ро­го пла­ни­ру­ет­ся осу­щест­вить в бли­жай­шем бу­ду­щем.

Может быть, когда люди высадятся на Марсе и сами станут водить мар­со­хо­ды (хотя, по иронии судьбы, люди на Земле самоустраняются от управления транспортом), в Лаборатории ре­ак­тив­но­го дви­же­ния про­дол­жат пи­сать код ви­зу­а­ли­за­ции не толь­ко для мар­со­хо­дов, но и для всех миссий в Солнечной системе.