Архив рубрики: эксперимент

Автомобильный видеорегистратор для записи GPS-треков

Перед отпуском приобрёл видеорегистратор Mystery MDR-970HDG — помимо записи в видеофайл того, что находится перед его объективом, он может определять своё положение по GPS-спутникам. В инструкции описано, как смотреть получившиеся файлы специальным видеоплеером (под Windows, разумеется), который должен показывать помимо картинки и место, где она была снята, но это — не наш метод. Нам нужен трек!

Расковыривание собранных данных показало:

1. В качестве контейнера для видеороликов используется QuickTime — каталог DCIM/100MEDIA заполнен файлами FILE№№№№.MOV, кодек для видео — H.264. Для преобразования в MP4 можно применять FFMPEG:

ffmpeg -i FILE0123.MOV  -f mp4 -vcodec copy -acodec copy 0123.mp4

2. Геоданные хранятся в текстовом виде — нет нужды ковырять видеофайлы в надежде извлечь координаты оттуда. С одной стороны, на карте памяти есть каталог GPSLog, в который сваливаются файлы с именами вида YYYYmmdd_HHMMSS.log, каждый их которых — текстовый, по строке на точку, поля разделены символами табуляции:

2017-07-27 19:07:46	N56.254678	E59.273161	313.4	38.72	345

Можно легко догадаться, что за поля здесь представлены — это время, широта, долгота, высота над уровнем моря в местах, скорость в километрах в час и курс в градусах. Так как регистратор смотрит вперёд, то курс можно считать совпадающим с направлением взгляда — этот параметр как только не называют: то Heading, то Bearing, то ImgDirection.

Есть и другое место — в DCIM/INFO для каждого видеофрагмента можно найти соответствующий файл FILE№№№№.dat, также являющийся текстовым с полями, разделёнными символом табуляции. Там тоже можно найти координаты:

[S]	0	0	0
[S]	0	0	0
[S]	0	0	0
[S]	0	0	0
[S]	0	0	0
[S]	0	0	0
[S]	0	0	0
[S]	0	0	0
[S]	0	0	0
[G]	2017-07-20 18:41:10	N56.740461	E60.735576	38	222

Похоже, строки, начинающиеся с [S], отписывают кадры, а те, в первом поле которых стоит [G] — геоданные. В таких файлах нет данных о высоте, да и скорость округлена до целого.

3. Эксперименты по скармливанию файлов GPSLog/*.log ГПСБабелю ничего не дали: среди различных текстовых форматов, которые знает GPSBabel, не нашлось подходящего. Пришлось по-быстрому написать свой конвертер и выложить на GitHub, чтоб не забыть довести до ума — там надо бы с часовыми поясами разобраться.

4. Трек за городом пишется весьма точно — куда лучше, чем телефоном. Например, на этой картинке (здесь трек наложен на карту OpenStreetMap) видно, и что трек идёт по дорогам, и что часть пути прошла по встречной проезжей части (своя закрыта на ремонт)

Трек по подъезду к Екатеринбургу

А вот в городе всё не так хорошо — треки иногда на сотни метров сдвинуты во дворы

Трек по Челябинску

Вывод: видеорегистратор Mystery MDR-970HDG вполне можно использовать в качестве GPS-логгера, но треки, добытые в условиях плотной городской застройки, надо фильтровать.

С пересадкой

В начале апреля в Челябинске ввели часовые билеты — купив один билет, можно в течение часа пересаживаться на другой транспорт. Я вчера наконец-то сам испытал, как это работает.

Билеты

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

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

Инициализация переменных

Объявлял как-то переменные и присваивал им пустую строку:

my (
    $search_for_name, $search_for_content,
    $action_clean, $action_delete,
    $action_print, $action_print_key,
    $need_help, $need_manual, $verbose
) = ( '' ) x 9;

Надоело при добавлении очередной переменной вручную менять их количество — переписал:

map { $_ = '' } my (
    $search_for_name, $search_for_content,
    $action_clean, $action_delete,
    $action_print, $action_print_key,
    $need_help, $need_manual, $verbose
);

Так тоже работает 🙂

Неправильная тушёнка

Попробовал взятую как-то в «Фикс-прайсе» ради эксперимента тушёнку. Точнее даже, если верить этикетке, не просто тушёнку, а тушёную говядину, выпущенную неким ООО «Вязьмамясопродукт» из Смоленской области (штрих-код на банке — 4607039081893).

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