roboforum.ru

Технический форум по робототехнике.

Сканирующий лазерный дальномер

Наше хобби — конструировать и программировать.
Демонстрация готовых роботов и устройств построенных своими руками.

Сканирующий лазерный дальномер

Сообщение citizen » 13 окт 2012, 23:58

Вдохновившись лазерным дальномером, установленном на пылесосе Neato http://robocraft.ru/blog/robots/725.html, захотел себе подобный. Ну а поскольку все знают, сколько стоит дальномер, то остается один выход - собрать самому!

Проще всего сделать дальномер, работающий по тому же принципу, что и в вышеуказанном пылесосе. Это триангуляционный метод, он упоминается здесь: http://roboforum.ru/forum4/topic2001.html, а принцип работы описан здесь https://sites.google.com/site/todddanko/home/webcam_laser_ranger.
Получившаяся конструкция достаточно проста.
Самая труднодоставаемая часть - это светочувствительная линейка. Все что я смог найти - TSL1401, с довольно низким разрешением (128 пикселей). Покупал на ebay, за 15 долларов. Фокусирующая линза (f' = 13 мм) - из окуляра микроскопа. Поскольку разрешение маленькое, приходиться использовать большое базовое расстояние - 10 см. Также на контроллере производится математическая обработка сигнала, позволяющая повысить разрешение до 1/10 пикселя.
Микроконтроллер - STM32F100C4.
Лазер - из DVD привода, так как мощности обычного лазерного модуля на 3 мвт не хватило. Мощность лазера в своем дальномере определить не могу, скажу только, что при постоянно работающем лазере через него идет ток 70 ма. Лазер включается на время, за которое конструкция поворачивается на 1/3 градуса, 2/3 он выключен.
Связь с компьютером организована при помощи bluetooth модуля.
Характеристики дальномера - 3 оборота в секунду, 360 измерений на оборот, точность определения расстояния - на 1 м примерно 1 см, на 3 м примерно 10 см. Минимальное измеряемое расстояние - 16 см.
Из-за того, что скорость вращения двигателя постоянно меняется, приходится постоянно корректировать скорость измерений, и для измерения скорости пришлось установить энкодер из мыши.

Фотографии готового устройства:
Изображение
Двигатель из старого HDD использован как опора для вращающейся части - в двигателе хорошие подшипники, нет люфтов, и есть отверстия с резьбой для крепления. В оси двигателя было отверстие, в которое я вставил стержень. На конце стержня - металлическая площадка, провод от которой проходит сквозь ось. Стержень и площадка служат для передачи питания на основную часть дальномера. Позже я установил на стержень энкодер от мыши, так что энкодер неподвижен относительно доски. На фотографии виден скользящий контакт, позже я его убрал.

Изображение
Вид на управляющую плату. Подстроечный резистор служит для регулировки тока через лазер.

Изображение

Изображение
Общий вид дальномера. Хорошо виден модуль лазера. Юстировка производится двумя винтами, лазер снизу подпружинен. Сразу скажу, что юстировка не отличается особой сложностью, так как при приближении препятствия к лазеру растет размер пятна, что компенсирует погрешности юстировки. Так что юстировка производится один раз на большом расстоянии.

Изображение
Вид спереди. В центре фотографии виден диск энкодера из мыши.

Результаты работы:
Изображение
Такую картинку дает дальномер, установленный в комнате.

Изображение
Изображение
Сама комната.
Как видно, дальномер смог обнаружить стул, но это удается ему только на близком расстоянии. На белом шкафу видны вспышки лазера.

В коридоре:
Изображение
Изображение
Изображение

Фотография работающего дальномера в темноте в комнате с выдержкой 1 сек:
Изображение
Робот расположен так же, как и на фотографии со стулом.

Демонстрация работы дальномера.


Основная задача теперь - обработка полученной информации, то есть определение положения робота в комнате. Подумываю об использовании ROS.

Разработана новая версия дальномера и выложена инструкция по сборке - смотреть тут: http://roboforum.ru/post278930.html#p278930 и тут forum10/topic12095-285.html#p281288
Там же выложена схема и исходный код.
Изображение

Разработана 3 версия дальномера (OpenLidar):
https://geektimes.ru/post/275442/
Изображение

Разработана 4 версия дальномера (OpenSimpleLidar):
post380962.html#p380962
Изображение
Последний раз редактировалось citizen 25 фев 2018, 19:26, всего редактировалось 13 раз(а).
OpenSimpleLidar - проект простого самодельного лидара.
Аватара пользователя
citizen
 
Сообщения: 369
Зарегистрирован: 12 окт 2008, 12:40
Откуда: Красногорск, Подмосковье

Re: Сканирующий лазерный дальномер

Сообщение MD23 » 14 окт 2012, 00:22

Хм не плохо...
MD23
 
Сообщения: 1
Зарегистрирован: 09 окт 2012, 21:17

Re: Сканирующий лазерный дальномер

Сообщение legion » 14 окт 2012, 12:32

Это не неплохо, это офигенно.
legion
 
Сообщения: 736
Зарегистрирован: 24 апр 2010, 14:47
Откуда: Уфа
прог. языки: avr asm

Re: Сканирующий лазерный дальномер

Сообщение elmot » 14 окт 2012, 12:50

Реально круто... Но вот сразу проблема параллаксных(или как их назвать?) дальномеров - с трудом находит небольшие предметы. Сканировать надо?
Аватара пользователя
elmot
 
Сообщения: 5691
Зарегистрирован: 10 ноя 2011, 12:02
Откуда: Turku, Finland
Skype: elmot73
прог. языки: Java и все-все=все
ФИО: Илья

Re: Сканирующий лазерный дальномер

Сообщение citizen » 14 окт 2012, 13:22

Сканировать что?
По поводу небольших предметов - на небольших расстояниях довольно мелкие детали видно (думаю, робот увидеть ножки стула и выбраться из под него). На больших расстояниях мелкие детали не видно за счет потери точности, но там и не так важно видеть мелкие детали.
OpenSimpleLidar - проект простого самодельного лидара.
Аватара пользователя
citizen
 
Сообщения: 369
Зарегистрирован: 12 окт 2008, 12:40
Откуда: Красногорск, Подмосковье

Re: Сканирующий лазерный дальномер

Сообщение elmot » 14 окт 2012, 13:32

Горизонталь, ну вы собственно и сканируете, я плохо вчитался. На форуме кто-то(кажется Nesenin) только что брался за такой же дальномер на основе вебкамеры. Там получается совсем бюджетно и неплохо по разрешению.
Аватара пользователя
elmot
 
Сообщения: 5691
Зарегистрирован: 10 ноя 2011, 12:02
Откуда: Turku, Finland
Skype: elmot73
прог. языки: Java и все-все=все
ФИО: Илья

Re: Сканирующий лазерный дальномер

Сообщение citizen » 14 окт 2012, 13:36

Однако камера 360 градусов охватить не может, и у нее довольно низкий FPS. А еще здесь лазер модулируется, что позволяет работать в большом диапазоне освещенностей.
OpenSimpleLidar - проект простого самодельного лидара.
Аватара пользователя
citizen
 
Сообщения: 369
Зарегистрирован: 12 окт 2008, 12:40
Откуда: Красногорск, Подмосковье

Re: Сканирующий лазерный дальномер

Сообщение legion » 14 окт 2012, 13:37

На фотографии с большой выдержкой видно, что точки замера накладываются друг на друга с каждым оборотом. Может, давать смещение с каждым оборотом? Или замерять через угол, к которому 360 не будет кратно?
legion
 
Сообщения: 736
Зарегистрирован: 24 апр 2010, 14:47
Откуда: Уфа
прог. языки: avr asm

Re: Сканирующий лазерный дальномер

Сообщение citizen » 14 окт 2012, 13:48

А про какое место на фотографии вы говорите? На самом деле ничего накладываться не должно, так как время включения лазера определяется по датчику нуля (оптопара, торчит рядом с камерой), и энкодеру. Проблема в том, что по энкодеру определяется скорость, а не положение, так что к концу оборота ошибка накапливается. Это приводит к смещению на 1 точку захвата в правой части изображения (дальномер вращается против часовой стрелки).
OpenSimpleLidar - проект простого самодельного лидара.
Аватара пользователя
citizen
 
Сообщения: 369
Зарегистрирован: 12 окт 2008, 12:40
Откуда: Красногорск, Подмосковье

Re: Сканирующий лазерный дальномер

Сообщение legion » 14 окт 2012, 14:03

Я к тому, что хорошо бы на первом круге брать замеры 0°, 1°, 2°,... , на втором 0.33°, 1.33°, 2.33°,... и т.д.
legion
 
Сообщения: 736
Зарегистрирован: 24 апр 2010, 14:47
Откуда: Уфа
прог. языки: avr asm

Re: Сканирующий лазерный дальномер

Сообщение citizen » 14 окт 2012, 14:07

Хотите повысить количество данных таким образом? Однако это приведет к тому, что для получения всей картины придется ждать 2 оборота. При этом, точности вблизи и так хватает, а вдали разницы никакой уже не будет.
OpenSimpleLidar - проект простого самодельного лидара.
Аватара пользователя
citizen
 
Сообщения: 369
Зарегистрирован: 12 окт 2008, 12:40
Откуда: Красногорск, Подмосковье

Re: Сканирующий лазерный дальномер

Сообщение legion » 14 окт 2012, 14:38

Да, хотим больше данных - ждем, не хотим - не ждем и читаем один круг, ничего не теряя про сравнению с текущим вариантом. Вдали должна быть разница же. На трех метрах шаг замера 26 мм, или 9 мм, например. Дальность обнаружения стула должна возрасти, в теории.
legion
 
Сообщения: 736
Зарегистрирован: 24 апр 2010, 14:47
Откуда: Уфа
прог. языки: avr asm

Re: Сканирующий лазерный дальномер

Сообщение citizen » 14 окт 2012, 15:00

Только картинка мигать будет - то есть стул, то нет.
OpenSimpleLidar - проект простого самодельного лидара.
Аватара пользователя
citizen
 
Сообщения: 369
Зарегистрирован: 12 окт 2008, 12:40
Откуда: Красногорск, Подмосковье

Re: Сканирующий лазерный дальномер

Сообщение elmot » 14 окт 2012, 15:09

Кстати, если делать дальномер на камерах, то можно воткнуть целую пачку разноцветных лазеров со смещением, получим в теории 3-4 замера за каждые 2 кадра.
Аватара пользователя
elmot
 
Сообщения: 5691
Зарегистрирован: 10 ноя 2011, 12:02
Откуда: Turku, Finland
Skype: elmot73
прог. языки: Java и все-все=все
ФИО: Илья

Re: Сканирующий лазерный дальномер

Сообщение citizen » 14 окт 2012, 15:43

Голубой лазер довольно дорого стоит, и поскольку в случае камеры лазер не промодулировать, то для повышения качества обнаружения камеру лучше закрыть светофильтром, что не позволяет использовать несколько лазеров. Кроме того, у большинства камер величина fps зависит от освещенности, и при плохой освещенности fps сильно падает. Также в камерах не всегда быстро вычисляется экспозиция.
OpenSimpleLidar - проект простого самодельного лидара.
Аватара пользователя
citizen
 
Сообщения: 369
Зарегистрирован: 12 окт 2008, 12:40
Откуда: Красногорск, Подмосковье

След.

Вернуться в Наши проекты

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0

cron