Pull to refresh
81
0
Илья Корогодин @Korogodin

Спутниковые навигационные системы

Send message

Qwt и Qt Creator. Быстро и просто. Часть 1: визуализатор данных

Reading time6 min
Views93K


Для понимания этой статьи читатель должен иметь начальный опыт разработки windows-приложений в среде Qt Creator.
В примерах используются Qt Creator 3.0.0 (MinGW) и Qwt-6.1.0.


Qwt – графическая библиотека, позволяющая значительно упростить процесс визуализации данных в программе. Упрощение заключается в следующем: нет необходимости вручную прописывать элементы отображения, такие как шкалы координат, сетки, кривые данных и проч. Следует лишь задавать параметры этих элементов.
Аналогия: для того, чтобы построить график в Excel Вы выбираете данные и настраиваете параметры их отображения: минимум и максимум шкал, цвет кривых, подписи данных и др. За визуализацию отвечает Excel – сами элементы Вы не программируете.
Особо отмечу, что Qwt позволяет работать с достаточно большими объемами данных (я работал с 200 000 точек) без возникновения раздражающих «тормозов».
В данной статье мы будем отображать кривую на графике, масштабировать ее, перемещаться по графику, смотреть координаты курсора. Таким образом, мы реализуем минимальный функционал, необходимый для вывода и просмотра графиков. В последующих статьях наш графический редактор будет оснащен дополнительными возможностями.

Читать дальше →
Total votes 20: ↑16 and ↓4+12
Comments7

Шпаргалка по шаблонам проектирования

Reading time2 min
Views1.4M

Перевод pdf файла с сайта http://www.mcdonaldland.info/ с описанием 23-х шаблонов проектирования GOF. Каждый пункт содержит [очень] короткое описание паттерна и UML-диаграмму. Сама шпаргалка доступна в pdf, в виде двух png файлов (как в оригинале), и в виде 23-х отдельных частей изображений. Для самых нетерпеливых — все файлы в конце статьи.

Под катом — много картинок.

Читать дальше →
Total votes 192: ↑179 and ↓13+166
Comments66

Преобразование равномерно распределенной случайной величины в нормально распределенную

Reading time6 min
Views128K
Этот вопрос уже давно подробно изучен, и наиболее широкое распространение получил метод полярных координат, предложенный Джорджем Боксом, Мервином Мюллером и Джорджем Марсальей в 1958 году. Данный метод позволяет получить пару независимых нормально распределенных случайных величин с математическим ожиданием 0 и дисперсией 1 следующим образом:
алгоритм марсалья marsaglia
где Z0 и Z1 — искомые значения, s = u2 + v2, а u и v — равномерно распределенные на отрезке (-1, 1) случайные величины, подобранные таким образом, чтобы выполнялось условие 0 < s < 1.
Многие используют эти формулы, даже не задумываясь, а многие даже и не подозревают об их существовании, так как пользуются готовыми реализациями. Но есть люди, у которых возникают вопросы: «Откуда взялась эта формула? И почему получается сразу пара величин?». Далее я постараюсь дать наглядный ответ на эти вопросы.

Читать дальше →
Total votes 78: ↑73 and ↓5+68
Comments34

Лабораторная установка на любительской электронике: от идеи до готовой машины

Reading time7 min
Views49K
Привет, Хабр!

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


Читать дальше →
Total votes 75: ↑73 and ↓2+71
Comments16

Создание собственных драйверов под Linux

Reading time24 min
Views207K


Многие мои друзья и знакомые крутят пальцем у виска или задаются вопросом: не жмёт ли мне череп, когда узнают, что я пишу драйвера под Linux. Слово “драйвер” окутано каким-то почти мистическим смыслом, и постичь Дао его написания способны лишь избранные гуру.
К счастью это не так. Не знаю, как обстоят дела с написанием драйверов под другие операционные системы, в т.ч. и наиболее популярные, но под linux, вне зависимости от аппаратной архитектуры драйвера пишутся очень просто. Для написания драйвера необходимы базовые знания языка си, представление о работе ОС линукс (базовые), понимание того, что мы хотим получить, желание чтения документации и исходных кодов, ну и усидчивость. Всё.
Вы хотите посмотреть как написать драйвер для своего устройства? Тогда ныряйте под кат!
Читать дальше →
Total votes 323: ↑318 and ↓5+313
Comments107

Расчет положения небесных тел на небосводе. Часть 1

Reading time7 min
Views24K
Не так давно очень активно обсуждалась тема Марса. В то время у меня возник вопрос от которого в силу своего наивного любопытства я никак не мог избавится: «Где Марс находится в данный момент, в какой стороне?» и смежный с ним: «Да и вообще, как определить положение остальных планет?». Очевидно, что траектории движения планет относительно земли будут весьма хитрыми. Конечно, можно воспользоваться планетариями, например таким, но как вы уже поняли, это не наш путь.

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



Всех любопытных прошу под кат.
Читать дальше →
Total votes 49: ↑48 and ↓1+47
Comments25

Астрофотография в каждый дом

Reading time6 min
Views126K
Думаю у любого человека, интересующегося космосом — возникала идея купить телескоп, чтобы лично все посмотреть.

Однако суровая реальность вечно портит всю малину: в пределах города – все небо засвечено уличным освещением и турбулентность воздуха высокая. Это означает, что либо придется ограничится самыми крупными и яркими объектами (вроде Луны и Юпитера), либо возить телескоп далеко за город.

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

Пример того, что получилось: галактика Андромеда, M31 на телескопе Т20
Читать дальше →
Total votes 216: ↑215 and ↓1+214
Comments60

Десятка лучших консольных команд

Reading time2 min
Views198K
imageВ данном посте я расскажу о наиболее интересных командах, которые могут быть очень полезны при работе в консоли. Однозначных критериев определения какая команда лучше другой — нет, каждый сам для своих условий выбирает лучшее. Я решил построить список команд на основе наиболее рейтинговых приемов работы с консолью от commandlinefu.com, кладовой консольных команд. Результат выполнения одной из таких команд под Linux приведен на картинке. Если заинтересовало, прошу под кат.
Узнать больше
Total votes 382: ↑346 and ↓36+310
Comments215

Linux для профессионалов: как подготовить макет к печати в типографии

Reading time9 min
Views47K

Небольшая преамбула


Коллеги, я тут некоторое время назад подумал, что было бы неплохо завести нечто вроде коллективной рубрики «Linux для профессионалов», в которой рассказывать о том, как организуют свою деятельность специалисты, использующие Linux для каждодневной работы и, вопреки общепринятому мнению, при этом не являющиеся ни программистами не системными администраторами ни «технофриками» вообще. Было бы здорово, если бы уважаемые читатели — пользователи Linux делились бы собственным опытом. Чтобы бросить «пробный шар», я, с вашего позволения, для начала попробую поделиться моим опытом подготовки дизайн-макета к печати.

Я намеренно не хочу затрагивать такие комплексные аспекты, как редактирование изображений и подготовка трехмерных визуализаций в Blender. Так же я не ставлю задачу обучить читателя пользоваться профессиональным инструментарием. Для этого есть документация и масса пользовательских ресурсов. Цели настоящей серии я бы очертил так:

  • Устранить предвзятое мнение относительно невозможности использования *nix систем для профессиональной деятельности отличной от работы программиста или администратора сети;
  • Показать, что за счет модульности архитектуры *nix систем и использования программного обеспечения с открытым исходным кодом, следующего стандартам POSIX, многие операции, на которые в привычном рабочем окружении я ранее тратил часы а то и дни, могут весьма просто автоматизироваться, либо решатся за считанные минуты;
  • Поделиться опытом и показать, какой инструментарий выбирают специалисты (в частности, какой выбрал я в процессе поисков) и какие решения могут быть наиболее приемлемы для тех или иных задач.


Собственно, в качестве первого примера я решил рассмотреть подготовку макета буклетов для двух моих проектов.

Буклеты: пражский электронный GPS путеводитель и Interplay Medium

Это тиражный результат. Прошу прощения за качество снимка, была только настольная лампа под рукой, если кто хочет посмотреть оригинал, вот буклет про GPS аудиогид в PDF формате с редуцированным разрешением растровой графики.

Ниже я расскажу о ключевых этапах и проблемах, которые пришлось решать в процессе.
Подготовка иллюстраций....
Total votes 102: ↑97 and ↓5+92
Comments67

Простыми словами о преобразовании Фурье

Level of difficultyMedium
Reading time14 min
Views1.1M
Я полагаю что все в общих чертах знают о существовании такого замечательного математического инструмента как преобразование Фурье. Однако в ВУЗах его почему-то преподают настолько плохо, что понимают как это преобразование работает и как им правильно следует пользоваться сравнительно немного людей. Между тем математика данного преобразования на удивление красива, проста и изящна. Я предлагаю всем желающим узнать немного больше о преобразовании Фурье и близкой ему теме того как аналоговые сигналы удается эффективно превращать для вычислительной обработки в цифровые.

image (с) xkcd

Без использования сложных формул и матлаба я постараюсь ответить на следующие вопросы:
  • FT, DTF, DTFT — в чем отличия и как совершенно разные казалось бы формулы дают столь концептуально похожие результаты?
  • Как правильно интерпретировать результаты быстрого преобразования Фурье (FFT)
  • Что делать если дан сигнал из 179 сэмплов а БПФ требует на вход последовательность по длине равную степени двойки
  • Почему при попытке получить с помощью Фурье спектр синусоиды вместо ожидаемой одиночной “палки” на графике вылезает странная загогулина и что с этим можно сделать
  • Зачем перед АЦП и после ЦАП ставят аналоговые фильтры
  • Можно ли оцифровать АЦП сигнал с частотой выше половины частоты дискретизации (школьный ответ неверен, правильный ответ — можно)
  • Как по цифровой последовательности восстанавливают исходный сигнал


Я буду исходить из предположения что читатель понимает что такое интеграл, комплексное число (а так же его модуль и аргумент), свертка функций, плюс хотя бы “на пальцах” представляет себе что такое дельта-функция Дирака. Не знаете — не беда, прочитайте вышеприведенные ссылки. Под “произведением функций” в данном тексте я везде буду понимать “поточечное умножение”

Итак, приступим?
Total votes 203: ↑192 and ↓11+181
Comments190

Как мы строили авиатренажер: бесценный опыт

Reading time10 min
Views131K
Привет всем!

Чуть менее года назад я включился в процесс строительства устройства, которое находится где-то между авиасимулятором и профессиональным авиатренажером. Это был не первый опыт — в 2009 году мы уже решали такую задачу, поэтому приступая к реализации весьма амбициозной мечты мы постарались не наступить на все возможные грабли. Тут я опишу предысторию с «первым блином», и как она повлияла на второй. Если будет интересно, напишу подробно про наш второй тренажер.

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

Осторожно, много картинок, вызывающих нервный тик у любителей авиации и инженеров.
Итак…

Читать дальше →
Total votes 134: ↑129 and ↓5+124
Comments107

Робот-автомобиль команды АВРОРА на “Робокросс-2013”

Reading time15 min
Views40K

Привет, Хабр!
Становится традицией публиковать отчёты команд после выступления на соревнованиях “Робокросс”.
В прошлом сезоне были отчёты команд НАМТ и MobRob, а сейчас, мне хотелось бы рассказать о работе нашей команды.

Я расскажу про то, как мы делали робота, и почему мы его сделали именно так. Надеюсь, это будет интересно участникам других команд, или просто увлекающимся подобной тематикой.
Подробности
Total votes 94: ↑93 and ↓1+92
Comments46

Организация кружка электроники и робототехники в Москве

Reading time10 min
Views146K
Хотел бы рассказать о своем опыте организации кружка электроники в обыкновенной московской общеобразовательной школе. Это, может быть, и не очень соответствует тематике Хабра, но во-первых посты об образовании (высшего, дополнительного, за рубежом, интерактивного и т.д.) здесь появляются довольно часто, а значит интересны многим. И, во-вторых, сегодняшние школьники, которые увлекаются IT, электроникой и робототехники это, по сути, завтрашняя аудитория Хабра, не так ли?
image
Читать дальше →
Total votes 195: ↑194 and ↓1+193
Comments152

ARM-ы для самых маленьких: компоновка-2, прерывания и hello world!

Reading time9 min
Views40K


Нашел возможность «добить» цикл еще одной статьей, где я подведу небольшой итог. По сути, только сейчас мы добрались до того, с чего, обычно, начинают программировать:
  • рассматриваем «сложный» сценарий компоновки GNU ld;
  • учимся использовать прерывания;
  • наконец добираемся до hello world!


Предыдущие статьи цикла:


Примеры кода из статьи: https://github.com/farcaller/arm-demos

Читать дальше →
Total votes 63: ↑59 and ↓4+55
Comments9

Занимательная геодезия

Reading time9 min
Views102K
Всем привет!
Сегодня я расскажу тебе, %USERNAME%, о башмаках и сургуче, капусте, королях координатах, проекциях, геодезических системах и совсем чуть-чуть о веб-картографии. Устраивайся поудобнее.

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

Вот, казалось бы, простая вещь — географические координаты. Широта и долгота, что может быть проще. А вот представьте, что вы очутились на необитаемом острове. Смартфон утонул, а других средств связи у вас нет. Остаётся только написать письмо с просьбой о помощи и по старинке выбросить его в море в запечатанной бутылке.

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

Об этом и о многом другом - подробнее под катом
Total votes 108: ↑103 and ↓5+98
Comments51

Юнит-тестирование в Qt

Reading time6 min
Views82K

gollum подметил что в тексте картинки есть ошибка

Салют, хабр! Как дела?

Хотел немного подучится чему-то. Искал на хабре в хабе «Qt Software» хоть какой-то пост про юнит-тестирование в Qt. Не нашел. Тут я расскажу базовые вещи про юнит-тестирование на Qt (не ожидайте могучего шаманства). На самом деле, юнит-тестить в Qt довольно просто. Что бы узнать как это делать, приглашаю читать дальше.
Читать дальше →
Total votes 35: ↑31 and ↓4+27
Comments21

EmBlocks — IDE для STM32

Reading time3 min
Views62K
Я обещал поделиться своей настроенной средой Em::Blocks.
Выполняю обещание.


Что такое Em::Blocks?


Это IDE на основе Code::Blocks — кросс-платформенной быстрой среды разработки со встроенным скриптовым языком и очень гибкой настройкой, ориентированной под С/С++ разработку. В среде есть встроенные шаблоны для кучи различных случаев и возможность подключать любые компиляторы.
EmBlocks в отличие от CodeBlocks не кросс-платформенная, она существует только под Windows.
Зато вместе с ней поставляется специальная версия CodeSourcery тулчейна, которая позволяет плотнее интегрировать тулчейн с IDE. Версия в комплекте всегда свежая.

Достоинства EmBlocks


  • быстрая, т.к. написана в native коде
  • расширяемая и хорошо автоматизируется с помощью скриптов
  • шаблоны проектов можно настроить на свой вкус
  • можно самому изменить диалог мастера создания проекта
  • не требует установки — можно носить с собой на флешке и легко перенести с настройками на другой комп
  • из коробки поддерживает отладку через ST-Link и J-Link
  • бесплатная
  • неплохо поддерживается на собственном форуме

Пример проекта с использованием EmBlocks — мигание светодиодами.
Подробности и архив для скачивания
Total votes 18: ↑17 and ↓1+16
Comments23

Памятка пользователям ssh

Reading time13 min
Views1.5M
abstract: В статье описаны продвинутые функций OpenSSH, которые позволяют сильно упростить жизнь системным администраторам и программистам, которые не боятся шелла. В отличие от большинства руководств, которые кроме ключей и -L/D/R опций ничего не описывают, я попытался собрать все интересные фичи и удобства, которые с собой несёт ssh.

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

Оглавление:
  • управление ключами
  • копирование файлов через ssh
  • Проброс потоков ввода/вывода
  • Монтирование удалённой FS через ssh
  • Удалённое исполнение кода
  • Алиасы и опции для подключений в .ssh/config
  • Опции по-умолчанию
  • Проброс X-сервера
  • ssh в качестве socks-proxy
  • Проброс портов — прямой и обратный
  • Реверс-сокс-прокси
  • туннелирование L2/L3 трафика
  • Проброс агента авторизации
  • Туннелирование ssh через ssh сквозь недоверенный сервер (с большой вероятностью вы этого не знаете)
Читать дальше →
Total votes 360: ↑352 and ↓8+344
Comments148

Неортогональная БИНС для малых БПЛА

Reading time7 min
Views32K
БИНС
По правилам сокращений в заголовке не должно быть, но расписав сокращения я превратил бы заголовок в аннотацию. Так что вот…
  • БИНС — бесплатформенная инерциальная навигационная система
  • БПЛА — беспилотный летательный аппарат
  • ОЧ — ось чувствительности датчика

Речь в статье пойдет о навигационной системе, в которой ОЧ датчиков ориентированы неортогонально, т.е. расположены под некоторым, ненулевым, углом к осям системы координат, связанной с БПЛА. Особенность таких БИНС в том, что по информации от каждого из датчиков можно получить значения всех трех компонент угловой скорости (для гироскопов) и линейного ускорения (для линейных акселерометров) объекта.
Статья написана как дополнение к Строим мультикоптер, часть вторая. Целью является описание одного из способов борьбы с дрейфом нуля в дешевых датчиках.
Для чего нужна избыточность читать тут...
Total votes 67: ↑63 and ↓4+59
Comments45

Полезные идиомы многопоточности С++

Reading time25 min
Views83K

Введение

Данная статья является продолжением цикла статей: Использование паттерна синглтон [1], Синглтон и время жизни объекта [2], Обращение зависимостей и порождающие шаблоны проектирования [3], Реализация синглтона в многопоточном приложении [4]. Сейчас я хотел бы поговорить о многопоточности. Эта тема настолько объемна и многогранна, что охватить ее всю не представляется возможным. Здесь я заострю внимание на некоторых практичных вещах, которые позволят вообще не думать о многопоточности, ну или думать о ней в крайне минимальном объеме. Если говорить точнее, то думать о ней только на этапе проектирования, но не реализации. Т.е. будут рассмотрены вопросы о том, как сделать так, чтобы автоматически вызывались правильные конструкции без головной боли. Такой подход, в свою очередь, позволяет значительно уменьшить проблемы, вызванные состояниями гонок (race condition, см. Состояние гонки [5]) и взаимными блокировками (deadlock, см. Взаимная блокировка [6]). Этот факт уже сам по себе представляет немалую ценность. Также будет рассмотрен подход, который позволяет иметь доступ к объекту из нескольких потоков одновременно без использования каких-либо блокировок и атомарных операций!
Еще...
Total votes 71: ↑66 and ↓5+61
Comments46

Information

Rating
Does not participate
Date of birth
Registered
Activity