Category Без рубрики

Микро апдейт

Немного обновил осциллограф – добавил деления на осях и границах экрана для удобства визуального определения значения функции, изменил цвета, сделал вывод снизу экрана осциллографа инфу о каналах – ID, скейл по Y (значение на ячейку), цвет канала. Теперь легче ориентироваться. Ну и кламп графиков по окну осциллографа добавил )

В коде стабилизации квадрика поправил несколько ошибок, сменил PID контроллер Yaw оси на PD т.к. интеграл ошибки считать по этой оси нельзя, знак ошибки постоянно меняется, стало всё стабильно работать без внезапных улетаний в космос )

0
0

Заработала стабилизация

Подкрутил стабилизацию, теперь осталось добавить контроль Yaw вращения и в первой итерации контроллер полёта готов.  Умеет сам держать заданную высоту, умеет слушаться команд “пульта” ( в реале – джойстика) и собсно держать нужную заданную ориентацию. Всё считается по-честному.

0
0

Апдейт виртуального мультикоптера

Перепиливаю систему стабилизации мультикоптера. Переписал код работающий с ориентацией коптера с углов Эйлера на кватернионы, всё стало клёвее, ошибка считается в локальном пространстве коптера, представляет собой вектор “наклона” коптера относительно заданной ориентации. Dot-ом для каждого считаю развешивание ошибки между движками (на рисунке – жёлтые линии выходящие из движков), получается прям очень удобная система! Она не зависит от количества и расположения движков, всё автоматом развешивается и работает.  Осталось накинуть обратно PID контроллеры и квадрик снова будет летать )

0
0

Квадрокоптер

Пришёл наконец с Китая Hubsan X4 H107L  квадрокоптер. Самый простой в серии X4, но летает весьма круто. Правда, из коробки он по ходу вообще не был откалиброван, летел в сторону, стики странные значения по разным осям выдавали, но после стандартных калибровок стиков/акселерометра всё пришло в норму )

0
0

Развлечение

Решил забавы ради запилить простенький симулятор мультикоптеров на Unity.

Сделал расчёт тяги винтов, расчёт крутящего момента, минимальную стабилизацию в контроллере полёта )  Летает, корявенько пока, но я прекрасно понимаю что надо сделать, чтобы летал нормально, тем и занимаюсь в данное время )  Для отладки контроллеров стабилизации накидал себе сейчас скриптик “Осциллограф”.   Поддерживает любое количество “каналов”, у каналов настраивается скейл по обоим осям, настраивается частота семплинга у осциллографа. В общем довольно удобная для дебага штуковина получилась )

0
0

Наконец пришла плата с FPGA от Altera! ^__^

Наконец дождался борд из Китая с FPGA!  Давно хотел попробовать программирование под всякие там ПЛИС-ы и вот оно свершилось 😀

Скачал Quartus II и прочитал введение в Verilog.  После получаса безуспешных ковыряний в IDE я всё же смог сам написать, собрать и прошить первый код на Verilog ^____^   Пищит динамиком на плате:


module Test(clk, out);

input clk;
output out;
reg out;
reg[15:0] cnt;

parameter period = 7000;

always@(posedge clk)
begin
cnt<=cnt+1;
if(cnt == period)
begin
cnt<=0;
out<=~out;
end
end

endmodule
0
0

ELF & DWARF parser

Написал тут по-быстрому (хотя не очень, 4 дня потратил на этот говнокод) на C# библиотеку для чтения ELF файлов и парсинга DWARF4 дебаг информации в ELF файлах.

https://github.com/L-proger/ELFUtils

https://github.com/L-proger/ELFExplorer – GUI приложение, лагучий набросок.

В основном для самообучения, для раскуривания дебаггинга и т.п. но ещё одно интересное для меня применение – напишу вскоре тулзу для вывода подробной инфы о памяти ELF бинарника.  Я довольно часто программирую под микроконтроллеры и как многим известно там есть обычно достаточно большие проблемы с объёмом памяти – как FLASH так и оперативной, потому часто приходится считать байты и стараться сделать бинарник как можно меньше по размеру.

Вот и накидал эту библиотеку. На самом деле всё можно было бы сделать гораздо проще! Использоваться стандартную тулзу тулчейна readelf и, скажем, регулярками разбирать её вывод и получать финальную информацию о символах в бинарнике, но это слишком просто ) А так я разобрался в DWARF формате что меня весьма радует.

Пример вывода консольной версии ниже. Консоль сейчас для простого дебага, я вскоре сделаю красивый удобный гуй для этого всего )   А, да, ещё DLL умеет парсить пока минимально lds скрипты линкера и правильно использовать информацию о секциях памяти для последующего анализа её использования (можно посмотреть сколько % памяти каждого из банков занято и т.п.).


Вывод инфы по секциям памяти.

0
0

Windows Phone Developer Registration

Недавно сменил HTC 8S на Nokia Lumia 1020, попробовал зарегистрировать новый телефон, чтобы можно было на него билдить приложения и… не получилось о_О

Стандартная процедура регистрации простая: ставим WP8 SDK, запускаем Windows Phone Developer Registration тулзу, подключаем телефон с разлоченным экраном и включенным интернетом по USB к компьютеру, тулза регистрации детектит телефон, логинимся в девелоперский аккаунт и телефон разлочивается! Всё просто!  А вот у меня не сработало.

И на то было несколько причин:

1. Судя по всему учитывается установленный регион в телефоне. Для тестов Cortana я сменил язык телефона и регион на USA!  После долгих попыток зарегать телефон понял, что регион важен.

2. Москва на данный момент находится в GMT+3 засовом поясе, однако в телефоне у меня Москве присвоен GMT+4 пояс. Я вручную выставлял время и пояс на +03.  Так делать не нужно!  Необходимо выставить +4 часовой пояс в данном случае и пусть время будет на 1 час больше на время регистрации.

3. После перехода на новую мобилу Windows автоматически подтащил из облака все настройки телефона, включая и его имя! Важно, что если прошлый телефон не был разрегистрирован и имел такое же имя, то зарегистрировать новый не выйдет. Пофиксил удалением регистрации предыдущего телефона через сайт https://dev.windowsphone.com/en-us/Account/Devices

Как только выставил верный регион и корявое время но совпадающее с мнением телефона, разрегистрировал старый телефон – всё сразу зарегистрировалось.  

0
0

Автомобильные колёса

Уже имеющиеся в Unity колёса работают хорошо, но их интерфейс не достаточно информативен для моей реализации физической модели автомобиля.  Поэтому я запилил свои колёса под юнити )

Для расчёта сил трения шин использую “магическую формулу” Hans B. Pacejka – ох и долго ж я её вкуривал (не люблю что-то использовать не зная как оно работает), но в итоге заимплементил )  На скрине выводится функция поперечного трения шины выделенного колеса под нормальной нагрузкой в 5KN и углом развала 0 градусов в диапазоне от -20 до 20 градусов проскальзывания.
Неплохая статья для начинающих разбираться в физике автомобиля: http://www.gamedev.ru/code/articles/?id=4233  (перевод)

Объяснение параметров функции Pacejka 94 года (есть более старые и новые варианты функции, количество параметров в них различается) http://www.edy.es/dev/docs/pacejka-94-parameters-explained-a-comprehensive-guide/

0
0