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 раз(а).

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

citizen » 03 дек 2012, 21:18

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

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

elmot » 03 дек 2012, 22:02

круть какая...

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

noonv » 03 дек 2012, 22:28

нет слов - замечательно!

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

Romeo » 04 дек 2012, 21:39

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

Управляется вручную? Есть ли идеи по векторизации карты?
Мой результат на скрине (исходные данные введены вручную, дальномера пока нет).
Есть идея, как на векторизованной карте находить собственные координаты.
Вложения
2.JPG

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

citizen » 04 дек 2012, 22:34

Да, пока управляется вручную.
По поводу векторизации тоже есть определенные наработки, но сейчас нет времени писать код дальше. Определенной проблемой является то, что на больших расстояниях (> 2м) падает точность определения координат, начинается их зашумление. Плюс предметы в самой комнате мешают(стул на фотографии разрывает линию).
Хотя было бы интересно услышать любые предложения.

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

Romeo » 04 дек 2012, 23:02

1.Разрывы линий устранять в процессе векторизации (например, зачем учитывать то, куда робот проехать не сможет), пусть будут сплошными.
2.По нахождению положения на карте:
Изначально в памяти пусто. После включения робота и сканирования окружающего пространства, производится запоминание элементов карты (элементы - линии в полярной системе координат). При перемещении робота, на вновь сформированном "кадре" последовательно ищутся элементы карты (по длине и взаимному расположению). Искать все элементы не нужно, достаточно 3-4 штук. Далее определяется расположение робота, учитывая расстояние до элементов и относительный угол (т.е. угол поворота дальномера).

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

elmot » 04 дек 2012, 23:10

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

Можно поставить два лазера под разными углами, один вдаль, второй вблизь. Включать по очереди. Эдак можно повысить точность.

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

citizen » 04 дек 2012, 23:43

Лазер и так установлен для достижения максимальной точности на больших расстояниях. На близких расстояниях при такой установке точность нормальная получается.

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

robovan » 06 дек 2012, 20:38

а он на 360 градусов врашается:-)

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

citizen » 25 янв 2013, 00:13

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

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

elmot » 25 янв 2013, 00:35

Вообще-то круто весьма, несмотря на мелкие покосы

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

noonv » 25 янв 2013, 08:19

супер!

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

CiSi » 25 янв 2013, 14:47

Круть! А вертикальную ось (У) не планируете добавить, да бы 3D модель получить?

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

citizen » 25 янв 2013, 16:58

Нет. Для этих целей есть kinect, при этом обработка таких массивов данных достаточно сложна.


Rambler\'s Top100 Mail.ru counter