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

“отправляет” ? скорее показывает принятые.

Из всех сенсоров только BMA020 имеет SPI интерфейс, так что от LEA-6R толку никакого.

в описании Input/Output написано… с чего он бесполезный? 6R умеет все считать…
IMU хотел использовать для самопальной реализации фильтра Калмана, координаты брать из GPS мобилы, как-то не рассчитывал на железную реализацию в 6R

Кто юзает “Ардуину”:
“Ардуина” (типа Duemilanove) + “bluetooth shield”(от Seeed Studio) + смарт на “Андроид” -
может получится вполне функциональная система.
GPS и обработка в “Андроиде”, “Ардуина” + сенсоры - сбор данных.
(Опробовал связку (не в целях навигации) - вполне неплохо. )

Разобрал свой механический спидометр и обнаружил геркон, который одной ногой сидит на массе и замыкается 4 раза за 1 оборот троса. Замыкаемая нога, кажется доступна на разъеме. Сегодня подключился и получил результат: примерно 8 импульсов на 1 оборот колеса (замерял из салона по положению соска). Не надо ни чего колхозить :slight_smile:

Действительно, пробег машины на один оборот колеса вряд-ли больше 1,5м, т.е. в худшем случае импульс будет на 18см. Это очень неплохой показатель т.к. большинство машин имеют 0,22-0,25м на пульс. Проблемы наблюдаются при 30-40см на пульс и то могут компенсироваться некоторыми ньюансами вождения. Ура!

зы. Плохо что на массе, это как в suzuki, для dr-gps всеже нужны 12в пульсы. В худшем случае придется колхозить инвертер сигнала. Прерывать землю не получится т.к. от той-же земли питается индикатор заднего хода. Понимаете, по пульсам невозможно определить направление движения автомобиля и калибрация не пройдет.

Ха-ха, это смотря какие колеса, на моих в 33 дюйма получается длинна окружности районе 2,63м., тогда один оборот это как раз зона риска ~ 32см. Хотя понятно, что колесо не бывает в реальности такого диаметра. Т.к. оно всегда проминается.

С 8 импульсами я наврал :frowning: Изначально замерял так: поставил машину, что бы было видно в каком положении сосок и проехал один оборот колеса. Получилось 8 штук.

Потом пробовал по другому: замечаю место где стою, проезжаю до срабатывания импульса, замеряю расстояние: то 75 см получается, то 130 см :slight_smile: Потом подумал, что надо ехать-то не от случайного места, а с того когда только-только импульс пришел :slight_smile:

Доработал обработку следующим образом: Регистрирую импульс когда геркон размыкается. Зажигаю белый светодид с момента замыкания до момента размыкания - это предупреждение, что скоро придет импульс. Затем надо сделать заметку на земле как только белый погаснет первый раз, до того как погаснет второй раз. Делать это лучше на горке, что бы не мучить сцепление.

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

Мдааа, на курвиметр непохоже :frowning: Предлагаю использовать и фронт и срез импульса. Получите теже 0,16m/pulse

Нет, т.к. никто не обещал, что коэф. заполнения строго равен 50%. Один импульс будет, предположим, после 10 см, а второй - после 23.

незнаю как там работает ардунские схемы, но в фирменном чипе ublox один раз в секунду в окончательный рассчет принимается только количество импульсов, собранных за предыдущую секунду. Таким образом важным является лишь число, например 35 или 48 импульсов и неважно в каком они были порядке и хромает-ли ритм.

Кроме того зная пропорции работы геркона в спидометре вкл-выкл при генерации удвоенного меандра можно и подправить картинку. Генерить его всеравно придется т.к. все DR-GPS схемы считают только фронты.

Что-то я тогда совсем не понимаю необходимости умножать количество импульсов. Точность-то это никак не повысит…

Что-то у меня сходу не придумывается “подправлялка” на логике, которая автоматически подстраивает длительность импульса под его период. Вполне вероятно, что для этого придётся ставить отдельный контро… ардуину :slight_smile:

Верно, в моем случае длинна импульса явно меньше периода.

Понять очень просто. В герконо-магнитных механизмах меняется частота и длительность импульсов. DR получает только частоту, длительность пропускает, а это дополнительная информация.

можно погуглить “удвоитель частоты” вторая ссылка дает пищу уму поизобретать http://irls.narod.ru/it/uchi.htm

В связи с покупкой raspberry pi я все таки поcтараюсь разобраться
с набором параметров посылаемых на CAN шине контроллером ABS/EPS системы
которая стоит на ‘Audi A4/S4 B6/B7’.
Судя по диагностике их там довольно много, и названия весьма замысловатые…

Измеряется по крайней мере скорость каждого колеса (Geschwindigkeit: km/h), ускорение в 2 направлениях (Querbeschleunigung/Längsbeschleunigung: m/s²) ,
угол поворота (Lenkwinkel: °), скорость изменения угла поворота (Drehrate: °/s).
Druck [bar] это видимо тормозное усилие.
С цифрами надо разбираться, Längsbeschleunigung выглядит странно.
Найти соответствие между параметрами и CAN адресами задача конечно нудная, но разрешимая,
поскольку адаптер в Lаwicel моде использует легко читаемый ascii формат.
Думаю на машинах VW с ESP это тоже булет работать.


	Block 1				
	Zeit	Geschwindigkeit	Geschwindigkeit	Geschwindigkeit	Geschwindigkeit
Markierung	[s]	[km/h]	[km/h]	[km/h]	[km/h]
	1.15	0	0	0	0
	2.63	0	0	0	0
	3.99	0	0	0	0
	5.41	0	0	0	0
	6.74	3	3	3	3
	8.08	5	5	5	5
	9.48	5	5	5	5
	10.80	3	3	3	3


Block 5				
Zeit	Lenkwinkel	Drehrate	Druck	Querbeschleunigung
[s]	[°]	[°/s]	[bar]	[m/s²]
1.59	12.5	0.0	-1.0	-0.38
2.99	12.5	0.0	23.8	-0.38
4.38	10.0	0.0	-1.0	-0.38
5.76	10.0	0.0	-1.0	-0.38
7.09	12.5	-0.4	-1.0	-0.38
8.47	12.5	-0.5	-1.0	-0.38
9.83	10.0	0.0	6.5	-0.19
11.15	10.0	-0.1	15.0	-0.19


Block 10		
Zeit	Längsbeschl.	Längsbeschl.
[s]	[m/s²]	[m/s²]
1.95	292	-195
3.35	389	-195
4.75	195	-292
6.10	-778	-1070
7.45	-389	-778
8.81	97	-389
10.17	1168	195
11.51	1460	778


Block 23	
Zeit	Schalterstellungen
[s]	[]
2.54	101111
3.87	101111
5.28	101111
6.62	101111
7.96	101111
9.32	101111
10.68	101111
12.02	101111

Согласен. Достаточно в динамике посмотреть на цифры, засекать изменения при прямолинейном движении, на повороте итп, конечно это все простейшим логическим мышлением разбирается.

Кое-что удалось нагуглить, см. http://www.ate.uniovi.es/12609/seminario_slides.pdf
по id= 4A0H Bremse 3 и 5A0H Bremse 2
http://www.docstoc.com/docs/88972296/CAN–und-LIN-Bus-in-AUDI-Fahrzeugen
Испанец похоже имел доступ к оригинальной документации, его данные по 4A0
говорят что передается не только скорость колес, но и направление их движения.
А вот по 5A0 мой лог дает не 8 битное, а 8 байтовое поле, т.е. он взял кусок из
полного пакета.
Из CAN.ppt


Motor: x0xH / x8xH
Motor-Peripherie: x1xH
Kombi: x2xH
Getriebe: x4xH
ACC: x6xH
ABS: xAxH
ABS-Peripherie: xCxH

 0C0H Lenkwinkel (RB-Sensor)
 0C2H Lenkwinkel (ITT-Sensor für ITT-FDR)
 0C4H Lenkwinkel (ITT-Sensor für RB-FDR)
 0C8H (Gierraten / Querbeschleunigung)  
 100H MSG1 (V6 TDI)
 112H PSG1 (V6 TDI)
 1A0H Bremse 1
 280H Motor 1 
 288H Motor 2
 2A0H Bremse 4
 320H Kombi 1  
 380H Motor 3 
 388H Motor 4
 420H Kombi 2 
 440H Getriebe 1
 480H Motor 5    
 4A0H Bremse 3 
 500H MSG2 (V6 TDI)
 512H PSG2 (V6 TDI)
 520H Kombi 3
 580H Motor Flexia
 5A0H Bremse 2   
 7C0H Lenkwinkel-Konfigurierungskennung (RB)
 7C2H Lenkwinkel-Initialisierungskennung (ITT)

Из отсортированного лога инициализации (id+mgs_size in bytes+description)


200 3 ? Motor: x0xH / x8xH
200 7 ? Motor: x0xH / x8xH
2D0 3 ? Motor: x0xH / x8xH
790 1 ?
790 5 ?
790 6 ?
790 7 ?

Более серьезная диагностика:


050 4 ?
0C2 8 Lenkwinkel (ITT-Sensor für ITT-FDR)
1A0 8 Bremse 1
280 8 Motor 1 
288 8 Motor 2
320 8 Kombi 1
380 8 Motor 3
38A 4 ? Motor: x0xH / x8xH
390 8 ?
394 8 ?
420 8 Kombi 2
440 8 Getriebe 1
44A 8 ? Getriebe 2 ?
44C 8 ? Getriebe 3 ?
480 8 Motor 5 
488 8 ? Motor 6 ?
4A0 8 Bremse 3 (documented)
4A8 8 ? Bremse 4 ?
51A 8 ? Motor-Peripherie X ?
520 8 Kombi 3
540 8 ? Getriebe 4 ?
550 3 ?
572 1 ?
580 8 Motor Flexia ?
588 8 ? Motor X ?
5A0 8 Bremse 2 (documented)
5D0 6 ?
5D2 8 ?
5E0 8 ?
5F2 2 ?

Еще есть голландский лог для Audi A6


280 8 Motor 1 (09 A6 00 00 2A 00 1C 2A)
288 8 Motor 2 (81 76 10 00 00 49 97 AD)
380 8 Motor 3 (00 69 00 00 00 00 00 05)
440 8 Getriebe 1 (00 80 00 FE 7F 00 00 02)
480 8 Motor 5 (3F 24 00 00 00 00 00 00)
488 8 ? Motor 6 ? (00 23 22 7E 00 00 00 00)
540 8 ? Getriebe 4 ? (00 00 FF 00 00 00 10 20)
1A0 8 Bremse 1 (00 18 00 00 FE FE 00 11)
1A8 3 ? ABS ? (FC 03 FF)
4A0 8 Bremse 3 (00 00 00 00 00 00 00 00)
4A8 2 ? ABS ? (00 00)
5A0 8 Bremse 2 (7D 00 00 48 CC 12 00 AD)
7C2 8 Lenkwinkel-Initialisierungskennung (ITT) (67 00 00 00 42 00 00 98)

Фрагмент лога для VW Lupo
http://www.journalofremanufacturing.com/content/pdf/2210-4690-1-6.pdf

Анализ 2 идентификаторов
http://www.iwt-kdg.be/teralabs/sites/default/files/Decoding%20of%20data%20on%20a%20CAN%20powertrain%20network_FINAL.pdf

глядя на эти умные пдфки невольно приходишь к мысли что магнитики с герконами делаются на порядок быстрее и выдают на порядок более достоверную информацию.

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

Я же про Volkswagen говорю, а не про калину :roll_eyes:
И щи можно лаптем хлебать, даже экологически чище.

Нашел для полноты картины еще 5 идентификаторов


010
011
...
5D2
5E0
5F2

то есть всего получается 32 пакета, где-то 25KB/s (ascii).
Вcе мониторится в линуксе на нетбуке (CAN адаптер AGV4000Bexp), в raspberry pi кто-то нехороший не включил
драйвер cdc_acm (и ftdi), так что я пока там не могу использовать CAN, ublox
приемники и ADS-B приемник GNS 5890 (ADS-B “радар”).
Пакет 0C2 состоит из 4 16битных слов


t 0C2 8 109F 0000 3BE0 0370
t 0C2 8 F09E 5401 3BF0 032C

где последние 2 это (скорее всего) какие-то keepalive таймеры,
а вот первые два - те самые
угол поворота (Lenkwinkel: °), скорость изменения угла поворота (Drehrate: °/s)
Доступная старая документация VW говорит что датчик Längsbeschleunigung
устанавливается только на полноприводные машины.
Так что пакеты 0C2 и 4A0 (+расстояние между колесами и т.п.) вроде как дают все, что нужно для


Technical paper: "Performance of low-cost real-time navigation system using single frequency GNSS measurements combined with wheel-tick data"

http://www.u-blox.com/images/downloads/Product_Docs/u-blox_DR_technical_paper.pdf
Вопрос только в том, какие параметры брать в матрицах фильтра Калмана…

Edit
гуглоперевод испанского текста, требует зачиcтки
и осознания:
Antriebsschlupfregelung (ASR)
Motorschleppmomentregelung (MSR)
Elektronische Differenzialsperre (EDS)
Elektronische Bremskraftverteilung (EBV)
Elektronisches Stabilitätsprogramm (ESP)


==== 1A0 7ms Bremse 1 ==========================
Requerimiento ASR o MSR, intervención EDS, EBV o
ESP, y testigos ABS, ASR / ESP y freno y señal de
velocidad
---
Anforderung MSR oder ASR, 
EDS Intervention, 
EBV oder ESP,
und ABS Einschaltung, 
ASR / ESP Bremsen-und Geschwindigkeitsignal

==== 280 10/20(diesel)ms Motor 1 ==========================

Información del ralentí, kickdown, conmutador de
embrague, intervención ASR, MSR. RPM’s y Posición E-Gas
---
Informationen im Leerlauf,
Kickdown, 
Kupplungsschalter,
Intervention ASR, MSR 
RPM-und E-Gas Position

==== 288 10ms Motor 2==========================
Versión CAN. Código motor, código cambio, temperatura
líquido refrigerante, interruptor luz de freno, activación AA,
comunicación OBD2, informaciones GRA, etc..
---
CAN-Version. 
Motorcode, 
Getriebecode, 
Kühlmitteltemperatur, 
Bremslichtschalter, 
Aktivierung AA,
OBD2 Kommunikation, 
Information GRA, etc. ..

==== 320 25ms Kombi 1 ==========================
Estado puertas, presión aceite, falta líquido refrigerante,
testigo de combustible, lámpara precalentamiento, estado
testigo de frenos, señal de velocidad.
---
Türenanzeige, 
Öldruck, 
Kühlmittel Ausfall,
Kraftstoff-Steuerung, 
Vorglühkerzen, 
Bremsenansteuerung, 
Tachosignal.

==== 440 8ms Getriebe 1 ===========================
Petición desconexión AA, información embrague (WK),
petición elevación ralentí, posición palanca selectora,
marcha objetivo y marcha de emergencia.
---
AA Trennungsanforderung, 
Informationen (Wellen?)Kupplung (WK),
elevation (?) Anfrage im Leerlauf, ,
Wählhebelstellung,
Normalbetrieb und Notprogramm.

Для Golf IV


0C2 - Drehwinkel/rate-sensor ESP

1A0 - ABS (ggfs. mehr als eine ID ? )

280 - Motorsteuergerät
 byte 2 = RPM*4, L
 byte 3 = RPM*4, H

320 - Kombiinstrument. 
 byte 3 & 0x7f = fuel [l], 
 bit 7 = low warning

420 - Kombiinstrument
 byte 1 = Ext temp, displayed (delayed), temp=(val-100)/2
 byte 2 = Ext temp, measured, temp=(val-100)/2
 byte 4 = coolant temp, clt=(val-64)*.75

480 - 
 byte 3 = Verbrauchssignal
 Verbrauchssignal is gesendet als ID 480, byte 3. Der Wert (3. byte) und die
 Zeit zwischen den Nachrichten stellen zusammen den angezeigten
 Kraftstoffverbrauch fest. 
 mein Experiment zeigte dieses:
 2ms*254 1/1.8
 1ms*254 3.7/2.8
 1ms*128 6.5/7.4
 1ms*25 32.3/33.2
 1ms*12 64.5/65.4


В “бельгийском” тексте
RPM это 280 байты 3 и 4, так что требует сравнения с
измеренными данными.

Edit2
Мои цифры cовпадают с “немецким” вариантом (Golf IV)


$ fgrep t280 log | awk '{print strtonum("0x"substr($1,5+1+2*3,2)substr($1,5+1+2*2,2))/4}' | xmgrace -pipe

Сообщения на 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