roboforum.ru

Технический форум по робототехнике.

IMU,AHRS, инерциальные датчики

Re: IMU,AHRS, инерциальные датчики

linvinus » 29 июн 2016, 12:02

И какой? Через 20 сек. не можешь вернуться в начальное место как у тебя? Или как у них "0.0475 degrees per minute average after 1 hour." на столе.
Чего ты меня троллишь? :)
...
У ребят из твоей ссылки точность еще выше в три, Карл! В ТРИ РАЗА! Чего ты меня троллишь? :)


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

конечно 0.0475 это троллинг, это показания всей AHRS (не только гиро) в статичном положении,

да в динамике показания уплывают так быстро что развернуться на 180 градусов уже проблематично.
вот тут https://youtu.be/lwlOZzNJqJc?t=35 с 0:35 по 1:00 видно насколько быстро уплывает без автокалибровки в статичном положении.

видно то уплывает только yaw т.к. дрейф гроскопа по pitch и roll компенсируется показаниями акселя,
yaw можно компенсировать только показаниями компаса, что я и делал, только компас в квартире работает плохо, это мы тоже уже обсуждали.

Re: IMU,AHRS, инерциальные датчики

Dmitry__ » 29 июн 2016, 15:26

linvinus писал(а):мне иногда кажется что мы в параллельных вселенных у меня нет опыта работы с точными гироскопами а у вас,судя по всему, с неточными )

Это звучит странно, ибо на прошлой стр. я тебе показывал свою плату, которую специально развел для хорошего и плохого гира :)
Можешь посмотреть характеристики пьезо гироскопов, там мамадарагая.
http://www.symmetron.ru/news/murata-ENC-03RC.shtml

linvinus писал(а):только компас в квартире работает плохо, это мы тоже уже обсуждали.

Это мы не обсуждали, а я, вырывая сердце, орал тебе в ухо. Сейчас происходит тот же процесс с мемс гирами :)

Re: IMU,AHRS, инерциальные датчики

linvinus » 29 июн 2016, 16:15

Это звучит странно, ибо на прошлой стр. я тебе показывал свою плату, которую специально развел для хорошего и плохого гира

я сразу не понял что на фото adis16060
но у нас разные понятия о плохом гире , для меня плохой это за $5 =))

Можешь посмотреть характеристики пьезо гироскопов, там мамадарагая.

спасибо за наводку, мне понравился!



на али есть готовые модули ENC-03 всего за 8 баксов! на ebay вообще за $3

нужно купить попробовать, ну и что что у него сильная зависимость от температуры, крепим датчик температуры строим зависимость и компенсируем, в купе с MPU-6050 может получиться неплохой гибрид.

Это мы не обсуждали, а я, вырывая сердце, орал тебе в ухо.


да я помню, но честно говоря идея автокалибровки компаса не отпала.

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

у компаса главное преимущество то что он всегда видит север (с некоторыми оговорками),
гироскоп же, всё время уплывает, не важно насколько он качественный, конечно если робот достаточно большой и перемещается на большие расстояния то хороший гиро + GPS это простое решение для инерциальной навигации, а вот когда перемещения на ограниченном пространстве в помещении то такой финт никак не пройдёт, и скажем если робот должен ездить продолжительное время строго по инерциальной навигации+одометрия то единственный датчик который привязан к глобальной системе координат это компас,
или вместо компаса нужные другие привязки, например особые метки (ИК или QR) но это требует дополнительных датчиков и довольно серьёзные вычислительные мощности.

решать задачу можно двумя путями,
1) покупать качественный прибор который сразу на выходе даёт хороший результат не требующий доработок.
это правильный путь но дорогой, для робота < $100 неоправданно дорого получается.

2) взять горстку датчиков по $5 смешать показания калманом так чтобы оставить только лучшее от каждого датчика.
Последний раз редактировалось linvinus 29 июн 2016, 16:52, всего редактировалось 1 раз.

Re: IMU,AHRS, инерциальные датчики

Dmitry__ » 29 июн 2016, 16:45

linvinus писал(а):спасибо за наводку, мне понравился!

Стой, все с точностью до наоборот :)
Тот который adis16060 - это хороший, и у меня не adis16060, а adis16250. А тот который ENC-03 - это полный хлам, и у меня более старая версия MA432.
linvinus писал(а):2) взять горстку датчиков по $5 смешать показания калманом так чтобы оставить только лучшее от каждого датчика.

Да нельзя гироскоп отсортировать калманом, ОРУ ТЕБЕ В УХО! :)
Все эти фильтры нелинейные, только все портят. Калман корректирует прогнозируемые ошибки, в гире все ошибки рандомные. Я тебе уже говорил, нельзя получить лучше точность, чем абсолютная ошибка гира, скоро ты это поймешь (через 3 месяца упорных трудов).
Вот тебе реальный способ:
Берем 3 гира, только не перочинные ножи с 100500 сенсорами на одном кристалле, а нормальные одноосные гиры. Ставим их на одну ось. Данные снимаем и усредняем с 2-х гиров, третий гир корректируется. Так по кругу раз в минуту. Гиры , соотв., нужны которые умеют блокировать внутр. сенсор - т.е. он выдает свой дрейф нуля, но не реагирует на угловую скорость. Так устроены операционники с зеродрифт, почитай о них...
Но это все равно дороже 50$ :D

Re: IMU,AHRS, инерциальные датчики

linvinus » 29 июн 2016, 17:28

я в предыдущем сообщении добавил размышления про компас.

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

Да нельзя гироскоп отсортировать калманом, ОРУ ТЕБЕ В УХО! :)
Все эти фильтры нелинейные, только все портят. Калман корректирует прогнозируемые ошибки, в гире все ошибки рандомные. Я тебе уже говорил, нельзя получить лучше точность, чем абсолютная ошибка гира, скоро ты это поймешь (через 3 месяца упорных трудов).


согласен что в связке гиро+аксель + другой гиро показания всего комплекса никакими калманами не улучшить, это я погорячился, хотя сенсор уже заказал :)

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

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

Берем 3 гира, только не перочинные ножи с 100500 сенсорами на одном кристалле, а нормальные одноосные гиры. Ставим их на одну ось. Данные снимаем и усредняем с 2-х гиров, третий гир корректируется. Так по кругу раз в минуту. Гиры , соотв., нужны которые умеют блокировать внутр. сенсор - т.е. он выдает свой дрейф нуля, но не реагирует на угловую скорость. Так устроены операционники с зеродрифт, почитай о них...


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

Re: IMU,AHRS, инерциальные датчики

Dmitry__ » 29 июн 2016, 18:47

Ну отвечая на:
linvinus писал(а):те результаты которые я получал на откалиброванном компасе меня устраивали!


Для меня магнитное поле Земли - не есть константа. Если тебя устраивает, то ок, но опять получили систему с оговорками. Ты учитываешь возможность передвигания холодильника соседом? Наблюдателям за магнитным полем Земли мешают проезжающие машины под окном. Мой компас смещается на 15 град. от простой батарейки на расстоянии 5см. Проходящую жену с пылесосом не рассматриваем, ее можно шугануть :D Компас в стиралке крутится как хочет, навигация в железных контейнерах идет лесом. А есть еще магнитные бури, моряки совсем не доверяют компасу, стоило тогда изобретать гироскоп для них?
И ваще, это не инерциалка, есть смысл это обсуждать-то???
Все твои корректировки гира акселями бессмысленны, т.к. на роботе от гира требуется только курс, а он имеет 0 в проекции на притяжение Земли. Другие оси можно делать без гироскопов (оговорка: На планете Земля :)).
Естественно можно очень сильно улучшить показания инерциалки нетрадиционными способами, в каждом конкретном случае, но сначала надо добиться от инерциалки 10 грд. в час без мухлежа :wink:

Re: IMU,AHRS, инерциальные датчики

linvinus » 30 июн 2016, 09:31

да компас тоже не идеальное решение, идеальное это качественный гиро.
И ваще, это не инерциалка, есть смысл это обсуждать-то???

я считаю что есть смысл, т.к решает туже задачу навигации, это дешёвая альтернатива со множеством оговорк и соответствующего качества.

Все твои корректировки гира акселями бессмысленны, т.к. на роботе от гира требуется только курс, а он имеет 0 в проекции на притяжение Земли. Другие оси можно делать без гироскопов

согласен, потому и мучал компас, всё что мог из него вытягивал.

Естественно можно очень сильно улучшить показания инерциалки нетрадиционными способами, в каждом конкретном случае, но сначала надо добиться от инерциалки 10 грд. в час без мухлежа :wink:

я решил попробовать ваш способ полудуплекса с самотестированием, в MPU-6050 есть режим самотестирования, но нигде нет описания как он устроен во всех доках есть ссылка на документ "Accelerometer and. Gyroscope Self-Test Implementation; AN-MPU-6500A-02" а самого appnote нигде нет.

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

и ещё пока непонятно как синхронизировать показания гироскопов,я вижу такой алгоримт
1) запускаем самотестирование у первого датчика
2) параллельно всё время читаем FIFO со второго
3) дожидаемся окончания самотестирования
4) считываем оффсеты и заносим в соответствующие регистры.
5) перезапускаем первый датчик, ждём первых данных
6) считываем новые показания из FIFO первого датчика и как то пытаемся совместить с показаниями второго.
7) продолжаем читать FIFO первого датчика, а второй отправляем на самотестирование.
8 ) начинаем всё заново но датчики поменялись ролями

т.е. на 6м шаге возможны пропуски или лишние шаги.

уточняю, в FIFO данные складываются с определённой частотой, которая заранее известна, поэтому мы точно можем определить интервал интегрирования

не по теме но близко, использование акселерометра планшета для наведения миномёта iMinomet 6 http://www.vesti.ru/doc.html?id=2689349
я про такое не знал

Re: IMU,AHRS, инерциальные датчики

Angel71 » 30 июн 2016, 12:44

есть баллистические таблицы/таблицы стрельбы, а дальше простая математика.
а вот как максимально с пользой вытянуть данные из mpu6050, когда там i2c, а внутрях оно 8кгц/1кгц гиро/аксель могёт.

Re: IMU,AHRS, инерциальные датчики

linvinus » 30 июн 2016, 12:49

а вот как максимально с пользой вытянуть данные из mpu6050, когда там i2c, а внутрях оно 8кгц/1кгц гиро/аксель могёт.

так там FIFO есть !? в чём проблема?

Re: IMU,AHRS, инерциальные датчики

Angel71 » 30 июн 2016, 13:12

при килогерце никаких. а как выгребать из гиро при 8кгц, из акселя при кгц и сколько там у магнитометра, если он через 6050 подключен... наверно пока упускаю какую мелочь или различные магнитометры стоит пока отдельно считывать. у них же ещё с докой немного неприятно, ещё и всякие motion не скачал (и тем более не декомпилировал что бы посмотреть, как они реализуют обработку). :) надо наверно пока отложить и три под 90 установить и/или 4 пирамидкой и сдампить всё на комп при килогерце.

Re: IMU,AHRS, инерциальные датчики

linvinus » 30 июн 2016, 13:55

Angel71 писал(а):при килогерце никаких. а как выгребать из гиро при 8кгц, из акселя при кгц и сколько там у магнитометра, если он через 6050 подключен... наверно пока упускаю какую мелочь или различные магнитометры стоит пока отдельно считывать. у них же ещё с докой немного неприятно, ещё и всякие motion не скачал (и тем более не декомпилировал что бы посмотреть, как они реализуют обработку). :) надо наверно пока отложить и три под 90 установить и/или 4 пирамидкой и сдампить всё на комп при килогерце.


это всё кладётся в фифо, потом просто нужно считать одним i2c запросом в burst режиме всё что есть на данный момент а потом распарсить.
а вот с двух датчиков параллельно читать fifo уже интереснее будет, думаю нужны разные порты i2c и через dma читать.

наглядно регистры представлены тут http://www.i2cdevlib.com/devices/mpu6050#registers
а исходники Embedded MotionDriver 6.1 без регистрации можно посмотреть тут https://developer.mbed.org/users/oprosp ... ource.html

FIFO:
данные gyro = 6 байт, данные акселя 6 байт, всего 12байт.
буфер 1024 байта
при скорости гиро 8кГц и скрости считывания семплов в FIFO 8кГц получаем переполнение буфера через 0.010625 сек. т.е. опрос должен проводиться с частотой более 100Гц.
при этом данные акселя обновляются только с частотой 1кГц, т.е. на 8 разных значений гиро будет одно и тоже значение акселя в буфере fifo.

может лучше тогда всё на частоте 1кГц читать? и заодно прикрутить ФНЧ для гиро на 42Гц?

кстати описание самотестирования таки есть, я по ошибке смотрел документацию на MPU-6500, там нет, а на MPU-6050 есть.

1. Gyroscope Hardware Self-Test: Relative Method

Gyroscope self-test permits users to test the mechanical and electrical portions of the gyroscope.
Code for operating self-test is included within the MotionAppsTM software provided by InvenSense.
Please refer to the next section (Obtaining the Gyroscope Factory Trim (FT) Value) if not using
MotionApps software.
When self-test is activated, the on-board electronics will actuate the appropriate sensor. This
actuation will move the sensor’s proof masses over a distance equivalent to a pre-defined Coriolis
force. This proof mass displacement results in a change in the sensor output, which is reflected in
the output signal. The output signal is used to observe the self-test response.


Кстати по шумам.
MPU-6050 при частоте среза ФНЧ 10гц имеет 0.005 dps/sqrt(hz), в общем по шумам ориентироваться нельзя, непонятно кто как мерил.
т.е. моё разделение шумов по "классам" и новизне не прокатывает :(

неплохая дока по компасу
https://store.invensense.com/datasheets ... 11v1-0.pdf

Re: IMU,AHRS, инерциальные датчики

Angel71 » 01 июл 2016, 01:04

дока с офсайта то есть, нет (сайт г, пока зарегистрировался, теперь ещё жду, дадут доступ или нет):
- Embedded MotionDriver 6.12/5.1.3
- InvenSense Datalogger v1.6
- Universal Datalogger v1.1
- SensorStudio for FireFly Arduino Kit
чем отличается по ссылке выше моушин драйвер не очень понятно, в 6.12 есть под армы + нет доки как этот дмп программировать и вообще что оно за зверь.
8000 гц * 3 оси * 16 бит = 384 бита. i2c 400кгц. по даташиту вроде если на 8кгц настроить гироскоп и при этом выгребать хотя бы ещё акселерометр, то это 768кбит. пихать в фифо только гиро, а аксель и температуру как-то из регистров? 8кгц*3оси*16бит + 1кгц*3оси*16бит = 432кгц. а ещё не плохо было бы температуру.
если 1кгц, так проблем нет. а вот нужно ли прям утжится и больше 1кгц получать или вообще не особо будет отличаться, если на десятках или сотнях гц с фильтром считывать?...
нужно понять, что от этих 6050, 9150 и кучи других ширпотребных вообще можно добиться, как что выгребать, как интегрировать, когда стоит избыточность датчиков делать, а когда лучше другие датчики брать и т.д. для тестов можно несколько плат одну на другую закрепить и в разных режимах дампить, потом на компе эксперементируя с обработкой и сравнивать режимы. а просто рукой немного платы помотыляв положить на первоначальное место или соорудить из подручных железок какой стенд, где это всё хоть на автомате долго перемещаться будет со всяким дрожанием моторов/серв/вибр/..., с виброизоляцией или без, то уже другое дело.

Re: IMU,AHRS, инерциальные датчики

linvinus » 01 июл 2016, 12:09

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

не спешите там всё написано.
Embedded MotionDriver 5.1.3 - это старый СДК на 6ти осевые датчики (DMP без компаса)
Embedded MotionDriver 6.12 - это новый на 9ти осевые (DMP учитывает компас), подходит и для 6ти осевых, но они советуют для 6ти использовать 5.1 , но на 5.1 нет предкомпилированных MLP либ для ARM.

8кгц*3оси*16бит + 1кгц*3оси*16бит

в mpu6050 так нельзя, выборка в fifo идёт на частоте гиро / делитель, и выбираются одновременно и гиро и аксель.

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

это всё хлам с точки зрения инерциальной навигации.
лучшее чего можно добиться можно посмотреть вот по этому видео post356651.html#p356651
, там и нормальные исходники ,
DMP интересна с точки зрения экономми энергии, но она сама в себе, её никак не подкрутить.

потом на компе эксперементируя с обработкой и сравнивать режимы

в этом нет никакого практического смысла, лучшее соотношение сигнал/шум у mpu6050 при +-250dps + LPF 10Гц (выборка 1кГц) но о быстрых перемещениях можно забыть.
но и это не спасёт от дрейфа гиро.

выше Дмитрий предложил интересный вариант с двумя и более датчиками, только вот в mpu6050 режим Self test это просто приложение дополнительной силы к гиро, в результате он просто показывает других попугаев, но по прежнему реагирует на внешние воздействия. т.е. получается реальная действующая угловая скорость + тестовая скорость.
When self-test is activated, the on-board electronics will actuate the appropriate sensor. This
actuation will move the sensor’s proof masses over a distance equivalent to a pre-defined Coriolis
force. This proof mass displacement results in a change in the sensor output, which is reflected in
the output signal. The output signal is used to observe the self-test response.

Когда активирован режим самотестирования, встроенная электронная система будет воздействовать на сенсоры для которых включен режим самотестирования.
Это воздействие переместит физическое тело датчиков на расстояние эквивалентное заранее заданной Кориолисовой силе.
Это физеческое перемещение тела датчика приведёт к изменению в показаниях датчика.
По показаниям выходного сигнала можно оценить реакцию на self-test воздействие.
STR - self test responce
FT - предкалиброванные прказания STR на заводе.

STR = (показания гироскопа когда включен режим самотестирования) - (показания гироскопа когда самотестирование отключено)
(отличие от предкалиброванных показаний на заводе) = (STR-FT)/FT

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

предкалиброванные показания гироскопа FT хранятся в регистрах SELF_TEST_X, SELF_TEST_Y, SELF_TEST_Z первые 5ть бит, но они хранятся в закодированном виде.
их сначала нужно привести к показаниям гироскопа, формула есть в MPU-6000 and MPU-6050 Register Map and Descriptions Revision 4.2
а реализация на СИ есть в функции gyro_self_test из MotionDriver
или тут https://courses.cs.washington.edu/cours ... xample.ino


Может быть у MPU6500 по другому, судя по исходникам режим self test отличается.

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

Добавлено спустя 1 час 21 минуту 24 секунды:
Теория, ошибки гироскопа:
1) bias - смещение нуля, можно вычислить если усреднять показания покоящегося датчика
2) scale factor - масштабный коэффициент. Показания гироскопа приведённые к град/сек на самом деле будут отличаться от реальных град/сек, для того чтобы скомпенсировать это отличение требуется подобрать масштабный коэффициент.
3) обе ошибки зависят от температуры, так что ещё нужен коэффициент масштабирования в зависимости от температуры датчика.
4) дрейф гироскопа это на самом деле плавающий bias, со временем bias смещается от откалиброванных значений в результате возникает накапливающаяся ошибка интегрирования (датчика показывает что он вращается хотя на самом деле он стоит на месте), чем сильнее уплывает bias от откалиброванного значения тем быстрее будет "виртуальное" вращение.
спастись программно от этого нельзя (если датчик постоянно в подвижном положении), именно скоростью уплывания bias отличаются дорогие и дешёвые гироскопы.

Неплохая документация о том как это можно откалибровать в домашних условиях.
GyroCalibration_EDN_EU_7_2010.pdf
(670.05 КиБ) Скачиваний: 0
Последний раз редактировалось linvinus 01 июл 2016, 12:49, всего редактировалось 2 раз(а).

Re: IMU,AHRS, инерциальные датчики

Dmitry__ » 01 июл 2016, 12:37

Я вот все больше думаю об абсолютных гирах - маховик в подвесе. Интегрирующие датчики надо очень уметь обрабатывать, на хромой кобыле не обьедешь. 10 град. в час, при частоте опроса 300гц. 12 бит на диапазон 300 градусов - это примерно 300/2^12 = 0,07 град. на бит. 300гц. * 3600 сек. = 1080000 опросов в час = 21 двоичных разрядов. Так вот, разрешение одного сумматора нуля должно быть: 10град./0.07 / (300гц. * 3600 сек.) = 0,000132275132275. Это мы еще ничего не опрашиваем. Только интегрирование нуля :). Это вам не хухры-мухры. Один лишний электрон в проводе и мы уже за диапазоном 10град/час. :)
И кста, есть большое подозрение, что математика с плавающей запятой даст значительную ошибку. Только с акселями попа, они не бывают абсолютные, такшта пилить честную математику все равно придется. Правда гир по курсу, дико влияет на конечную координату.

Re: IMU,AHRS, инерциальные датчики

linvinus » 01 июл 2016, 13:09

Dmitry__ писал(а):Я вот все больше думаю об абсолютных гирах - маховик в подвесе. Интегрирующие датчики надо очень уметь обрабатывать, на хромой кобыле не обьедешь. 10 град. в час, при частоте опроса 300гц. 12 бит на диапазон 300 градусов - это примерно 300/2^12 = 0,07 град. на бит. 300гц. * 3600 сек. = 1080000 опросов в час = 21 двоичных разрядов. Так вот, разрешение одного сумматора нуля должно быть: 10град./0.07 / (300гц. * 3600 сек.) = 0,000132275132275. Это мы еще ничего не опрашиваем. Только интегрирование нуля :). Это вам не хухры-мухры. Один лишний электрон в проводе и мы уже за диапазоном 10град/час. :)
И кста, есть большое подозрение, что математика с плавающей запятой даст значительную ошибку. Только с акселями попа, они не бывают абсолютные, такшта пилить честную математику все равно придется. Правда гир по курсу, дико влияет на конечную координату.


ух, расшифровать бы теперь всё это :)


начнём по порядку,

ADIS16265
разрешение гиро 12бит т.е. 300/(2^12-1) = 0.0732601 градус/сек на бит (LSB).
10 град/час это 0.00277778 градуса в сек., 0.0732601/0.00277778 = 26.3736 сек, т.е. разрешение 12бит позволяет "увидеть" уплывание 10град/час только в данных разнесённых на 27сек (через 27сек изменятся выходные данные всего на один разряд), 300гц тут вообще никаким боком, или я ничего не понял :))

при чувствительности +-80 град/сек -> 0.01832 LSB увидим уплывание через 6.59519 сек.

по акселям тоже не понял, он самый что ни наесть абсолютный, если измерять притяжение земли :)

кстати, почитал я про self-test в адисах, похоже там точно такой же принцип как у MPU-6050

Self-Test
The self-test function allows the user to verify the mechanical
integrity of each MEMS sensor. It applies an electrostatic force
to each sensor element, which results in mechanical displace-
ment that simulates a response to actual motion. Table 1 lists
the expected response for each sensor, which provides pass/fail
criteria.


и алгоритм такой же
замеряем bias до self-test, замеряем bias с включенным self-test разница должна быть в пределах +-1100 LSB
Последний раз редактировалось linvinus 01 июл 2016, 13:28, всего редактировалось 2 раз(а).


Rambler\'s Top100 Mail.ru counter