GPS с гироскопом и одометром.

Понятное дело, написал сам :slight_smile: А вы что подумали?

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

Если в на колёсах стоят активные датчики, то у них токовый выход, и подключиться к ним достаточно просто.
[color=#999]Для Skoda Fabia (2003) для задних колёс это будет провод, входящий под задними сиденьями, и идущий сразу в пучок проводов под задней дверью.
Альтернативный вариант - жёлтая колодка за рулевой осью (в книжке пишут “за приборной панелью”, но не стоит понимать буквально - сняв приборную панель вы встретитесь с непреодолимой перегородкой, а лезть надо снизу).[/color]
Схема для них будет такой, достаточно врезаться в кабель, и подключить оптрон с парой резисторов:

Датчик даёт ~50.4 импульса на метр, что позволяет мерить с сантиметровой точностью :slight_smile:

Подумал, что

  1. не имея возможности поправить прошивку, придется все равно делать все “from scratch”
  2. сигнал датчиков колес все-таки надо брать с соответсвующей CAN-шины (т.е. не CAN-entertainment :),
    благо STM32F4 это легко позволяет сделать. Хотя я бы (по многим причинам)
    скорее предпочел STM32F103.

Не уверен, что он там есть именно раздельно для каждого колеса, в нужном виде и с достаточной частотой обновления. Напрямую я сейчас с частотой 100гц с МК отчёты о колёсах получаю, а даст ли столько ABS контроллер в CAN?

STM32F4 взял потому, что он под рукой валялся. А так, с этой задачей (считать количество импульсов и измерять интервалы) должен справиться и AVR.

Читаем предыдущую страницу: на всем VW-подобном пакеты идут со следующей скоростью:

А Шкода это VW-подобное или нет? Я просто до этого с машинами дела не имел, так что подобного жаргона не понимаю :slight_smile:

Кстати, в моей машине вообще две раздельные CAN шины :slight_smile:

А какой контроллер посоветуете для подключения к компьютеру (чтобы проверить концепцию, не паяя и не программируя для этого?).

На ебее нашёл 3 варианта:
http://www.ebay.com/itm/USB-CAN-USB-to-CAN-bus-Converter-Adapter-For-professional-/321133103506?pt=LH_DefaultDomain_0&hash=item4ac5064992
http://www.ebay.com/itm/Pro-USB-CAN-USB-to-CAN-BUS-Converter-Adapter-USB-Cable-support-win7-System-/181001215573?pt=LH_DefaultDomain_0&hash=item2a24835e55
http://www.ebay.com/itm/USB-to-CAN-Analyzer-USB-CAN-Converter-Adapter-Dual-Channel-Support-ZLGCANpro-/251274894643?pt=LH_DefaultDomain_0&hash=item3a81269d33

У самого дешёвого есть ссылка на софт и даташиты. я открыл, а там вся документация на иероглифах :smiley:

А точное количество импульсов с датчиков он отображает? Т.е. возможно считать расстояние с разрешением в 2см, как я это делаю напрямую?

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

http://www.openstreetmap.org/browse/changeset/17291244

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

Сеат, Шкода и Ауди это все VW-подобные.

Это стандартная VW картинка, и на ней на самом деле 3 раздельные CAN шины:
+CAN-диагностика.
На моей Audi A4 B7 она случайно совмещена с CAN-powertrain (500kbit),
и отсутствует Gateway, на большинстве машин это не так
и через OBD разъем можно только заниматься диагностикой
(KWP2000 протокол).
В общем же случае надо цепляться естественно к CAN-powertrain
проводам.

Я бы взял плату вроде Olimexino-STM32
http://www.exp-tech.de/Mainboards/Olimexino-STM32-STM32F103RBT6.html
и адаптировал какую-нибудь “готовую” прошивку типа
https://github.com/Laurenceb/Dactyl
Вообще, если сделаете работающую прошивку, то я готов за это пожертвовать своим
EVK-6H
http://www.u-blox.com/en/evaluation-tools-a-software/gps-evaluation-kits.html

Врать не буду, как датчиком измеряется угловая скорость колеса не знаю (радиус колеса
и его вариацию тоже надо как-то учитывать).

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

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

Вопрос был как раз в том, чтобы проверить саму возможность получения нужных данных. Не хочется слить много времени на программирование, чтобы потом увидеть, что там не то, что ожидал. Вот если подтвердится, что там есть то что нужно - тогда можно сесть и подумать, как оформлять аппаратную и програмную часть. (Время у меня, мягко говоря, ограничено. То, что я здесь делаю - это либо отпуск, либо больничный, иначе просто нереально :/).

Для России этим можно измерять качество дорожного покрытия :slight_smile:

Вообще, главная проблема у меня сейчас - это не получение данных с автомобиля (это уже сделано), а скрестить ежа с ужом GPS с данными с инерциальной системы :slight_smile:

Итак, вот ёж (красным) и уж (синим). Здесь они представлены раздельно, никаких спариваний не производилось:

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

Зато, у этой системы неоспоримые приемущества по сравнению с GPS - отчёты со скоростью 100гц, возможность работать автономно (внутри помещений), красивые треки с плавными поворотами.

На практике можно получить даже такой результат (GPS - синим):

Видно, что по параметру красоты трека, система однозначно уделывает GPS - линии прямые, никуда не уползают и не улетают.

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

Мне приходит в голову вот что:

  • нужно анализировать качество fix-а GPS (GDOP, carrier lock interval),
  • отбирать на основании этого хорошие надежные точки по GPS
  • делить трек который не по GPS на фрагменты (по времени получения хороших точек)
  • делать простое аффинное преобразование (сжатие-растяжение-поворот) для этих фрагментов, сажая их концы на надежные точки по GPS.
    Других вариантов не вижу, честно говоря.

То есть конечно, есть Delaunay triangulation, но как-то я не очень себе представляю это на мобильном устройстве с дохренищей точек.

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

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

Про мобильное устройство речи и не было.

Не, мы получим трек с колес и акселерометра, но с периодической поправкой по GPS. Расстояние, за которое накапливается дрейф, будет таким образом биться на части. Тут подбирать параметры нужно - как в части размера оптимальных кусков трека, так и в части анализа качества фикса GPS. Задержка у GPS вылезает из фильтра Калмана, который в него встроен, потому надо использовать сырые данные.

Для эксперимента можно взять GlobalMapper, всосать в него трек с акселерометра и применить триангуляцию Делоне, используя gcp-файл сгенерированный из точек GPS и точек, трека акселерометра, соответствующих им точно по времени.

Для этого надо искать специальный GPS приёмник? :slight_smile:

Если кому интересна задача - могу выложить сырые логи с описанием.

В наличии: Данные с колёс (левое и правое раздельно!), 3-осевой акселерометр, 3-осевой гироскоп, 3-осевой компас, и GPS.

SviMik ну конечно надо специальный приемник, в соседней теме про rtklib обсуждалось.
У не-специального параметры качества довольно условные, как минимум.

SviMik, очень круто и красиво. Просто, как человек со стороны, давно к вам сюда не заглядывавший…

а на компе и [пост]-обрабатывать.
И главное, не алгоритмизируется в мозгу на вскидку, это выделение GPS точек, с хорошим DOP, и смятие сообразных им кусков 100 герцовых треков…

(вот поэтому и существует равно-плечное троирование)) а не как тут, башку сломать – кому доверять в данный конкретный момент времени.

ps. надо этта… всяких самолётчиков тягать, у них это реально работает, могли бы слить, что не под грифом…))

pps. кстати же да, ГлобалМаппер самый простой сминатель по точкам.

(не отвечайте мне, я просто влез сказать, что у вас красивые линии))