Как стать автором
Обновить
24
0
Иннокентий Сморчков @KeKin

Пользователь

Отправить сообщение

Программируем квадрокоптер на Arduino (часть 1)

Время на прочтение18 мин
Количество просмотров357K


Здравствуйте, хаброжители!
В этой серии статей мы с вами приоткроем крышку квадрокоптера чуть больше, чем этого требует хобби, а также напишем, настроим и запустим в воздух собственную программу для полетного контроллера, которым будет являться обычная плата Arduino Mega 2560.

У нас впереди:
  1. Базовые понятия (для начинающих коптероводов).
  2. PID-регуляторы с интерактивной web-демонстрацией работы на виртуальном квадрокоптере.
  3. Собственно программа для Arduino и настроечная программа на Qt.
  4. Опасные тесты квадрокоптера на веревке. Первые полёты.
  5. Крушение и потеря в поле. Автоматический поиск с воздуха средствами Qt и OpenCV.
  6. Окончательные успешные тесты. Подведение итогов. Куда дальше?

Материал объемный, но постараюсь уложиться в 2-3 статьи.
Сегодня нас ожидает: спойлер с видео, как наш квадрокоптер полетел; базовые понятия; PID-регуляторы и практика подбора их коэффициентов.
Читать дальше →
Всего голосов 107: ↑106 и ↓1+105
Комментарии96

Изобретаем JPEG

Время на прочтение28 мин
Количество просмотров172K

Вы правильно поняли из названия, что это не совсем обычное описание алгоритма JPEG (формат файла я подробно описывал в статье «Декодирование JPEG для чайников»). В первую очередь, выбранный способ подачи материала предполагает, что мы ничего не знаем не только о JPEG, но и о преобразовании Фурье, и кодировании Хаффмана. И вообще, мало что помним из лекций. Просто взяли картинку и стали думать как же ее можно сжать. Поэтому я попытался доступно выразить только суть, но при которой у читателя будет выработано достаточно глубокое и, главное, интуитивное понимание алгоритма. Формулы и математические выкладки — по самому минимуму, только те, которые важны для понимания происходящего.

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

Если есть желание, то предлагаю пройти те же этапы самостоятельно параллельно со статьей. Проверить, насколько приведенные рассуждения подходят для разных изображений, попытаться внести свои модификации в алгоритм. Это очень интересно. В качестве инструмента могу порекомендовать замечательную связку Python + NumPy + Matplotlib + PIL(Pillow). Почти вся моя работа (в т. ч. графики и анимация), была произведена с помощью них.

Внимание, трафик! Много иллюстраций, графиков и анимаций (~ 10Мб). По иронии судьбы, в статье про JPEG всего 2 изображения с этим форматом из полусотни.
Читать дальше →
Всего голосов 356: ↑354 и ↓2+352
Комментарии70

Жизнь на плоскости Лобачевского

Время на прочтение10 мин
Количество просмотров87K
Различные реализации игры «Жизнь» описывались на Хабре уже неоднократно. В этой статье, в качестве продолжения этой темы, рассматривается ещё один её вариант: в качестве игрового поля используется регулярная решётка на плоскости Лобаческого. Описываются общие методы использования плоскости Лобачевского в программах и необходимые для этого математические приёмы.
Как возникла плоскость Лобачевского, достаточно известно. В позапрошлом веке господа Гаусс, Лобачевский и Бойяи, проживавшие примерно в одно время в разных странах тогдашней Европы, задумались, что будет, если отменить пятый постулат Евклида и заменить его на противоположную аксиому. Оказалось, что не случится ничего плохого, и никаких противоречий не возникнет. Заметная часть последующего изучения неевклидовой геометрии была посвящена выяснению того, кто из них у кого украл идею этой самой геометрии.
Менее известно, что несмотря на «отрицательный» способ определения неевклидовой геометрии (вместо того, чтобы сказать, что через точку проходит ровно одна прямая, не пересекающая данную, мы говорим, что таких прямых может быть сколько угодно), мы, тем не менее, получаем систему теорем и формул, не менее стройную, чем та, что есть в евклидовой геометрии. И одновременно, у нас есть гораздо большее разнообразие геометрических фигур, в том числе, разбиений плоскости на правильные многоугольники.

Осторожно, много математики!
Всего голосов 255: ↑253 и ↓2+251
Комментарии64

Знания предметной области бесполезны. Когда предсказания становятся игрой, эксперты проигрывают

Время на прочтение4 мин
Количество просмотров21K

Джереми Ховард — президент и «главный по науке» компании Kaggle, превратившей статистическое прогнозирование в спорт.

Peter Aldhous: Kaggle называет себя онлайн-биржей мозгов. Расскажите об этом.

Джереми Ховард: Это веб-сайт, на котором размещают конкурсы по статистическому прогнозированию. Мы провели много удивительных конкурсов. Например, разработка алгоритма оценки студенческих рефератов. Или вот недавно закончился конкурс на разработку системы обучения Microsoft Kinect жестам. Идея состояла в том, чтобы показать контроллеру жест один раз, а алгоритм должен обучиться распознавать такие жесты в будущем. Еще один конкурс — прогнозирование биологических свойств молекул при скрининге на возможные наркотические свойства.

Читать дальше →
Всего голосов 44: ↑38 и ↓6+32
Комментарии21

Считаем Пи параллельно. Часть 1

Время на прочтение9 мин
Количество просмотров35K

В этой серии постов мы попробуем решить одну простую задачу с помощью более-менее актуальных технологий параллельного программирования (Нативные потоки, OpenMP, TBB, MPI, CUDA, OpenCL, OpenACC, Chapel может быть еще что-нить экзотическое. Как бы сравнительно и в hands-on ключе.
Читать дальше →
Всего голосов 28: ↑27 и ↓1+26
Комментарии21

Немного о многопоточном программировании. Часть 1. Синхронизация зло или все-таки нет

Время на прочтение12 мин
Количество просмотров69K
Мне по работе часто приходится сталкиваться с высоконагруженными многопоточными или многопроцессными сервисами (application-, web-, index-server).
Достаточно интересная, но иногда неблагодарная работа — оптимизировать все это хозяйство.
Растущие потребности клиентов часто упираются в невозможность просто заменить железную составляющую системы на более современную, т.к. производительность компьютеров, скорость чтения-записи жестких дисков и сети растут много медленнее запросов клиентов.
Редко помогает увеличение количества нодов кластера (система как правило распределенная).
Чаще приходится запустив профайлер, искать узкие места, лезть в source code и править ляпы, которые оставили коллеги, а иногда и сам, чего греха таить, много лет назад.
Некоторые из проблем, связаных с синхронизацией, я попытаюсь изложить здесь. Это не будет вводный курс по многопоточному программированию — предпологается, что читатель знаком с понятием thread и context switch, и знает для чего нужны mutex, semaphore и т.д.
Читать дальше →
Всего голосов 69: ↑59 и ↓10+49
Комментарии55

Как я дружил MatLab и C++ в Linux

Время на прочтение4 мин
Количество просмотров43K

Прошла пора дипломов и я хочу поделиться своим рецептом его выполнения. Итак: тема сложная, времени мало, писать все «с нуля» или искать готовые библиотеки — нет большого желания, тем более что мне важна скорость работы системы, а от левых самописных библиотек можно ждать любого подвоха.
Надо сказать что размышлял я недолго и пришел к следующим выводам:
  1. Операционная система — тут думать особо не пришлось: т.к. я являюсь поклонником Debian (к слову: мое решение можно перенести и на Windows).
  2. Интерфейс будущей программы — C++, Qt.
  3. Логика программы — MatLab.

О том, как я объединял этот зоопарк в одну систему - прошу под кат.
Всего голосов 44: ↑38 и ↓6+32
Комментарии34

Формирование высокоуровневых признаков с помощью широкомасштабного эксперимента по обучению без учителя

Время на прочтение5 мин
Количество просмотров25K
В статье Распознавание лиц человеческим мозгом: 19 фактов, о которых должны знать исследователи компьютерного зрения упоминался экспериментальный факт: в мозге примата имеются нейроны, селективно реагирующие на изображение морды лица (человека, обезьяны и т.п.), причем средняя задержка составляет около 120 мс. Из чего в комментарии я сделал дилетантский вывод о том, что зрительный образ обрабатывается прямым распространением сигнала, и количество слоёв нейронной сети — около 12.

Предлагаю новое экспериментальное подтверждение этого факта, опубликованное concretely нашим любимым Andrew Ng.
Читать дальше →
Всего голосов 68: ↑64 и ↓4+60
Комментарии68

Информация

В рейтинге
Не участвует
Откуда
Sankt Gallen, Швейцария
Зарегистрирован
Активность