Easyelectronics.ru

Электроника для всех
Текущее время: 23 сен 2018, 19:34

Часовой пояс: UTC + 5 часов



    • JLCPCB - Прототипы 10 PCBs всего за 2$ (100*100mm, 2-layer)
    • Как мы делаем платы, смотрите на YouTube
    • Крупнейшая китайская фабрика прототипов. 300000+ заказчиков и 10000+ заказов в день!
    • LCSC - Крупнейший китайский онлайн магазин комплектующих.

Начать новую тему Ответить на тему  [ Сообщений: 4 ] 
Автор Сообщение
 Заголовок сообщения: Датчики робота SWG.
СообщениеДобавлено: 03 фев 2013, 18:53 
Супермодератор
Аватара пользователя

Зарегистрирован: 26 янв 2010, 22:08
Сообщения: 7549
Откуда: Алма-ата
Решил выделить для этого отдельную тему.
Хоть уже много писал об этом, но информация разбросана по десяткам тем (в основном других авторов) этого форума.
Поэтому, прежде чем освещать ход работ по ориентации и навигации, которыми начну заниматься вплотную параллельно со сборкой всего конструктива в кучу, и переводом на автономное функционирование, решил более - менее упорядочить то, что уже есть.
Начну с датчиков, уже установленных на роботе, и которые будут установлены в ближайшее время.
Итак, что мы уже имеем.

1. Контроль ближней зоны.
=========================

1.1. Датчики пола.
----------------------
Это - жизненно важное для моего робота. Поскольку дом мой 2х этажный, и мы с роботом живем на 2 этаже.
И имеем лестницы и люки в полу, для моего перемещения между этажами. Но они не пригодны для робота.
Мало того, падение в люк по почти вертикальной лестнице, с высоты почти 3 метра, может оказаться для него разрушительным.
Поэтому у меня на бампере, по углам, имеются датчики пола, глядящие вниз.

Проблема тут в том, что отражающие свойства поверхности сильно различаются. Это и крашеный пол, и ковровые покрытия, и линолеум, и бетон или земля (во дворе).
Соответственно, чувствительность датчиков должна быть высока. Но при высокой чувствительности возможно срабатывание от света, отраженного от верхней ступеньки лестницы, расположенной всего на см 20 ниже уровня пола, или вообще от боковых стенок люка.
Кроме того, световой поток, идущий снизу через люк, может превышать освещенность пола второго этажа...

Были опробованы разные варианты (с ИК излучателями и видимого спектра, разными типами фотоприемников - фотодиодами, фоторезисторами).
Выбран был (теперь уже в далеком 2008г), вариант с подсветкой белого цвета и приемниками на фоторезисторах, как имеющих высокую чувствительность в широком диапазоне освещения.

Подключение было сделано на цифровые входы с регулируемой чувствительностью. Хотя предусмотрена возможность переключения этих входов в аналоговый режим с АЦП, что теперь, наверное, и сделаю.

Программа проверяла состояние входов при включенной и выключенной подсветке, порог срабатывания настраивался подстроечниками на бамперах, как силы света осветителей, так и чувствительности фоторезисторов.

Удалось добиться более - менее устойчивого распознавания люков, но все же лучше перейти в аналоговый режим, с более широким диапазоном реагирования и более гибкой программной настройкой.

Займусь этим в ближайшее время, когда подключу ходовой контроллер к центральному. Хотя бамперы можно отлаживать и автономно, - у них есть свой USART, и еще в прошлом году я прошил в контроллер бамперов бутлоадер, (как и в башне, и в ЦК).
Что позволит вести отладку и смену прошивок, не вытаскивая контроллер (PIC16F873/876) из панельки на плате, по шнурку на COM-порт. А теперь для этого у меня есть и удлинитель COM - порта на блютусе.

1.2. Датчики столкновения.
--------------------------------

4 штуки, по углам бамперов. Использованы оптопары на отражение, (на платах бамперов), и металлические угольники, прикрученные к корпусу робота. (Видно на фото).
Реагируют как на перемещение взад-вперед, так и на поперечные смещения бамперов, которые мягко подвешены (на поролоновых подушках).

В большинстве случаев позволяют определить угол, которым произошло соприкосновение (при срабатывании только одного из 2х датчиков бампера).
Нормально фиксируются смещения порядка 2-3 мм.

1.3. ИК-локаторы ближней зоны.
-----------------------------------------

Сделаны на приемнике - TSOP посреди каждого бампера (переднего и заднего), и по три ИК светодиода на каждом углу бампера.
Ток через светодиоды регулируется подстроечниками на платах бамперов.
Но чувствительность этой системы оказалась так велика, что настроить ее на срабатывание с дистанции 20-21см удалось только после того, как одел на TSOPы черные колпачки от фломастеров. Или намотав по 2-3 слоя черной тряпичной монтерской изоленты...

Светодиоды выдают пачку из 10 импульсов частотой 36 КГц, по очереди: один угол переднего и один угол заднего, потом - другая пара углов.
После окончания пачки импульсов проверяются состояния TSOP. Если "0" - зафиксировано препятствие в соответствующем секторе.

1.4. Контроллер бамперов.
---------------------------
Состояния датчиков бамперов собираются в 2 байта, 12 бит которых соответствуют состоянию каждого из датчиков, оставшиеся 4 бита - обобщенные состояния датчиков каждого угла.

При отсутствии препятствий в ближней (порядка 20-25см) зоне, оба байта содержат 0. При срабатывании любого из датчиков бамперов состояние будет отличаться от"00".

По наличию двоичных единиц и их позициям ходовой (а также - теперь и ЦК) - легко определяют расположение препятствия и его характер. Отсутствие пола, столкновение с бампером, или предмет в зоне обнаружения ИК-локатора.

Пересылка байт состояния бампера происходит между контроллером бамперов и ходовым, по SPI, по запросу ходового (он всегда - мастер).
В покое - раз в 100мс, при движении - можно чаще. Расстояние от датчика пола до точки опоры ведущего колеса = 5см.

Значит, чтобы не свалиться в дыру, при скорости робота 20см в сек (нормальная его крейсерская скорость в экономическом режиме), надо обновлять информацию не реже 4 раз в секунду (через 250 мс).

Исходя из этого - и был выбран интервал опроса, по умолчанию - 100мс.
За это время робот сдвинется всего на 2 см при указанной скорости, и даже в случае единичного пропуска срабатывания датчика, останется еще полтора интервала в запасе.
Но в программе заложена возможность менять интервал опроса командами извне (было - по радиоканалу на ходовом контроллере, теперь будет получать команды по межмодульному интерфейсу от ЦК).

--------------------------------------
Подробно о бамперах было тут:
Робот на контроллере PIC от SWG (в основном про ходовой контроллер):
http://easyelectronics.ru/robot-na-kont ... t-swg.html

Робот на контроллере PIC от SWG. Часть 2 (по контроллеру бамперов):
http://easyelectronics.ru/robot-na-kont ... ast-2.html

Робот на контроллере PIC от SWG. Часть 3 (платы и датчики бамперов).
http://easyelectronics.ru/robot-na-kont ... ast-3.html

Там было много обсуждений разных вопросов в комментариях. Думаю, будет полезно. Да и повторяться лишний раз - в лом...
Продублирую только некоторые рисунки (чтобы были тут под рукой).
Схема заднего бампера (на нем стоит контроллер бамперов):
Show

Схема переднего бампера (подключен к контроллеру заднего):
Show

Платы бамперов:
Show


В следующем сообщении - думаю описать датчики башни.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Датчики робота SWG.
СообщениеДобавлено: 15 фев 2013, 01:16 
Супермодератор
Аватара пользователя

Зарегистрирован: 26 янв 2010, 22:08
Сообщения: 7549
Откуда: Алма-ата
Продолжу.
В самом корпусе - у ходового контроллера есть еще датчики одометров, для контроля пройденного каждым колесом пути. По две оптопары на колесо (со сдвигом, кратным половине шага секторов), что позволяет однозначно определять направление перемещения, и исключает ошибки, возможные при одной оптопаре, при колебаниях колеса (например при перегрузке двигателя) на границе сектора. Что с одной оптопарой начинает гнать приращение пути, хотя робот не может сдвинуться с места. Этот вопрос я подробно освещал еще в комментах по своему роботу на основном сайте, в разделе "робототехника".

Сначала хотел поставить оптопары на отражение, а диски с секторами наклеить на алюминиевые диски колес с внутренней стороны. Что давало хорошую защищенность от пыли и поломок оптопар.

Но разрешение в этом случае получается не очень высоким, а я со временем решил сделать его порядка 1 мм (~240-250 отсчетов на оборот колеса). Это возможно только с оптопарами на просвет, и прозрачными дисками с напечатанными на них секторами.

Пока их так и не поставил. Было полно других дел, а отладка плат ЦК и контроллера башни делалась при стоящем на месте роботе. Когда займусь навигацией, робот будет на ходу, к тому времени и датчики одометров поставлю. Ну, а програмный модуль для них давно в ходовом контроллере есть, и отлажен. Пройденный же путь пока задается не по одометрам, а по времени и скорости работы двигателей.

Теперь - о башне. Больше всего датчмков будет на ней.
Для этого поворотная платформа (башня) - достаточно велика, по ширине - равна корпусу, по длине - почти его половине. Башня - 143х143мм, корпус - 145х195мм, с колесами и бамперами - 210х260мм.

Башня может вращаться вкруговую, но чтобы не перекручивался жгут (питание 12v + межмодульный интерфейс), пропущенный через полую ось поворотного узла (диаметр канала ~6мм), угол поворота ограничен датчиками величиной чуть более 360 градусов. Что позволяет делать круговые панорамы и заглядывать "за спину".

Для контроля угла поворота и калибровки положения башни, имеются 2 датчика. Хорошо показаны при описании поворотной платформы в основной теме о моем роботе -
Робот SWG - мысли вслух
viewtopic.php?f=11&t=1582

Покажу поближе.
Дно поворотной платформы со снятой осью поворотного узла. Вверху видна щелевая оптопара (с 5,25" дисковода), внизу - рычажок 2х стороннего концевика от CD-ROM (его хорошо видно но одном из снимков внутренности коробки башни, что в главной теме, стоит на боковой стенке рядом с шаговиком камеры).
Show

На корпусе робота закреплен небольшой регулируемый угольник (черного цвета), который при вращении башни отклоняет рычаг концевика (ограничение поворота назад), или перекрывает луч оптопары (датчик центрального, прямо по курсу, положения платформы).
Show


Есть команды (и соответствующие подпрограммы) поворота платформы влево или вправо на заданный угол, а также автоматическая установка по центру.

При поиске центра - идет поворот в ближайшую к центру сторону, до срабатывания датчика центра, или датчика конца поворота, - в этом случае направление вращения меняется на противоположное и ищется центр.

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

Первоначально башню вращал шаговик, через передачу 12/90 зубьев. Потом я его заменил на ДПМ-20 с редуктором (подробности были в главной теме). Что уменьшило расход тока при повороте на порядок, при большем усилии и меньшем шуме. Но усложнило вычисление угла поворота.

Сейчас коэффициент угла поворота программа вычисляет так:
По команде или при подаче питания - делается контрольное вращение башни влево-вправо до ограничителя, потом ищется центр. После чего угол считается 0, а время полного поворота влево и вправо делится на 200, что дает время на 1/100 влево и вправо от центра.

С пульта поступают команды "влево" и "вправо", с количеством сотых, по которым башня устанавливается ее контроллером в нужное положение.
Для этого на пульте есть движковый регулятор, задающий положение башни, а также кнопки "Совместить", "Центр", "Шаг вправо", "Шаг влево". По команде "совместить" контроллер вращает башню влево или вправо (в зависимости от текущего положения и заданной позиции). По "Шаг вправо", "Шаг влево" - делается поворот на 1/200 = ~1,8 градуса в указанную сторону.

Для более точного контроля положения сейчас рассматриваю 2 варианта. - Абсолютный и относительный.
Для абсолютного контроля положения (не зависящего от предыдущего состояния, или если принудительно была повернута башня внешними усилиями), - будет установлен точный потенциометр (10-оборотный или 1 - оборотный прецизионный), который будет замеряться АЦП контроллера башни, и вычисляться абсолютный угол.

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

Пожалуй, на сегодня достаточно. Продолжу в следующий раз.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Датчики робота SWG.
СообщениеДобавлено: 15 фев 2013, 12:11 
Супермодератор
Аватара пользователя

Зарегистрирован: 26 янв 2010, 22:08
Сообщения: 7549
Откуда: Алма-ата
Много информации по моему роботу разбросано также по чужим темам, в том числе не только раздела Робототехника. Поэтому наверное есть смысл по ходу дела указывать ссылки и на них. Потому что при огромном количестве тем вряд ли все их просматривают, особенно старые. Вот, например, попалось на глаза, имеющее отношение к датчикам башни, конкретно - управления камерой, а также взаимодействию разных модулей с датчиками робота в целом.
viewtopic.php?p=137933#p137933
viewtopic.php?p=137972#p137972
viewtopic.php?p=138127#p138127
viewtopic.php?p=138208#p138208


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Датчики робота SWG.
СообщениеДобавлено: 16 май 2013, 14:28 
Супермодератор
Аватара пользователя

Зарегистрирован: 26 янв 2010, 22:08
Сообщения: 7549
Откуда: Алма-ата
Продолжу.
В башне планируется также установка двух датчиков, реагирующих на перемещения и приближение разных обьектов.
Один из них - предназначен для контроля сравнительно больших расстояний (~ до 3-5м). Например, практически всего обьема комнаты, в которой находится робот. Полезно для режима охраны, в отсутствии хозяина. Сделан будет на базе пиродатчика. Их у меня имеется много, разных конструкций. Например:
Show

Тут главная проблема - наличие качественной линзы Френеля с подходящей диаграммой направленности и четкими ее "лучами".
Лет 8-10 назад линзы были из достаточно прочного и качественного пластика. Например, у среднего на верхнем рисунке (2003г). Его ни разу не удалось обмануть ни дома, ни на работе, куда я таскал его похвастаться. Фиксировал малейшее шевеление. Угол обзора - порядка 120 градусов. Если ему обрезать половину корпуса (что с решеткой, пищалкой за ней, и батарейным отсеком), и повернуть вверх ногами, то при нахождении робота в углу комнаты, при отсутствии затеняющей его мебели, можно перекрыть практически всю комнату. Установить можно спереди или сзади башни. Поворачивая башню через 90 градусов, за 4 поворота можно получить круговой обзор, или отслеживать примерное положение замеченного обьекта.

Позже стали штамповать линзы Френеля из пленки. Они работают гораздо хуже. Формируемые лучи нечеткие, размытые, сама пленка часто деформируется.

Мне бы хотелось иметь диаграмму круговую, в виде полусферы, от пола до потолка, при небольших размерах самого датчика. Но такие пока не попадались. Более - менее подходит тот, что на 2 нижних рисунках. При установке на потолке - у него диаграмма направленности перекрывает всю комнату. Но на роботе, при горизонтальном расположении (например, на крышке башни), у него появляется мертвая зона от пола до полуметра - метра (в зависимости от расстояния). Что уже не очень...

Хорошо бы заиметь что-то типа такого:
Show

Но они мне пока в продаже у нас не попадались. Может, еще появятся. В остальном - особых проблем с пиродатчиками нет, могу поставить на робота в любое время.

Другой из датчиков приближения - на биениях, типа терменвокса. Лучше работает на расстояниях, соизмеримых с размером его антенны. Думаю, если сделать антенну в виде поручня вокруг башни, (на расстоянии 1-2см от ее металлического корпуса), будет хорошо реагировать на расстоянии до полуметра и более, с любой стороны. Можно - также сделать антенну в виде гибкого вертикального штыря см 10-20 над башней. Платка этого датчика давно уже сделана и проверена (писал про него еще на старом форуме, в конце 2009 года).
Схема - простейшая:
Show

Два генератора на триггерах Шмитта на частоту порядка 1 МГц, к одному из которых добавляется емкость антенны (на J2), и настраивается на частоту биений, близкую к нулевой.

Есть выход частоты биений, она же после фильтра, и выход после порогового устройства с детектором. Имеется возможность отключения генераторов сигналом логического уровня.
Также при настройке можно выключать любой из генераторов джампером (J2, J5).

Для получения максимальной чувствительности - можно мерять частоту биений (аналогично тому, как уже меряется выходная частота измерителя освещенности TSL230R), только за больший период, 1 и более секунд. Просто для обнаружения приближения некоторых обьектов - достаточно и выхода порогового устройства. Например, приближение собак, кошек или людей при автономных передвижениях. Работа датчика биений (как и пиродатчика), планируется только при неподвижном положении робота. Естественно, при движении самого робота они могут выдавать ложные срабатывания.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 4 ] 

Часовой пояс: UTC + 5 часов


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

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


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB