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

Сообщения на CAN шине для Mini:
http://bobodyne.com/web-docs/robots/MINI/CAN/Presentation/index.html
Список идентификаторов:
http://bobodyne.com/web-docs/robots/MINI/CAN/Presentation/Slide8.html
скорость колес
http://bobodyne.com/web-docs/robots/MINI/CAN/Presentation/Slide31.html
http://bobodyne.com/web-docs/robots/MINI/CAN/Presentation/Slide43.html

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

Шутить изволите? С Вашего позволения смею Вам заметить что много лет активно тестирую CAN-адаптеры и преобразую их данные в координаты специализированными GPS-чипами. Так вот. Любая каншина, что в бнв, что в калине выдает цифру скорости 1-2 раза в секунду. Это результат подсчета пульсов гребенки вала КПП или ABS, который соответственно длился секудну до этого. Потом эту скорость надо отправить в дальнейшие рассчеты, а с GPS данные приходят еще раз в секунду. Итого, по результатам натурных экспериментов имеем рассинхронизацию потоков данных более чем на секунду. При этом данные с гироскопа и со спутников синхронизированы с точностью до десятых долей секунды. Разницу ощущаете? У Вас машина уже уехала и повернула, а информация о продольном перемещении еще обрабатывается где-то. Кто писал алгоритмы навигаторов знает какой вал фидбека придет при “лагании на секунду-другую” - завалят воплями типа “дико тормозит а ххх не тормозит”

Поэтому аппаратные, низкоуровневые решения прямо с колес с актуальными пульсами типа 10pulse/m - это профессиональное картографическое решение. А пляски с канами как раз лапти и щи, хоть и дико дорогие, времязатратные, экологически чистые и проводов по машине меньше тянуть.

Зачем фантазировать, когда есть конкретные цифры ? Timestamp на CAN сообщения я пока отключил,
но разделив полное число сообщений на время (~70 минут) можно оценить сколько из них приходят в секунду.
Для более высокоприоритетного id=0C2 (угол поворота руля+угловая скорость) это ~10ms (100Hz),
а для id=4A0 (скорости и направления движения колес) это ~20ms (50Hz).
Порядок величин вполне согласуется с данными приведенными испанцем для других
сообщений (7ms тормоза, 8ms коробка, 10-20ms двигатель)
Более точные данные можно будет получить используя временные метки.
Я вижу скорее другую проблему: модулированный шум амплитудой ~0.2 km/h (период и спектр пока не анализировал),
систематическую разницу 2 km/h в скорости между передними и задними колесами (распределение нагрузки ?)
и между задними колесами (разница в давлении воздуха ?).

 
а с GPS данные приходят еще раз в секунду. 

10-20 Hz это не проблема для GPS (и глонасс с NV08C-CSM), у людей скорее болит голова,
справится ли микроконтроллер типа STM32F4 с чисто вычислительной нагрузкой:
http://lists.osgeo.org/pipermail/foss-gps/2012-May/000684.html

Ну это как говорится, “Suum cuique”.

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

По поводу разницы скорости вращения. Сколько общался с установщиками и пользователями подобных систем - они как сговорились, берут вращение только с одного заднего колеса. Как правило левого т.к. им удобнее работать с осевой линией узкой дороги и левой гранью полосы на много полосных. Было еще пара маньяков, которые наоборот, нуждались в съемке красных линий и формы бордюрных камней. Они, соответственно, все перекинули за заднее правое колесо.

По поводу зимнего экстремального вождения. Пытался сбить систему с толку всякими заносами и полицейскими разворотами. DR-GPS вообще не показал разницы, что я нормально езжу, что в сплошных скольжениях. Клал треки как ни-в-чем не бывало. Возможно это потому что гироскоп более непредвзятое устройство чем датчик угла поворота рулевого колеса.

Единственный случай когда удалось “уехать” от курсора gps - это затяжной разгон с буксами при съеме пульсов с ведущих передних колес. Метров на пять наверное на чистом льду уехал вперед GPS от меня, но на первом-же повороте все отклонения пропали. Не знаю что еще придумать.

Совместит и то и другое и еще CAN
https://www.olimex.com/Products/Duino/STM32/OLIMEXINO-STM32
Дело только в правильном фирмваре, которое можно и для Globalsat TR-600GLONASS
будет использовать.

Свежак: http://www.ixbt.com/news/hard/index.shtml?16/15/55
В конфигурацию этого микроконтроллера входит процессор ARM Cortex-M0+, работающий на частоте 48 МГц, от 32 до 128 КБ флэш-памяти, высокоскоростной 12/16-разрядный АЦП, 12-разрядный ЦАП, высокоскоростной аналоговый компаратор, таймеры, интерфейс сенсорной панели и контролер USB 2.0 (host/device/OTG). В режиме исполнения программы из флэш-памяти удельное потребление микроконтроллера составляет всего 40 мкА/МГц.

Цена новинки (MKL25Z128VLK4) в корпусе LQFP с 80 выводами — $1,98 за штуку в партии из 10000 штук; платформа Freescale Freedom (FRDM-KL25Z) стоит $12,95.

Ну как бы мимо: закладываться на непонятно какой фрискейл, при наличии прям под рукой, в любом магазине ST / LPC ( / Atmel / EnergyMicro / AnalogDevices / TI / …), а также отладочных плат под них (хочешь - made in russia, хочешь - китайских), как-то странно.

А вот кортекс-м0 плюс - это любопытно, надо будет почитать…

Кому интересно: Arduino GPX Library

Есть ли какие мнения об использовании программного обеспечения (и железа ?) от http://www.openpilot.org ?
EKF там вроде как имплементирован и даже документация на него есть,
STM32F10x и STM32F4 поддерживаются
(CAN драйвера правда нет, но это поправимо).

LEA-6R замечен в экзотичном рутере UC-8481 фирмы Moxa http://www.moxa.com/product/UC-8481.htm


$GPTXT,01,01,02,u-blox ag - www.u-blox.com*50
$GPTXT,01,01,02,HW UBX-G60xx 00040007 F75FFFFFf*36
$GPTXT,01,01,02,EXT CORE 6.00 (39627) Mar 30 2010 10:39:12*49
$GPTXT,01,01,02,ROM BASE 6.02 (36023) Oct 15 2009 16:52:08*58
$GPTXT,01,01,02,MOD LEA-6R-0*37
$GPTXT,01,01,02,DR 6R C0 1.00*73
$GPTXT,01,01,02,ANTSUPERV=AC SD PDoS SR*20
$GPTXT,01,01,02,ANTSTATUS=OK*3B

Нонче появилось весьма интересное устройство - Raspberry Pi .
Для “самоделкина” оно привлекательно тем, что есть разъем GPIO. На него заведены - UART, I2C, SPI и просто IO.
Так оно выглядит (кто еще не в курсе):

Программы писать можно на нем-же. Система находится на SD. Хочешь Линукс, хочешь Андроид (CM9).
Есть примеры работы с GPIO.
Размер устройства примерно с банковскую карту.

У меня есть, если что.
:slight_smile:

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

Открутите тему назад до #134. у меня на нем RTKlib работает (правда пока без GUI).
А по сути все это мог sharp zaurus SL-5500 уже много годов назад…

Хотелось бы вернуться к изначальной постановке вопроса:
к raspberry pi подключаются на I2C пины через SKU: ACC53133P
http://www.seeedstudio.com/depot/grove-i2c-hub-p-851.html
гироскоп SKU: SEN11763P
http://www.seeedstudio.com/depot/grove-3axis-gyro-p-750.html
и акселерометр SKU: SEN21853P
http://www.seeedstudio.com/depot/twig-3axis-accelerometer-p-765.html
По usb приходят пакеты с данными об угловых скоростях всех колес с CAN
шины, и сырые GNSS данные с ublox/nvs приемника на крыше.
rtklib отлично справляется с задачей дифференциального GPS позиционирования,
для гироскопа и акселерометра есть куча программ для ардуины.
Вопрос: как бы их всех объединить ?
Начать конечно надо с базовых уравнений, на которых и будет основываться
в дальнейшем EKF.

Универсальный ответ: http://ru.wikipedia.org/wiki/Фильтр_Калмана

Универсальный ответ это замечательно, только практической пользы от него немного.
С rtklib все ясно, ссылка на статьи ublox про CAN тоже была, осталось только добавить вот этот
http://blog.tkjelectronics.dk/2012/09/a-practical-approach-to-kalman-filter-and-how-to-implement-it/

Я тоже решил сделать нечто подобное :slight_smile:
На скрине - навигация внутри здания (гаражи), GPS не использовался. Для теста покрутил я там машину хорошо, так что к моменту выезда из гаража накопилась приличная угловая ошибка.
Трек специально подвинул на гаражи, так что въезд и выезд получились чуть криво - это не обращать внимания :slight_smile:
В сумме сделал 6 кругов, 3 слева и 3 справа.

Источники данных:

  • Гироскоп с акселерометром MPU6050.
  • ABS датчики на задних колёсах (подключился напрямую, так информацию можно получать оперативнее).

Дополнительные материалы:

  • Переходник I2C - USB (ищется на ебее за $9.89).
  • Плата stm32f4discovery (впрочем, подойдёт и любая ардуина).
  • Самодельный переходник с оптической развязкой для согласования датчиков колёс с МК.

Были также попытки вместо гироскопа использовать:

К слову, компас (использовал HMC5883L) на нашей широте работает отвратительно. Долго и утомительно калибрую, и даже после этого при малейшем наклоне направление съезжает… А ещё и смещение уже через час чуть уползает - и по-новой калибровать надо.


Тема будет незавершённой, если не выложу трек подлиннее:

Синий - GPS, красный - гироскоп (без GPS!): http://svimik.com/speedsensor10.jpg

Попытка добавить в расчёты GPS приводит пока только к плохим результатам: http://svimik.com/speedsensor15.jpg
Например, здесь GPS (синим) на повороте нехило вылетел на здания. И даже при хорошей фильтрации он утащил изначально правильный трек с дороги (красным), хотя непосредственно на повороте он ещё пытался сопротивляться :slight_smile:

А прошивка для нее откуда ?

Дело наверно все-таки не в широте, а в железной коробке = машине.

Опять же все определяется использованным программным обеспечением и параметрами фильтра…