Рандонавтинг (randonauting) — это когда, используя генератор случайных чисел, находят и исследуют близлежащие места. Выглядит это так: сначала случайным образом выбирают широту и долготу, а потом посещают соответствующее место на Земле.

У этой деятельности есть метафизическая подоплёка: предполагается, что намерения рандонавта воздействуют на процесс случайного выбора точки на карте. Лучше всего об этом сказали в статье NY Times: «Подумайте: закон притяжения соприкасается с геокешингом».


Навигатор рандонавта «Dujour»

С чего бы это было возможным? Дело в том, что есть люди, которые верят в то, что используя случайные числа, полученные с опорой на квантовые процессы, например — с применением аппаратного генератора случайных чисел (Hardware Random Number Generator, HRNG), можно силой мысли влиять на то, какие именно координаты будут выбраны. В результате можно столкнуться с некими удивительными, познавательными или даже неприятными последствиями. Хорошей иллюстрацией этой идеи служит одно мрачное видео из TikTok, в котором подростки-рандонавты находят чемодан с частями тела.

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

Что произойдёт в том случае, если сконцентрироваться на конкретном намерении в точности тогда, когда генерируются случайные географические координаты? В этом — суть рандонавтинга.

Между моим устройством для рандонавтов и другими проектами похожей направленности есть несколько различий.

Во-первых, я расширил возможности моего устройства за счёт учёта времени. Оно не только выдаёт случайные географические координаты, но и указывает случайное время для путешествия к предложенному месту. В основе этого улучшения лежит идея о том, что, возможно, больше смысла будет в том, чтобы случайным образом выбирать некую точку и во времени, и в пространстве. В результате рандонавт может отправиться в определённое место, совершив путешествие в указанное время, что должно помочь выжать из идеи рандонавтинга всё что можно.

Во-вторых, мой проект отличается от других тем, как именно в нём выбираются координаты. Я использую для нахождения географических координат всего два случайных числа. В других реализациях имеются концепции «пустот» и «аттракторов», в которых используются статистические алгоритмы для определения соответствующих точек на карте. Аттракторы, в сущности, представляют собой скопления значений, представляющих географические координаты. А пустоты — это, наоборот, отсутствие таких скоплений. Я полагаю, что подобное только неоправданно всё усложняет.


Пустоты и аттракторы (источник)

Это — один из моих самых сложных проектов. Вам, чтобы его воспроизвести, понадобится кое-какое «железо» и навыки программирования на Python. Я называю это устройство «Dujour» (в честь одного из персонажей «Матрицы»). Вам, чтобы сделать себе такое же устройство, понадобится следующее:

  • 2 Raspberry Pi (или аналогичных одноплатных компьютера).
  • 1 аппаратный генератор случайных чисел с интерфейсом USB. Я рекомендую либо OneRNG, либо TrueRNG.
  • LCD- или VFD-дисплей (я использовал дисплей Matrix Orbital VK204-25).
  • Аккаунт на Twilio, нужный для рассылки текстовых сообщений.
  • Гирлянда из цветных светодиодов (ну, эта «железка» не такая уж и нужная, но как по мне, с ней устройство лучше выглядит).
  • Python-скрипты: rabbit.py, sendSMS.py, orbitalWrite.py и restrngsever.py.

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

Некую разновидность моего проекта можно создать и с использованием всего одной платы Raspberry Pi, подключив HRNG к локальному USB-порту, но я предпочитаю применять отдельное устройство. Я много экспериментировал с генераторами случайных чисел и пришёл к выводу о полезности использования удалённого RNG-сервера, к которому могут обращаться несколько клиентских устройств.

Ниже приведена схема, демонстрирующая высокоуровневое представление ��роцесса, на котором основан рандонавтинг. Главный скрипт носит имя rabbit.py, он работает на первой плате Raspberry Pi, которую я называю Dujour1. Когда его запускают, он (1) выполняет REST-запрос ко второму устройству — Dujour2 (к хосту аппаратного генератора случайных чисел) и получает от него (2) несколько случайных чисел с плавающей запятой. Эти числа используются (3) для выбора близлежащего места, которое можно исследовать, и для указания времени посещения этого места. Затем скрипт собирает (4) URL для сервиса Google Maps и отправляет его (5) на телефон в виде текстового сообщения с использованием службы Twilio.


Высокоуровневая схема проекта

Вот видеоклип, на котором можно увидеть работу моего устройства.


Навигатор рандонавта в действии

На плате Raspberry Pi, называемой Dujour1, нужно установить и настроить Linux. К ней нужно подключить дисплей (вот инструкции для Matrix Orbital VK204-25). На следующем снимке показано подключение моего дисплея к плате.


Подключение Matrix Orbital VK204-25 к Raspberry Pi

Я поместил Raspberry Pi и дисплей под стеклянный колпак и присоединил LED-гирлянду к выходам GPIO 5V и GND. Стеклянный колпак показался мне удобным «корпусом», в котором помещается всё что нужно. К тому же, мне нравится то, как всё это выглядит.

Для обеспечения работы скрипта rabbit.py нужен Python и следующие библиотеки:

  • math
  • numpy
  • subprocess
  • sys
  • time
  • json
  • urllib2

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

До запуска скрипта нужно задать несколько переменных. Все они находятся в разделе скрипта User Defined Variables. Вот описание некоторых из них:

  • loghandle: путь к текстовому файлу, в котором логируются все запуски скрипта
  • window_secs: максимальное число секунд, используемое при нахождении времени для посещения выбранного места.
  • meters_out: максимальное расстояние в метрах от текущего местоположения рандонавта, используемое при выборе места, которое ему нужно посетить.
  • latitude1, longitude1: текущие координаты, которые используются как начальная точка при поиске целевых координат.
  • lcd_addr: шестнадцатеричный адрес LCD-дисплея при использовании интерфейса I2C.
  • HWRNG: IP-адрес и порт удалённого HRNG-сервера в формате XXX.XXX.XXX.XXX:YYYY.

Проект зависит от нескольких внешних скриптов. sendSMS.py используется для отправки текстовых сообщений с координатами. orbitalWrite.py применяется для работы с дисплеем. Оба скрипта надо поместить в ту же папку на плате Dujour1, в которой находится скрипт rabbit.py. Обратите внимание на то, что мой скрипт рассчитан на работу с определённым дисплеем Matrix Orbital (VK204-25). Если вы решите использовать какой-то другой дисплей — вам понадобится соответствующим образом отредактировать код. В скрипте есть комментарии относительно участков кода, ответственных за взаимодействие с дисплеем.

Для обеспечения работы скрипта sendSMS.py нужна пара переменных окружения, которые позволят ему пройти аутентификацию в службе Twilio: TWILIO_ACCOUNT_SID и TWILIO_AUTH_TOKEN. Вот инструкция по настройке этих переменных. Кроме того, нужно установить вспомогательную Python-библиотеку Twilio.

На плате Raspberry Pi, которую я называю Dujour2, играющей роль сервера, надо тоже установить и настроить Linux. Именно к этой плате подключается аппаратный генератор случайных чисел. Я использовал USB-устройство OneRNG, инструкции по его настройке можно найти здесь.

Ниже показан мой сервер.


HRNG-сервер, использующий OneRNG

После того, как первоначальная настройка сервера завершена, на нём надо запустить скрипт rngrestserver.py, который используется для передачи случайных чисел устройству Dujour1. Подробности о работе скрипта REST-сервера можно найти здесь.

Итоги


Если вы, пользуясь моим руководством, создали собственное устройство, это значит, что у вас теперь есть всё необходимое для рандонавтинга. Просто запустите из терминала скрипт ./rabbit.py, после чего на ваш телефон придёт сообщение со ссылкой на карту (то, что вы увидите после открытия ссылки, будет выглядеть примерно так, как показано ниже).


Место, найденное с помощью аппаратного генератора случайных чисел

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

Возможно, я когда-нибудь сделаю особый навык для Amazon Alexa. Это позволило бы мне пользоваться моим рандонавтическим сервером с телефона.

А вы примеряли на себя костюм рандонавта?