[image]

Использование твердотельных гироскопов в ракетомоделях

 
1 17 18 19 20 21 53
KZ Xan #30.01.2014 11:36  @Бывший генералиссимус#30.01.2014 10:44
+
-
edit
 

Xan

координатор

Б.г.> Не-не-не!! Ты не понял! Вложенные прерывания для БЦВМ - табу!

"Вложенные" — это когда одно прерывание прерывает другое?

Ну, я не вижу ничего аморального в этом. (Хотя и необходимости в этом тоже не вижу.)
Потому что прерывания — дело системы, а не приложения. Их (систему и приложения) должны писать и тестировать разные люди.
   

Xan

координатор

Делал на i8080 АСУ.
Там были железные прерывания:
0. таймер;
1. приёмник юарт;
2. передатчик юарт.
Они как бы с разным приоритетом, но друг друга не прерывают.

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

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

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

ЗЫ
Интересно, зачем я это пишу?
Недержание писательства, наверное!!! :D
   
RU Бывший генералиссимус #31.01.2014 17:35  @GOGI#29.01.2014 13:50
+
-
edit
 
Б.г.>> Туго дело продвигается, очень туго.
GOGI> Ты все также на асме пишешь?

Нашёл, что поломал. В этом случае Си не помог бы ни разу. Я фьюзы изменил - браунаут с 2.7 на 4.0 вольта (это я правильно сделал) и старт-ап задержку с 1к + 64 мс на 16к + 1 мс.
   11.011.0
RU GOGI #31.01.2014 18:23  @Бывший генералиссимус#31.01.2014 17:35
+
-
edit
 
Б.г.> Нашёл, что поломал. В этом случае Си не помог бы ни разу.
Ну, Си бы не помог, а отладчик очень даже.
   26.026.0
RU Бывший генералиссимус #31.01.2014 20:08  @Xan#30.01.2014 11:36
+
-
edit
 
Б.г.>> Не-не-не!! Ты не понял! Вложенные прерывания для БЦВМ - табу!
Xan> "Вложенные" — это когда одно прерывание прерывает другое?
Xan> Ну, я не вижу ничего аморального в этом. (Хотя и необходимости в этом тоже не вижу.)
Саша, а что делать, когда во время прерывания срабатывает вотчдог?
Вообще, что ракета делает, пока система рестартует?

Xan> Потому что прерывания — дело системы, а не приложения. Их (систему и приложения) должны писать и тестировать разные люди.

Саша, почему различают системы "real time" и "hard real time"?

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

Ну так вот - ни у МХ, ни у ЯРСа такого резервного контура нет.
А вот у "Сатурна-5" был.
   11.011.0
KZ Xan #31.01.2014 22:30  @Бывший генералиссимус#31.01.2014 20:08
+
-
edit
 

Xan

координатор

Б.г.> Саша, а что делать, когда во время прерывания срабатывает вотчдог?
Б.г.> Вообще, что ракета делает, пока система рестартует?

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

Б.г.> Саша, почему различают системы "real time" и "hard real time"?

Не знаю разницы.
У меня всё всегда успевало отработать.
Никаких "я тебе деньги в понедельник отдам и не все".

Б.г.> Или любая ракета должна быть оснащена аварийным аналоговым контуром управления, который хотя бы удержит ракету в постоянном положении, пока операционная система выясняет, что её не просто перезагрузили, а перезагрузили во время работы обработчика прерывания (пусть в нём и пять команд всего)?

Ну система же не винда, чтоб пять минут стартовать.
Вполне может уложиться в один квант времени.
А если не может, то мне непонятно, зачем такая.

Б.г.> Ну так вот - ни у МХ, ни у ЯРСа такого резервного контура нет.
Б.г.> А вот у "Сатурна-5" был.

"Каждый... э-э-э... проектирует, как хочет!" :)

ЗЫ
Кстати!
У M$ теперь индийский начальник!
> Новым главой корпорации Microsoft станет Сатья Наделла / Хабрахабр
Теперь винду будут писать индийские погромисты на аутсорсе!!! :D
   
RU Бывший генералиссимус #01.02.2014 15:10  @Xan#31.01.2014 22:30
+
-
edit
 
Б.г.>> Ну так вот - ни у МХ, ни у ЯРСа такого резервного контура нет.
Б.г.>> А вот у "Сатурна-5" был.
Xan> "Каждый... э-э-э... проектирует, как хочет!" :)
Сатурн-5 был пилотируемым, и поэтому в нём был такой контур. В боевых ракетах его не делают.
   11.011.0
RU Бывший генералиссимус #03.02.2014 16:48  @Бывший генералиссимус#31.01.2014 17:35
+
-
edit
 
Б.г.>>> Туго дело продвигается, очень туго.
GOGI>> Ты все также на асме пишешь?
Б.г.> Нашёл, что поломал. В этом случае Си не помог бы ни разу. Я фьюзы изменил - браунаут с 2.7 на 4.0 вольта (это я правильно сделал) и старт-ап задержку с 1к + 64 мс на 16к + 1 мс.
Интересно, что первым обращением к гироскопам ADIS16xx, должно быть чтение. Если первой идёт запись, то её данные игнорируются. Просто задержка не помогает. Долго этого не замечал, потому что первым байтом писал 0 - верхняя половина корректора гироскопа.
   11.011.0
RU Бывший генералиссимус #03.02.2014 20:44  @Бывший генералиссимус#03.02.2014 16:48
+
-
edit
 
Б.г.> Интересно, что первым обращением к гироскопам ADIS16xx, должно быть чтение. Если первой идёт запись, то её данные игнорируются. Просто задержка не помогает. Долго этого не замечал, потому что первым байтом писал 0 - верхняя половина корректора гироскопа.
Нет, поторопился я объявить, что чтения достаточно. В некоторых ситуациях оно спасает, в некоторых, почему-то, нет. Не пойму, в чём дело. Вроде все тайминги в пределах даташитов.
Блин, не хочется бороться с "упрямством" железок, хочется математику и статистику имплементить... А не выходит.
   11.011.0
KZ Xan #03.02.2014 21:09  @Бывший генералиссимус#03.02.2014 20:44
+
-
edit
 

Xan

координатор

Б.г.> Не пойму, в чём дело.

1. У них там нет чего-то вроде "запихнуть сорок единиц, чтоб сбросить автомат"? (У АЦП AD7730 такое есть.)
2. На МК исходное состояние линии данных всегда одинаковое?
   
RU Бывший генералиссимус #03.02.2014 23:00  @Xan#03.02.2014 21:09
+
-
edit
 
Б.г.>> Не пойму, в чём дело.
Xan> 1. У них там нет чего-то вроде "запихнуть сорок единиц, чтоб сбросить автомат"? (У АЦП AD7730 такое есть.)
Да, у нескольких сигма-дельта АЦП такое есть, на ножку ресет не осталось места. У AD7798 тоже.
Xan> 2. На МК исходное состояние линии данных всегда одинаковое?
Да. Отличаться может разве что фаза готовности данных. ADIS16300 можно тактировать снаружи, и можно даже на 46% повысить частоту выдачи данных (с 819,2 Гц до 1200 Гц), что, правда, малоосмысленно при полосе пропускания аналогового тракта 330 Гц по -3 дБ.
Но у ADIS16251 такой возможности нет, а полоса ещё уже (49 Гц при максимальной частоте сэмплирования 256 Гц).
Я сейчас выход готовности данных не опрашиваю, при чтении он всё равно дублируется в старшем бите каждого сэмпла.
Главная незадача, для того, чтобы включить тактирование снаружи, надо это разрешить успешной записью в аппарат.
   11.011.0

Xan

координатор

20-граммовый орнитоптер с системой стереоскопического зрения самостоятельно огибает препятствия

В лаборатории миниатюрных летательных аппаратов Делфтского технического университета (Нидерланды) создан самый маленький в мире полностью автономный летающий... // habrahabr.ru
 
   
KZ Xan #08.03.2015 17:34  @Бывший генералиссимус#03.02.2014 23:00
+
-
edit
 

Xan

координатор

Если ракету прямо со старта закрутить несильно, чтоб у гироскопов голова не закружилась, то не получится ли почти полностью компенсировать линейный эффект?

Для Z-оси, наверное, плохо будет, а другим, возможно, хорошо.

Возможно, это только для ускорения в постоянном направлении сработает.
   
RU Бывший генералиссимус #09.03.2015 01:07  @Xan#08.03.2015 17:34
+
-
edit
 
Xan> Если ракету прямо со старта закрутить несильно, чтоб у гироскопов голова не закружилась, то не получится ли почти полностью компенсировать линейный эффект?
Xan> Для Z-оси, наверное, плохо будет, а другим, возможно, хорошо.
Xan> Возможно, это только для ускорения в постоянном направлении сработает.

Нет, для этого нужно, чтобы угловая скорость была пропорциональна ускорению. Если закручивать просто мотором, то у нас продольное вращение будет медленно убывать со временем. Если поставить перекошенные стабилизаторы, то вращающий момент будет пропорционален линейной скорости. Никак не вытанцовывается. Надо делать по-честному - акселерометром мерять и процессором вычитать.
   11.011.0
KZ Xan #09.03.2015 08:29  @Бывший генералиссимус#09.03.2015 01:07
+
-
edit
 

Xan

координатор

Я имею в виду, что вращать управляемо, со скоростью, например, 1/2 от максимальной измеряемой, чтоб не зашкалило.
Тогда линейный эффект на гироскопах X и Y будет постоянно менять направление и интеграл будет около нуля, а не накапливаться.

Б.г.> Надо делать по-честному - акселерометром мерять и процессором вычитать.

Ну, трудно, мне кажется, будет прокалиброваться.

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

Или на двух разных центрифугах калибровать, с разным радиусом.
   
RU Бывший генералиссимус #09.03.2015 11:31  @Xan#09.03.2015 08:29
+
-
edit
 
Xan> Я имею в виду, что вращать управляемо, со скоростью, например, 1/2 от максимальной измеряемой, чтоб не зашкалило.
Xan> Тогда линейный эффект на гироскопах X и Y будет постоянно менять направление и интеграл будет около нуля, а не накапливаться.

Это с чего бы он будет менять направление? Проекция продольного ускорения на оси будет всё время одной и той же
   11.011.0
KZ Xan #09.03.2015 13:16  @Бывший генералиссимус#09.03.2015 11:31
+
-
edit
 

Xan

координатор

Б.г.> Это с чего бы он будет менять направление? Проекция продольного ускорения на оси будет всё время одной и той же

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

Но если ракета вращается вокруг Z, то ошибка будет тоже вращаться.
И интеграл ошибки за один оборот будет равен нулю.

Чёт-та у меня плохо получается выразить мысль! :)
   
RU Бывший генералиссимус #09.03.2015 16:57  @Xan#09.03.2015 13:16
+
-
edit
 
Xan> X-гироскоп будет давать ошибку (за счёт линейного эффекта), что ракета вращается вокруг оси X-гироскопа.
Xan> Не вокруг абсолютной оси X, а вокруг оси именно гироскопа, которая меняет направление вместе с вращением ракеты.
Xan> Но если ракета вращается вокруг Z, то ошибка будет тоже вращаться.
Xan> И интеграл ошибки за один оборот будет равен нулю.

Отчего же он будет равен нулю-то? у тебя будет получаться, что угол атаки всё время растёт! Т.е. центр масс движется в одну сторону, а нос ракеты смотрит совсем в другую!!!
   11.011.0
KZ Xan #09.03.2015 17:17  @Бывший генералиссимус#09.03.2015 16:57
+
-
edit
 

Xan

координатор

Вот ракета летит вращаясь только вокруг Z.
И не вращаясь вокруг X и Y.

Включаешь ускорение. Вдоль Z, конечно.
Появляется линейный эффект.
X-гироскопу кажется, что ракета начала вращаться вокруг X.
Математика интегрирует эту скорость, чтоб получить угол.
Но.
Математика знает, что ось гироскопа поворачивается вокруг оси Z. Вместе с ракетой.
И поэтому скорость (вектор), которую показывает X-гироскоп, математика сначала разлагает на компоненты относительно абсолютной (невращающейся) системы и потом уже эти компоненты интегрирует.
А интеграл от них за оборот равен нулю.

Понятнее не могу!!! :D
   
RU Бывший генералиссимус #09.03.2015 17:35  @Xan#09.03.2015 17:17
+
-
edit
 
Xan> Вот ракета летит вращаясь только вокруг Z.
Xan> И не вращаясь вокруг X и Y.
Xan> Включаешь ускорение. Вдоль Z, конечно.
Xan> Появляется линейный эффект.
Xan> X-гироскопу кажется, что ракета начала вращаться вокруг X.
Xan> Математика интегрирует эту скорость, чтоб получить угол.
Xan> Но.
Xan> Математика знает, что ось гироскопа поворачивается вокруг оси Z. Вместе с ракетой.
Xan> И поэтому скорость (вектор), которую показывает X-гироскоп, математика сначала разлагает на компоненты относительно абсолютной (невращающейся) системы и потом уже эти компоненты интегрирует.
Xan> А интеграл от них за оборот равен нулю.
Xan> Понятнее не могу!!! :D
Нет, с точки зрения бортовой аппаратуры продольная ось ракеты будет описывать такую же траекторию, как ось прецессирующего гироскопа! И кажущийся угол между осью ракеты и направлением движения будет расти с каждым оборотом!
То, что ты описываешь, получалось бы, если бы блок с гироскопами вращался внутри невращающейся ракеты :) и бортовая математика это учитывала бы. Причём, как раз, это можно сделать, т.к. можно использовать валкодер для измерения угла между осями блока и осями ракеты, а он даёт непосредственно углы, а не угловые скорости, к тому же, не подверженные влиянию линейного ускорения. Но это, как мне кажется, какое-то запредельное извращение.
   11.011.0
KZ Xan #09.03.2015 21:28  @Бывший генералиссимус#09.03.2015 17:35
+
-
edit
 

Xan

координатор

Б.г.> Нет, с точки зрения бортовой аппаратуры продольная ось ракеты будет описывать такую же траекторию, как ось прецессирующего гироскопа!

Угу.

Б.г.> И кажущийся угол между осью ракеты и направлением движения будет расти с каждым оборотом!

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

Б.г.> То, что ты описываешь, получалось бы, если бы блок с гироскопами вращался внутри невращающейся ракеты :)

В чём разница?!
Ньютон с тобой не согласен!! :)


Ну эта... Я идею предложил, мне она не нужна (вроде бы).
И формулы с графиками рисовать не буду.
Так что можно её выбросить на свалку истории! :)
   
RU Бывший генералиссимус #14.03.2015 20:34  @Xan#09.03.2015 21:28
+
-
edit
 
Xan> Так что можно её выбросить на свалку истории! :)
Мне тут хорошую статью подсказали:

Там мужик подтверждает твой тезис о коммутативности "очень малых" поворотов :)
   11.011.0
KZ Xan #15.03.2015 07:58  @Бывший генералиссимус#14.03.2015 20:34
+
-
edit
 

Xan

координатор

Б.г.> Там мужик подтверждает твой тезис о коммутативности "очень малых" поворотов :)

Насчёт очень малых — это для меня даже не аксиома, а где-то в инстинктах зашито!!! :D

А вот для не очень малых, когда эта немалость только вылезать начинает, у меня есть мысль, что накапливаемая ошибка может зависеть от порядка вычислений, x-y-z или x-z-y.
Поэтому сделал себе арифметику симметричную.
Но до проверки пока не добрался.
   
RU Бывший генералиссимус #15.03.2015 20:46  @Xan#15.03.2015 07:58
+
-
edit
 
Б.г.>> Там мужик подтверждает твой тезис о коммутативности "очень малых" поворотов :)
Xan> Насчёт очень малых — это для меня даже не аксиома, а где-то в инстинктах зашито!!! :D
Xan> А вот для не очень малых, когда эта немалость только вылезать начинает, у меня есть мысль, что накапливаемая ошибка может зависеть от порядка вычислений, x-y-z или x-z-y.
Xan> Поэтому сделал себе арифметику симметричную.
Xan> Но до проверки пока не добрался.
В статье написано, что уже на 1 Гц периоде "немалость", а, следовательно, и некоммутативность вылезают. На 10 Гц - ещё нет. Но я сам не пробовал, да пока и не собираюсь - пока не понадобится реализовать пространственный манёвр.
   11.011.0
1 17 18 19 20 21 53

в начало страницы | новое
 
Поиск
Настройки
Твиттер сайта
Статистика
Рейтинг@Mail.ru