roboforum.ru

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

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

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

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

Сообщение citizen » 23 ноя 2012, 17:25

Теория триангуляционного определения расстояния, которой пользовался я, дана в начале темы.
По поводу TSL1401 - на самом деле, это не ПЗС, а "128 × 1 array of photodiodes". Управление ей описано в даташите, довольно подробно также оно описано здесь: http://cache.freescale.com/files/microcontrollers/doc/app_note/AN4244.pdf

Расскажу вкратце про управление. TSL1401 - интегрирующая, то есть она накапливает заряд, пока на пиксель падает свет(у каждого фотодиода есть 2 конденсатора). Управление микросхемой ведется при помощи всего двух выводов - синхронизации и стартового. Для того, чтобы считать данные, нужно послать одиночный стартовый импульс (микросхема начинает новый захват данных), после чего, подавая на TSL1401 тактовые импульсы, с ее аналогового выхода считываем значения яркости, которые были захвачены в предыдущий раз.

По поводу сверхразрешения - я использую алгоритм нахождения центроида.
В массиве яркостей сначала нахожу максимальное значение, выделяю небольшой участок яркостей рядом с максимумом, потом по нижеприведенной формуле рассчитываю более точные координаторы центра.
LaTeX: P=\frac{\sum_{i}^{n} Int[i]\cdot i}{\sum_{i}^{n} Int[i]}
Последний раз редактировалось citizen 26 янв 2016, 15:56, всего редактировалось 2 раз(а).
OpenSimpleLidar - проект простого самодельного лидара.
Аватара пользователя
citizen
 
Сообщения: 369
Зарегистрирован: 12 окт 2008, 12:40
Откуда: Красногорск, Подмосковье

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

Сообщение citizen » 03 дек 2012, 21:18

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

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

Сообщение elmot » 03 дек 2012, 22:02

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

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

Сообщение noonv » 03 дек 2012, 22:28

нет слов - замечательно!
Аватара пользователя
noonv
 
Сообщения: 600
Зарегистрирован: 21 май 2007, 22:57
Откуда: Калининград
прог. языки: C++

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

Сообщение Romeo » 04 дек 2012, 21:39

citizen писал(а):Снял видео, в котором показано, как работает дальномер, установленный на роботе.

Управляется вручную? Есть ли идеи по векторизации карты?
Мой результат на скрине (исходные данные введены вручную, дальномера пока нет).
Есть идея, как на векторизованной карте находить собственные координаты.
Вложения
2.JPG
Аватара пользователя
Romeo
 
Сообщения: 320
Зарегистрирован: 04 фев 2009, 16:02
Откуда: Десногорск
прог. языки: VB, MicroC, Pascal, С++ Builder

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

Сообщение citizen » 04 дек 2012, 22:34

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

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

Сообщение Romeo » 04 дек 2012, 23:02

1.Разрывы линий устранять в процессе векторизации (например, зачем учитывать то, куда робот проехать не сможет), пусть будут сплошными.
2.По нахождению положения на карте:
Изначально в памяти пусто. После включения робота и сканирования окружающего пространства, производится запоминание элементов карты (элементы - линии в полярной системе координат). При перемещении робота, на вновь сформированном "кадре" последовательно ищутся элементы карты (по длине и взаимному расположению). Искать все элементы не нужно, достаточно 3-4 штук. Далее определяется расположение робота, учитывая расстояние до элементов и относительный угол (т.е. угол поворота дальномера).
Аватара пользователя
Romeo
 
Сообщения: 320
Зарегистрирован: 04 фев 2009, 16:02
Откуда: Десногорск
прог. языки: VB, MicroC, Pascal, С++ Builder

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

Сообщение elmot » 04 дек 2012, 23:10

citizen писал(а):Хотя было бы интересно услышать любые предложения.

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

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

Сообщение citizen » 04 дек 2012, 23:43

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

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

Сообщение robovan » 06 дек 2012, 20:38

а он на 360 градусов врашается:-)
Самое важное в жизни- найти человека , который смотрит на мир, так же как и ты:)
Аватара пользователя
robovan
 
Сообщения: 1536
Зарегистрирован: 04 сен 2012, 00:39
Откуда: Украина
ФИО: Владимир

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

Сообщение citizen » 25 янв 2013, 00:13

Удалось кое-как запустить hector slam под ROS.
В результате получилась вот такая карта:
Изображение
Как видно, из-за погрешности не все стены параллельны - накапливается угловая ошибка.
По какой-то причине возникла ошибка локализации в верхней части карты, в результате чего карта частично исказилась. Пришлось вручную указывать положение робота на карте.
Часть ошибок, вероятно, связана с искажением данных на выходе дальномера при вращении робота вокруг оси - 3 оборота в секунду - достаточно низкая скорость для дальномера.
OpenSimpleLidar - проект простого самодельного лидара.
Аватара пользователя
citizen
 
Сообщения: 369
Зарегистрирован: 12 окт 2008, 12:40
Откуда: Красногорск, Подмосковье

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

Сообщение elmot » 25 янв 2013, 00:35

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

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

Сообщение noonv » 25 янв 2013, 08:19

супер!
Аватара пользователя
noonv
 
Сообщения: 600
Зарегистрирован: 21 май 2007, 22:57
Откуда: Калининград
прог. языки: C++

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

Сообщение CiSi » 25 янв 2013, 14:47

Круть! А вертикальную ось (У) не планируете добавить, да бы 3D модель получить?
Аватара пользователя
CiSi
 
Сообщения: 1027
Зарегистрирован: 04 окт 2007, 16:11
Откуда: иваново
Skype: cybsys1
прог. языки: Delphi
ФИО: Павел

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

Сообщение citizen » 25 янв 2013, 16:58

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

Пред.След.

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

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

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