PDA

Просмотр полной версии : Оптическая мышь как датчик положения


05.02.2002, 14:24
Первоначально сообщение было помещено в тему "Шаговые двигатели":

Вопрос знатокам: в последнее время в практику вошли оптические мыши. Похоже, что там линейная величина "кванта" перемещения может быть достаточно малой. Не имеет ли смысла просто прикрепить к осям диски, радиусом см в 10-20 и непосредственно считывать повороты этих дисов. Может точности хватит для наведения с ошибкой в несколько секунд? Для устранения эксцентриситета дисков можно поставить по два датчика по диаметрам и осреднять углы поворота.

Это избавит от проблем с изготовлением прецизионных редукторов. Тогда и шаговиками можно будет управлять не по количеству шагов, а по отсчетам датчиков.


Александр ответил:

"Линейное разрешение оптической мыши состовляет 200-800 dpi, так что может и получиться. Анатолий у меня к вам просьба - поскольку вы автор идеи повторите пожалуйста свое сообщение в новой отдельной теме,а то шаговые двигатели похоже всем поднадоели и люди могут не заметить вашего важного сообщения."

Поэтому перенес в новую тему.

06.02.2002, 14:47
Вы правы, проскальзывание имеется. Вероятно нужна подложка с неоднородной в оптическом отношении поверхностью. Ведь мышь эта проектирует изображение подложки на ПЗС и программа определяет перемещение объекта, который найдет в поле зрения. Ведь может и не найти!

Pavel Bahtinov
07.02.2002, 00:57
В данном случае мало иметь достаточное разрешение, нужна еще повторяемость результата. Обыкновенная мышка с шариком тоже дает довольно большое линейное разрешение, однако из-за проскальзывания шарика ее нельзя использовать в подобной конструкции непосредственно (любители используют только отдельные узлы). Я не знаю деталей устройства, а тем более алгоритма функционирования оптической мышки, но из общих соображений можно предположить, что явление, подобное "проскальзыванию" и здесь вполне вероятно. При использовании мышки по прямому назначению это совершенно неважно, поэтому сведения о проскальзывании вряд ли можно найти в какой-либо документации. Думаю, ответить на этот вопрос может только эксперимент. Если у кого есть такая мышь, проведите для начала простейший тест: возвращается ли курсор в ту же точку после многократных перемещений вперед-назад?

Anonymous
07.02.2002, 09:54
"Проскальзывание" безусловно может иметь место, однако мне кажется маловероятным обнаружить его при перемещении мышки по столу. При разрешении 800 DPI (а как я понял это разрешение является типовым для дешевых (15-20 у.е.) мышек "квант перемещения составляет 32 мкм. Вряд ли возможно передвигать мышку руками с такой точность. Кроме того дополнительную ошибку может вносить драйвер. Допустим установлена такая чувствительность, что перемещению на экране на 800 пк. соотвествует перемещение на столе на 4 дюйма. В этом случае при перемещении мышки на 32*3 мкм. стрелка на экране вообще будет стоять на месте. Современные программы имеют такие настройки, что быстрее всего никто не сможет определить какова же эта чувствительность на самом деле.

Anonymous
07.02.2002, 14:56
Оптические мыши фирмы Logitech (800 DPI) выполнены на микросхеме Adns2051 фирмы Aligent technologies. Эта микросхема содержит на одном кристалле CMOS матрицу и DSP процессор. Описание на микросхему можно найти здесь - http://literature.agilent.com/litweb/pdf/5988-4289EN.pdf. Там же можно ознакомиться с конструкцией оптической мыши. Datasheets и Aplication Notes Lists находяться здесь - http://www.semiconductor.agilent.com/cgi-bin/morpheus/literature/commonLitDet.jsp?BV_SessionID=@@@@0994907553.10130 77123@@@@&BV_EngineID=eadcdfckeiekbemgcgjcfijdio.0&action=datashe et&catOID=-13632&catName=Mouse+Sensors&Section=Optical+Navigation , http://www.semiconductor.agilent.com/cgi-bin/morpheus/literature/commonLitDet.jsp?BV_SessionID=@@@@0994907553.10130 77123@@@@&BV_EngineID=eadcdfckeiekbemgcgjcfijdio.0&action=appnote &catOID=-13632&catName=Mouse+Sensors&Section=Optical+Navigation. С алгоритмом обработки информации - Optical navigation technology пока глухо.

Pavel Bahtinov
07.02.2002, 17:41
Вообще-то я думаю, проскальзывание должно быть принципиально присуще такой мышке. Каким бы способом она не определяла свое положения относительно оптического рисунка стола, отслеживать перемещение отдельных деталей этого рисунка мышь может только в пределах кадра. Точность определения положения таких деталей при этом будет ограничиваться небольшим, в данном случае, числом пикселей ПЗС. После выхода из поля зрения "знакомых" деталей и вхождения в поле других погрешности определения положения должны накапливаться и проскальзывание может составлять, наверное, несколько процентов от общего перемещения. Обнаружить такое легко, а высокое разрешение здесь вообще не при чем.

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

Anonymous
07.02.2002, 17:57
Извините ссылки дал с ошибками. 1-ая - http://literature.agilent.com/litweb/pdf/5988-4289EN.pdf . Две других не работают видимо из-за большого кол-ва символов. Надо попасть сюда http://www.semiconductor.agilent.com/cgi-bin/morpheus/pageTimeoutReset.jsp .
Затем во втором меню слева выбрать Application notes или Datasheets , а затем внизу левого столбца выбрать Mouse sensor.

Anonymous
08.02.2002, 11:35
Павел, по поводу накопления ошибок при перемещении мышки вы похоже правы. Но в этом случае величина погрешности для мышки на чипе ADNS2051 будет состовлять примерно 6%. Чего то многовато. Посоветуюсь со специалистами по метрологии. images/smiles/icon_smile.gif .Но в этом случае остается второй указанный вами способ и микропрограммы DSP процессора переписывать не нужно. Дело в том, что изображение CMOS матрицы, входящей в микросхему ADNS2051 доступно на програмном уровне. Вообще, с высокой степенью вероятности, можно предположить, что доступ к изображению существует во всех оптических мышках - иностранные производители любят вносить в свои изделия дополнительные фичи не имеющие прямого отношения к его свойствам. Попробую поискать другие микросхемы - цель - более точно сформулировать требования к свойствам поверхности и подобрать оптимальную мышку через чип. Правда выискивать такую информацию среди статей, описывающих свойства корпуса мышки и мягкость нажатия кнопок дело довольно трудоемкое. images/smiles/icon_smile.gif

08.02.2002, 13:40
Интересно, можно ли объяснить факт запаздывания временем реагирования программы. Я, например, при проверке запускал под WIN. Может между мышкой и компьютером нужен простой реверсивный счетчик, передающий данные в комп. и вся проблема решится?

[ 08-02-2002: Сообщение редактировал: Anatoly ]

Anonymous
08.02.2002, 14:23
Anatoly мышка обменивается с компьютером командными пакетами - поэтому никакой счетчик не поможет. Windows конечно гнилая ОС (это вам не RT11) images/smiles/icon_smile.gif ,но не настолько, чтобы не успевать обрабатывать поток данных мыши. Но задача в принципе решена - при использовании диска диаметром 100 мм. и датчике из оптической мыши Logitech возможно построение энкодера с точностью 1-2 угловые минуты. Но любое устройство должно работать не принципе а в кожухе. Так, что до практической реализации очень далеко.

Pavel Bahtinov
08.02.2002, 16:19
<BLOCKQUOTE><font size="1" face="tahoma, verdana, helvetica, arial cyr">quote:</font><HR>Цитата из сообщения <Александр>:
...величина погрешности для мышки на чипе ADNS2051 будет состовлять примерно 6%.<HR></BLOCKQUOTE>
Ну, с учетом всяких хитрых алгоритмов обработки, может быть и в неколько раз лучше. Впрочем, это все равно нас не спасет images/smiles/icon_wink.gif

<BLOCKQUOTE><font size="1" face="tahoma, verdana, helvetica, arial cyr">quote:</font><HR>Цитата из сообщения <Александр>:
...изображение CMOS матрицы, входящей в микросхему ADNS2051 доступно на програмном уровне<HR></BLOCKQUOTE>
Это замечательно, а Вы сумеете обрабатывать изображения в нужном темпе? Мышка, судя по указанной Вами документации, способна работать на скоростях 1-2 тысячи кадров в секунду.

Anonymous
11.02.2002, 13:03
Прежде всего считаю нужным познакомить конференцию с внутренней структурой микросхемы ADNS2051. Микросхема содержит на одном кристалле CMOS матрицу 16Х16 пикселей и DSP процессор с последовательным синхронным интерфейсом. Оптическая система мышки устроена таким образом, что на CMOS матрицу отображается участок поверхности размерами 1х1 мм. Поэтому оптическое разрешение матрицы составляет 1/16 мм. или 400dpi. 800dpi – это экстраполяционное разрешение. Обмен с микросхемой производится двухбайтными командными пакетами. Первый байт содержит семибитный адрес внутреннего регистра и признак операции – запись/чтение, второй – байт данных, записываемый в ADNS 2051 или считываемый из неё. Для того чтобы инициировать команду чтения CMOS матрицы достаточно выполнить одну команду записи. После подачи команды, микросхема начинает помещать в один из внутренних регистров байт данных, содержащих информацию о яркости пикселя (64 градации яркости), по одному пикселю на считываемый кадр начиная с нулевого. Пиксели пронумерованы по столбцам. В каждом кадре адрес пикселя будет инкрементироваться. Для решения нашей задачи достаточно считывать один столбец матрицы, т.е. 16 пикселей - поэтому после чтения 16 пикселей команда чтения CMOS матрицы должна быть инициирована заново. Частота кадров может программироваться в пределах, по крайней мере, 1/500 – 1/2300 сек. Будем рассматривать, вариант 1/1500 сек такая частота кадров используется при работе мышки. В этом случае время , предоставляемое для считывания и обработки одного байта, содержащего информацию о яркости пикселя составит 667 мкс. Процесс измерения расстояния самой мышкой напоминает процесс измерения отрезка большой длинны короткой линейкой. В этом случае относительная погрешность измерения составит длинна линейки деленная на половину цены деления – т.е в нашем случае 1/32 или 3%. В случае использования экстраполяционного разрешения 1/64 или 1,5%. Данная величина не может быть улучшена и определяется самой методикой измерения. Давайте измерять расстояние двумя линейками , длинной с большой ценой деления шкалы и короткой – CMOS матрицей. (Павел, если я неправильно интерпретировал ваши мысли - поправьте меня). Два её деления должны помещаться на CMOS матрице – т.е. расстояние между штрихами должно быть равно 15*1/16 мм, а толщина штриха быть равной 1/16мм. Такую линейку я предлагаю разместить на ободе диска. Время необходимое для считывания одного байта изображения я оценил в 200 мкс (не буду вникать в подробности) при программном формировании управляющих сигналов на разрядах LPT порта под DOS. В случае применения микроконтроллера это время будет примерно таким же или меньше, так как существуют однокристальные микроэвм, содержащие подобный последовательный SPI интерфейс. Следовательно время, предоставляемое для обработки самого байта, составит примерно 450 мкс. Что же это за обработка? Необходимо определить под каким пикселем находится штрих большой линейки – т.е. необходимо определить яркость пикселя 0 это или 63, естественно с некоторыми допусками, определяемыми шумами матрицы. В случае использования экстраполяционного разрешения в 800 DPI проверка на условие равенства 32+- шум. Мне кажется 450 мкс достаточно для такого анализа. Такой метод накладывает определенные ограничения на скорость вращения диска. Пусть эта величина будет например 6 мкм за время 16/1500 сек. Можно разбить процесс наводки на два этапа – быстрое и точное позиционирование. При быстрой наводке необходимо только считать штрихи. Для этого достаточно считывать 3 пикселя изображения. Величину же перемещения я оцениваю я оцениваю в 32 мкм. Т.Е. скорость может составить 32 мкм за 3/1500 сек. В этом случае время оборота диска диаметром 100 мм. составить 20 сек. Далее следует точное позиционирование описанное выше. Для дальнейшего увеличения скорости можно поднять кадровую частоту до 1/2300 сек. images/smiles/icon_smile.gif

11.02.2002, 21:32
Интересно к данной теме отнеслись Чехи. http://web.telecom.cz/elektro-metal/irc-m-01.doc
Если взглянуть в корень, то там еще много чего интересного есть. (Сразу говорю, по чешски не понимаю, чехи по русски тоже не хотят, (только что вернулся из командировки), но по смыслу и с общим словарем понять можно). Сайт мне понравился.
И еще сейчас изучаю на сайте http://alain.fraysse.free.fr/astro/hyperes/hyperes.htm принцип виртуального энкодера. Тоже интересно.
Думаю, что это довольно перспективный проект.

Гари

Anonymous
12.02.2002, 14:49
Gari, испытав непреодолимые сложности с чешским языком, нашел англоязычный вариант этого сайта http://web.iol.cz/elektro-metal/index_a01.htm . Описанный там контроллер, представляет собой оптический энкодер на двух мышках dexxa. Мышки эти сделаны на микросхемах HDNS 2000 - optical mouse sensor фирмы Agilent technology с разрешением 400 dpi и выходом на PS2 интерфейс. Подробно не разбирался, но похоже там дана полная техническая документация на контроллер – схема и прошивки 2-ух однокристалок AT89C2051 и AT90S1200. Контроллер подключается к COM порту компьютера. Но вот что странно. Диски прикрепленные к осям установки ,(с них считывают изображение мышки) не содержат никаких видимых рисок, штрихов и так далее. Кто, что по этому поводу думает ?

12.02.2002, 19:26
Да Александр, я тоже обратил внимание, но чесно говоря ничего зазорного в этом не обнаружил, потому, что эти мыши бегают у нас по столу без всяких ковров. И ничего. Принцип видать тот же. А вообще надо почитать.

Гари.

12.02.2002, 20:53
Окинул взглядом английский вариант статьи. (Кстати в корне есть и французский вариант), так из трех чешский самый полный, да это и понятно. Теперь о дисках. В английском варианте написано, что на алюминиевые диски наклеивается белая бумага. (так понимаю для лучшего отражения). В чешском варианте еще расписаны четкие размеры дисков "При длинне окружности 127,324мм -+0,002мм получаем 6400 импульсов на оборот. И еще на картинке 8 в чешском варианте показан регулировочный винт. Посредством которого как раз и можно подбирать тот необходимый периметр (длинну окружности с точностью до 0,002 мм)(а может быть он нужет для регулировки угла наклона к диску?). А штрихи и риски всякие думаю не нужны потому, что мышь сама излучает в ИК диапазоне с определенной частотой, и их же принимает, а дальше дело контроллера.

P.S. Все не представлялось случая, но так как тема как бы и родственная то датчик можно сделать и по такой схеме http://ra3ggi.qrz.ru/UZLY/encod.htm
в зависимости от двигателя можно до 2000 дискрет и выше получить.

Гари

[ 12-02-2002: Сообщение редактировал: Gari ]

Pavel Bahtinov
13.02.2002, 17:06
Гари, схема из последней ссылки (энкодер из шаговика) выдает импульсы лишь начиная с некоторой ненулевой скорости вращения. Поэтому то, что годится в качестве ручки настройки радиостанции, не слишком подходит для наших целей.
По поводу необходимости штрихов или рисок я уже писал в сообщении от 7.02.02. То есть мышки, конечно, бегают без ковриков и светят себе сами, но я просто не вижу здесь способа точного (и повторяемого) измерения координат. Может, я ошибаюсь, и такой способ существует? Напишите, если у кого появятся какие-нибудь идеи по этому поводу.
Возможно, впрочем, ошибаемся не мы, а чехи. Нам ведь толком неизвестно, испытывался ли "мышиный" датчик в составе системы и в каком объеме (они его сделали, похоже, недавно, на замену покупному энкодеру).

Александр, в принципе, мне понравились Ваши предложения по обработке данных ADNS2051. Правда, оценку максимальной скорости вращения Вы, по-моему, занизили (где-то на порядок), но это только к лучшему. Нужно, конечно, еще подумать, но мне кажется, все может очень прилично получиться, особенно если сделать на микроконтроллере с SPI. Дело за малым - кто-то должен сесть и написать программу images/smiles/icon_wink.gif
Надо только помнить, что точность такого устройства будет определяться точностью нанесения штрихов на диск, и не ждать от него больше, чем оно может дать. Правда, здесь есть простой способ повышения точности - увеличение диаметра диска, поэтому, думаю, основная область применения таких самодельных энкодеров - крупногабаритные Добсоны и т.п.

Anonymous
13.02.2002, 21:31
Меня терзают смутные подозрения, что если эту мышь "натравить" не на произвольную поверхность, а на штрихи с пространственной частотой не менее 1-2 штрихов в поле зрения, то "проскальзывания" может и не быть.

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

Anonymous
14.02.2002, 15:41
Вадим, а что вы имеете ввиду под обычным энкодером и оптопарой? Сделанный из механической мыши? Вопрос к специалистам по астрофотографии. Какой шаг полярной оси в угловой мере допустим при использовании,например, обьектива Рубинар 5.6/500 для пленочной астрофотографии. Желательно привести скажем три характеристики - максимальную предельно допустимую, среднюю, и предельно точную( т.е. такую после которой уменьшение шага ничего не дает).

Pavel Bahtinov
14.02.2002, 17:22
Шаг полярной оси - в смысле шаг двигателя часовика?
Типовое пятно рассеяния на негативе, который можно назвать удавшимся - 30мкм. Правда, тут писали, что "Рубинар-500" способен рисовать картинку значительно лучше, но, думаю, на обычных пленках вряд ли получится пятно меньше 20мкм. Чтобы не слишком его дополнительно размазывать, примем величину шага за 10мкм. Для фокуса F=500мм и нулевого склонения это соответствует 4" на полярной оси. Это "средняя" (ближе к "максимально допустимой") оценка. По возможности, лучше уменьшить шаг еще в 2-4 раза (тем более, вдруг потом захочется что-то более длиннофокусное повесить).

По поводу "обычного энкодера". Думаю, Вадим имел в виду точно такой же по размеру диск с такими же штрихами, но на который "смотрит" не ПЗС мышки, а простая оптопара. По точности, действительно, разницы никакой. Преимущество ПЗС лишь в том, что здесь получается "встроенный" интерполятор. На оптопарах интерполяция тоже возможна, но схемное решение может оказаться более громоздким, чем с мышкиной ПЗС.

[ 14-02-2002: Сообщение редактировал: Pavel Bahtinov ]

Anonymous
18.02.2002, 09:24
Энкодер может работать без штрихов. При многократных измерениях ПЗС матрицей абсолютная погрешность будет расти, а относительная будет падать. Пусть X,Y, .. Z - длины отрезков, которые были измерены при помощи ПЗС, а Dx, Dy, .. Dz - величины абсолютных погрешностей сооответствующих измерений. В этом случае величина абсолютной Ds погрешности измеренного перемещения S=X+Y+..+Z будет определяться по следующей формуле: Ds= +- SQRT(Dx**2+ Dy**2+..+Dz**2). А относительная погрешность: ds=+-SQRT(Dx**2+Dy**2+..+Dz**2)/(X+Y+..+Z). (SQRT – квадратный корень, **2 – возведение в квадрат). Примем для простоты анализа Dx=Dy=..=Dz=0.03. Эта величина - погрешность матрицы при оптическом разрешении. Вычислим погрешности для одного оборота диска (S=314 мм). Ds=SQRT(314*0.03**2)=0.53 мм, что составит 35 угловых минут. Для экстраполяционного разрешения ADNS2051 Ds=0.26 мм, а в угловой мере 18 минут. При дальнейшем вращении диска погрешность будет расти далее. Это явно недостаточная точность.
Предельное экстраполяционное разрешения ПЗС матрицы в данном случае составляет 400*64=25600DPI, погрешность измерения коротких отрезков – 5Е-4. Не знаю можно ли достигнуть такой величины экстраполяции. Я не знаю, какую величину получили чехи, но предположим, что они подняли оптическое разрешение в 8 раз. В этом случае погрешность на коротких отрезках составит 3.75Е-3. Ошибка на один оборот в этом случае составит 0.067мм, а в угловой мере 4.5 угловой минуты. На десять оборотов ошибка составит 14.2 угловых минуты. При некотором значении экстраполяции можно получить некоторую точность (чехи, насколько я понял, заявляют 4.7 угловых минуты, по крайней мере таким заявлен шаг позиционирования) при перемещении достаточном для работы в течение одной ночи. Приведу данные для предельного экстраполяционного разрешения. Ошибка на один оборот ~ 30 угловых секунд, на 10 оборотов ~90 угловых секунд на 100 оборотов ~ 5 угловых минут. Павел, спасибо за информацию по «Рубинару». Данные были мне нужны для просчета возможностей контроля хода часового механизма .

19.02.2002, 22:10
Привет всем!
Я думаю, для того чтобы избавиться от нарастания погрешности с каждым оборотом, нужно использовать комбинированную систему. А именно: К примеру радиальную повехность диска считывает "оптическая мышка", а отверстие сброса предназначено для оптопары, которая будет при каждом обороте определять начало нового цикла считывания для "оптической мыши" (ОМ).

Теперь к вопросу о качестве поверхности для ОМ. ОМ плохо работает на однородных поверхностях. Поэтому чехи и клеиили бумагу, которая имеет неоднородную поверхность. Для ОМ не нужно наносить на поверхность штрихи, т. к. какой смысл ее использовать? Лучше тогда обычную оптопару. А диск изготовленный на токарном станке будет с шероховатостью поверхности достаточным для ОМ.

19.02.2002, 22:15
http://starlab.ru/upload/AlexU2idea.jpg
пояснение выше

Pavel Bahtinov
20.02.2002, 10:03
Alex U2, боюсь, Вы не совсем поняли - идея состояла в том, чтобы поставить диск прямо на ось (которая за всю ночь наблюдений не совершает и одного оборота).
Штрихи не нужны для того, чтобы мышка работала, но они могли бы играть роль, аналогичную отверстию для "сброса в 0" на Вашей схеме.

[ 20-02-2002: Сообщение редактировал: Pavel Bahtinov ]

b)rash
07.02.2010, 01:16
Всех приветствую! Хотя тема с 2002 года и не относится к астрономии и энокодерам ) всё же напишу может кто нибудь ответит. Задача ставится такая: необходимо экспериментально определить колебания в радиальном направлении вращающегося вала (100 до 10000 об/мин) на подшипниках (см. схему). Возможно ли применить оптическую (а может есть смысл использовать лазерную) мышь в качестве такого датчика? Колебания появляются из-за зазоров, биений и податливости в опорах. Величина колебаний меньше 15 микрон. Может кто посоветует другую схему, самодельные датчики. Всем спасибо.