Вдохновившись лазерным дальномером, установленном на пылесосе 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.
Сканировать что? По поводу небольших предметов - на небольших расстояниях довольно мелкие детали видно (думаю, робот увидеть ножки стула и выбраться из под него). На больших расстояниях мелкие детали не видно за счет потери точности, но там и не так важно видеть мелкие детали.
_________________ OpenSimpleLidar - проект простого самодельного лидара.
Зарегистрирован: 10 ноя 2011, 12:02 Сообщения: 5691 Откуда: Turku, Finland
Skype: elmot73
прог. языки: Java и все-все=все
ФИО: Илья
Горизонталь, ну вы собственно и сканируете, я плохо вчитался. На форуме кто-то(кажется Nesenin) только что брался за такой же дальномер на основе вебкамеры. Там получается совсем бюджетно и неплохо по разрешению.
Однако камера 360 градусов охватить не может, и у нее довольно низкий FPS. А еще здесь лазер модулируется, что позволяет работать в большом диапазоне освещенностей.
_________________ OpenSimpleLidar - проект простого самодельного лидара.
На фотографии с большой выдержкой видно, что точки замера накладываются друг на друга с каждым оборотом. Может, давать смещение с каждым оборотом? Или замерять через угол, к которому 360 не будет кратно?
А про какое место на фотографии вы говорите? На самом деле ничего накладываться не должно, так как время включения лазера определяется по датчику нуля (оптопара, торчит рядом с камерой), и энкодеру. Проблема в том, что по энкодеру определяется скорость, а не положение, так что к концу оборота ошибка накапливается. Это приводит к смещению на 1 точку захвата в правой части изображения (дальномер вращается против часовой стрелки).
_________________ OpenSimpleLidar - проект простого самодельного лидара.
Хотите повысить количество данных таким образом? Однако это приведет к тому, что для получения всей картины придется ждать 2 оборота. При этом, точности вблизи и так хватает, а вдали разницы никакой уже не будет.
_________________ OpenSimpleLidar - проект простого самодельного лидара.
Да, хотим больше данных - ждем, не хотим - не ждем и читаем один круг, ничего не теряя про сравнению с текущим вариантом. Вдали должна быть разница же. На трех метрах шаг замера 26 мм, или 9 мм, например. Дальность обнаружения стула должна возрасти, в теории.
Зарегистрирован: 10 ноя 2011, 12:02 Сообщения: 5691 Откуда: Turku, Finland
Skype: elmot73
прог. языки: Java и все-все=все
ФИО: Илья
Кстати, если делать дальномер на камерах, то можно воткнуть целую пачку разноцветных лазеров со смещением, получим в теории 3-4 замера за каждые 2 кадра.
Голубой лазер довольно дорого стоит, и поскольку в случае камеры лазер не промодулировать, то для повышения качества обнаружения камеру лучше закрыть светофильтром, что не позволяет использовать несколько лазеров. Кроме того, у большинства камер величина fps зависит от освещенности, и при плохой освещенности fps сильно падает. Также в камерах не всегда быстро вычисляется экспозиция.
_________________ OpenSimpleLidar - проект простого самодельного лидара.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения