• Доклады с первого в России митапа разработчиков роботов на Robot Operating System



      В рамках форума Skolkovo Robotics & AI 16 апреля 2019 года в Москве прошел первый в России митап по Robot Operating System — популярному во всем мире программному фреймворку, реализующему основные алгоритмы для построения сложных роботов. Мероприятие дало такой мощный импульс развитию всех команд. Мы погрузились в то, что мы больше всего любим — разработку! Поэтому только сейчас мы нашли время для консолидации уникальных материалов нашей встречи, переданных спикерами для публикации.

      Среди посетителей крупнейшего форума по робототехнике в России нашлось более 150 инженеров, которые либо уже используют ROS или только планируют его использование в своих проектах. Это неплохой результат для первой встречи небольшого сообщества российских разработчиков ROS. Мы стремимся к тому, чтобы стать частью мирового движения — а за рубежом аналогичные мероприятия собирают уже сотни участников. Второй российский ROS Meetup пройдет уже 30 ноября 2019 года.
      Читать дальше →
      • +11
      • 3.2k
      • 1
    • Визуальное представление выборов в Санкт-Петербурге — магия накрутки голосов

      Привет!

      В сентябре этого (2019) года прошли выборы Губернатора Санкт-Петербурга. Все данные о голосовании находятся в открытом доступе на сайте избирательной комиссии, мы не будем ничего ломать, а просто визуализируем информацию с этого сайта www.st-petersburg.vybory.izbirkom.ru в нужном для нас виде, проведем совсем несложный анализ и определим некоторые «волшебные» закономерности.

      Обычно для подобных задач я использую Google Colab. Это сервис, который позволяет запускать Jupyter Notebook'и, имея доступ к GPU (NVidia Tesla K80) бесплатно, это заметно ускорит парсинг данных и их дальнейшую обработку. Мне понадобились некоторые подготовительные работы перед импортом.

      %%time 
      !apt update
      !apt upgrade
      !apt install gdal-bin python-gdal python3-gdal 
      # Install rtree - Geopandas requirment
      !apt install python3-rtree 
      # Install Geopandas
      !pip install git+git://github.com/geopandas/geopandas.git
      # Install descartes - Geopandas requirment
      !pip install descartes

      Далее импорты.

      import requests 
      from bs4 import BeautifulSoup 
      import numpy as np
      import pandas as pd
      import matplotlib.pyplot as plt
      import geopandas as gpd
      import xlrd

      Описание используемых библиотек


      • requests — модуль для запроса на подключение к сайту

      • BeautifulSoup — модуль для парсинга html и xml документов; позволяет получить доступ напрямую к содержимому любых тегов в html

      • numpy — математический модуль с базовым и необходимым набором математических функций

      • pandas — библиотека для анализа данных

      • matplotlib.pyplot — модуль-набор методов построения

      • geopandas — модуль для построения карты выборов

      • xlrd — модуль для чтения табличных файлов

      Настал момент собирать сами данные, парсим. Избирком позаботился о нашем времени и предоставил отчетность в таблицах, это удобно.
      Читать дальше →
    • Транслируем видеопоток с веб-страницы по WebRTC на Facebook и YouTube одновременно

        Facebook и YouTube предоставляют сервисы трансляций, которые позволяют вещать Live-видеопотоки на широкую аудиторию зрителей. В этой статье мы расскажем, как захватить видеопоток с веб-страницы по технологии WebRTC и отправить этот видеопоток одновременно в Facebook и на YouTube для прямой трансляции — сразу в два сервиса.
        Читать дальше →
      • Делаем свой персональный Skype, пошаговая инструкция создания WebRTC приложения

          WebRTC

          WebRTC позволяет реализовать real-time аудио/видео связь через браузер (firefox и chrome).

          В этом топике я расскажу как реализовать простейшее WebRTC приложение.
          Читать дальше →
        • 5 способов сделать Python-сервер на Raspberry Pi. Часть 2

          • Tutorial
          Привет, Хабр.

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



          Статья рассчитана для начинающих.
          Читать дальше →
        • 5 способов сделать Python-сервер на Raspberry Pi. Часть 1

          • Tutorial
          Привет, Хабр.

          Сегодня в большом числе проектов домашней (и не только) автоматизации используется Raspberry Pi. При этом достаточно удобно иметь не только прямой доступ к устройству, но и использовать браузер — это позволяет выполнять необходимые действия и с компьютера, и с мобильного телефона, и даже удаленно из любой точки мира.



          Допустим, у нас уже есть супер Python-программа, делающая что-то очень важное, от мигания светодиодом до управления «умным домом» или хотя бы кормушкой для кота. Я покажу разные способы, от простого к сложному, как сделать web-доступ к такому приложению, добавив немного кода.

          Статья расчитана для начинающих, профи вряд ли найдут здесь что-то кардинально новое, ну а новичкам в Linux надеюсь, будет полезно. Для тех кому интересно, продолжение под катом.
          Читать дальше →
        • Беспроводной программируемый по Wi-Fi комнатный термостат с монитором качества воздуха и другими полезными функциями

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


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


          Что в результате получилось – читайте дальше. Надеюсь, кроме меня проект будет интересен другим.

          Читать дальше →
        • Hexapod-робот под управлением ROS



          Робот гексапод — это платформа, использующая для передвижения шесть ног. После просмотра множества видео в интернете, стало ясно, что очень интересно наблюдать за передвижением подобных роботов. И тут возникло желание сделать что-то похожее, но с одноплатным компьютером BeagleBone Black (далее BBB) на борту, потому что подобных проектов еще не было. Информацию о таких роботах было найти непросто, особенно, что касается программной составляющей. Некоторое время было непонятно с чего начинать, но вскоре было решено начать с изготовления конструктива робота — шасси и электронной составляющей, а затем заняться программированием того, что получилось.
          Читать дальше →
        • Регулярные выражения в Python от простого к сложному. Подробности, примеры, картинки, упражнения

          • Tutorial

          Регулярные выражения в Python от простого к сложному




          Решил я давеча моим школьникам дать задачек на регулярные выражения для изучения. А к задачкам нужна какая-нибудь теория. И стал я искать хорошие тексты на русском. Пяток сносных нашёл, но всё не то. Что-то смято, что-то упущено. У этих текстов был не только фатальный недостаток. Мало картинок, мало примеров. И почти нет разумных задач. Ну неужели поиск IP-адреса — это самая частая задача для регулярных выражений? Вот и я думаю, что нет.
          Про разницу (?:...) / (...) фиг найдёшь, а без этого знания в некоторых случаях можно только страдать.

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

          Надеюсь, вам удастся из него извлечь что-нибудь новое и полезное, даже если вы уже в ладах с регулярками.
          Читать дальше →
        • Современный валютный рынок

            Маринус ван Реймерсвале. Меняла и его жена. 1539 г. Музей Прадо, Мадрид.
            Маринус ван Реймерсвале. Меняла и его жена. 1539 г. Музей Прадо, Мадрид.

            Я начал работать в Deutsche Bank программистом на Java в 2009-м году (последствия кризиса, чудо на Гудзоне, «Миллионер из трущоб», свиной грипп, поражение сборной в Мариборе). На собеседовании мне сообщили, что я буду работать в проекте AutobahnFX.

            FX? Foreign eXchange? Мои знания о валютном рынке не отличались от знаний среднестатистического обывателя. На углу возле дома есть обменник, но от разницы курсов покупки и продажи дёргается глаз. В вагонах метро висит реклама форекс-контор «Чувствуешь разницу? На этом можно заработать!» Газеты описывают инвестиционные банки то как всезнающих спекулянтов, предсказывающих курсы валют на годы вперёд, то как сборище бездарных рвачей, обрушивших мировую экономику. «Ну ладно, — подумал я, — разберёмся в процессе».

            Эта статья — часть того, что я выяснил, работая то над одной системой, то над другой. Почему вам стоит прочитать её? Во-первых, это интересно. Современный валютный рынок — сложная распределённая система из множества независимых акторов. Во-вторых, если вы работаете в финансах, вы можете увидеть сходство и с другими рынками, от рынка облигаций до рынка деривативов на погоду. Наконец, в-третьих, если в следующий кризис опять грохнется какой-нибудь инвестиционный банк, вам будет проще читать разбор полётов в прессе.
            Читать дальше →
          • Обширный обзор собеседований по Python. Советы и подсказки

            Всем привет!


            Кратко о себе. По образованию я математик, а вот по профессии — программист. В сфере разработки с 2006 года. Хотя, поскольку программирование начали изучать ещё в школе, свои первые программки и игры я начал писать ещё в школе (примерно, с 2003). Так сложилось, что пришлось выучить и поработать на нескольких языках. Если не брать во внимание ВУЗ-овские лекции по С, С++, Бэйсику, Паскалю и Фортрану, то реально я работал с Delphi (более 6 лет), PHP (более 5 лет), Embedded (Atmel + PIC около 2.5 лет) и последним временем Python + чуть-чуть Scala. Конечно же без баз данных тоже никак не обойтись.


            Для кого эта статья? Для всех, кто, как и я, хотел (или хочет) найти для себя достойную хорошо оплачиваемую работу с интересным проектом, классным коллективом и всякими плюшками. А также для тех, кто желает поднять свой уровень знаний и мастерства.

            Читать дальше →
          • 19 команд ffmpeg для любых нужд

            • Translation
            • Tutorial
            От переводчика:
            Многие знают, что ffmpeg — это сила, но не все знают, какая именно. Он многогранен и безграничен, а его man объёмен и местами малопонятен, лишь немногие постигли дао профессиональной работы с ним. И тем не менее, этот инструмент может быть полезен почти всем, кто хоть иногда работает с видео и звуком, даже на бытовом уровне. О некоторых полезных консольных командах ffmpeg и пойдёт речь в статье. В некоторых местах я взял на себя смелость вставить ссылки на поясняющие статьи.


            ffmpeg — это кроссплатформенная open-source библиотека для обработки видео- и аудиофайлов. Я собрал 19 полезных и удивительных команд, покрывающих почти все нужды: конвертация видео, извлечение звуковой дорожки, конвертирование для iPod или PSP, и многое другое.

            1. Получение информации о видеофайле

            ffmpeg -i video.avi
            

            2. Превратить набор картинок в видео

            ffmpeg -f image2 -i image%d.jpg video.mpg
            

            Эта команда преобразует все картинки из текущей директории (названные image1.jpg, image2.jpg и т.д.) в видеофайл video.mpg

            (примечание переводчика: мне больше нравится такой формат:
            ffmpeg -r 12 -y -i "image_%010d.png" output.mpg
            

            здесь задаётся frame rate (12) для видео, формат «image_%010d.png» означает, что картинки будут искаться в виде image_0000000001.png, image_0000000002.png и тд, то есть, в формате printf)
            Читать дальше →
          • Глючный код на Python: 10 самых распространенных ошибок, которые допускают разработчики

            • Translation

            О Python


            Python — это интерпретируемый, объектно-ориентированный язык программирования высокого уровня с динамической семантикой. Встроенные структуры данных высокого уровня в сочетании с динамической типизацией и динамическим связыванием делают его очень привлекательным для БРПС (быстрой разработки прикладных средств), а также для использования в качестве скриптового и связующего языка для подключения существующих компонентов или сервисов. Python поддерживает модули и пакеты, тем самым поощряя модульность программы и повторное использование кода.

            О данной статье


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

            Имея это в виду, в этой статье представлен «топ-10» тонких, трудных для обнаружения ошибок, которые могут допустить даже продвинутые разработчики Python.
            Читать дальше →
          • Как аудиокапчу ИТ-гиганта «обошли» во второй раз

              Инженеры из Мэрилендского университета разработали систему, которая «обходит» reCAPTCHA от Google практически со стопроцентной вероятностью. Она задействует алгоритмы распознавания речи для решения аудиокапчи. Рассказываем, как это работает.

              Читать дальше →
            • unCAPTCHA: использование сервисов Google для обхода Google reCAPTCHA

                image

                unCAPTCHA – автоматизированная система, разработанная экспертами Мэрилендского университета, способная обойти reCAPTCHA от Google с точностью до 85 %. Им это удалось благодаря распознаванию аудио-версии подсказки для людей с ограниченными возможностями.
                Читать дальше →
              • Pocketsphinx. Распознавание речи и голосовое управление в Linux

                • Tutorial
                — Всё в порядке, Лёня?
                Динамики отрегулированы на максимум, я морщусь, отвечаю:
                — Да. Тише звук.
                — Звук — тише, — соглашается «Виндоус-Хоум», — тише, тише…
                — Хватит, Вика
                С.Лукьяненко, «Лабиринт отражений»

                Введение


                В 1997-ом году Лукьяненко пророчил для десктопа сочетание CLI и голосового управления. Однако сейчас голосовое управление — достаточно узкая ниша.
                Голосовое управление — взаимодействие с устройством при помощи звуковых команд. Не путайте это понятие с распознаванием речи. Для голосового управления достаточно, чтобы устройство реагировало на единственную нужную команду (ведь ваша собака не может работать машинисткой?). Распознавание речи — гораздо более глобальная проблема: в этом случае устройство должно преобразовывать в текстовый формат все слова, произнесенные вами. Как легко догадаться, распознавание речи на данный момент реализовано поверхностно относительно человеческих возможностей.
                Функционал, рассмотренный в статье, может быть применен, к примеру, для организации модного сейчас «умного дома» или просто управления компьютером. Честно говоря, для описания управления компьютером хватило бы пары абзацев, но я попытаюсь показать вам основы работы с CMU Sphinx.
                Кстати, процентов 70 описанного здесь подойдет и пользователям Windows.
                Научим Linux слушаться?
              • Огромный открытый датасет русской речи

                  image

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

                  Мы торопимся исправить это годами длящееся недоразумение.

                  Итак, мы предлагаем вашему вниманию набор данных из 4000 часов аннотированной устной речи, собранный из различных интернет-источников.

                  Подробности под катом.
                  Читать дальше →
                • Визуализация процесса обучения нейронной сети средствами TensorFlowKit

                    Hint
                    Перед прочтением этой статьи советую ознакомиться с предыдущей статьей о TensorFlowKit и поставить star репозиторию.

                    Я не люблю читать статьи, сразу иду на GitHub
                    GitHub: TensorFlowKit
                    GitHub: Example
                    GitHub: Другое
                    TensorFlowKit API
                    Посeтив репозиторий, добавьте его в «Stars» это поможет мне написать больше статей на эту тему.

                    image

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

                    Говоря об эффективной разработке систем машинного обучения, всегда поднимается вопрос контроля скорости обучения, анализа процесса обучения, сбора различных метрик обучения и тд. Особая сложность заключается в том, что мы (люди) привыкли оперировать 2х и 3х мерными пространствами, описывая различные процессы вокруг нас. Процессы внутри нейронных сетей происходят в многомерных пространствах, что серьезно усложняет их понимание. Осознавая это, инженеры по всему миру стараются разработать различные подходы к визуализации или трансформации многомерных данных в более простые и понятные формы.

                    Существуют целые сообщества, решающие такого рода задачи, например Distill, Welch Labs, 3Blue1Brown.

                    Читать дальше →
                  • О чем говорит YouTube

                    • Tutorial
                    image

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

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

                    В моем проекте пользователи создают и обмениваются сотнями различных материалов: текстом, картинками, видеороликами, статьями, документами в различных форматах.

                    Поиск по документам представляется достаточно просто. Но что делать с поиском по мультимедиа контенту? Для полноценного сервиса пользователя надо обязать заполнить описание, дать название видеоролику или картинке, не помешает несколько тегов. К сожалению, далеко не все хотят тратить время на подобные улучшения контента. Обычно пользователь загружает ссылку на youtube, сообщает что это новое видео и нажимает сохранить. Что же делать сервису с таким “серым” контентом. Первая идея — спросить у YouTube? Но YouTube тоже наполняют пользователи (часто это один и тот же пользователь). Часто видеоматериал может быть и не с Youtube сервиса.
                    Так мне пришла идея научить наш сервис “слушать” видеоролик и самостоятельно “понимать”, о чем он.
                    Читать дальше →
                    • +18
                    • 8.2k
                    • 3