Pull to refresh
27
Иван Губочкин @phoenix367read⁠-⁠only

User

Send message

Раздаем 500К на организацию кружков робототехники

Reading time5 min
Views57K


UPD: Конкурс завершен

Почти два года назад мы начали активно продвигать робототехнику в Екатеринбурге. Вскоре после начала нашей деятельности пришло понимание, что самый верный способ привлечения людей в эту сферу — работать со школьниками. Чем мы, собственно, успешно и занялись. Довольно быстро возникло желание масштабировать наш опыт. Нам удалось разделить это желание с двумя екатеринбургскими ИТ-компаниями — Naumen и Экстрим, результат — см. заголовок поста.

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

Читать дальше →
Total votes 84: ↑79 and ↓5+74
Comments17

Цифровая стабилизация изображения со стационарных камер — корреляционный подход

Reading time5 min
Views27K

Введение


Данную статью я решил написать после прочтения статьи «Массивно-параллельная стабилизация изображения», в которой описывается алгоритм для стабилизации изображения с поворотных камер. Дело в том, что в свое время мной был реализован алгоритм для стабилизации изображения со стационарных камер, который используется в IP-видеосервере MagicBox и некоторых других продуктах компании Синезис, в которой я работаю по настоящее время. Алгоритм получился достаточно удачным по своим скоростным характеристикам. В частности, в нем очень эффективно реализован алгоритм поиска смещения текущего изображения относительно фона. Эта эффективность позволила задействовать основные его элементы (конечно с некоторыми модификациями) для сопровождения объектов, а также для проверки их на неподвижность.

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

Рис. 1 Стабилизация изображения иногда очень полезна.

Читать дальше →
Total votes 41: ↑40 and ↓1+39
Comments23

Почему в России почти нет гражданского/коммерческого высокотехнологичного производства?

Reading time27 min
Views410K
Статью с обзором ситуации с микроэлектроникой в России я закончил утверждением, что сейчас в России есть технические возможности для создания любых военных микросхем (если не считаться с ценой). Однако и в комментариях к той статье, и во многих других — всех больше волновал вопрос отсутствия (на уровне погрешности измерений) производства чисто-коммерческих (гражданских) высокотехнологичных продуктов. Этот вопрос волновал и меня, потому я постоянно мучил вопросами всех, кто так или иначе связан с высокими технологиями и бизнесом в России.

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

Под катом попробуем разобраться чем отличаются «высокотехнологичные» компании от «низкотехнологичных», что нужно, чтобы высокотехнологичные компании могли рождаться и выживать, почему с софтом у нас лучше, чем с хардом, с чего начиналась кремниевая долина в США и можно ли её «скопировать», почему Китай всех рвет, а также — окинем взором все, что происходит в Сколково, Роснано, фонде перспективных исследований и приведут ли они к расцвету российских инноваций. Безусловно, я где-то могу ошибаться — буду рад дополнениям в комментариях.

Сразу нужно отметить, что в связи с многогранностью проблемы объем статьи получился довольно большой, так что можно начать читать с резюме в конце, и затем прочитать лишь те разделы, которые вызовут интерес. Сразу хочу предупредить — повествование «нелинейное», соседние заголовки могут описывать разные аспекты проблемы и быть друг с другом практически не связанными.
Читать дальше →
Total votes 389: ↑380 and ↓9+371
Comments304

Автономный квадрокоптер с нуля: PID и грабли

Reading time12 min
Views86K
Большинство проектов, использующих коптеры, опираются на ручное дистанционное управление, полностью автономных систем пока нет. Но для индустриального использования это необходимо; человеческий фактор — причина большинства аварий. Ниже рассказ пойдёт про то, как мы делали свою систему стабилизации с помощью ПИД, позволяющую свести к минимуму участие человека в процессе работы дрона.

Один из тестовых полётов нашего коптера
Читать дальше →
Total votes 52: ↑52 and ↓0+52
Comments54

Библиотека компьютерного зрения CCV 0.6 с новым классификатором изображений

Reading time1 min
Views20K


Для свободной кроссплатформенной библиотеки компьютерного зрения CCV разработан новый классификатор изображений, обученный в свёрточной нейроной сети. Впервые классификатор такого уровня и модели (детектор лиц, детектор автомобилей, детектор пешеходов) выпущены под свободной лицензией.
Читать дальше →
Total votes 34: ↑31 and ↓3+28
Comments13

Lock-free структуры данных. Эволюция стека

Reading time10 min
Views44K

В предыдущих своих заметках я описал основу, на которой строятся lock-free структуры данных, и базовые алгоритмы управления временем жизни элементов lock-free структур данных. Это была прелюдия к описанию собственно lock-free контейнеров. Но далее я столкнулся с проблемой: как построить дальнейший рассказ? Просто описывать известные мне алгоритмы? Это довольно скучно: много [псевдо-]кода, обилие деталей, важных, конечно, но весьма специфических. В конце концов, это есть в опубликованных работах, на которые я даю ссылки, и в гораздо более подробном и строгом изложении. Мне же хотелось рассказать интересно об интересных вещах, показать пути развития подходов к конструированию конкурентных контейнеров.
Хорошо, — подумал я, — тогда метод изложения должен быть такой: берем какой-то тип контейнера — очередь, map, hash map, — и делаем обзор известных на сегодняшний день оригинальных алгоритмов для этого типа контейнера. С чего начать? И тут я вспомнил о самой простой структуре данных — о стеке.
Читать дальше →
Total votes 73: ↑73 and ↓0+73
Comments14

Дифференциальный криптоанализ для чайников

Reading time9 min
Views45K
image

Шифр FEAL обладает таким же уровнем стойкости что и DES. Более того, увеличенная длина ключа (64 бита по сравнению с 56 битами в DES) затрудняет возможность перебора. Шифр FEAL обладает хорошим распределением шифротекстов, близким к случайному. И это тоже говорит в пользу FEAL по сравнению с DES.
Это краткое содержание спецификации алгоритма шифрования FEAL, опубликованного в 1987 году.

Ничто не вечно под луной. В данном топике я расскажу как при наличии всего 40 пар открытых-закрытых текстов получить полный ключ FEAL4 за несколько минут.
Читать дальше →
Total votes 64: ↑63 and ↓1+62
Comments14

The Human Brain Project: Вы спрашивали – мы отвечаем

Reading time25 min
Views62K

Источник: Nature

Некоторое время назад на Хабре была опубликована заметка о возможностях 3D SEM-микроскопии применительно к исследованию структуры человеческого мозга в рамках европейского мегапроекта «The Human Brain Project». Под катом мы постарались максимально подробно – а это значит будет много текста – ответить на заданные вопросы, но начнём по традиции с некоторого введения.
Attention! Впереди очень много текста
Добро пожаловать в мир мозга
Total votes 69: ↑65 and ↓4+61
Comments41

Самодельный фазовый лазерный дальномер

Reading time9 min
Views293K
image
В статье я расскажу о том, как я делал лазерный дальномер и о принципе его работы. Сразу отмечу, что конструкция представляет собой макет, и ее нельзя использовать для практического применения. Делалась она только для того, чтобы убедится в том, что фазовый дальномер реально собрать самому.
Читать дальше →
Total votes 187: ↑187 and ↓0+187
Comments72

Баги реализации стандарта С++11 в Visual Studio 2012, которые были исправлены в Visual Studio 2013

Reading time9 min
Views22K

В этой статье будет рассмотрен ряд багов в реализации стандарта С++11, которые имелись в Visual Studio 2012 и были исправлены в Visual Studio 2013. Таким образом мы теперь можем использовать С++11 так, как в теории предполагается его использовать. Если для обхода багов VS2012 вам пришлось понаписывать «костылей» — теперь их можно убрать.

К сожалению, не все баги были исправлены, кое-что мигрировало из VS2012 в VS2013, а также появились новые баги. Под катом вы найдёте детальный разбор текущего состояния дел.
Читать дальше →
Total votes 66: ↑60 and ↓6+54
Comments20

Опасное развлечение: простой для повторения генератор высокого напряжения

Reading time4 min
Views511K
image

Добрый день, уважаемые хабровчане.
Этот пост будет немного необычным.
В нём я расскажу, как сделать простой и достаточно мощный генератор высокого напряжения (280 000 вольт). За основу я взял схему Генератора Маркса. Особенность моей схемы в том, что я пересчитал её под доступные и недорогие детали. К тому же сама схема проста для повторения (у меня на её сборку ушло 15 минут), не требует настройки и запускается с первого раза. На мой взгляд намного проще чем трансформатор Теслы или умножитель напряжения Кокрофта-Уолтона.

Принцип работы


Сразу после включения начинают заряжаться конденсаторы. В моём случае до 35 киловольт. Как только напряжение достигнет порога пробоя одного из разрядников, конденсаторы через разрядник соединятся последовательно, что приведёт к удвоению напряжения на конденсаторах, подсоединённых к этому разряднику. Из-за этого практически мгновенно срабатывают остальные разрядники, и напряжение на конденсаторах складывается. Я использовал 12 ступеней, то есть напряжение должно умножиться на 12 (12 х 35 = 420). 420 киловольт — это почти полуметровые разряды. Но на практике, с учетом всех потерь, получились разряды длиной 28 см. Потери были вследствие коронных разрядов.

image
Читать дальше →
Total votes 340: ↑297 and ↓43+254
Comments260

C++ User Group по-русски

Reading time3 min
Views16K
Всем привет!
Не так давно я писал о своей поездке на конференцию Meeting C++ в Дюссельдорфе. В процессе обсуждения поездки с разными людьми, в том числе на Хабре я понял, что не только мне не хватает живого общения с коллегами. Есть много встреч, конференций и семинаров, посвящённых разработке ПО и разным её аспектам. Но, в свете появления нового стандарта поменялось многое и обсудить это хочется не только в интернете, но и лично. То есть хочется поговорить именно о C++ и связанных вопросах: новый стандарт, тренды, boost, разные полезные либы, решения и прочее. Так за обсуждениями я как-то незаметно и внезапно для самого себя решил организовать C++ User Group в России.

Под катом кратко что из этого пока вышло.
Читать дальше →
Total votes 62: ↑59 and ↓3+56
Comments23

Пространственно-временная обработка изображений на GPU

Reading time9 min
Views28K
Не так уж и давно стало популярным использовать видеокарты для вычислений. В один прекрасный день, несколько лет назад и я взглянул на новую, тогда, технологию CUDA. В руках была хорошая карточка по тем временам GTX8800, да и задачки для распараллеливания тоже были.
Кто работал с GPU, знает про объединение запросов, конфликт банков и как с этим бороться, а если не работал, то можно найти несколько полезных статей по основам программирования на CUDA[1]. Карта GTX8800, в некотором смысле, была хороша тем, что была одной из первых и поддерживала только первые версии CUDA, поэтому на ней было четко заметно, когда есть конфликты банков или запросы в глобальную память не объединяются, потому что время в этом случае увеличивалось в разы. Все это помогало лучше понять все правила работы с картой и писать нормальный код.
В новые модели добавляют все больше и больше функциональности, что облегчает и ускорят разработку. Появились атомарные операции, кеш, динамический параллелизм и т.д.
В посте я расскажу про пространственно-временную фильтрацию изображений и реализацию для compute capability = 1.0, и как можно ускорить получившийся результат за счет новых возможностей.
Временная фильтрация может пригодиться при наблюдении за спутниками или в прочих ситуациях фильтрации, когда требуется точное подавление фона.

Читать дальше →
Total votes 88: ↑84 and ↓4+80
Comments6

Экспорт Избранного на Хабре в PDF

Reading time3 min
Views35K
Доброго времени суток, хабровчане!


Думаю многих из вас когда-либо посещала мысль «вот бы сохранить статьи с Хабра».
Такая же мысль посетила и меня два дня назад. Сохранить захотел не просто каждую статью, а только те, что в избранном, да не поштучно, а сразу всё скопом.
Первая мысль — надо написать скрипт, который всё это вытянет. Python я уже подучил, но вот с генерацией PDF на нем сталкиваться ещё не приходилось.

Закручинился я было… Но OpenSource и Хабр спасли меня!
Краткая суть статьи для тех, кому не интересно много читать
В статье описан доработанный скрипт на Python fav2pdf.
Изначальный автор скрипта vrtx, за что ему большое спасибо.
«Usage — лучше тысячи слов!»
usage: fav2pdf.py [-h] [-d OUTPUT_DIR] [--from-date FROM_DATE]
                  [--to-date TO_DATE] [--all-in-one]
                  [--only-hubs [ONLY_HUBS [ONLY_HUBS ...]]] [--no-comments]
                  [--no-symlinks]
                  user

Tool for save favorite posts from habrahabr.ru in pdf's or html's

positional arguments:
  user                  habrahabr.ru username

optional arguments:
  -h, --help            show this help message and exit
  -d OUTPUT_DIR, --output-dir OUTPUT_DIR
                        Directory for output
  --from-date FROM_DATE
                        From date
  --to-date TO_DATE     To date
  --all-in-one          Save all posts in one PDF-file
  --only-hubs [ONLY_HUBS [ONLY_HUBS ...]]
                        Save only posts from hubs. For multiple: "--only-hubs
                        Hub1 Hub2 --"
  --no-comments         Dont save comments from posts
  --no-symlinks         Dont create symlinks to posts
  --create-html         Create html's instead of pdf's
  --create-url-list     Just save user.txt with all links


И как же они меня спасли?
Total votes 87: ↑86 and ↓1+85
Comments93

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

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

Устанавливаем Linux-программы на смартфон под управлением Android

Reading time11 min
Views179K


Многие владельцы Android-фонов испытывают трудности с запуском настоящего Linux-софта на своих девайсах. По всем законам он вроде должен здесь работать, да вот только для его установки почему-то нужны права root, сам он распространяется в каких-то самодельных инсталляторах, а выбор программ сильно ограничен. Эта статья предложит ответ на вопрос, почему так получилось, и подскажет решение — удобный способ установки и запуска почти любого Linux-софта в Android.
Подробности
Total votes 110: ↑93 and ↓17+76
Comments41

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

Reading time24 min
Views207K


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

Производящие функции — туда и обратно

Reading time9 min
Views105K
«Производящая функция является устройством, отчасти напоминающим мешок. Вместо того чтобы нести отдельно много предметов, что могло бы оказаться затруднительным, мы собираем их вместе, и тогда нам нужно нести лишь один предмет — мешок».
                                                                                                                                                               Д. Пойа

Введение


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

Идея производящих функций достаточно проста: сопоставим некоторой последовательности <g0, g1, g2, ..., gn> — дискретному объекту, степенной ряд g0 + g1z + g2z2 +… + gnzn +… — объект непрерывный, тем самым мы подключаем к решению задачи целый арсенал средств математического анализа. Обычно говорят, последовательность генерируется, порождается производящей функцией. Важно понимать, что это символьная конструкция, то есть вместо символа z может быть любой объект, для которого определены операции сложения и умножения.
Читать дальше →
Total votes 73: ↑70 and ↓3+67
Comments36

Picaso 3D-Builder — Сделано в России

Reading time8 min
Views96K
Сегодняшний рассказ будет о еще одном весьма интересном и достойном 3D-принтере, о котором ранее на Хабре практически не упоминалось, и с создателями которого мне недавно довелось немного пообщаться.

Picaso 3D-Builder


image
Отличительной особенностью данного принтера является его Альма-матер, а именно:
  1. хотя, как не трудно догадаться, взглянув на картинку, за основу и был взят классический Prusa Mendel, вся последующая «обработка напильником» была спланирована исключительно российской командой;
  2. принтер имеет 100% российский цикл производства. Да-да, не удивляйтесь, это действительно так. И какие преимущества и недостатки последовали за таким решением я как раз расскажу далее;
  3. и принтер комплектуется собственным ПО для работы Picaso Polygon. ПО является закрытым и напоминает Repetier-Host, но в отличии от последнего содержит набор пресетов специально для Picaso 3D-Builder.

А далее по порядку и поподробнее.
Total votes 75: ↑59 and ↓16+43
Comments61

Information

Rating
Does not participate
Location
Россия
Registered
Activity