Специальные цены   новые товары
Закрытая тема
Страница 16 из 50 ПерваяПервая ... 6 14 15 16 17 18 26 ... ПоследняяПоследняя
Показано с 601 по 640 из 2000

Телеметрия (часть 1)

Тема раздела Полеты по камере, телеметрия в категории Cамолёты - Общий; Дополню. У меня в софте стоит т.н. "исключающий фильтр". Есть пределы, которые самолёт никогда не превысит - скорость, ускорение и ...

  1. #601

    Регистрация
    04.05.2007
    Адрес
    Opa-locka, USA
    Возраст
    33
    Сообщений
    1,193
    Дополню.
    У меня в софте стоит т.н. "исключающий фильтр".
    Есть пределы, которые самолёт никогда не превысит - скорость, ускорение и т.п. Обычно ускорения, вычисленные по изменению координаты во времени. Если предел превышен, точка признаётся нерелевантной.
    Идея не нова, в инете достаточно много её реализаций в различных сферах.
    Такой фильтр очень эффективно давит подобного рода глюки.

  2.  
  3. #602

    Регистрация
    19.02.2007
    Адрес
    Москва
    Возраст
    46
    Сообщений
    595
    Цитата Сообщение от smalltim Посмотреть сообщение
    Будет работать с проводком к меге. Но проводков уже слишком много, да и помехи надо окончательно убить. Поэтому после вылизывания прошивки будет новая платка.
    Тимофей, по-моему, сейчас как раз самое время вернуться к исходной шереровской схеме и отделить математику от отображаловки !
    Тогда первую можно будет писать на нормальных сях (или на чем больше нравится) с нормальной плавучкой, не считая такты и байты, а во вторую сгружать готовые строки по SPI... - Собственно, я исходно именно так и планировал делать, но пока расчетов было мало - они хорошо ложились в один кристалл. Сейчас же проект его уже явно перерос.

    PS: Кстати, "стрелка компаса" уже формируется в ОЗУхе, или это фонт ? Я так на взгляд прикинул: 24 положения, по 6 (скажем) знакомест, - это же больше половины всего знакогенератора... - Не слишком большая цена за красоту ?

    Впрочем, независимо от, идея в подарок: Значительно удобнее, когда оный "компас" привязан не к северу, а к курсу. Соответственно, у меня в центре стоит иконка самолета, а направления на "home" и на север бегают вокруг него кругами: всего 18 знаков (девять на "мячик", девять на букву "N") при тех же 24 пеленгах. И поле - всего 3х3...

  4. #603

    Регистрация
    10.07.2006
    Адрес
    Moscow
    Возраст
    39
    Сообщений
    3,554
    Записей в дневнике
    1
    Цитата Сообщение от Artie Посмотреть сообщение
    Тимофей, по-моему, сейчас как раз самое время вернуться к исходной шереровской схеме и отделить математику от отображаловки !
    Тогда первую можно будет писать на нормальных сях (или на чем больше нравится) с нормальной плавучкой, не считая такты и байты, а во вторую сгружать готовые строки по SPI... - Собственно, я исходно именно так и планировал делать, но пока расчетов было мало - они хорошо ложились в один кристалл. Сейчас же проект его уже явно перерос.

    PS: Кстати, "стрелка компаса" уже формируется в ОЗУхе, или это фонт ? Я так на взгляд прикинул: 24 положения, по 6 (скажем) знакомест, - это же больше половины всего знакогенератора... - Не слишком большая цена за красоту ?

    Впрочем, независимо от, идея в подарок: Значительно удобнее, когда оный "компас" привязан не к северу, а к курсу. Соответственно, у меня в центре стоит иконка самолета, а направления на "home" и на север бегают вокруг него кругами: всего 18 знаков (девять на "мячик", девять на букву "N") при тех же 24 пеленгах. И поле - всего 3х3...
    Можете считать это блажью, но вот у меня пункт такой: хочу, чтобы всё было утоптано в один кристалл. Целый кристалл для одной только отображаловки - чудовищно расточительно.
    И пока всё очень даже утаптывается. И на АСМе меня писать не напрягает, такты и байты приходилось считать только в коде непосредственно отбражения
    Для остального кода у меня времени и места - выше крыши. Я ж не занимаюсь рисованием весь кадр, только чуть-чуть вверху кадра и немного внизу кадра.

    А "нормальная плавучка" в приложении к Атмеге - понятие, в нашем случае не имеющее практического смысла.

    Стрелки там 24 положения по 9 знакомест, исходно 1728 байт, но используется 256-байтная таблица переадресации символов, типа компрессии. В общем, в итоге используется половина знакогенератора, 1 кБ.

    > в центре стоит иконка самолета, а направления на "home" и на север бегают вокруг него кругами

    Не, это много тригонометриии. В моем же варианте ее просто нет. То есть, вообще нет. Целочисленная арифметика только.

  5. #604

    Регистрация
    04.05.2007
    Адрес
    Opa-locka, USA
    Возраст
    33
    Сообщений
    1,193
    Цитата Сообщение от Artie Посмотреть сообщение
    Тимофей, по-моему, сейчас как раз самое время вернуться к исходной шереровской схеме и отделить математику от отображаловки !
    ... Сейчас же проект его уже явно перерос.
    +1

  6.  
  7. #605

    Регистрация
    04.05.2007
    Адрес
    Opa-locka, USA
    Возраст
    33
    Сообщений
    1,193
    Цитата Сообщение от smalltim Посмотреть сообщение
    Для остального кода у меня времени и места - выше крыши. ....Целочисленная арифметика только.
    Ну и возьмите мегу 64(644) и утапливайте в неё всё По габаритам выйдет не сильно больше м8, а по возможностям сильно больше.

    Насчёт плавучки - у мег аппартный умножитель, иар очень неплохо умеет его пользовать. Сейчас сделал проект на тини2313, прибор для корректировки цифровых спидометров. Он включается между датчиком скорости и спидометром, измеряет период входных импульсов и выдаёт выходные с коррекцией, введённой извне (или определённой автоматически). То есть спидометр показывает правильно независимо от шин, главной пары и прочего тюнинха.
    Ну так вот, там одна плавучка, и всё это работает на килогерцах! По трём прерываниям и в реалтайме. На тиньке! И ничего - иар упихал всё это в 1992 байта
    На разработку ушло два дня. А сколько ушло бы на асме?

    Вы просто загоняете себя в угол... Уже сейчас огранициваете качественный параметр - отображение курса - из-за наличия тригонометрии. А могли бы загнать таблицу Брадиса в память и очень быстро считать всё, что надо (для ЖПС тоже полезно).

  8. #606

    Регистрация
    19.02.2007
    Адрес
    Москва
    Возраст
    46
    Сообщений
    595
    Цитата Сообщение от smalltim Посмотреть сообщение
    Можете считать это блажью, но вот у меня пункт такой: хочу, чтобы всё было утоптано в один кристалл. Целый кристалл для одной только отображаловки - чудовищно расточительно.
    Ну, как говорилось в одной пословице, "Хозяин-барин: хочет - пляшет, хочет - удавится."

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

    Вообще, запихивание измериловки в один кристалл с отображаловом у меня было шагом чисто тестовым и осознанно промежуточным, так что я, признаться, нынче искренне удивлен, как много Вам удалось туда затолкать разной арифметики... Однако, несмотря на все достижения, путь этот - явно тупиковый: как с точки зрения расширябельности, так и по удобству дальнейшего сопровождения проекта. И если уж Вы решились разводить "нормальную" плату - то, imho, самое время пожертвовать на ней лишний квадратный сантиметр под второй кристалл.


    (Впрочем, я никого не уговариваю , а просто высказываю "мысли вслух".)

  9. #607

    Регистрация
    10.07.2006
    Адрес
    Moscow
    Возраст
    39
    Сообщений
    3,554
    Записей в дневнике
    1
    Я вовсе не отказываюсь от второго кристалла, просто планы у меня на него несколько другие, и не совсем еще на 100% определенные.
    На второй плате - логгинг данных в память, расчет управления для беспилотного полета, интерфейс с PC для слива-залива данных и конфигурирования системы, и.т.д.
    Решение предполагается двухплатным: одна, нынешняя плата (ну разве что переразведенная, чтоб проводки к ногам не паять и чтоб помехи убить) будет законченным решением, и вторая в паре с первой - законченное решение. Хочешь - паяй одну, хочешь больше - паяй две. На первой плате - "измериловка" и "отображаловка", на второй - "большая математика" и интерфейс с PC.

  10.  
  11. #608

    Регистрация
    04.05.2007
    Адрес
    Opa-locka, USA
    Возраст
    33
    Сообщений
    1,193
    Цитата Сообщение от Artie Посмотреть сообщение
    привод для "наведения" на модель направленной антенны приемника (чтобы не вертеть ее руками), а
    Делали мы такое GPS в самолёте засекает координаты базы, потом антена наводится на передаваемую с борта координату самолёта. Прикольно работало!

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

  12. #609

    Регистрация
    10.07.2006
    Адрес
    Moscow
    Возраст
    39
    Сообщений
    3,554
    Записей в дневнике
    1
    Кстати, я свернул в вывод буковок на экран в цикл, это экономит ну просто дохрена места (по объему - около 25% всего кода !!). Почему Шеререр (или Artie? ) не сделал этого сразу - непонятно.
    Букивки у меня 8х6. Нужно код с 32-мя вызовами макроса shiftout заменить на следующее. По объему это вот следующее как раз равно одному макросу shiftout:

    Код:
    	LDI R17, 31	
    
    	LPM	R16,Z		
    	OUT VIDPORT,R16	
    	NOP
    	NOP
    	LSL	R16
    	OUT VIDPORT,R16
    	NOP
    	NOP
    	LSL	R16
    	OUT VIDPORT,R16
    	NOP
    	NOP
    
    	_output_char:
    	LSL	R16
    	OUT VIDPORT,R16
    	NOP
    	NOP
    	LSL	R16
    	OUT VIDPORT,R16
    	LD	ZL,Y+		
    	LSL	R16
    	OUT VIDPORT,R16	
    	LPM	R16,Z		
    	OUT VIDPORT,R16	
    	NOP
    	NOP
    	LSL	R16
    	OUT VIDPORT,R16
    	NOP
    	LSL	R16
    	DEC R17
    	OUT VIDPORT,R16
    	BRNE _output_char
    
    	NOP
    	LSL	R16
    	OUT VIDPORT,R16
    	NOP
    	NOP
    	LSL	R16
    	OUT VIDPORT,R16
    	LD	ZL,Y+		
    	LSL	R16
    	OUT VIDPORT,R16

  13. #610

    Регистрация
    19.02.2007
    Адрес
    Москва
    Возраст
    46
    Сообщений
    595
    Цитата Сообщение от smalltim Посмотреть сообщение
    Кстати, я свернул в вывод буковок на экран в цикл, это экономит ну просто дохрена места (по объему - около 25% всего кода !!).
    Действительно, красиво. - Вот что значит свежий взгляд !
    ... Причем, у меня и времени на пиксел на один цикл больше... (Вы так и не перешли на 20МГц тактовой ?)

    Почему Шеререр (или Artie? ) не сделал этого сразу - непонятно.
    "Элементарно, Уотсен !" - Потому, что тупые . Оба.

    На самом деле, объема под код здесь было - хоть опой ешь (у меня до сих пор всего около 70% занято), а разорвать цикл посередине - просто не догадались. (Хочется думать, что если/когда бы приперло - тоже сообразили бы, но это самооправдание...)

  14. #611

    Регистрация
    10.07.2006
    Адрес
    Moscow
    Возраст
    39
    Сообщений
    3,554
    Записей в дневнике
    1
    >Вы так и не перешли на 20МГц тактовой ?

    Ну , официально Atmega8-16 до 16 МГц, выше - разгон. Некошерно

    >объема под код здесь было - хоть опой ешь

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

  15. #612

    Регистрация
    19.02.2007
    Адрес
    Москва
    Возраст
    46
    Сообщений
    595
    Цитата Сообщение от smalltim Посмотреть сообщение
    Ну , официально Atmega8-16 до 16 МГц, выше - разгон. Некошерно
    А я сразу поставил 88ую; - в частности и из-за тактовой.

    У меня парсинг NMEA и перевод из ASCII float в целые неожиданно много места занял (пишу с претензией на универсальность, чтоб любое количество знаков после запятой понимал, об ошибках парсинга рапортовал и т.д.), поэтому пришлось еще раз критически посмотреть на код. Под горячую руку попал вывод букивок
    С "горячей рукой" все понятно, а координаты я в свое время делил "пополам": градусы с минутами превращал в целые минуты, вычитал из них "базовые" координаты, умножал на тыщу и прибавлял к ним, как целые, доли минут.
    В результате получались координаты без потери точности, умещавшиеся не то что в long - в двухбайтовый int...
    Навигацию вокруг всего земного шара на такой математике, конечно, осуществлять нельзя было, но в пределах пары десятков километров - "на ура". Правда, для пересчета дальности был нужен целочисленный квадратный корень, который как-то очень плохо "таблетизировался"...

    Нынче же я на все эти "изыски" наплевал, и считаю в [почти честной] плавучке, благо double sin (double) требует что-то всего около 500-700uS (или как-то похоже). Со всеми отсюда вытекающими.

  16. #613

    Регистрация
    10.07.2006
    Адрес
    Moscow
    Возраст
    39
    Сообщений
    3,554
    Записей в дневнике
    1
    >целочисленный квадратный корень

    Есть пара неплохих алгоритмов. Successive approximation - бинарный поиск. Быстрый, но требует умножния.
    И что-то похожее на Cordic. Медленный, но компактнее я в жизни не видел. Я его использую, только расширенный до 4 байт:

    Код:
    ;***************************************************************************
    ;*
    ;* "sqrt" - square root routine
    ;*
    ;* This subroutine extracts the square root
    ;* R17:R16 is input
    ;* The result is placed in R18
    ;* R19, R20 are temporary registers 
    ;***************************************************************************
    
    sqrt:	
    	clr	R18
    	ldi	R19,1; initialize the seed to be subtracted
    	clr	R20; for each iteration
    _loop:	
    	sub	R16,R19
    	sbc	R17,R20
    	brlo	_rexit
    	inc	R18
    	subi	R19, low(-2); keep the number to subtract ODD
    	sbci	R20, high(-2); strange add via subtracting a neg number
    	rjmp	_loop
    _rexit:	
    	ret
    Ну, и особенно меня прёт писать такие вот вещи (используются при парсинге). Попробуйте с плавучкой хотя бы близко подойти к такой скорости и объему. 10 клоков, 10 команд:

    Код:
    ;***************************************************************************
    ;*
    ;* mul10_2 - procedure that multiplies a 2-byte number by 10
    ;*
    ;* R17:R16 is input
    ;* 
    ;* 
    ;* R19:R18 is output
    ;* procedure works by this rule: 10=8+2
    ;***************************************************************************
    
    	mul10_2:
    	ADD R16, R16	; multiplying input by 2
    	ADC R17, R17
    	MOV R19, R17	; copying input*2 to output
    	MOV R18, R16
    	ADD R16, R16	; multiplying input by 2, now input=input*4
    	ADC R17, R17
    	ADD R16, R16	; multiplying input by 2, now input=input*8
    	ADC R17, R17
    	ADD R18, R16	; adding input*8 to output
    	ADC R19, R17
    	RET
    Всё, больше не выпендриваюсь, сначала доделаю ГПС...

  17. #614

    Регистрация
    19.02.2007
    Адрес
    Москва
    Возраст
    46
    Сообщений
    595
    Цитата Сообщение от smalltim Посмотреть сообщение
    >целочисленный квадратный корень
    Есть пара неплохих алгоритмов. Successive approximation - бинарный поиск. Быстрый, но требует умножния.
    Угу. Именно так и было сделано, благо в мегах есть аппаратное умножение.

    И что-то похожее на Cordic. Медленный, но компактнее я в жизни не видел.
    А такого я и не знал, но впредь буду иметь в виду.

    "Мы тоже не всего читали Кнута..."

    Ну, и особенно меня прёт писать такие вот вещи (используются при парсинге). Попробуйте с плавучкой хотя бы близко подойти к такой скорости и объему. 10 клоков, 10 команд:
    Это "классика жанра", так что тут хвастаться нечем... - Лучше покажите такое же красивое, быстрое и каскадируемое _деление_ на 10.

    Однако, все хорошо к месту.

  18. #615

    Регистрация
    10.07.2006
    Адрес
    Moscow
    Возраст
    39
    Сообщений
    3,554
    Записей в дневнике
    1
    Скажите, а курс, например, в GPVTG:

    Код:
    VTG - Velocity made good. The gps receiver may use the LC prefix instead of GP if it is emulating Loran output. 
    
      $GPVTG,054.7,T,034.4,M,005.5,N,010.2,K*33
    
    where:
    		VTG		  Track made good and ground speed
    		054.7,T	  True track made good (degrees)
    		034.4,M	  Magnetic track made good
    		005.5,N	  Ground speed, knots
    		010.2,K	  Ground speed, Kilometers per hour
    		*33		  Checksum
    как отсчитывается? В градусах, от направления на север, и против часовой стрелки? То есть, 90 градусов - это на запад?
    Мне надо стрелку курса на картинке на нужный угол повернуть, а я вот тут на такой фигне запнулся

    И это вот, забегая вперед...
    Кто-то говорил, что существуют варианты автопилота с управлением по одному каналу - руддеру. Ну, или по двум-трем - руддер, руль высоты и мотор. Имеет право на жизнь? Или по-хорошему, всё-таки надо городить систему определения положения аппарата, скажем, на пирометрах, и рулить руддером, элеронами, рулем высоты и мотором, поддерживая на заранее прошитом уровне высоту и скорость, постоянно мониторя и корректируя вектор курса и ориентацию аппарата в пространстве по крену-тангажу?

    Я просто недавно пообщался с умными людьми на полетушках, и сделал вывод: если уж на самике стоит GPS модуль, камера, передатчик и еще черт те знает что, то терять его нельзя никак. Дорого слишком. Надо при потере сигнала с передатчика возвращать его на базу.
    Вот, в общем-то, и определился функционал второй платы моей телеметрии со вторым процессором на борту. Математика и логика там не такая уж там сложная, но голову поломать всё равно придется

  19. #616

    Регистрация
    19.02.2007
    Адрес
    Москва
    Возраст
    46
    Сообщений
    595
    Цитата Сообщение от smalltim Посмотреть сообщение
    Скажите, а курс, например, в GPVTG:
    как отсчитывается? В градусах, от направления на север, и против часовой стрелки? То есть, 90 градусов - это на запад?
    Курс - он от севера и _по_ часовой стрелке. 90deg - это восток.
    У меня вертится не стрелка, а "картушка" (на 36 пеленгов), поэтому я считаю так:

    [codebox] track= 365 - atoi (p);
    if (track > 359)
    track= 0;
    else
    track/= 10;
    i= (uint8_t) track;[/codebox]
    p - поинтер на отпарсированный параметр, i - "номер пеленга" для отрисовки.
    Плюс 5 градусов - чтобы от 355 и до 5 "картушка" стояла севером ровно вверх.

    И это вот, забегая вперед...
    Кто-то говорил, что существуют варианты автопилота с управлением по одному каналу - руддеру. Ну, или по двум-трем - руддер, руль высоты и мотор. Имеет право на жизнь? Или по-хорошему, всё-таки надо городить систему определения положения аппарата, скажем, на пирометрах, и рулить руддером, элеронами, рулем высоты и мотором, поддерживая на заранее прошитом уровне высоту и скорость, постоянно мониторя и корректируя вектор курса и ориентацию аппарата в пространстве по крену-тангажу?
    ика и логика там не такая уж там сложная, но голову поломать всё равно придется
    От самолета, однако, зависит.
    Берем аппарат с отчетливым V крыла - и рулим только руддером (вернее, тут даже рулить не надо: положил его в нужную (или вообще, в любую) сторону на небольшой угол и ждешь, пока курс не станет нужным...
    Но высоту в каких-то пределах поддерживать все-таки придется, и делать это нужно не по gps'у, а по барометрическому альтметру.
    А пирометры нужны для менее стабильных аппаратов. У папараццев, например, ЛК, так что без активного руления как креном, так и тангажом им никуда...
    Всей логики - ПИ[Д]-регулятор. - Только коэффициенты подобрать !

  20. #617

    Регистрация
    10.07.2006
    Адрес
    Moscow
    Возраст
    39
    Сообщений
    3,554
    Записей в дневнике
    1
    Уфф почти добил код GPS. Да, на cях бы было проще писать
    Зато всё утопталось в один кристалл. Теперь - испытания, даже не знаю, как их в условиях дома и двора проводить

    Время инициализации платы телеметрии увеличил до минуты: за это время GPS модуль [по идее] должен выйти из какого угодно холодного старта, войти в 3D Fix и начать отдавать NMEA строки с релевантными данными для запоминания стартовой позиции. За стартовую позицию принимаются данные, полученные в 1 минуту 0 секунд со времени старта телеметрии, не глядя на режим 2D или 3D или количество спутников. При этом количество спутников и режим 2D/3D Fix на экране отображается, если что-то пошло не так, плату можно рестартнуть.
    Ждать, пока не придут гарантированно адекватные 3D fix данные, нецелесообразно, потому что парсинг усложняется в разы - порядок следования NMEA строк у каждого GPS модуля свой собственный. Полагаться на то, что вот в этот вот момент в GPGSA показан 3D fix, а значит в последующих строках идут данные с 3D Fix'ом, нельзя. Кто знает, вдруг между GPGSA и GPRMC модуль свалился в 2D fix, а в пачке строк GPGSA идет после GPRMC, и информация о том, что это 2D Fix, а не 3D, придет уже после того, как 2D-данные ошибочно приняты за 3D. Как это обходить, я вообще не знаю.

    В общем, стратегия такая: отображаем всё, что выдает модуль, он умный. Выбрасываем лишь самые неправдоподобные показания. Ну, и гасим указатель курса при скорости меньше 5 км/ч.

    Если GPS модуль не обнаружен ( с USART не принят ни один символ '$'), плата не показывает "карту" и работает с одними лишь датчиками.
    Из NMEA строк обрабатываются GPRMC, GPGLL, GPVTG, GPGGA, GPGSA.
    Фильтрации данных на предмет выбрасывания неправдоподобно больших разниц по широте и долготе пока нет. Скоро приделается.
    Дополнительно к курсу и направлению на базу на "карте" на экран выводится количество спутников, 0/2D/3D Fix, скорость относительно земли, расстояние до базы, высота.

    Скажите, минута - достаточно для старта любого GPS модуля?

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

  21. #618

    Регистрация
    19.02.2007
    Адрес
    Москва
    Возраст
    46
    Сообщений
    595
    Цитата Сообщение от smalltim Посмотреть сообщение
    Теперь - испытания, даже не знаю, как их в условиях дома и двора проводить
    "Тоже мне, фокус !"

    Вот так, вестимо:
    Нажмите на изображение для увеличения
Название: navtest.jpg
Просмотров: 193
Размер:	8.7 Кб
ID:	171188

    За стартовую позицию принимаются данные, полученные в 1 минуту 0 секунд со времени старта телеметрии, не глядя на режим 2D или 3D или количество спутников.
    [...]
    Добавление: ну, для душевного спокойствия можно за стартовую позицию взять не единичный сэмпл с приемника, а усреднение по 8 сэмплам. Стоит?
    А я вывел кнопочку, бо человек - он всяко умнее железяки будет...
    По ней же и ноль высоты фиксируется, ну и вообще для отладки сподручно.

  22. #619

    Регистрация
    10.07.2006
    Адрес
    Moscow
    Возраст
    39
    Сообщений
    3,554
    Записей в дневнике
    1
    Может быть, я уже в который раз открываю Америку, но я таки нашел компактный и быстрый алгоритм извлечения корня из 32-битного целого. Аналог "деления столбиком" в двоичной системе:

    Код:
    unsigned short lsqrt(unsigned long a){
      unsigned long rem = 0;
      unsigned long root = 0;
      for(int i=0; i<16; i++){
    	root <<= 1;
    	rem = ((rem<< 2) + (a >> 30));
    	a <<= 2;
    	root ++;
    	if(root<= rem){
    	  rem -= root;
    	  root++;
    	}
    	else
    	  root--;
      }
      return (unsigned short)(root >> 1);
    }
    С предыдущим алгоритмом (раза в три компактнее, но медленным аж жуть) нахождение корня занимало аж до 800000+ циклов процессора. Ни о каком вывод на экран в течение этого процесса и речи не шло. А с этим алгоритмом - сами можете примерно подсчитать, раз этак в тысячу быстрее

  23. #620

    Регистрация
    01.03.2006
    Адрес
    Киров
    Возраст
    44
    Сообщений
    1,585
    Записей в дневнике
    1
    Если еще интересно , почитай здесь : http://forum.sources.ru/index.php?showtopic=9933.

    Как я понял, при желании алгоритм можно еще ускорить, но наверно ценой места?

  24. #621

    Регистрация
    04.05.2007
    Адрес
    Opa-locka, USA
    Возраст
    33
    Сообщений
    1,193
    Цитата Сообщение от smalltim Посмотреть сообщение
    Скажите, минута - достаточно для старта любого GPS модуля?

    Добавление: ну, для душевного спокойствия можно за стартовую позицию взять не единичный сэмпл с приемника, а усреднение по 8 сэмплам. Стоит?
    Нет, недостаточно. Некторые стартуют 3 минуты, некоторые 10 секунд (при горячем старте). Почему не делать простой монитор параметра А? По сути, это зеркало 2Д/3Д режима, но там тупо показывают - релевантны координаты или нет.

    Усреднение безсмысленно, ИМХО. Точност не возрастёт.
    Чтобы повысить точность, нужно записать 8-16 семплов, проанализировать их (разница показаний по прямой соседних семплов) и если всё в пределах допуска, то брать один семпл, который больше нравится.
    Например, если патчевая антена направлена вбок, к стене здания, где стоит микроволновка, показания могут плясать на +-100 км.

    Цитата Сообщение от smalltim Посмотреть сообщение
    Ждать, пока не придут гарантированно адекватные 3D fix данные, нецелесообразно, потому что парсинг усложняется в разы - порядок следования NMEA строк у каждого GPS модуля свой собственный. Полагаться на то, что вот в этот вот момент в GPGSA показан 3D fix, а значит в последующих строках идут данные с 3D Fix'ом, нельзя. Кто знает, вдруг между GPGSA и GPRMC модуль свалился в 2D fix, а в пачке строк GPGSA идет после GPRMC, и информация о том, что это 2D Fix, а не 3D, придет уже после того, как 2D-данные ошибочно приняты за 3D. Как это обходить, я вообще не знаю.
    Обходить надо слева Строки, а именно пачка строк, получаются из одного определения. Если в GGA параметр такой, то во всех остаьных он будет таким же. Следующий пакет будет иметь другие параметры. Максимум, что может меняться в течение одного пакета, это время.
    Про парсинг говорили уже. На Си надо было писать Всего три вложеных свитча...


    Типа вот. Больше не позволяет форум вставить:
    interrupt [USART1_RXC] void RXC_isr(void)
    {
    tempGPS = UDR1;

    switch (iGPS) {
    case 'F': {

    switch (Scheduler_task) {
    //-------------------------------------------- классифицируем заголовок
    case 1:
    if (tempGPS == '$') { Scheduler_task++; }
    break;
    case 2:
    if (tempGPS == 'G') { Scheduler_task++; }
    else { Emergency_exit(); }
    break;
    case 3:
    if (tempGPS == 'P') { Scheduler_task++; }
    else { Emergency_exit(); }
    break;
    case 4:
    switch (tempGPS) {
    case 'G': Scheduler_task = 5;
    break;
    case 'R': Scheduler_task = 55;
    break;
    case 'V': Scheduler_task = 105;
    break;
    default: Mistake_exit();
    break;
    }
    break;
    //---------------------------------------------- классифицируем второй символ заголовка строки
    case 5:
    switch (tempGPS) {
    case 'G': Scheduler_task++;
    break;
    case 'S': Scheduler_task = 156;
    break;
    default: Mistake_exit();
    break;
    }
    break;
    case 55:
    if (tempGPS == 'M') { Scheduler_task++; }
    else { Mistake_exit(); }
    break;
    case 105:
    if (tempGPS == 'T') { Scheduler_task++; }
    else { Mistake_exit(); }
    break;
    //---------------------------------------------- классифицируем третий символ заголовка строки
    case 6:
    if (tempGPS == 'A') { Scheduler_task++; iGPS = 'G'; }
    else { Mistake_exit(); }
    break;
    case 56:
    if (tempGPS == 'C') { Scheduler_task++; iGPS = 'R'; }
    else { Mistake_exit(); }
    break;
    case 106:
    if (tempGPS == 'G') { Scheduler_task++; iGPS = 'V'; }
    else { Mistake_exit(); }
    break;
    case 156:
    if (tempGPS == 'A') { Scheduler_task++; iGPS = 'S'; }
    else { Mistake_exit(); }
    break;
    } // end of switch (Scheduler_task)
    break;
    }

    case 'G': {
    switch (Scheduler_task) {
    //----------------------------------------------- а вот теперь пошёл разбор строки GGA

    case 7:
    if (tempGPS == ',') { chislo_propuskov++; }
    if (chislo_propuskov == 6) {
    Scheduler_task++;
    chislo_propuskov = 0;
    }
    break;

    case 8:
    if ( tempGPS != ',' ) { rejim_opredelenia = tempGPS; }
    else { Scheduler_task++; }
    break;
    .............................

  25. #622

    Регистрация
    10.07.2006
    Адрес
    Moscow
    Возраст
    39
    Сообщений
    3,554
    Записей в дневнике
    1
    >Если в GGA параметр такой, то во всех остаьных он будет таким же. Следующий пакет будет иметь другие параметры.
    А можно получить в студию номер поля с этим мараметром в строке NMEA? Ну, или любой критерий, позволяющий с уверенностью говорить, что именно во эта вот строка - из пакета номер Х.

    >Почему не делать простой монитор параметра А?
    Лехко. Только я в GPS-делах не гуру, потому и делаю глупости.

    А код - да, у меня на асме почти такой же код.

  26. #623

    Регистрация
    10.07.2006
    Адрес
    Moscow
    Возраст
    39
    Сообщений
    3,554
    Записей в дневнике
    1
    Код:
    	LDI ZL, LOW (NMEA_COMPLETE_STRING); loading NMEA sentence header
    	LDI ZH, HIGH (NMEA_COMPLETE_STRING)
    	LD R16, Z+; $ symbol
    	LD R17, Z+; G symbol
    	LD R18, Z+; P symbol
    	LD R19, Z+; ? symbol
    	LD R20, Z+; ? symbol
    	LD R21, Z+; ? symbol
    
    	STS NMEA_HEADER_C1, R19
    	STS NMEA_HEADER_C2, R20
    	STS NMEA_HEADER_C3, R21
    
    	LDS R19, NMEA_HEADER_C1;	processing RMC sentence
    	LDS R20, NMEA_HEADER_C2
    	LDS R21, NMEA_HEADER_C3
    	CPI R19, 'R'
    	BRNE _not_RMC_sentence
    	CPI R20, 'M'
    	BRNE _not_RMC_sentence
    	CPI R21, 'C'
    	BRNE _not_RMC_sentence
    
    	LDI R16, 3
    	RCALL NMEA_parse_latitude
    	LDI R16, 5
    	RCALL NMEA_parse_longtitude
    	LDI R16, 8
    	RCALL NMEA_parse_heading
    
    	_not_RMC_sentence:	
    	LDS R19, NMEA_HEADER_C1;	processing VTG sentence
    	LDS R20, NMEA_HEADER_C2
    	LDS R21, NMEA_HEADER_C3
    	CPI R19, 'V'
    	BRNE _not_VTG_sentence
    	CPI R20, 'T'
    	BRNE _not_VTG_sentence
    	CPI R21, 'G'
    	BRNE _not_VTG_sentence
    	
    	LDI R16, 1
    	RCALL NMEA_parse_heading
    	LDI R16, 7
    	RCALL NMEA_parse_speed
    
    	_not_VTG_sentence:
    	LDS R19, NMEA_HEADER_C1;	processing GGA sentence
    	LDS R20, NMEA_HEADER_C2
    	LDS R21, NMEA_HEADER_C3
    	CPI R19, 'G'
    	BRNE _not_GGA_sentence
    	CPI R20, 'G'
    	BRNE _not_GGA_sentence
    	CPI R21, 'A'
    	BRNE _not_GGA_sentence
    	
    	LDI R16, 2
    	RCALL NMEA_parse_latitude
    	LDI R16, 4
    	RCALL NMEA_parse_longtitude
    
    	RCALL NMEA_clear_parse_error
    	LDI R16, 7
    	RCALL NMEA_parse_integer_number
    	LDS R20, NMEA_PARSE_ERROR
    	SBRS R20, 0
    	STS NUM_SATELLITES, R16
    
    	_not_GGA_sentence:
    	LDS R19, NMEA_HEADER_C1;	processing GSA sentence
    	LDS R20, NMEA_HEADER_C2
    	LDS R21, NMEA_HEADER_C3
    	CPI R19, 'G'
    	BRNE _not_GSA_sentence
    	CPI R20, 'S'
    	BRNE _not_GSA_sentence
    	CPI R21, 'A'
    	BRNE _not_GSA_sentence
    	
    	RCALL NMEA_clear_parse_error
    	LDI R16, 2
    	RCALL NMEA_parse_integer_number
    	LDS R20, NMEA_PARSE_ERROR
    	SBRS R20, 0
    	STS TMP_FIXMODE, R17
    
    	_not_GSA_sentence:
    	LDS R19, NMEA_HEADER_C1;	processing GLL sentence
    	LDS R20, NMEA_HEADER_C2
    	LDS R21, NMEA_HEADER_C3
    	CPI R19, 'G'
    	BRNE _not_GLL_sentence
    	CPI R20, 'L'
    	BRNE _not_GLL_sentence
    	CPI R21, 'L'
    	BRNE _not_GLL_sentence
    	
    	LDI R16, 1
    	RCALL NMEA_parse_latitude
    	LDI R16, 3
    	RCALL NMEA_parse_longtitude
    	_not_GLL_sentence:

  27. #624

    Регистрация
    19.02.2007
    Адрес
    Москва
    Возраст
    46
    Сообщений
    595
    "Какой кошмар !" [Фрекен Бок]

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

    Код:
    uint8_t nmea_hash (char *p)
     {
      uint8_t i, h=0;
    
      for (i=0; i<5; i++)
    	 {
    	  h<<= 1;
    	  if (h & 0x80)
    		{
    		 h&= 0x7F;
    		 h++;
    		}
    	  h^= *p++;
    	 }
    
      return h;
     }
    
    ...
    
    switch (nmea_hash (NmeaBuffer))
    	  {
      case hash_GPGGA:
    	   ...
      case hash_GPVTG:
    	   ...
    "Формула" такой хэш-функции подбирается практически от балды; достаточно чтобы на ожидаемом массиве тэгов результат был уникальным. На ассемблере оно получается еще лучше - буквально в две-три команды и без проверок, поскольку можно оперировать флагом переноса...
    Данная конкретная конструкция "настроена" на набор сентенсов от Garmin'а.

    PS: Да, я заполняю буфер, начиная с '$', и заканчиваю по '*', сразу же их отбрасывая. Чексам проверять ленюсь.

  28. #625

    Регистрация
    12.07.2005
    Адрес
    Раменское
    Возраст
    43
    Сообщений
    1,108
    Мож у кого-нибудь есть какая-нибудь предыдущая версия вашего творения, которая вам не нужна, я б купил недорого.
    Нужна только высота и таймер.

  29. #626

    Регистрация
    01.11.2004
    Адрес
    Санкт-Петербург
    Возраст
    31
    Сообщений
    1,007
    Полетал по камере тока что, после захода солнца, красотища! Выключаешь двигатель, бросаешь все ручки и планер как-будто застывает в небе, только еле заметно земля где-то внизу плывет.
    С помехами запутался окончательно - недалеко от себя бывает управление дергает так что 90 градусов разом самолет разварачивает и видео тоже штырит сильно, а далеко-далеко улетаешь - все четко и без помех. Эхх, телеметрию надо конечно...

  30. #627

    Регистрация
    03.06.2007
    Адрес
    Москва
    Возраст
    35
    Сообщений
    3,288
    Цитата Сообщение от ReGet Посмотреть сообщение
    Полетал по камере тока что, после захода солнца, красотища! Выключаешь двигатель, бросаешь все ручки и планер как-будто застывает в небе, только еле заметно земля где-то внизу плывет.
    С помехами запутался окончательно - недалеко от себя бывает управление дергает так что 90 градусов разом самолет разварачивает и видео тоже штырит сильно, а далеко-далеко улетаешь - все четко и без помех. Эхх, телеметрию надо конечно...
    Не в тему конечно но насколько далеко разнесены у Вас передатчик видео и rc приёмник, должно быть не менее 25 см. Я щас разнес и летаю до 2 км, не одной помехи.

  31. #628

    Регистрация
    01.11.2004
    Адрес
    Санкт-Петербург
    Возраст
    31
    Сообщений
    1,007
    Цитата Сообщение от maloii Посмотреть сообщение
    Не в тему конечно но насколько далеко разнесены у Вас передатчик видео и rc приёмник, должно быть не менее 25 см. Я щас разнес и летаю до 2 км, не одной помехи.
    Приемник RC (hitec electron 35 Mhz) практически разделен только стенкой фюзеляжа от видео-передатчика (2.4 Ghz), расстояние сантиметра три.
    Причем раньше я таких проблем почему-то не замечал, казалось все идеально работало (даже отписывался где-то тут об этом).

    Попробую сейчас отнести видео-передатчик чуть подальше к хвосту, а антенну приемника по крылу запустить.

    P.S. В Питере кто-нибудь успешно пользует телеметрию smalltim'а? Может дадите на 5 минут, попробовать к моему помехо-неустойчивому самолету подключить?

  32. #629

    Регистрация
    04.05.2007
    Адрес
    Opa-locka, USA
    Возраст
    33
    Сообщений
    1,193
    Цитата Сообщение от Artie Посмотреть сообщение
    "Какой кошмар !" [Фрекен Бок]
    Я не стал делать буфер. Слишком много оперативы.
    А по вычислительной возможности то же самое получается - в прерывании заталкивается буфер, а потом разгребается. Я сразу вынимаю нужные параметры и момещаю в строки. Далее строки перегоняю в числа (в основном цикле) и всё.

    Цитата Сообщение от smalltim Посмотреть сообщение
    >Если в GGA параметр такой, то во всех остаьных он будет таким же. Следующий пакет будет иметь другие параметры.
    А можно получить в студию номер поля с этим мараметром в строке NMEA? Ну, или любой критерий, позволяющий с уверенностью говорить, что именно во эта вот строка - из пакета номер Х.
    Например, блохи дёргают лапкой перед стартом нового пакета.
    Во-вторых можно использовать таймаут - пакеты идёт раз в секунду обычно и передаются максимум 1/3 секунды. Несложно отслеживать по таймеру время между приходом байта (любого). Если оно больше Х, значит стартует новый пакет.
    В-третьих можно не изобретать мега-универсальный код, а посмотреть, с чего начинается пакет у Вашего приёмника Обычно с GGA.


    >Лехко. Только я в GPS-делах не гуру, потому и делаю глупости.
    Ну зачем так сразу категорично... А-параметр отображает не всё. Релевантность не гарантирует точность. Я бы таки 3-d режима дождался...

    Про поле.
    Например, в GLL:
    6. Статус A = данные верны
    V = данные не верны
    RMC:
    2. Состояние: А = действительный, V = предупреждение навигационного приёмника

    Ну и далее, в других строках он тоже встречается.

  33. #630

    Регистрация
    19.02.2007
    Адрес
    Москва
    Возраст
    46
    Сообщений
    595
    Цитата Сообщение от Dikoy Посмотреть сообщение
    Я не стал делать буфер. Слишком много оперативы.
    А по вычислительной возможности то же самое получается - в прерывании заталкивается буфер, а потом разгребается. Я сразу вынимаю нужные параметры и момещаю в строки. Далее строки перегоняю в числа (в основном цикле) и всё.
    Если не секрет, на каком кристалле строите, что памяти нехватает ?
    (А то когда-то давно, на x51, где памяти было мало, а числогрызности - еще меньше, я тоже сразу раскладывал поля по мере приема. Только делал это не проверками, а разбором по дереву...)

    Однако, и в Вашем случае хэш-функция будет удобнее (и быстрее, и компактнее) грозди сравнений:
    По доллару - сбрасываем и счетчик и хэш. Каждый принятый байт добавляем к хэшу, после пятого - определяем какой сентенс мы в данный момент принимаем, и дальше считаем только запятые, раскладывая принятые параметры "по порядку номеров". - Никакой стейт-машины, всего одна табличка с указателями на "переменные" (или оффсетами) для сохранения каждого параметра, или нулем, если это поле пропускаем...

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

  34. #631

    Регистрация
    04.05.2007
    Адрес
    Opa-locka, USA
    Возраст
    33
    Сообщений
    1,193
    Цитата Сообщение от Artie Посмотреть сообщение
    Однако, и в Вашем случае хэш-функция будет удобнее (и быстрее, и компактнее) грозди сравнений:
    По доллару - сбрасываем и счетчик и хэш. Каждый принятый байт добавляем к хэшу, после пятого - определяем какой сентенс мы в данный момент принимаем, и дальше считаем только запятые, раскладывая принятые параметры "по порядку номеров". - Никакой стейт-машины, всего одна табличка с указателями на "переменные" (или оффсетами) для сохранения каждого параметра, или нулем, если это поле пропускаем...
    Чип мега 128, но унеё в оперативе ещё FAT для флешки сидит.

    Так у меня так же сделано! Определяю строку, считаю запятые, распихиваю символы по буферу. Код только выглядит громоздким, а так там всего 3 вложеных свитча, которые довольно шустро выполняются. Зато по окончанию приёма пакета у меня в буфере готовые данные, там, где надо. Только флажок монирорь и всё

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

  35. #632

    Регистрация
    10.07.2006
    Адрес
    Moscow
    Возраст
    39
    Сообщений
    3,554
    Записей в дневнике
    1
    >Единственный потенциальный минус у такого подхода - это если мы допускаем возможность подключения совершенно произвольного приемника, из которого может выпасть "неожиданный" пакет, хэш для которого совпадет с одним из известных.

    Еще один минус - если пакет по дороге побъется и хэш мусора совпадет с нужным хэшем. Так что я пока по старинке. 3 чтения из памяти и 3 сравнения - знаете ли, не так уж много.

  36. #633

    Регистрация
    01.11.2004
    Адрес
    Санкт-Петербург
    Возраст
    31
    Сообщений
    1,007
    smalltim, только что закончил собирать телеметрию с вашей прошивкой и схемой (только разводку платы немного изменил под детали, что были). Заработало сразу, еще раз благодарю за проделанную работу!

    Датчики не цеплял никакие, в среду подключу к своему самолету и проверю на помехи. На этих выходных уже разнес приемник rc от передатчика видео и камеру поставил под крыло, прямо рядом с передатчиком.
    Если после всех этих манипуляций помехи от телеметрии не исчезнут - не знаю что и делать тогда.. просто мистика получится


  37. #634

    Регистрация
    10.07.2006
    Адрес
    Moscow
    Возраст
    39
    Сообщений
    3,554
    Записей в дневнике
    1
    Цитата Сообщение от ReGet Посмотреть сообщение
    smalltim, только что закончил собирать телеметрию с вашей прошивкой и схемой (только разводку платы немного изменил под детали, что были). Заработало сразу, еще раз благодарю за проделанную работу!

    Датчики не цеплял никакие, в среду подключу к своему самолету и проверю на помехи. На этих выходных уже разнес приемник rc от передатчика видео и камеру поставил под крыло, прямо рядом с передатчиком.
    Если после всех этих манипуляций помехи от телеметрии не исчезнут - не знаю что и делать тогда.. просто мистика получится

    Да, выглядит оно сурово Пожалуйста, наставьте блокировочных конденсаторов по 0.1 .. 1 мкф поближе к микросхемам между питанием и землей. У меня в схеме этого нет

    А я основательно перетряхнул код на предмет оптимальности и компактности и полностью доделал всё, что касается GPS. Ура! Сегодня, как детеныша спать уложу, первое подключение GPS модуля!
    А с завтрашнего вечера четыре дня халявы, буду отлаживать GPS и обновлять блог

  38. #635

    Регистрация
    03.06.2007
    Адрес
    Москва
    Возраст
    35
    Сообщений
    3,288
    Ещё совет разместить телеметрию подальше от приёмника, как писал не ближе 25 см. У меня осталась ещё одна платка от smalltim, но без датчиков давления, думою потестить её. Просто долго игрался в поисках устранения помех и наконец то победил.

    Ещё раз обращаю внимание.

    Провода жестко скрутить спиралью.
    приемник rc от передатчика не ближе 25 см от видео передатчика.

    В таком варианте даже кольца не нужны. Притом сперва полетал со скрученными проводами но приёмник лежал в носу прям под передатчиком, резко увеличилась дальность, чем без скрученных. А как разнес приемник и передатчик, на 2 км отлетал и небыло помех, дальше не решаюсь пока

  39. #636

    Регистрация
    01.11.2004
    Адрес
    Санкт-Петербург
    Возраст
    31
    Сообщений
    1,007
    Окей, в этот раз буду пробовать с разнесенным как можно дальше приемником.
    Какие провода скручивать, от серв или питание телеметрии, камеры, передатчика?

  40. #637

    Регистрация
    03.06.2007
    Адрес
    Москва
    Возраст
    35
    Сообщений
    3,288
    Цитата Сообщение от ReGet Посмотреть сообщение
    Окей, в этот раз буду пробовать с разнесенным как можно дальше приемником.
    Какие провода скручивать, от серв или питание телеметрии, камеры, передатчика?
    Провода серв, вобщем те провода которые входят в приёмник. Кстати и антену приёмника тоже подальше.

  41. #638

    Регистрация
    19.02.2007
    Адрес
    Москва
    Возраст
    46
    Сообщений
    595
    Цитата Сообщение от smalltim Посмотреть сообщение
    Еще один минус - если пакет по дороге побъется и хэш мусора совпадет с нужным хэшем. Так что я пока по старинке. 3 чтения из памяти и 3 сравнения - знаете ли, не так уж много.
    Не-а, не побъется. Негде ему биться.
    Я даже чексам не проверяю, бо на единицах (а даже и на десятках) сантиметров длины и единицах килобод скорости для возникновения битовой ошибки нужна ТАКАЯ помеха, от которой будет уже не до точности ОМП; - модель бы спасти...
    С другой стороны, если не контролировать валидность извлеченных из строки данных, то куда бы ни попал этот гипотетический сбой - в заголовок, или в поле данных, - результат будет строго одинаковым.

    Впрочем, я ведь никого не уговариваю... Просто поделился технологией.

  42. #639

    Регистрация
    04.05.2007
    Адрес
    Opa-locka, USA
    Возраст
    33
    Сообщений
    1,193
    Цитата Сообщение от Artie Посмотреть сообщение
    Не-а, не побъется. Негде ему биться.
    Я даже чексам не проверяю,
    +1
    Тем более, что чексам там хреновая и нормальной защиты всё равно не обеспечивает...

  43. #640

    Регистрация
    01.11.2004
    Адрес
    Санкт-Петербург
    Возраст
    31
    Сообщений
    1,007
    Поставил блокировочные конденсаторы как надо, все исходящие провода вокруг феррита обмотал, засунул в фюзеляж подальше от приемника.
    И ситуация всё таже - передатчик rc со сложеной антенной лежит в 15 метрах, все управляется без помех. Включаю телеметрию - все сервы и двигатель начинают дрыгаться по сторонам на весь свой ход. При таких фокусах никакой речи о полете и быть не может

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

Закрытая тема

Похожие темы

  1. Ответов: 89
    Последнее сообщение: 28.09.2010, 23:24
  2. Smalltim OSD and autopilot (часть 1)
    от kulikof в разделе Полеты по камере, телеметрия
    Ответов: 1999
    Последнее сообщение: 24.08.2010, 21:48
  3. E-Revo 1:16 (часть 1)
    от Вовчик в разделе Минимодели масштаба 1:14 - 1:22
    Ответов: 1999
    Последнее сообщение: 22.07.2010, 12:37

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения