Организуется научный проект Корректор Джойстика Программный

Discussion in 'Hardware and Software' started by ranger, Jan 6, 2004.

  1. ranger

    ranger Well-Known Member

    Joined:
    Feb 15, 2000
    Messages:
    841
    Location:
    spb
    Организуется научный проект Корректор Джойстика Программный

    Набираются несколько человек для помощи. проект OpenSource
    самая большая проблема у нас с подменой вин координаты на драйвере, т.е никто не знает как события перехватывать менять и обратно пускать

    в атаче док с картинками

    документ охраняется авторским правом ;-)

    Если получится будем делать шараваре и продавать буржуям ;-)

    типа как наше ноухау? Ваще странно на истребителях такой софт есть, а на РС сделать никто не догадался...



    "Интеллектуальный Корректор Джойстика" ИКД 1.0

    Санкт-Петербургский Государственный Университет Аэрокосмического приборостроения в лице Гербова Алексея Борисовича и Слюсаренко Александра Сергеевича
    Представляют программный комплекс повышения прецезионности игровых манипуляторов.

    Стандартный, наиболее распространенный игровой манипулятор (далее джойстик) стандарта подключения DB15 (игровой порт) имеет ряд недостатков, обусловленных следующими факторами:
    Крайне низкая точность позиционирования указателя, обусловленная техническими характеристиками джойстика и геймпорта.
    С одной стороны, резисторы, использующиеся как датчики координат в большинстве джойстиков имеют естественный уровень шума 1-5%, который со временем из-за механического износа резисторов может достигать 5-20%.
    С другой стороны, оптические элементы, иногда применяющиеся в игровых манипуляторах, хоть и имеют большую точность 0.1-1%, но более чувствительны к параметрам питающего напряжения, что в итоге не позволяет решить вопрос точности движения ручки.
    Обе схемы, помимо всплесков питающего напряжения и апериодических "пробоев" по координатным осям, также чувствительны к внешним наводкам, что требует максимально качественного заземления. Кроме того, решающее воздействие на манипуляторы оказывает качество (как правило низкое) системного блока питания и организация (к сожалению ущербная) работы игрового порта (который иногда сам является источником помех).
    Таким образом, на практике необходимо приложить неимоверные усилия чтобы заставить пресловутый "крест" стоять на месте, а не совершать флуктуации с той или иной амплитудой.
    Конечно точности обычного джойстика может хватить для управления двухмерным персонажем, перемещающимся в четырех заранее выбранных направлениях, но в наше время, когда все больше игровых и неигровых разработок из разряда аркад перемещаются в категорию имитаторов и симуляторов, этого уже становится недостаточно.
    Как правило, после осознания этого, пользователь "классического" джойстика идет в магазин и приобретает модель от именитого производителя, какого же бывает его удивление, когда он понимает что и новый "друг" страдает прежними недугами.
    И с этого момента по просторам интернета растекается еще одна ветка обсуждения с советами переустановить опционную систему или сменить материнскую плату. Многие в отчаянии берутся за паяльники, пытаясь максимально нивелировать вышеописанные негативные аспекты. Но и этот способ тернист.
    Таким образом на данный момент НЕТ возможности обеспечить должный уровень прецезионности игровых устройств без привлечения методов научного тыка и шаманства.

    Точнее так было до текущего момента.

    Фактический, любое движение джойстика представляет собой серию отрезков, которые получаются соединением двух точек, одна из которых получена во время предыдущего опроса манипулятора, и вторая, в которой на данный момент находится перекрестие.
    Возьмемся утверждать, что любое перемещение указателя джойстика даже по самой причудливой траектории можно адекватно представить отрезками вида kx+b.
    В свою очередь каждый такой отрезок будет представлять собой набор из N точек, полученных при опросе устройства.
    Стоит отметить, что по сути дела задача фильтрации состоит в выборе между уровнем возможного шума и требуемой чувствительностью устройства.
    На каждом промежутке по совокупности точек строится аппроксимирующая прямая, после чего производится повторный анализ, и если определенная точка на кривой находится на слишком большом удалении от соседних, то она отбрасывается, а прямая строится заново.
    Повторимся, что существует риск «смазать» момент, когда на входе мы получаем не очередной всплеск, а с осознанное действие пользователя, однако при достаточно малом размере отрезков разбиения и условии, что пользователь не «трясет» ручку с частотой и амплитудой помех, эти негативные эффекты проявляться не будут.
    На рисунках отображены классический вариант обработки событий манипулятора и результаты фильтрации тех же отчетов.



    Стандартный вариант Интеллектуальный












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

















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

    Стоит также отметить, что значительно более гуманное «сглаживание» траектории перекрестия можно получить используя методы аппроксимации более высокого порядка. Например, если соединять точки не отрезками прямых, а кривыми второго порядка, (Безье, Spline, e.t.c).
     
  2. -andy-

    -andy- Well-Known Member

    Joined:
    Feb 12, 2000
    Messages:
    8,871
    Location:
    St.Petersburg
    Re: Организуется научный проект Корректор Джойстика Программный

    А ты пробовал в WB включать сглаживание? Понравилось? Мне категорически - нет.

    -andy-
     
  3. mcgru-

    mcgru- Well-Known Member

    Joined:
    Sep 21, 2000
    Messages:
    61,560
    Location:
    Tomsk, Russia
    sepukked
     
    Last edited: Jan 30, 2013
  4. bzdems

    bzdems Well-Known Member

    Joined:
    May 3, 2001
    Messages:
    10,144
    Location:
    msk, ru
    Re: Организуется научный проект Корректор Джойстика Программный

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

    ranger Well-Known Member

    Joined:
    Feb 15, 2000
    Messages:
    841
    Location:
    spb
    Re: Организуется научный проект Корректор Джойстика Программный

    тык у меня система круче сонаровской ж-)
    больше и тяжелее ;-)

    только он еще об этом не знает

    про серьезность в точку ;-)
     
  6. -exec-

    -exec- FH Consultant

    Joined:
    Jan 29, 2000
    Messages:
    24,690
    Location:
    xUSSR
    Re: Организуется научный проект Корректор Джойстика Программный

    тут скорее медианная фильтрация...
     
  7. sonar-

    sonar- Well-Known Member

    Joined:
    Feb 16, 2001
    Messages:
    6,865
    Location:
    Russia
    Re: Организуется научный проект Корректор Джойстика Программный

    Рэйнджер, блин... Опять твоя глобальная идея.... Что, 500 метров до меня не пройти и наглядно не убедиться, что с хорошей оптической мышкой и педалями никакие опен-сорцы твои не нужны? Это во-первых.
    Во-вторых, для точной настройки джоя dxtweaker тебе в зубы.
    В-третьих, и так всё замечательно сглаживается. Дампером.

    Я уже на этом конструировании уже собаку съел. Знаешь, что самое сложное ? Не сглаживание... А обеспечение равномерности загрузки ручки и центровка. Из-за этого я и отложил доработку Сонарстика. Самая главная рабочая зона джойстика - это первые 15-35% от нуля. И отсутствие точной центровки и равномерность движения рукоятки убьёт всю электронную компенсацию точности.

    PS: в УСБ-джоях всё сглаживается драйвером.
     
    Last edited: Jan 6, 2004
  8. mcgru-

    mcgru- Well-Known Member

    Joined:
    Sep 21, 2000
    Messages:
    61,560
    Location:
    Tomsk, Russia
    sepukked
     
    Last edited: Jan 31, 2013
  9. Ivan_004

    Ivan_004 Well-Known Member

    Joined:
    Jun 18, 2002
    Messages:
    613
    Re: Организуется научный проект Корректор Джойстика Программный

    Что касается сглаживание - в принипе, задача решается. Если говорить нормальным языком, следует придифференцировать кривую, построенную на интерполяции значений, полученных из гейм-порта, и убрать точки разрыва. Проблема в том, что драйвер работает в режиме ядра, где затруднительно использовать операции с плавающей точкой. А вообще, согласен с сонаром. в джое - главное равномерность. А оптический мышеджой ВААЩЕ рулит. В MSFS например, позволяет зайти на посадку с математической точностью :D

    ЗЫ : В USB-джоях все сглаживается имхо схемой
     
  10. ranger

    ranger Well-Known Member

    Joined:
    Feb 15, 2000
    Messages:
    841
    Location:
    spb
    Re: Организуется научный проект Корректор Джойстика Программный

    просто не все могут сделать стик, более того если сделать хороший стик и подрубить к плохому железу то тоже будет разочарование. Ну ладно, в птичках кое как можно летать. А в других играх хуже. Потом настроить сглаживание нельзя - Наример сделать сглаживающую безье или изменть параметры фильтрации...
    Я не математик конечно, но мне кажется что построение приближения функции к исходной по точкам это АППРОКСИМАЦИЯ. я совсем дятел?
    А можно поставить ловушку на события джойстика и подменять посылки?
    А если изменить интервал опроса джойстика? может тогда будет легче события обабатывать? В крайнем можно заменить флоат арифметику целочисленной.
    Андрюха, я ваще без центровки работаю, по мне стик должен идти свободно, по мановению лапки пилота и стоять в том положении где его оставили ;-) . У меня лично люфтов нет, стик равномерен. И потом видел я твой супер стик предидущий правда... ты типа собаку съел, а я барсука съел.

    Я мимо твоего дома каждый день почти хожу, просто щас простужен не хачу тебя заражать

    Так собравшиеся считают что фильтрация не нужна в принципе?
    Тут наверное есть некое недопонимание. Моя идея чтобы фильтровать дрожание а не реакцию пилота.
     
  11. -exec-

    -exec- FH Consultant

    Joined:
    Jan 29, 2000
    Messages:
    24,690
    Location:
    xUSSR
    Re: Организуется научный проект Корректор Джойстика Программный

    то-то я думаю тебе разрывы шить надо...
    ты понял что ты сказал? :)
    это если из правого крайнего положения его начать двигать к центру, то такая математика покажет левое положение :joystick:
     
  12. Sea

    Sea Well-Known Member

    Joined:
    Feb 9, 2001
    Messages:
    27,707
    Location:
    Ukraine, Kiev
    Re: Организуется научный проект Корректор Джойстика Программный

    Вместо резюков прикрутить колесико от мышки вместе с контроллером, и в гейм-порт подавать вместо аналогового сигнала обычные импульсы с направлением - то и фильтровать ничего не нужно, считай себе импульсы и двигай крестик. :)
     
  13. ranger

    ranger Well-Known Member

    Joined:
    Feb 15, 2000
    Messages:
    841
    Location:
    spb
    Re: Организуется научный проект Корректор Джойстика Программный

    ехес я в силу своей примитивности не понял что ты сказал. объясни плиз
     
  14. ranger

    ranger Well-Known Member

    Joined:
    Feb 15, 2000
    Messages:
    841
    Location:
    spb
    Re: Организуется научный проект Корректор Джойстика Программный

    ой иван, сорри я вначале не понял о чем ты, посмотрел в квотинг ехеса понял.
    Можно так, а можно аппроксимировать сплайнами...
    а вообще в периоде эти разрывы стремятся к нулю и не на что не влияют.
    мы же не кривые рисуем а стик опрашиваем
     
  15. Ivan_004

    Ivan_004 Well-Known Member

    Joined:
    Jun 18, 2002
    Messages:
    613
    Re: Организуется научный проект Корректор Джойстика Программный

    Да, пожалуй ты прав. Я не учел, что опрашиваются только последние значения :)

    Перехватывать данные вроде как-то можно в 98х виндах. в 2K/XP - вряд ли, там джои работают через HID-стек устройств, можно написать HID-minidriver и встроить его в стек. Может быть можно в user-mode это также как-то можно сделать. Например, полдожить свою Hid.dll , хотя в последних виндах она вроде является частью file protection :@drunk:
     
  16. maxx--

    maxx-- Member

    Joined:
    Mar 23, 2003
    Messages:
    9
    Location:
    Sarov, NN Region, Russia
    Re: Организуется научный проект Корректор Джойстика Программный

    Сонар, а можно по-подробнее? Это как?
     
  17. Ivan_004

    Ivan_004 Well-Known Member

    Joined:
    Jun 18, 2002
    Messages:
    613
    Re: Организуется научный проект Корректор Джойстика Программный

    Мышеджой у него :) ставится в режиме опроса гейм-порта. смотри параллельный топик.
     
  18. ranger

    ranger Well-Known Member

    Joined:
    Feb 15, 2000
    Messages:
    841
    Location:
    spb
    Re: Организуется научный проект Корректор Джойстика Программный

    а в нете исходник реально найти? я когда искад исходник драйвера джойстика весьма намучался.
     
  19. rgreat

    rgreat FH Developer

    Joined:
    Jul 19, 2000
    Messages:
    42,571
    Location:
    Russia
    Re: Организуется научный проект Корректор Джойстика Программный

    Гру, бери MSSWFF2 пока не поздно.
    Если их еще не все разобрали.
    Эта штучка еще лучше MSSWPP1. Причем заметно.
    Говорю как владелец обоих. На первом 2 года прожил и продал за 100 грин, купив MSSWFF2. ;)

    P.S. Меня тоже все товарищи, оптимизатры кривого железа веселят. Зачем? Если можно взять хорошее железо и ниибатся. ;)
     
  20. Ivan_004

    Ivan_004 Well-Known Member

    Joined:
    Jun 18, 2002
    Messages:
    613
    Re: Организуется научный проект Корректор Джойстика Программный

    В ДДК есть.