You are not logged in.

Announcement

*** NOTICE: forum.openstreetmap.org is being retired. Please request a category for your community in the new ones as soon as possible using this process, which will allow you to propose your community moderators.
Please create new topics on the new site at community.openstreetmap.org. We expect the migration of data will take a few weeks, you can follow its progress here.***

#226 2013-08-16 23:32:40

SviMik
Member
From: Tallinn, Estonia
Registered: 2013-01-01
Posts: 1,392

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

Трэк 17 только по одометру
http://ge.tt/8zXzcRS/v/41?c

Пробовал решить эту задачу, вышло что-то вот такое big_smile

gpssimw17.png

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

Колёсная база и диаметр колёс подбирались вручную, или вывелись автоматически?

Last edited by SviMik (2013-08-16 23:40:51)

Offline

#227 2013-08-17 09:29:15

OverQuantum
Member
From: Zelenograd
Registered: 2009-06-17
Posts: 1,582
Website

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

SviMik wrote:

Колёсная база и диаметр колёс подбирались вручную, или вывелись автоматически?

Подбирались. Диаметры явно разные (кол-во импульсов на метр с датчика), иначе график разности хода колёс имеет явный уклон, а трек становится вот таким, состоящим из дуг.


Это же OpenStreetMap. Он больше внутри, чем снаружи.

Offline

#228 2013-08-17 10:02:25

SviMik
Member
From: Tallinn, Estonia
Registered: 2013-01-01
Posts: 1,392

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

Вместо HMC5883L заказал более продвинутый компас HMC5983. С температурной коррекцией и автоматической компенсации оффсета. Посмотрим, будет ли толк.

Offline

#229 2013-08-17 11:15:05

SviMik
Member
From: Tallinn, Estonia
Registered: 2013-01-01
Posts: 1,392

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

Наткнулся на интересную идею:

1. Интегрированный массив МЭМС гироскопов с повышенной стабильностью показаний
2. Signal Processing of MEMS Gyroscope Arrays to Improve Accuracy Using a 1st Order Markov for Rate Signal Modeling (pdf версия, вроде более полная).

Для тех, кому лень читать, сразу результаты для 6 гироскопов:
mems_array.png
Результат позитивный, т.к. даже Simple average дал улучшение более чем в 2 раза (а это именно тот алгоритм, который я в состоянии сделать самостоятельно big_smile).

Достоинства подхода:
- Можно недорого улучшить точность всех сенсоров (гироскопы, акселерометры). MPU-6050 стоит менее 4$, а в нём сразу и то и другое в одном чипе.
- Способ выглядит простым (для Simple average), с возможностью дальнейших улучшений алгоритма (если повторить статью в полном объёме).

Недостатки:
- Придётся отказаться от MotionFusion алгоритма, зашитого в MPU-6050, и считать всё вручную.

Касательно последнего пункта - в теории, алгоритмы можно взять из arducopter или ardu-imu, но там всё настолько заточено под конкретную задачу, что выдрать что-то оттуда и заставить работать отдельно для меня выглядит сложным.

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

Теперь вопрос: есть желающие? smile
Попробовать матан с DCM можно уже сейчас (в логах есть сырые данные акселерометра, гироскопа, компаса, и текущая скорость для компенсации центробежной силы). Позже останется только заменить гироскоп на виртуальный, более точный. Кстати, с акселерометром и компасом можно проделать тоже самое.

Offline

#230 2013-08-17 11:59:24

OverQuantum
Member
From: Zelenograd
Registered: 2009-06-17
Posts: 1,582
Website

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

SviMik wrote:

- Придётся отказаться от MotionFusion алгоритма, зашитого в MPU-6050, и считать всё вручную.

Я уже рублю ручной рассчёт постепенно.
Вот скажи, сколько были AFS_SEL и FS_SEL?
А то акселерометр в покое (начало и конец) показывает силу по модулю около 6916 отсчётов, тогда как g должно быть 8192 или 16384 или 4096 или 2048. Если AFS_SEL=1, то акселерометр показывает что g было ~ 8.27 м/с^2. Это меньше, чем на Венере и примерно как на высоте 600 км от Земли smile

Last edited by OverQuantum (2013-08-17 12:05:29)


Это же OpenStreetMap. Он больше внутри, чем снаружи.

Offline

#231 2013-08-17 12:16:59

SviMik
Member
From: Tallinn, Estonia
Registered: 2013-01-01
Posts: 1,392

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

Тяжело сказать. При использовании MotionFusion я брал значения, которые выдавал он сам, обещая их сырыми. Что там на деле - я не знаю, код закрытый...
Тут либо попробовать принять 1g за 6916 и посмотреть что выйдет, либо план Б.

План Б: Если надо, могу записать трек без MotionFusion. Тогда, могу выдать действительно сырые данные с частотой 1кгц. Но в логе уже не будет кватернионов, курса, крена, тангажа и т.п. - ручной рассчёт станет обязательным условием smile

Offline

#232 2013-08-17 20:21:06

SviMik
Member
From: Tallinn, Estonia
Registered: 2013-01-01
Posts: 1,392

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

План Б, для ручного рассчёта:

http://svimik.com/imuraw_1.rar (571кб) - Уровень сложности: простой, аналогичен треку 17.
http://svimik.com/imuraw_2.rar (894кб) - Уровень сложности: сложный, езда в помещении как трек 18.

Частота: гироскоп\акселерометр: 200Гц, компас и колёса: 100Гц.
Порядок чтения: $IMU, $MAGR, $IMU, $WRAW.
$IMU может представлять несколько пакетов подряд из-за наличия буффера у MPU-6050, который я читаю целиком за раз.
Настройки: AFS_SEL=0 (2g), FS_SEL=0 (250°/s). Компас: -2048...2047 соответствует +-0.88 Ga.
В начале и конце немного постоял для статистики.
Начало и конец обоих треков - одно и то же парковочное место, т.е. должны совпасть.

Offline

#233 2013-08-17 20:26:17

OverQuantum
Member
From: Zelenograd
Registered: 2009-06-17
Posts: 1,582
Website

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

$IMU -704,120,14016,-33,19,-168
$MAGR -192,-108,-374

Кто все эти числа? smile

Если в $IMU сначала идёт 3 оси акселерометра, то по показаниям получается ~0.86 g.

Last edited by OverQuantum (2013-08-17 20:32:45)


Это же OpenStreetMap. Он больше внутри, чем снаружи.

Offline

#234 2013-08-17 20:39:01

SviMik
Member
From: Tallinn, Estonia
Registered: 2013-01-01
Posts: 1,392

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

$IMU - данные из FIFO буффера MPU-6050. Первые 3 похожи на акселерометр, и следующие - на гироскоп smile
Предположительно ACCEL_X, ACCEL_Y, ACCEL_Z, GYRO_X, GYRO_Y, GYRO_Z.

$MAGR - магнетометр. X, Z, Y.

$WRAW - с ним читатель уже знаком smile

Если в $IMU сначала идёт 3 оси акселерометра, то по показаниям получается ~0.86 g.

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

Исходный кот:

short imu[]={0,0,0,0,0,0};
short magn[]={0,0,0};

while(app_running){
	/* MPU6050 */

	// check FIFO overflow
	if(mpu6050_fifo_overflow()){
		printf("FIFO overflow!\r\n");
		fprintf(log, "$ERR overflow\r\n");
		mpu6050_fifo_reset();
		continue;
	}

	// get FIFO count
	int fifo_count=getFIFOCount();
	if(fifo_count>1024){
		printf("Wrong FIFO count (%i)!\r\n", fifo_count);
		mpu6050_fifo_reset();
		continue;
	}
	int frames=fifo_count/12;
	if(frames==0){continue;}
	
	// get timestamp
	getdate(&date);
	if(date.wMilliseconds!=prevdate.wMilliseconds || date.wSecond!=prevdate.wSecond){
		fprintf(log, "[%02i:%02i:%02i.%03i]\r\n", date.wHour, date.wMinute, date.wSecond, date.wMilliseconds);
	}
	prevdate=date;

	// read FIFO
	unsigned char tmp[1024];
	read(GYRO_ADDR, MPU6050_FIFO_R_W, tmp, frames*12);

	// parse data
	for(int i=0;i<frames;i++){
		unsigned char * rbuf=tmp+(i*12);
		imu[0]=(rbuf[0]<<8)|(rbuf[1]&0xFF);
		imu[1]=(rbuf[2]<<8)|(rbuf[3]&0xFF);
		imu[2]=(rbuf[4]<<8)|(rbuf[5]&0xFF);
		imu[3]=(rbuf[6]<<8)|(rbuf[7]&0xFF);
		imu[4]=(rbuf[8]<<8)|(rbuf[9]&0xFF);
		imu[5]=(rbuf[10]<<8)|(rbuf[11]&0xFF);
		fprintf(log, "$IMU %i,%i,%i,%i,%i,%i\r\n", imu[0],imu[1],imu[2],imu[3],imu[4],imu[5]);
	}

	if(++tick2%2==0){
		/* wheel sensors */
		unsigned char ss_cnt[2];
		unsigned int ss_interval[2], ss_delay[2];
		if(!speedsensor_get(ss_cnt, ss_interval, ss_delay)){printf("Bad packet\r\n");}
		fprintf(log, "$WRAW %i,%i,%i,%i,%i,%i\r\n", ss_cnt[0], ss_cnt[1], ss_interval[0], ss_interval[1], ss_delay[0], ss_delay[1]);
	}else{
		/* compass */
		compass_read(&magn[0], &magn[1], &magn[2]);
		fprintf(log, "$MAGR %i,%i,%i\r\n", magn[0], magn[1], magn[2]);
	}
}

Last edited by SviMik (2013-08-17 20:47:59)

Offline

#235 2013-08-17 22:54:45

SviMik
Member
From: Tallinn, Estonia
Registered: 2013-01-01
Posts: 1,392

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

Есть ещё вариант попробовать ITG-3205 + ADXL345 вместо MPU-6050.
Минусы:
- В MPU-6050 гироскоп и акселерометр синхронизированы (оцифровываются одновременно), пара раздельных сенсоров будут работать асинхронно.
- В MPU-6050 встроенный таймер и свой буффер, дающий фиксированную частоту данных (независимо от лагов принимающей стороны). У других сенсоров будет просто чтение регистров в цикле, и QueryPerformanceCounter на каждое сообщение.

Плюсы:
- Можем получить адекватное 1g smile
- Шанс сравнить два сенсора с разными подходами.

Offline

#236 2013-08-17 23:28:25

OverQuantum
Member
From: Zelenograd
Registered: 2009-06-17
Posts: 1,582
Website

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

Ну я ещё не добрался до ручного интегрирования гироскопа.
Но экспериментируй, если хочешь smile


Это же OpenStreetMap. Он больше внутри, чем снаружи.

Offline

#237 2013-08-18 12:11:05

SviMik
Member
From: Tallinn, Estonia
Registered: 2013-01-01
Posts: 1,392

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

Вариант с ITG-3205 + ADXL345: http://svimik.com/accelraw2_1.rar (6.71мб)
Формат:
$A %f,%i,%i,%i - time interval (us), accel x, y, z
$G %f,%i,%i,%i - time interval (us), gyro x, y, z
$W %f,%i,%i,%i,%i,%i,%i - time interval (us), wheel sensor data
$M %f,%i,%i,%i - time interval (us), magnetometer x,z,y

Порядок следования: фиксированный, AG, AG, W, AG, AG, M
Частота: плавающая, порядка ~500Гц.
Временные метки: на каждой строке, прошедшее время в мкс относительно предыдущей строки.

Offline

#238 2013-08-18 14:17:56

OverQuantum
Member
From: Zelenograd
Registered: 2009-06-17
Posts: 1,582
Website

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

SviMik wrote:

$IMU - данные из FIFO буффера MPU-6050. Первые 3 похожи на акселерометр, и следующие - на гироскоп smile
Предположительно ACCEL_X, ACCEL_Y, ACCEL_Z, GYRO_X, GYRO_Y, GYRO_Z.

В общем, что-то странное с этими данными.
GYRO_Z явно имеет постоянную составляющую в покое - ~ -173, GYRO_X - ~39.
Интегрировать показания гироскопа получается, но только если умножать на коэффициент. Для imudata17.rar это 1.44 (если считать что показания в градусах в секунду), для imuraw_1.rar - 1.05 (если считать, что показания - 131 LSB / градус в секунду). Причём результат интегрирования всех трёх осей хуже, чем только Z. Коэффициент нужен помимо преобразования градусов в радианы, времени в секунды и т.п.
ACCEL_X, ACCEL_Y тоже имеют постоянную составляющую, но это может быть обусловлено ещё и наклоном чипа относительно горизонтали. Тут я не понимаю как выделить разложение g на 3 оси и как - постоянные составлющие показаний чипа. В результате не могу даже уверенно определить, куда машина разгоняется - вперёд или назад.
По спецификации не могу понять, допустимы ли эти постоянные составляющие и коэффициенты или нет.

Буду пробовать новые данные.
В крайнем случае можно будет оставить только GPS и одометр.

Last edited by OverQuantum (2013-08-18 14:22:36)


Это же OpenStreetMap. Он больше внутри, чем снаружи.

Offline

#239 2013-08-18 14:43:19

SviMik
Member
From: Tallinn, Estonia
Registered: 2013-01-01
Posts: 1,392

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

GYRO_Z явно имеет постоянную составляющую в покое - ~ -173, GYRO_X - ~39.

Дрейф гироскопа никто не отменял. С компенсацией постоянной составляющей борятся в первую очередь, вычитая её.

Для imudata17.rar это 1.44 (если считать что показания в градусах в секунду), для imuraw_1.rar - 1.05 (если считать, что показания - 131 LSB / градус в секунду).

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

ACCEL_X, ACCEL_Y тоже имеют постоянную составляющую, но это может быть обусловлено ещё и наклоном чипа относительно горизонтали.

Ясен пень, наш мир не идеален smile

По спецификации не могу понять, допустимы ли эти постоянные составляющие и коэффициенты или нет.

http://www.invensense.com/mems/gyro/doc … -6000A.pdf
Страницы 12 и 13.
Если правильно понимаю, то коэфициенты это Sensitivity Scale Factor Tolerance, домустимо +-3%, что впринципе близко к 1.05.
Есть ещё Initial ZRO Tolerance. Не знаю, что это, но возможно постоянная составляющая. Там аж ±20º/s.

Offline

#240 2013-08-18 15:57:16

OverQuantum
Member
From: Zelenograd
Registered: 2009-06-17
Posts: 1,582
Website

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

SviMik wrote:

$M %f,%i,%i,%i - time interval (us), magnetometer x,z,y

А какой магнетометр?


Это же OpenStreetMap. Он больше внутри, чем снаружи.

Offline

#241 2013-08-18 15:58:17

SviMik
Member
From: Tallinn, Estonia
Registered: 2013-01-01
Posts: 1,392

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

Во всех логах HMC5883L.

Offline

#242 2013-08-18 16:37:29

OverQuantum
Member
From: Zelenograd
Registered: 2009-06-17
Posts: 1,582
Website

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

Не, извини, нифига не понимаю, что с этими данными делать.
Почему магнетометр по оси Z показыват самое большое значение и больше всего плавает?.. Почему модуль вектора магнитного поля плавает от 300 до 650?.. Плюс не ясно, какая калибровка, какой режим, какое расположение датчиков относительно друг друга, какое закрепление на машине (жёсткое или лежит на сидении) и т.п.

Буду пока скрещивать одометр с GPS


Это же OpenStreetMap. Он больше внутри, чем снаружи.

Offline

#243 2013-08-18 16:44:23

SviMik
Member
From: Tallinn, Estonia
Registered: 2013-01-01
Posts: 1,392

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

Почему магнетометр по оси Z показыват самое большое значение и больше всего плавает?

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

Почему модуль вектора магнитного поля плавает от 300 до 650?

Не калиброван. У датчика на каждой оси есть смещение, с ним надо разбираться самостоятельно.

какое закрепление на машине

1102558.jpg

нифига не понимаю, что с этими данными делать.

1512502-800px_full_matan.jpg

Last edited by SviMik (2013-08-18 17:07:25)

Offline

#244 2013-08-19 09:40:03

kapilov
Member
Registered: 2012-12-01
Posts: 147

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

SviMik wrote:

Не калиброван.

А если откалибровать будет четко показывать?

Почему нельзя брать информацию только с компаса и датчиков на колесах?

SviMik wrote:

вертикален на полюсах

На магнитных полюсах.

Offline

#245 2013-08-19 10:49:27

SviMik
Member
From: Tallinn, Estonia
Registered: 2013-01-01
Posts: 1,392

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

А если откалибровать будет четко показывать?

Да, при условии, что перед вычислением курса, вектор компаса надо будет вправлять на место в соответствии с креном\тангажом автомобиля, ибо компас работает только в строго горизонтальном положении (но к счастью, т.к. у него 3 оси, горизонтальное положение можно получить виртуально).

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

Почему нельзя брать информацию только с компаса и датчиков на колесах?

1. См. выше. Нужна информация о наклоне автомобиля, иначе вычисление курса не будет работать корректно.
2. Если я положу рядом телефон\ноут\любой девайс с магнитом внутри, курс будет сбит сразу, и до тех пор, пока алгоритм калибровки не обнаружит сей досадный факт. Как быстро это произойдёт - зависит от алгоритма.
3. Почему в список не включен GPS? Колёса тоже не идеально показывают расстояние, погрешность может достигать 2%.
4. Как учитывать наклон дороги? Колёса справедливо выдадут, что проехали больше, чем это отобразится на плоскости карты.

На магнитных полюсах.

Капитан Очевидность smile

Last edited by SviMik (2013-08-19 10:54:24)

Offline

#246 2013-08-19 11:04:09

SviMik
Member
From: Tallinn, Estonia
Registered: 2013-01-01
Posts: 1,392

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

Иллюстрация "не все дороги горизонтальны".

pitch1.jpg
pitch2.jpg

Offline

#247 2013-08-19 12:54:55

kapilov
Member
Registered: 2012-12-01
Posts: 147

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

SviMik wrote:

2%

У вас запросы больше, чем я думал.

Offline

#248 2013-08-19 22:01:39

SviMik
Member
From: Tallinn, Estonia
Registered: 2013-01-01
Posts: 1,392

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

У вас запросы больше, чем я думал.

Всмысле? На 10км 2% будет уже 200 метров мимо. От переодической синхронизации с GPS никуда не денешься, независимо от запросов.
Или я вас неправильно понял?

PS. А что делать зимой, когда колёса проскальзывать могут?

Last edited by SviMik (2013-08-19 23:03:25)

Offline

#249 2013-08-20 08:15:25

kapilov
Member
Registered: 2012-12-01
Posts: 147

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

Конечно, от синхронизации никуда не денешься.

Я мыслю в том направлении, что хорошо бы было если во время стоянки на светофоре, при проезде арок, развязок, туннелей и тп. координаты не бросало в стороны. А арок и развязок в 10 км длинной нет (туннели есть, но не так много).

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

SviMik wrote:

зимой, когда колёса проскальзывать могут?

А есть возможность определить, какое именно колесо буксует? При разгоне брать наиболее медленное, при торможении - наиболее быстро вращающееся колесо.

Offline

#250 2013-08-20 08:24:37

pfg21
Member
From: Чебоксары
Registered: 2012-10-18
Posts: 4,281

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

smile интересное обсуждение, а если все четыре колеса сорвало в юз ??
вы так до доплерового датчика, направленного на дорогу, доиграетесь.

Last edited by pfg21 (2013-08-20 08:25:38)

Offline

Board footer

Powered by FluxBB