- •Об авторе
- •О научных редакторах
- •Благодарности
- •От издательства
- •Введение
- •Для кого эта книга?
- •Почему Python?
- •План книги
- •Версия Python, платформа и IDE
- •Установка Python
- •Запуск Python
- •Использование виртуальной среды
- •Вперед!
- •Глава 1. Спасение моряков с помощью теоремы Байеса
- •Теорема Байеса
- •Проект #1. Поиск и спасение
- •Стратегия
- •Установка библиотек Python
- •Код для теоремы Байеса
- •Время сыграть
- •Итоги
- •Дополнительная литература
- •Усложняем проект. Более грамотный поиск
- •Усложняем проект. Поиск лучшей стратегии с помощью MCS
- •Усложняем проект. Вычисление вероятности обнаружения
- •Глава 2. Установление авторства с помощью стилометрии
- •Проект #2: «Собака Баскервилей», «Война миров» и «Затерянный мир»
- •Стратегия
- •Установка NLTK
- •Корпусы текстов
- •Код стилометрии
- •Итоги
- •Дополнительная литература
- •Практический проект: охота на собаку Баскервилей с помощью распределения
- •Практический проект: тепловая карта пунктуации
- •Усложняем проект: фиксирование частотности
- •Глава 3. Суммаризация текста с помощью обработки естественного языка
- •Стратегия
- •Веб-скрапинг
- •Код для «У меня есть мечта»
- •Установка gensim
- •Код для суммаризации речи «Заправляйте свою кровать»
- •Проект #5. Суммаризация речи с помощью облака слов
- •Модули Word Cloud и PIL
- •Код для создания облака слов
- •Итоги
- •Дополнительная литература
- •Усложняем проект: ночные игры
- •Усложняем проект: суммаризация суммаризаций
- •Глава 4. Отправка суперсекретных сообщений с помощью книжного шифра
- •Одноразовый блокнот
- •Шифр «Ребекка»
- •Проект #6. Цифровой ключ к «Ребекке»
- •Стратегия
- •Код для шифрования
- •Отправка сообщений
- •Итоги
- •Дополнительная литература
- •Глава 5. Поиск Плутона
- •Проект #7. Воссоздание блинк-компаратора
- •Стратегия
- •Данные
- •Код блинк-компаратора
- •Использование блинк-компаратора
- •Проект #8. Обнаружение астрономических транзиентов путем дифференцирования изображений
- •Стратегия
- •Код для детектора транзиентов
- •Использование детектора транзиентов
- •Итоги
- •Дополнительная литература
- •Практический проект: представление орбитальной траектории
- •Практический проект: найди отличия
- •Усложняем проект: сосчитаем звезды
- •Глава 6. Победа в лунной гонке с помощью «Аполлона-8»
- •Цель миссии «Аполлон-8»
- •Траектория свободного возврата
- •Задача трех тел
- •Проект #9. На Луну с «Аполлоном-8»!
- •Использование модуля turtle
- •Стратегия
- •Код программы для расчета свободного возврата «Аполлона-8»
- •Выполнение симуляции
- •Итоги
- •Дополнительная литература
- •Практический проект: симуляция шаблона поисков
- •Практический проект: запусти меня!
- •Практический проект: останови меня!
- •Усложняем проект: симуляция в истинном масштабе
- •Усложняем проект: реальный «Аполлон-8»
- •Глава 7. Выбор мест высадки на Марсе
- •Посадка на Марс
- •Карта MOLA
- •Проект #10. Выбор посадочных мест на Марсе
- •Стратегия
- •Код для выбора мест посадки
- •Результаты
- •Итоги
- •Дополнительная литература
- •Практический проект: убедимся, что рисунки становятся частью изображения
- •Практический проект: визуализация профиля высот
- •Практический проект: отображение в 3D
- •Практический проект: совмещение карт
- •Усложняем проект: три в одном
- •Усложняем проект: перенос прямоугольников
- •Глава 8. Обнаружение далеких экзопланет
- •Транзитная фотометрия
- •Проект #11. Симуляция транзита экзопланеты
- •Стратегия
- •Код для транзита
- •Эксперименты с транзитной фотометрией
- •Проект #12. Получение изображений экзопланет
- •Стратегия
- •Код для пикселизатора
- •Итоги
- •Дополнительная литература
- •Практический проект: обнаружение инопланетных мегаструктур
- •Практический проект: обнаружение транзита астероидов
- •Практический проект: добавление эффекта потемнения к краю
- •Практический проект: обнаружение пятен на звездах
- •Практический проект: обнаружение инопланетной армады
- •Практический проект: обнаружение планеты с луной
- •Практический проект: измерение продолжительности экзопланетного дня
- •Усложняем проект: генерация динамической кривой блеска
- •Глава 9. Как различить своих и чужих
- •Обнаружение лиц на фотографиях
- •Проект #13. Программирование робота-часового
- •Стратегия
- •Результаты
- •Обнаружение лиц в видеопотоке
- •Итоги
- •Дополнительная литература
- •Практический проект: размытие лиц
- •Усложняем проект: обнаружение кошачьих мордочек
- •Глава 10. Ограничение доступа по принципу распознавания лиц
- •Распознавание лиц с помощью LBPH
- •Схема распознавания лиц
- •Извлечение гистограмм локальных бинарных шаблонов
- •Проект #14. Ограничение доступа к инопланетному артефакту
- •Стратегия
- •Поддержка модулей и файлов
- •Код для захвата видео
- •Код для обучения алгоритма распознавания лиц
- •Код для прогнозирования лиц
- •Результаты
- •Итоги
- •Дополнительная литература
- •Усложняем проект: добавление пароля и видеозахвата
- •Усложняем проект: похожие лица и близнецы
- •Усложняем проект: машина времени
- •Глава 11. Создание интерактивной карты побега от зомби
- •Проект #15. Визуализация плотности населения с помощью хороплетной карты
- •Стратегия
- •Библиотека анализа данных
- •Библиотеки bokeh и holoviews
- •Установка pandas, bokeh и holoviews
- •Работа с данными по уровню безработицы и плотности населения в округах и штатах
- •Разбираем код holoviews
- •Код для отрисовки хороплетной карты
- •Планирование маршрута
- •Итоги
- •Дополнительная литература
- •Усложняем проект: отображение на карте изменения численности населения США
- •Глава 12. Находимся ли мы в компьютерной симуляции?
- •Проект #16. Жизнь, Вселенная и пруд черепахи Йертл
- •Код симуляции пруда
- •Следствия симуляции пруда
- •Измерение затрат на пересечение строк или столбцов сетки
- •Результаты
- •Стратегия
- •Итоги
- •Дополнительная литература
- •Дополнение
- •Усложняем проект: поиск безопасного места в космосе
- •Усложняем проект: а вот и Солнце
- •Усложняем проект: взгляд глазами собаки
- •Усложняем проект: кастомизированный поиск слов
- •Усложняем проект: что за сложную паутину мы плетем
- •Усложняем проект: идем вещать с горы
- •Решения для практических проектов
- •Глава 2. Определение авторства с помощью стилометрии
- •Охота на собаку Баскервилей с помощью распределения
- •Тепловая карта пунктуации
- •Глава 4. Отправка суперсекретных сообщений с помощью книжного шифра
- •Составление графика символов
- •Отправка секретов шифром времен Второй мировой войны
- •Глава 5. Поиск Плутона
- •Представление орбитальной траектории
- •Глава 6. Победа в лунной гонке с помощью «Аполлона-8»
- •Симуляция шаблона поисков
- •Заведи меня!
- •Останови меня!
- •Глава 7. Выбор мест высадки на Марсе
- •Убеждаемся, что рисунки становятся частью изображения
- •Визуализация профиля высоты
- •Отображение в 3D
- •Совмещение карт
- •Глава 8. Обнаружение далеких экзопланет
- •Обнаружение инопланетных мегаструктур
- •Обнаружение транзита астероидов
- •Добавление эффекта потемнения к краю
- •Обнаружение инопланетной армады
- •Обнаружение планеты с луной
- •Измерение продолжительности экзопланетного дня
- •Глава 9. Как различить своих и чужих
- •Размытие лиц
- •Глава 10. Ограничение доступа по принципу распознавания лиц
- •Усложняем проект: добавление пароля и видеозахвата
7
Выбор мест высадки на Марсе
Посадка космического аппарата на Марсе — неверо-
ятно сложная и опасная процедура. Никто не хочет
терять зонд ценой в миллиард долларов, поэтому
инженеры должны максимально обезопасить такую
операцию. Они могут годами изучать спутниковые снимки в поиске наиболее безопасных мест посадки, удовлетворяющих целям миссии. Исследовать при этом при-
ходится огромные пространства поверхности, так как площадь суши на Марсе практически равна земной.
Для анализа настолько обширной области требуется помощь вычислительных машин. В этой главе мы используем Python и гордость Jet Propulsion Labora tory — карту лазерного высотомера MOLA, чтобы отобрать и ранжировать предполагаемые места посадки модуля. Чтобы скачать карту и извлечь из нее нужную информацию, мы используем Python Imaging Library, OpenCV, tkinter и NumPy.
Посадка на Марс
Есть много способов посадить на Марс зонд, включая использование парашютов, шаров, ракет с тормозными устройствами и реактивных летательных аппаратов. Независимо от выбранного метода большая часть процесса посадки выполняется согласно одним и тем же базовым правилам безопасности.
Первое правило — садиться в низинных областях. Зонд может войти в марсианскую атмосферу со скоростью до 27 000 км/ч, и чтобы достаточно замедлить
200 Глава 7. Выбор мест высадки на Марсе
его для плавной посадки, требуется плотная атмосфера. Но на Марсе она разреженная — примерно 1 % от земной. Чтобы задействовать ее по полной при торможении, необходимо выбирать низины, где воздух плотнее, но полет до этих локаций требует больше времени.
Если мы сажаем не какой-то специализированный зонд, например разработанный для исследования полярных областей, то лучше всего целиться в область экватора. Здесь достаточно света для питания солнечных батарей зонда, а температуры весьма высокие для сохранения функциональности его чувствительного оборудования.
При этом нужно избегать областей суши, покрытых валунами, которые могут уничтожить зонд, не дать раскрыться его панелям, заблокировать механическую руку или воспрепятствовать попаданию солнечных лучей. По схожим причинам следует избегать областей с крутыми склонами, например краев кратеров. С позиции безопасности чем более плоская поверхность, тем лучше.
Еще одна сложность при посадке на Марс — невозможно прицелиться точно. Трудно пролететь 50 миллионов километров или даже более, войти в атмосферу и выполнить посадку ровно в намеченном месте. Неточности в межпланетной навигации наряду с изменчивостью марсианской атмосферы затрудняют точность посадки.
Следовательно, в NASA прокручивают большое количество компьютерных симуляций для каждого места посадки. Каждый прогон симуляции дает координату, а разброс точек, получающихся из тысяч таких прогонов, формирует эллиптическую фигуру с длинной осью, параллельной траектории полета зонда. Эти посадочные эллипсы могут получаться довольно большими (рис. 7.1), хотя с каждой новой миссией точность повышается.
Mars Pathfinder
200 x 100 km landing footprint
Рис. 7.1. Сравнение масштабов посадочной области Mars Pathfinder в 1997 году (слева) и в Южной Калифорнии (справа)
Карта MOLA 201
Посадочный модуль InSight, совершивший посадку на Марсе в 2018 году, целился в область площадью всего 130 ×27 км. Вероятность посадки внутри этого эллипса составляла около 99 %.
Карта MOLA
Для определения удачных точек посадки потребуется карта Марса. В период между 1997 и 2001 годами установленный на борту Mars Global Surveyor (MGS) прибор сделал 600 миллионов измерений отражения лазерного луча от поверхности планеты. На основе этих данных исследователи под руководством Мари Зубер (Maria Zuber) и Дэвида Смита (David Smith) создали детализированную глобальную топографическую карту, названную MOLA (рис. 7.2).
Рис. 7.2. Затененная карта рельефа Марса MOLA
Чтобы увидеть эффектную цветную версию MOLA вместе с описанием, перей дите на страницу Википедии Mars Global Surveyor. Синим на этой карте обозначены места, где миллиарды лет назад, возможно, существовали океаны и моря. Их распределение основано на комбинации высоты и признаков поверхности, напоминающих древние береговые линии.
Точность лазерных измерений, на основе которых составлялась MOLA, для вертикального направления равняется примерно от 3 до 13 м, а для горизонтального — около 100 м. Разрешающая способность изображения составляет 463 метров на пиксель. Сама по себе карта не содержит деталей, необходимых для безопасного выбора посадочного эллипса, но отлично подойдет для предварительной работы, которую мы и собираемся проделать.