Pull to refresh
38
0
Alexander Semion @Spin7ion

Инженер прикладной математики

Send message
Есть такое понятие, как направленная площадь. Эта величина одновременно показывает занимаемое объектом место и то, какой "стороной" этот объект к нам лежит. Некоторые формулы резко упрощаются при добавлении знака площади.

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

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

Считать площадь многоугольника по такой формуле очень удобно, если взять за центр начало координат:

S = (x1 y2 — x2 y1) + (x2 y3 — x3 y2) +… + (xn y1 — x1 yn)
Вспомнилась подборка самых адских заголовков подобного мусора
Мальчик-телепат глушит радио-сигналы во время мастурбации и другие
1. Вороны выклевали ветерану на лысине свастику.

2. Одинокий мужчина лишился прямой кишки во время самолечения простатита.

3. Пасхальный заяц загрыз отца семерых детей.

4. Группу заблудившихся школьников вывел из лесу дождевой червь.

5. Кошка утонула в менструации хозяйки.

6. Мальчик-телепат глушит радио-сигналы во время мастурбации.

7. Девочку разорвало на экзамене резинкой ее «стрингов».

8. На МКС голод — космонавты едят сперму друг друга.

9. Ребенок онанировал кипятильником, повторяя за матерью.

10. На ночь родители мазали девочку селедочными кишками.

11. Нижегородский крановщик подрабатывал виселицей.

12. Отец омрачил день рождения ребенка расчленением матери.

13. Пылесос с искусственным интеллектом устроил кровавую бойню.

14. Дизайнер могил: не миф, а реальность.

15. Причиной ДТП стал бобер-педераст.

16. Перелетные птицы оскорбили пометом ветеранов.

17. Школьник разбил голову, поскользнувшись на останках учителя.

Хотелось бы предупредить тех, кто собирается использовать этот фильтр.
На офф. сайте есть более свежая версия — www.x-io.co.uk/open-source-imu-and-ahrs-algorithms — в которой, судя по всему, есть ошибка в формуле шага градиентного спуска (источник).

Как есть
// Gradient decent algorithm corrective step
s0 = -_2q2 * (2.0f * q1q3 — _2q0q2 — ax) + _2q1 * (2.0f * q0q1 + _2q2q3 — ay) — _2bz * q2 * (_2bx * (0.5f — q2q2 — q3q3) + _2bz * (q1q3 — q0q2) — mx) + (-_2bx * q3 + _2bz * q1) * (_2bx * (q1q2 — q0q3) + _2bz * (q0q1 + q2q3) — my) + _2bx * q2 * (_2bx * (q0q2 + q1q3) + _2bz * (0.5f — q1q1 — q2q2) — mz);

s1 = _2q3 * (2.0f * q1q3 — _2q0q2 — ax) + _2q0 * (2.0f * q0q1 + _2q2q3 — ay) — 4.0f * q1 * (1 — 2.0f * q1q1 — 2.0f * q2q2 — az) + _2bz * q3 * (_2bx * (0.5f — q2q2 — q3q3) + _2bz * (q1q3 — q0q2) — mx) + (_2bx * q2 + _2bz * q0) * (_2bx * (q1q2 — q0q3) + _2bz * (q0q1 + q2q3) — my) + (_2bx * q3 — _4bz * q1) * (_2bx * (q0q2 + q1q3) + _2bz * (0.5f — q1q1 — q2q2) — mz);

s2 = -_2q0 * (2.0f * q1q3 — _2q0q2 — ax) + _2q3 * (2.0f * q0q1 + _2q2q3 — ay) — 4.0f * q2 * (1 — 2.0f * q1q1 — 2.0f * q2q2 — az) + (-_4bx * q2 — _2bz * q0) * (_2bx * (0.5f — q2q2 — q3q3) + _2bz * (q1q3 — q0q2) — mx) + (_2bx * q1 + _2bz * q3) * (_2bx * (q1q2 — q0q3) + _2bz * (q0q1 + q2q3) — my) + (_2bx * q0 — _4bz * q2) * (_2bx * (q0q2 + q1q3) + _2bz * (0.5f — q1q1 — q2q2) — mz);

s3 = _2q1 * (2.0f * q1q3 — _2q0q2 — ax) + _2q2 * (2.0f * q0q1 + _2q2q3 — ay) + (-_4bx * q3 + _2bz * q1) * (_2bx * (0.5f — q2q2 — q3q3) + _2bz * (q1q3 — q0q2) — mx) + (-_2bx * q0 + _2bz * q2) * (_2bx * (q1q2 — q0q3) + _2bz * (q0q1 + q2q3) — my) + _2bx * q1 * (_2bx * (q0q2 + q1q3) + _2bz * (0.5f — q1q1 — q2q2) — mz);



Как должно быть
s0= -_2q2*(2*(q1q3 — q0q2) — ax) + _2q1*(2*(q0q1 + q2q3) — ay) + -_4bz*q2*(_4bx*(0.5 — q2q2 — q3q3) + _4bz*(q1q3 — q0q2) — mx) + (-_4bx*q3+_4bz*q1)*(_4bx*(q1q2 — q0q3) + _4bz*(q0q1 + q2q3) — my) + _4bx*q2*(_4bx*(q0q2 + q1q3) + _4bz*(0.5 — q1q1 — q2q2) — mz);

s1= _2q3*(2*(q1q3 — q0q2) — ax) + _2q0*(2*(q0q1 + q2q3) — ay) + -4*q1*(2*(0.5 — q1q1 — q2q2) — az) + _4bz*q3*(_4bx*(0.5 — q2q2 — q3q3) + _4bz*(q1q3 — q0q2) — mx) + (_4bx*q2+_4bz*q0)*(_4bx*(q1q2 — q0q3) + _4bz*(q0q1 + q2q3) — my) + (_4bx*q3-_8bz*q1)*(_4bx*(q0q2 + q1q3) + _4bz*(0.5 — q1q1 — q2q2) — mz);

s2= -_2q0*(2*(q1q3 — q0q2) — ax) + _2q3*(2*(q0q1 + q2q3) — ay) + (-4*q2)*(2*(0.5 — q1q1 — q2q2) — az) + (-_8bx*q2-_4bz*q0)*(_4bx*(0.5 — q2q2 — q3q3) + _4bz*(q1q3 — q0q2) — mx)+(_4bx*q1+_4bz*q3)*(_4bx*(q1q2 — q0q3) + _4bz*(q0q1 + q2q3) — my)+(_4bx*q0-_8bz*q2)*(_4bx*(q0q2 + q1q3) + _4bz*(0.5 — q1q1 — q2q2) — mz);

s3= _2q1*(2*(q1q3 — q0q2) — ax) + _2q2*(2*(q0q1 + q2q3) — ay)+(-_8bx*q3+_4bz*q1)*(_4bx*(0.5 — q2q2 — q3q3) + _4bz*(q1q3 — q0q2) — mx)+(-_4bx*q0+_4bz*q2)*(_4bx*(q1q2 — q0q3) + _4bz*(q0q1 + q2q3) — my)+(_4bx*q1)*(_4bx*(q0q2 + q1q3) + _4bz*(0.5 — q1q1 — q2q2) — mz);



Не зря оптимист. Текущий подход которым все пользуются — deep learning не подходит, но люди уже это осознают, и сейчас проектируются другие теории которые могут вполне работать. Ознакомьтесь с работами Алексея Редозубова например
Не так давно делали лабораторную работу, где нужно было моделировать движение квадрокоптера по траектории, а так же стабилизировать платформу (на которой типа была установлена камера). К счастью (или к сожалению), на мат. моделях в матлабе (точнее, симулинке) все и закончилось. Только мы для управления использовали PID-регуляторы (настраивать пид-регуляторы, да еще для двух контуров — ад).

Скажу по поводу навигации. Действительно, примитивные фильтры типа апериодического звена или скользящего среднего дают большой уход, вдобавок к этому добавляют заметное запаздывание. Однако есть методы, благодаря которым можно обойтись набором акселерометров и ДУСов. Покуда у вас уже есть мат. модель — сложностей не должно возникнуть. Собственно, это любимый на хабре фильтр Калмана в режиме комплексирования. На самом деле он даст достаточных для того, чтобы лететь по заданному маршруту, уход.
Не пойму смысла идеи, с учетом факта существования китайцев.
Seedstudio, ITEAD Studio, и главное — Dirt Cheap Dirty Boards. И т.д. и т.п. 25$ с доставкой за 10 плат 10х10 может позволить себе любой инди разработчик. Никаких дополнительных пошлин за подготовку и т.д. Маска, шелкография, HASL (лужение). Качество отличное, выложу фотки.
Там смысл этого всего, как раз в панелировании. Из-за стандартных размеров плат их легко комбинировать. Эти компании агрегируют заказы в панели и шлют изготовителям плат.
Единственный способ потягаться с этими компаниями — самому стать агрегатором. Для этого нужно иметь выход на производителей плат.

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity