roboforum.ru

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

Ультразвуковой дальномер

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

Ультразвуковой дальномер

Сообщение Romeo » 13 янв 2014, 02:26

Хотел сделать лазерный дальномер, но из-за сложности механики и настройки решил построить альтернативный вариант. Т.е. вместо лазера использовать сонар Maxbotix LV-MaxSonar-EZ0.
В качестве привода использовал шаговый униполярный двигатель от струйного принтера (не большой, а маленький, который с чернилами возится). Через редуктор понижаю обороты. Питание на вращающуюся платформу подаётся через гибкие пластины, которые ездят по диску. Через них же снимается аналоговый сигнал с сонара. В выходной шестерне редуктора с края просверлено отверстие. На шестерню установлена оптопара, которая ловит начало отсчёта.
Корпус редуктора и щёточный узел напечатаны на 3D-принтере. Управляется всё это Orduino Nano. Скетч уже дописан и изменяться не будет. Данные идут на комп, где и обрабатываются. Прога дописана процентов на 60. Осталось научить комп запоминать карту и устранить баги с приёмом данных.
Думаю и такой проект имеет право быть. Может что и получится.
Вложения
Step1.rar
Скетч ардуины
(672 байт) Скачиваний: 0
2.JPG
1.JPG
Аватара пользователя
Romeo
 
Сообщения: 320
Зарегистрирован: 04 фев 2009, 16:02
Откуда: Десногорск
прог. языки: VB, MicroC, Pascal, С++ Builder

Re: Ультразвуковой дальномер

Сообщение loox » 13 янв 2014, 15:11

Romeo
При использовании MAXSonar, столкнулся с проблемой помех при отражении от поверхности ( например пола)
Скажи пожалуйста: какие объекты видишь, на каком расстоянии и прочее
Спасибо Loox
loox
 
Сообщения: 326
Зарегистрирован: 26 мар 2008, 12:45

Re: Ультразвуковой дальномер

Сообщение Romeo » 13 янв 2014, 16:15

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

Re: Ультразвуковой дальномер

Сообщение loox » 14 янв 2014, 00:14

Romeo
Почему я задал Вам вопросы:
1. Судя по "картинкам" которые Вы представили, Вами не учитывается диаграмма излучения передатчика и Вы учитываете
только точку перпендикулярно оси MAXSonara
Вероятно, у меня не правильный сонар, или не достаточно знаний( что весьма более вероятно), то ножку стола( на расстоянии 2 м) вы должны видеть в пределах весьма большого угла поворота вашего сонара.
Прошу Вас, если не затруднит, каким образом вы фиксируете препятствие?
Спасибо Loox
loox
 
Сообщения: 326
Зарегистрирован: 26 мар 2008, 12:45

Re: Ультразвуковой дальномер

Сообщение Romeo » 14 янв 2014, 01:05

Правильно. Диаграмму излучения не учитываю. Показания от сонара никак не корректирую. Просто беру, что даёт.
А препятствие "проявляется" за несколько проходов радара. Если пошаманить с фильтрами и прочим, то можно хорошую картинку получить.
Поставил перед радаром фотоштатив (толщина 8 см). Прогнал радаром несколько раз. Отчёт на картинке.
Размер клетки - 5 см. Видно, что объект (обведён синим) сначала большой и довольно размазан.
Но потом, становится лучше. Понятно, что с размером радар врёт. Но для робота габаритами 20х20 см. этого вполне достаточно.
Вложения
1.JPG
Чем темнее клетка, тем вероятнее нахождение препятствия.
Аватара пользователя
Romeo
 
Сообщения: 320
Зарегистрирован: 04 фев 2009, 16:02
Откуда: Десногорск
прог. языки: VB, MicroC, Pascal, С++ Builder

Re: Ультразвуковой дальномер

Сообщение loox » 14 янв 2014, 20:42

Romeo
Что обозначает "пошаманить фильтрами"?
Спасибо Loox
loox
 
Сообщения: 326
Зарегистрирован: 26 мар 2008, 12:45

Re: Ультразвуковой дальномер

Сообщение Romeo » 15 янв 2014, 00:20

:) попробовать математическими методами убрать шумы, обработать конечную карту. Со SLAM можно ознакомиться, там похожие задачи.
Фильтр Калмана: forum6/topic6189.html?hilit=%D0%BA%D0%B0%D0%BB%D0%BC%D0%B0%D0%BD%D0%B0
Я изначально и не расчитывал, что сонар даст мне хорошие результаты без последующей их обработки.
Аватара пользователя
Romeo
 
Сообщения: 320
Зарегистрирован: 04 фев 2009, 16:02
Откуда: Десногорск
прог. языки: VB, MicroC, Pascal, С++ Builder

Re: Ультразвуковой дальномер

Сообщение MEXAHuK » 15 янв 2014, 05:30

Калманом фильтровать входной сигнал, а для выделения объектов можно использовать двумерные линейные фильтры.
Расчетов там довольно много, но действия простые - сложение и умножение. Для нерекурсивных фильтров используется один движок, меняются только маски. А маски есть на любой вкус - выделение вертикальных/горизонтальных/диагональных линий, выделение малоразмерных деталей из шумов, и т.д.
Аватара пользователя
MEXAHuK
 
Сообщения: 228
Зарегистрирован: 07 янв 2005, 23:39
Откуда: г.Норильск, Россия
прог. языки: Pascal, C, C++
ФИО: Раф Попов

Re: Ультразвуковой дальномер

Сообщение Romeo » 15 янв 2014, 16:24

Спасибо. Как раз занялся формированием карты из одиночных сканов. Слышал про линейные фильтры, надо попробовать.
Аватара пользователя
Romeo
 
Сообщения: 320
Зарегистрирован: 04 фев 2009, 16:02
Откуда: Десногорск
прог. языки: VB, MicroC, Pascal, С++ Builder

Re: Ультразвуковой дальномер

Сообщение loox » 17 янв 2014, 11:58

Romeo
Извини
Я так и не понял как Вы фильтруете сигнал - какова идея.
Моя остойчивость вызвана тем, что я пытался делать подобную задачу, но кроме того, что робот смог обходить препятствия ( искать выход, прокладывать себе маршрут) ничего не вышло - карты я не построил.
У сонара большой угол "завсветки".
Поскольку я могу делать сонары, то сейчас пробую сделать сонар на подобии эхолота - измерять расстояния до всех объектов, попадающих в поле зрения сонара. Я полагаю что в таком случае вероятнее всего можно будет оценить картину окружающего пространства в конкретной точке.
Спасибо Loox
loox
 
Сообщения: 326
Зарегистрирован: 26 мар 2008, 12:45

Re: Ультразвуковой дальномер

Сообщение Romeo » 17 янв 2014, 16:37

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


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

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

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