Сканер ландшафту для велосипедних прогулянок

10

У цьому проекті майстер спробував створити додаток до велосипеда, який дозволить сканувати ландшафт, по якому він подорожує, будь то місто або сільська місцевість.інструменти та матеріали: — нитка для 3d-принтера; — епоксидна смола; — тканина з вуглецевого волокна; — плівка формату а4; — кріплення; — raspberry pi 3b + ;- raspi camera v2;-sd-карта 32гб;-повербанк 20 ач;-usb-кабель для підключення пауербанка;-подовжувальний кабель usb (для передачі відео, не відкриваючи корпус);-датчик швидкості на велосипед (геркон + магніт);-3d-принтер;-комп’ютер;-паяльник;-викрутки, шестигранні ключі, плоскогубці;-мультиметр;-термофен;крок перший: про устройствецель полягала в тому, щоб мати дуже гнучку систему (де можна налаштовувати параметри для точного налаштування рендеринга (отрисовка)), здатну без проблем працювати годинами і без створення занадто великої кількості даних.за функціоналом пристрій схоже на камеру з лінійною розгорткою (або, по суті, на те, що робить режим панорами на більшості смартфонів).ідея полягає в тому, щоб використовувати raspberry pi і камеру, працювати від батареї і створювати окремі вертикальні кадри на основі швидкості велосипеда.так само завдання було, щоб пристрій виглядав красиво і було ударостійким (гоночний велосипед без підвіски, є сильні вібрації). З цих причин він зробив одну сторону корпусу з вуглецевого волокна (cfrp). При цьому є версія і без вуглецевого волокна.з sd-картою 32 гб має бути достатньо місця для запису близько 700 км шляху, а з акумулятором на 20 а•год — на запис протягом близько 20 годин.спочатку результат виглядає приблизно як на фото нижче (зображення з високою роздільною здатністю, тут 16, 000×1, 800 пікселів):

Надалі ці знімки можна обробити і поліпшити.крок другий: 3d-друкпочатку потрібно надрукувати деталі корпусу. Файли для друку можна завантажити нижче. Деталь main_body для версії з вуглецевим волокном. Деталь main_body_nocfrp для версії без вуглецевого волокна.для друку знадобиться близько 300 грам нитки і 38 годин.camera_centering.stlcamera_circle.stlcamera_fixation.stlcover_body.stlfixation_battery.stlfixation_raspi.stlfixation_saddle.stlholder_magnet_sensor.stlholder_screw_wheel.stlmain_body.stlmain_body_nocfrp.stl

Крок третій: заливкадеталь з вуглецевого волокна і епоксидної смоли виготовляється за 4 простих кроки:-підготовка 3d-друку до виливки-підготовка тканини з вуглецевого волокна-заливка першого шару епоксидної смоли-установка вуглецевого волокна і всіх опорних елементів і герметизація їх другим епоксидним шаром

Підготовка 3d-принта полягає в заклеюванні нижньої сторони плівкою.

Потім потрібно обрізати тканину на 2-3 мм більше внутрішнього розміру корпусу.

До плівки необхідно приклеїти двостороннім скотчем пластиковий шип. Він приклеюється в тому місці, де буде розміщуватися камера. У тканини, теж потрібно зробити отвір на місці камери.

Потім заливається перший шар епоксидної смоли. Після полімеризації смоли, укладає тканину, розміщує кріплення для розсолу і заливає другий шар.

Крок четвертий: датчик швидкостей датчику потрібно припаяти дроти. Потім закріпити його на вилку велосипеда. Магніт закріплюється на клапані велосипедної камери. Тепер при кожному обороті колеса, буде спрацьовувати геркон.

Далі підключає дроти від датчика до контактів 1 і 12.

Крок п’ятий: настройка расберидальше потрібно буде встановити raspi зі стандартною ос:викачуємо образ (не розпаковуючи) з raspberrypi.org на комп’ютер.встановлюємо sd-карту в комп’ютерзавантажуємо і запускаємо balena etcher з balena.іозапускаем belena etcherкликаем ‘flash from file’.вибираємо файл.натискаємо ‘select target’.вибираємо свою sd-карту.натискаємо»flash».потім встановлюємо sd-карту в raspi.підключаємо до розсилки дисплей, миша, клавіатуру і завантажуємо систему.підключаємося до інтернету.з терміналу (ctrl + alt + t) запускаємо «sudo apt-get update» , а потім » sudo apt-get upgrade», щоб оновити розсилку.якщо планується запускати всі скрипти на raspi, то знадобиться opencv для python: «sudo apt-get installpython3-opencv», але майстер рекомендує запустити його на своєму настільному комп’ютері після передачі відеофайлів.тепер потрібно буде завантажити скрипти для отримання та обробки зображень з цього посібника.створюємо папку на pi, в якій буде виконуватися проект, і копіюємо туди файли.щоб автоматично запустити скрипт python при завантаженні, майстер дотримувався інструкцій звідси. Сценарій, який повинен запускатися при завантаженні, — це «autoscript.py» . Він повинен запускатися за допомогою python 3.read_video.pyautostart.py

Крок шостий: протокол ѕѕнщоб отримати легкий доступ до raspi, майстер підключається до нього через ssh. Це дозволить мати доступ до файлів, не відкриваючи корпус.для настройки протоколу робимо наступне: налаштовуємо wi-fi на ріподключаем його до домашнього wi-fiзапісиваем ip-адреса рассбери

Потім потрібно активувати ssh на рассбери. Як тільки це буде зроблено, підключаємося до розсилки по мережі.

Тепер можна редагувати код, видаляти або копіювати файли на свій розсуд. Поки ваш велосипед знаходиться в межах досяжності домашнього wi-fi, включаємо систему і підключаємося до неї.після завершення вимикаємо пі наступним чином:

Тепер потрібно встановити пристрій під сидіння велосипеда. Назовні виводиться usb-кабель для перенесення даних на комп’ютер і кабель для підключення повербанка.

Крок восьмий: запистепер можна прокотитися і просканувати місцевість.підключіть usb-вхід живлення до блоку живлення. Pi завантажиться і автоматично запустить скрипт для запису відео.чим стабільніше їзда на велосипеді, тим краще будуть знімки.коли користувач різко збільшує або зменшує швидкість, камера буде генерувати «неправильні» зображення, оскільки частота кадрів оновлюється тільки кожен оборот колеса. Точно так само, коли користувач повертає на велосипеді, зображення будуть скануватися зі швидкістю велосипеда, навіть якщо під час повороту швидкість об’єкта, який сканується, відрізняється.на прямій, з близькою до постійної відстані до сканованого об’єкта і з низькими вібраціями / розгойдуванням велосипеда, можна отримати хороші зображення.

Крок дев’ятий: обробка зображеньпісля запису відео копіюємо його на usb-накопичувач і переносимо на комп’ютер.потім потрібно буде перетворити відео з формату .h264 у щось, доступне для читання opencv, наприклад формат mp4. Для перетворення можна використовувати будь-який зручний конвертер.майстер робить це в лінукс. Запускає команду:

sudo apt-get update sudo apt-get install gpac

Потім переходить в папку з сирими відео «.h264″. Зпускає наступну команду, яка перетворює всі файли » h. 264 «в поточній папці в mp4:

» for i in *.h264; do mp4box-add $i «${i%. H264}. Mp4″; done»

Тепер потрібно витягти кожен кадр з відео в форматі». Mp4″. Для цього запускаємо скрипт «read_video.py». Змінюємо змінну «numbervideostoprocess» на кількість відеофайлів, які потрібно обробити.окремі кадри будуть збережені в папці «frames», яку потрібно створити раніше всередині папки, в якій знаходяться відео.далі запускаємо скрипт «fusion_images.py». Тут можна змінити » fusionratio «(int), який визначає коефіцієнт перекриття для градієнтного злиття двох сусідніх зображень (від 0 до 0,5).можна змінити» fotowidth » (int), який являє собою розмір середини кожного кадру, що використовується для злиття (від 1 до 64). «numberfotoperframe» (int), визначає кількість кадрів, об’єднаних в одне зображення.потрібно змінити змінну numberimagetoproduce (int) на найбільшу (int).результати зображення будуть збережені в папці «результат», яку потрібно створити раніше, також всередині папки, в якій знаходяться відео.

Джерело (source)