О форматах электронных книг

&ltПриветствие&gt

Этот пост о том, что я думаю о форматах fiction book и electronic publication. А цель — не поделиться чем-то важным и рассказать что-то интересное, а прежде всего вынести что-то для себя.
Краткое вступление. Начал читать книгу по программированию в формате fb2: ни кода, ни картинок. Один голый текст. Да и строки некоторые не на своих местах. Нет, это не формат fb2 кривой, просто такая книга попалась. А в pdf читать на телефоне не очень удобно.

&lt/Приветствие&gt

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

О хорошем

FictionBook. Замечательный формат для художественной литературы. Хорошая идеология. Логическое форматирование и отсутствие необходимости скроллить вправо-влево на малых устройствах. Автоматическая обработка книг благодаря метаданным. Легкий экспорт в другие популярные форматы и довольно простая спецификация.
ePub. Неплохой формат для визуального форматирования. Простота создания книги без соответствующих программ.
Более подробно описывать форматы не буду.

Теперь о плохом

Недостатков у ePub достаточно. Я считаю, что лучше поговорить о другом. FictionBook — это формат для художественной литературы. Сейчас, конечно, разрабатывается формат fb3, который предположительно решит проблему с форматированием текста. Однако, кое-что мне в нем все равно не нравится. Это использование XML. Сила ePub в том, что текст можно отформатировать, зная только html. Многие из вас знают html-теги? А элементы FictionBook? Все скажут, что для редактирования есть специальные программы. Да, есть. Но, похоже, что не все программисты достаточно хорошо понимают элементы стандарта FIctionBook. Следствие этого — перепутанные строки, которые меня периодически сбивали с толку. На самом деле, всё это пустая болтовня и особых неудобств это не доставляет. Достаточно просто посидеть и конвертировать/отформатировать во что/как душе угодно. Но всё же, хотелось бы не заморачиваться по этому поводу, а скачать и начать читать.

Всё сложно

Тут представлены различные документы по формату FictionBook. Как мне кажется, стандарт FB излишне сложен. Поэтому хочется взять и скрестить. Взять лучшее от ePub и FB.
Чтобы лучше понять, что нужно брать от FB, а что от ePub, следует взглянуть на следующее. Контент в ePub представлен в виде html-файлов, оформление — css. Плохо в этом то, что для книг множество HTML избыточно, а пользовательские настройки пересекаются с css. В FB же есть несколько интересных элементов для форматирования, значение которых важно. Например, элемент poem, epigraph. Или stanza. На мой взгляд, в этих элементах нет нужды. Для представления контента достаточно определить необходимое подмножество HTML и CSS. Такое, которое не будет убивать удобство ради выразительности. Если определить необходимое подмножество HMTL и CSS(атрибуты которых не будут пересекаться с пользовательскими настройками), то представится возможность куда более гибкого оформления, нежели элементами poem и epigraph.
Теперь о структуре. Моё мнение, что упаковка в zip-архив — удачное решение. Это залог быстрого доступа как к самой книге, так и к её элементам, а также меньшей нагрузке на устройство. Недостаток — создание временных файлов(хотя в недостатке памяти сейчас мало кто страдает). Разбивать контент по отдельным файлам следует на логические единицы. Например, на главы. Изображения хранить в отдельной папке «img», а стили в «style». Во всем остальном я согласен со структурой будущего fb3.

Заключение

У меня всё. На месте разработчиков FB и ePub я бы сделал именно так, как я описал чуть выше. Такая структура мне кажется логичной и очевидной. Но не смотря на это, она не такая. Почему? Очень жду вашим критических замечаний и комментарий по поводу изложенного.

ссылка на оригинал статьи http://habrahabr.ru/post/204270/

Как правильно использовать пиратов в своих интересах

image

Польское книжное издательство недавно выпустило перевод книги Девида Каплана «Homeland.Carrie’s Run» — приквел известного шпионского сериала «Родина» (в версии Lostfilm). Поскольку тема довольно специфична (2006-й год, Бейрут, Керри Метисон) и рассчитана на аудиторию, знакомую со событиями оригинального ТВ-шоу, издательство поступило оригинально.

Распространением нелегальных эпизодов «Родины» в Польше занимается некая группа "Хатак", которая одновременно занимается и польской локализацией субтитров сериала. По грубым оценкам еженедельно аудитория шоу, предпочитающая слышать настоящие голоса актёров и не дожидаться озвучки, составляет примерно 4000 человек. Именно их директор по менеджементу издательства Мацей Мигда (Maciej Migda) и решил использовать для продвижения книги.

Сотрудники издательства связались с релиз-группой «Родины», которая занимается переводом субтитров, и предложила включить в них обычную текстовую строку во время заставки. Получилось ненавязчиво и в какой-то мере похоже на текстовую рекламу Google — примерно так:

«Как всё начиналось. Вы узнаете из книги»

(польск.)

image

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

[Источник]

ссылка на оригинал статьи http://habrahabr.ru/post/204276/

Linux Mint 16 «Petra»

Спустя полтора месяца после выхода Ubuntu 13.10, состоялся релиз новой версии дистрибутива Linux Mint с кодовым именем Petra.


Вот уже 2 года этот дистрибутив занимает первую строчку в рейтинге популярности дистрибутивов по версии distrowatch.com, и не зря, ведь дистрибутив ориентирован на удобное использование в качестве десктопной станции, по сути является альтернативой Ubuntu.
Дистрибутив поставляется в четырех редакциях с разными рабочими окружениями: MATE, Cinnamon, Xfce и KDE. Как правило, релиз с последними двумя окружениями рабочего стола осуществляется спустя 1.5 — 2 месяца.

Основные изменения в ядре и ПО:

  • kernel 3.11
  • Cinnamon 2.0
  • MDM 1.4
  • Firefox 24
  • Thunderbird 24
  • gcc 4.8
Cinnamon

Разработка Cinnamon 2.0 длилась 5 месяцев, было внесено 856 коммитов от 28 разработчиков. Было исправлено множество ошибок, а также добавлены новые функции и улучшения.

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

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

— Удобное тайлинговое расположение окон
Может осуществляться перетаскиванием окна к краю экрана или нажатием кнопок Super_L и клавишей со стрелками.

— Улучшена поддержка MIME в Nemo
— Системный трей поддерживает отображение статуса копирования/перемещения файлов

— Nemo стал красивее и быстрее, что не может не радовать

Полный список изменений в Cinnamon 2.0 тут.

MDM

— Увеличено быстродействие, удалено 24500 строк кода
— Изменения в дизайне, добавлены новые темы, анимированные фоновые рисунки и т. д.

— Добавлена утилита USB Stick для удобного управления flash-накопителями в системе

Улучшения производительности

— Менеджер обновлений стал быстрее
— В Cinnamon ускорена работа полноэкранных приложений, было замечено увеличение FPS в три раза, при запуске glxgears без Vsync
— Улучшение работы Менеджера программ, увеличение производительности, также усовершенствован интерфейс, теперь для приложения доступно несколько скриншотов, для более удобного поиска

Системные улучшения

— Безопасные обновления ядра
— Улучшена поддержка EFI
— Быстрый вход в систему
— Улучшена поддержка iOS устройств
— Улучшение цветов в терминале и…

Спойлер

добавление алиаса

ll='ls -la' 

по умолчанию

Изменения в дизайне

— Добавлены красивые градиентные фоны рабочего стола
— Улучшена поддержка GTK3
— Новые темы и иконки и т.д.

Ссылки для скачивания:

MATE:
i386: torrent | iso
x64: torrent | iso

MATE No codecs:
i386: torrent | iso
x64: torrent | iso

Cinnamon:
i386: torrent | iso
x64: torrent | iso

Cinnamon No codecs:
i386: torrent | iso
x64: torrent | iso

Обновление с RC на Final Release:

ссылка на оригинал статьи http://habrahabr.ru/post/202380/

MINIX X7

image
MINIX X7

Технические характеристики

image Четырёхъядерный видеоускоритель Mali 400MP
image Четырёхъядерный процессор Rockchip RK3188 с архитектурой Cortex A9
image 2 ГБ оперативной памяти
image Операционная система Android 4.2.2
image 16 ГБ пользовательской памяти + слот для карт памяти MicroSD
image Связь: Wi-Fi (802.11 b/g/n), Bluetooth

Главными отличиями между X7 и X7 Mini являются:
-поддержка Wifi на частоте 5ГГц
-подключаемая внешняя Wifi-антенна
-объём постоянной памяти составляет 16Гб

Внешний вид и комплектация

Мини-компьютер поставляется в довольно большой коробке:
image
Сбоку перечислен комплект поставки:
image
Сзади — краткие возможности:
image

внутри находится сам X7
фото…
и аксессуары под ним:
фото…
аксессуаров действительно много и не возникает чувство что чего-то не хватает:
image
-HDMI-кабель
-USB-кабель
-OTG_кабель
-Зарядное устройство
-Пульт управления
Пульт:
image
image

Программное обеспечение и производительность

Даже не включая первый раз устройство сразу обновляем прошивку. Производитель довольно часто выпускает новые прошивки и с вероятностью в 99% к вам придёт прошивка с какой-нибудь древней версией. Рекомендую обновляться не на официальную прошивку, а на кастомную.
Самой известной кастомной прошивкой для MINIX X7 является Finless ROM. Установить её довольно просто, для этого нам нужно перевести устройство в режим обновления прошивки. Для этого необходимо:

1. USB кабелем в OTG порт MINIX X7, а затем подключите второй конец к компьютеру.
2. Подключите питание к MINIX X7
3. Зажать кнопку Reset с помощь иголки или скрепки
4. Удерживая кнопку Reset зажать кнопку Power на MINIX X7 на 2 секунды
5. Windows воспроизведёт звук обнаружения нового устройства
6. Теперь вы в режиме обновления прошивки и необходимо установить драйвера устройства.

Установка драйвера устройства:
1. Когда мы попали в режим обновления прошивки Windows определит одно неизвестное устройство.
2. Откройте Менеджер устройств и выберите неизвестное устройство
3. Кликните правой кнопкой мыши и выберите «Обновить драйвер» («Update Driver»)
4. В диалоге выберете пункт поиска драйверов на компьютере. Нажмите кнопку «Обзор»
5. Перейдите в папку с прошивкой, найдите папку drivers, выберите папку с драйвера для 32-битной или 64-битной ОС
6. Выберите папку с необходимой версией Windows
7. Должна произойти установка драйверов устройства
8. Перезагрузите компьютер и MINIX X7. Загрузите MINIX X7 в режиме обновления прошивки следуя инструкции выше.
9. Если Вы всё сделали правильно, программа Flash tool должна показать сообщение «Found RKAndroid Loader Rock Usb». Если этого сообщения нет — значит драйвера не установились и нужно повторить шаги 1-8.
image

Теперь когда мы находимся в режиме обновления прошивки и правильно установили драйвера можно приступить непосредственно у установке.
При обновления прошивки удаляются ВСЕ пользовательские данные. Если необходимо — сделайте резервную копию.

Прошивка:
1. В программе Flash tool нажмите «Erase NAND (IDB)». Этот пункт обязательный!
2. Нажать кнопку «Flash ROM» и подождать пока не завершиться процесс.
4. После прошивки MINIX X7 перезагрузится.

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

В прошивке Finless ROM есть возможность оверклокинга, для этого в прошивке включена папка с различными настройками частоты работы процессора, видеоускорителя и оперативной памяти. По умолчанию CPU работает на максимальной частоте 1.6ГГц, GPU на 600МГц и RAM на частоте 400Мгц. В папке oc_1080_kernels, которая есть в архиве с прошивкой, находятся файлы ядра с различными настройками частот.
Максимальные значения частот составляют: для CPU — 1.8ГГц, для GPU — 798МГц, для RAM — 800МГц. В папке oc_1080_kernels находятся целых 16 комбинаций различных частот.
По умолчанию в прошивке используется вывод изображение в формате 1080p, если ваш телевизор или монитор не поддерживает такой вывод — в папке 720p_kernel_boot вы найдёте файлы ядра с выводам в 720p. Обновить файлы ядра просто, проделайте инструкции по установке прошивки и оставьте галочку только напротив файлов ядра.
скриншот…
Также есть возможно прошить boot файл с поддержкой AirPin или без.

В MINIX X7 установлен 4-х ядерный процессор Rockchip RK3188 с частотой до 1.6ГГц и 4-х ядерная GPU Mali 400MP. Объём оперативной памяти составляет 2Гб, постоянной — 16Гб.
Посмотрим на результаты тестов в различных синтетических тестах производительности.
Начнём с Antutu:
скрин…
скрин…
Очень неплохие результаты учитывая что картинка выводится в 1080p.
Посмотрим на сравнительную таблицу таблицу результатов, при использовании оверклокинговых ядер. Как уже было указано выше — вариантов целых 16.

Вариант № CPU, МГц GPU, МГц RAM, МГц
1 1.6 600 400
2 1.7 600 400
3 1.7 600 667
4 1.7 600 720
5 1.7 600 800
6 1.7 798 400
7 1.7 798 667
8 1.7 798 720
9 1.7 798 800
10 1.8 600 400
11 1.8 600 667
12 1.8 600 720
13 1.8 600 800
14 1.8 798 400
15 1.8 798 667
16 1.8 798 720
17 1.8 798 800
Вариант RAM CPU INT CPU FLOAT 2D 3D Итого
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

Quadrant

Vellamo

Nenamark 2

3dmark

Wifi

В MINIX X7 установлен двухдиапазонный Wifi для работы на частотах 2.4ГГц и 5ГГц. Чип от Broadcom…
В модели X7 присутствует внешняя антенна, в версии X7 mini её нет.
Уровень сигнала хороший как рядом с точкой доступа, так и через пару стен

закачка на уровне

Управление

Управлять MINIX X7 можно множеством способов. Самый простой вариант — с помощью комплектного пульта управления.
фото…
Функциональность довольно ограничена, лишь небольшой набор мультимедийных функций. Движение курсором осуществляется путём зажатия соответствующего положения на пульте.
Видео…

Дополнительно была приобретена забавная мышь-клавиатура с полноценной qwerty-клавиатурой английской раскладки, аудиовыходом и микрофоном.

Играем в игры

Rockchip разработала собственную утилиту управления устройствами, которая позволяет удаленно управлять мини-компьютером со смартфона, или любого другого устройства под управлением Android.
В самой прошивке уже установлен сервер этого приложение. Нам нужно лишь установить приложение imageRKRemoteControl (2MB) на свой смартфон или планшет.
Затем, запускаем приложение и подключаемся к найденному серверу:
image
Чтобы устройства обнаружили друг друга необходимо чтобы они находились в одной сети.

RKRemoteControl работает может работать в нескольких режимах:
1) Режим «Мышь». Двигая пальцем по тач-скрину управляющего устройство мы двигаем курсор в системе управляемого устройство. Одинарный тап по экрану равен клику. Для прокрутки необходимо воспользоваться вертикальным или горизонтальным скролбаром на управляющем устройстве.
2) Режим «Прокрутка». При перетаскивании будет происходить прокрутка (слайд) на управляемом устройстве. Тап по экрану соответствует клику.
Иконкой клавиатуры можно вызвать её экранную версию:
image image image
Также дублируется строка кнопок «Назад», «Домой», «Список задач».

Выбрав иконку Control мы попадает на экран управления видео/аудио плеером:
image

Нажав иконку Game мы видим экран настроек управления игр.
image

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

Поставим классическую раскладку геймпада:
image

Теперь необходимо настроить управление на MK908.
Запускаем программу RKGameControl, выбираем/создаём профиль управления:
image

Запускаем необходимую нам игру, при этом настройки останутся поверх экрана. Давайте настроим управление в эмуляторе:
image
Просто перетаскиваем кнопки из RKGameControl на необходимые экранные кнопки.
Обязательно сохраняем настройки в RKRemoteControl и затем скрываем программу нажатие иконки с желтой папкой.
Всё, можно играть!
Настроить управление можно в любом эмуляторе.
image

Таким же способом можно настроить любую игру, в которой не требуется операции типа «слайд». Просто перетаскиваете стики управления в нужное место, расставляете кнопки и сохраняете профиль.

В RKRemoteControl можно включить управление с помощью акселерометра, либо гироскопа. Это позволит играть в игры, которые применяют данный тип управления. Например, Real Racing 3:
image

Достоинства и недостатки

image Отличное качество сборки и материалов корпуса
image Производительная платформа
image Вывод изображение 1080p
image Двухдиапазонный Wifi
image Качественные прошивки от сторонних разработчиков
image Возможность оверклокинга
image

Напоминаю, что подписаться, чтобы не пропустить новые обзоры и статьи можно imageна странице компании(кнопка «подписаться»), или в вашей любимой социальной сети: image Вконтакте, в image Гугл+, в imageТвиттере

ссылка на оригинал статьи http://habrahabr.ru/company/boxowerview/blog/191682/

Сервисный робот Tod. Первые шаги вместе с ROS

Добрый день, Хабр. Наша команда занимается разработкой сервисного робота Tod. Мы стремимся к созданию многофункционального робота, который в своих возможностях сможет потягаться с такими флагманами в мобильной робототехники как PR2 Willow Garage. Мы начинаем с малого, но с каждым днем наш робот приобретает новые навыки, оснащается новыми сенсорами. О том, что вообще из себя представляют сервисные роботы, вы можете узнать в нашей предыдущей статье, а сегодня речь пойдет о реализации навигационной системы Tod. Сегодня мы расскажем как научить робота выполнять навигационную задачу определения собственного местоположения на базе колесной одометрии и получать сенсорные данные с ультразвуковых сонаров. Всё это дело будет управляться под операционной системой для роботов ROS (Robot Operating System), которая хорошо зарекомендовала себя в различных робототехнических проектах. Добро пожаловать под кат.

У обывателя слово «робот» скорей всего ассоциируется с умными человекоподобными роботами из фантастических фильмов в духе Терминатора. Чем отличаются настоящие роботы от обычных машин? В первую очередь, роботы обладают автономностью, которая выражается в способности самостоятельно, без вмешательства человека, принимать решения.
Автономный робот для достижения поставленной цели должен уметь решать навигационные задачи. К базовым навигационным задачам можно отнести восприятие окружающей среде на основе интерпретации данных, поступающих с различных видов сенсоров (дальномеры, камеры, GPS-навигатор, специальные маяки и т.д.), планирование маршрута движения и интерактивное взаимодействие с окружающей средой с помощью исполнительных органов, колес и манипуляторов.
В основе качественных навигационных алгоритмов лежит сложная математика, поэтому у многих начинающих робототехников пропадает энтузиазм после столкновения с расчетами якобианов и квантерионов, построением кинематической модели и применением вероятностных алгоритмов. К счастью, на сегодняшний день существует множество робототехнических фреймворков таких, как ROS, Player и Microsoft Robotics Studio, с помощью которых даже новички, обладающие необходимой настойчивостью, смогут использовать в своих проектах сложные навигационные и ИИ алгоритмы.

ROS и навигационный стек

Наша команда неслучайно решила использовать для робота Tod опенсорсный фреймворк Robot Operating System. ROS на сегодняшний день находит применение в робототехнических проектах многих исследовательских групп и компаний. Этот фреймворк предоставляет возможности, сравнимые с функциями целой ОС, включая аппаратные абстракции, управление устройствами на низком уровне, реализацию базовых функций и алгоритмов, передачу сообщений между процессами и менеджер пакетов. Исполняемая в ROS программа представляет собой набор узлов, которые могут обмениваться между собой сообщениями, подписавшись на общую тему. Такие узлы можно независимо реализовывать на языках C++ и Python. ROS полноценно работает под управлением Ubuntu, в частности, мы используем для Tod Ubuntu 12.40 и ROS Groovy. Более подробную информацию о ROS, документацию и хорошие пошаговые руководства можно найти на ros.org.
Для решения навигационных задач ROS предоставляет навигационный стек. В качестве входных данных стек использует данные одометрии (пройденный колесами робота путь) и сенсоров, а на выходе передает роботу команды управления скоростью передвижения. Использование на роботе навигационного стека «из коробки» становится возможным при выполнении некоторых условий:
— Робот по форме должен быть круглым или прямоугольным, а его колеса должны быть голономными, т.е. движение робота должно осуществляться только вдоль направления вращения колес. Например, колеса автомобиля или велосипеда — голономные.
— Робот должен предоставить информацию о всех геометрических связях между кинематическими узлами и сенсорами робота. Эта информация задается в URDF модели, а сложные геометрические преобразования из одной системы координат в другую с использованием матриц поворотов, углов Эйлеров и кватернионов может осуществлять узел tf.
— Робот должен посылать сообщения для управления перемещением в формате линейной и угловой скорости.
— Для решения задач определения местоположения и построения карты должен использоваться лазерный дальномер или 3-D сканер. Однако, если несколько схитрить, то можно использовать вместо дорогостоящих сенсоров и другие более дешевые аналоги: сонары или инфракрасные дальномеры. В этом случае, главное соблюдать правильный формат сообщений, которые передаются исполняемому узлу.

На диаграмме представлена общая схема навигационного стека. Текст между стрелками указывает на тип сообщения, которым обмениваются узлы. В этом стеки присутствуют 3 вида узлов:
— Узлы, помещенные в белый прямоугольник предоставляются ROS
— Узлы, помещенные в серые прямоугольники тоже предоставляются ROS, но их использование в стеке не является обязательным
— Узлы, помещенные в бирюзовые прямоугольники, являются аппаратно-зависимыми и их реализация обычно лежит на плечах разработчика.
Теперь, когда требования к использованию навигационного стека ROS известны, можно приступить к его адаптации к нашем роботу Tod.

Base controller и управление перемещением

Base controller — это узел навигационного стека, отвечающий за управление перемещением робота. ROS не предоставляет стандартного base controller’а, поэтому для своего робота необходимо писать собственный узел или брать за основу сторонние опенсорсные решения. Команды управления перемещением робота передаются к base controller в теме cmd_vel в сообщениях типа geometry_msgs/Twist.

geometry_msgs/Vector3 linear   float64 x   float64 y   float64 z geometry_msgs/Vector3 angular   float64 x   float64 y   float64 z 

Вектор linear задает линейную скорость перемещения робота по осям x, y, z, а вектор angular — угловую скорость перемещения по осям x, y, z. Далее эти команды преобразуются в команды управления вращением двигателей, и робот осуществляет перемещение в заданном направлении.
Порядок задания векторов скоростей зависит от кинематики робота. Наш робот Tod оснащен двухколесным дифференциальным приводом на базе двигателей постоянного тока, который позволяет ему перемещаться вперед, назад, по дуге или вращаться на месте. Это означает, что в сообщении geometry_msgs/Twist будет задаваться только линейная скорость по оси x (соответствует движению вперед-назад) и угловая скорость z (соответствует вращению на месте или перемещению по дуге при задании ненулевой линейной скорости).


3-х колесный робот с дифференциальным приводом. Рулевое колесо или шаровая опора обеспечивает роботу устойчивость.

Преобразование этих скоростей перемещения робота в соответствующие скорости вращения двигателей — тривиальная задача по кинематике, требующая некоторых геометрических расчетов.
Низкоуровневую задачу управления вращением двигателем мы поручили Arduino Uno в связке с драйвером Pololu Dual MC33926 Motor Driver Shield, выдающего небходимую мощность для наших 12-ти вольтовых двигателей. После реализации base controller’a можно покататься роботом с помощью клавиатуры и ROS-вского узла turtlebot_teleop, посылающего сообщения geometry_msgs/Twist base controller’у.

Одометрия

Одометрия – самый распространенный метод счисления пути. Суть этого метода заключается в определении позиции робота на основании подсчета инкрементальных оборотов колес относительно любой фиксированной точки на карте. Обычно измерения одометрии производятся оптическими цифровыми энкодерами, закрепленными на колеса или непосредственно на двигатели робота. Tod оснащен цифровыми энкодерами c разрешением 64 импульса на каждый оборот вала двигателя, что соответствует 8384 импульсов на один оборот колеса.


Геометрия одометрии. При заданной позиции робота (x, y, theta) и ширины колесной базы dbaseline требуется рассчитать новую позицию (x’, y’, theta’).

Навигационный стек использует сообщения типа nav_msgs/Odometry для получения данных одометрии.

std_msgs/Header header    uint32 seq    time stamp    string frame_id  string child_frame_id  geometry_msgs/PoseWithCovariance pose    geometry_msgs/Pose pose      geometry_msgs/Point position        float64 x        float64 y        float64 z      geometry_msgs/Quaternion orientation        float64 x        float64 y        float64 z        float64 w    float64[36] covariance  geometry_msgs/TwistWithCovariance twist    geometry_msgs/Twist twist      geometry_msgs/Vector3 linear        float64 x        float64 y        float64 z      geometry_msgs/Vector3 angular        float64 x        float64 y        float64 z    float64[36] covariance 

Сообщение geometry_msgs/Pose определяет текущую позицию робота в трехмерном пространстве и ориентацию, которую в случае вращения объекта в трехмерном пространстве будет удобно рассчитывать кватернионами. Уже знакомое нам сообщение geometry_msgs/Twist определяет линейную скорость x и угловую скорость z.
Так как при выполнении вычислений мы имеем дело с несколькими системами координат, то нам понадобится узел tf. Узел tf работая с URDF-моделью робота, берет на себя заботу по выполнению громоздких вычислений преобразования позиции из локальной системы координат робота в глобальную систему координат карты.


Визуализация URDF-модел робота Tod с данными одометрии в симуляторе Rviz.

Сонары

Робот может использовать различные виды сенсоров для получения информации об окружающем мире. Сенсоры сильно различаются по своим характеристикам, имеют свои ограничения, слабые и сильные стороны, поэтому наиболее выгодным считается совместное использование нескольких их видов.
Используя ультразвуковые сонары можно измерять расстояние от объекта до робота. Сонары работают по технологии TOF (time-of-flight). Они испускают звуковой сигнал, который отражается от ближайшего на пути объекта и возвращается в виде эха. Время «полета» сигнала фиксируется, и на его основе рассчитывается расстояние до объекта.


Сонар испускает звуковой сигнал и «слушает» эхо.

Tod использует сонары HC-SR04, поддерживающий диапазон измерения от 0.2 до 5 м с заявленной точностью 0.03 м. Угол обзора одного HC-SR04 составляет 30 градусов, и если разместить несколько сонаров рядом, то можно получить больший угол обзора. 3 сонара, размещенные на передней стороне Tod обеспечивают угол обзора 90 градусов.

Навигационный стек ROS может использовать данные различных видов сенсоров для получения одометрии, построения карты помещения или объезда препятствий. Теоретически есть возможность использовать сонары для построения карты помещения, ведь 12 или более сонаров дают угол обзора в 360 градусов и представляют более дешевую замену дорогостоящим лазерным дальномерам. Tod для построения карты использует Kinect, который по многим сенсорным характеристиками превосходит сонары. Однако, это не повод сбрасывать сонары со счета. Kinect закреплен на роботе достаточно высоко, что не позволяет видеть происходящего прямо под колесами. Сонары захватывают эту слепую зону, тем самым оказываясь полезными в решении задач планирования пути и объезда препятствий.
Как было сказано раннее, навигационный стек поддерживает работу только с лазерным сенсором и 3-D сканером. Это ограничение можно обойти, представив систему сонаров в виде фейкового 3-D сканера. 3-D сканер использует сообщение sensor_msgs/PointCloud, описывающее облако точек в трехмерном пространстве.

std_msgs/Header header    uint32 seq    time stamp    string frame_id  geometry_msgs/Point32[] points    float32 x    float32 y    float32 z  sensor_msgs/ChannelFloat32[] channels    string name    float32[] values 

Сенсорные данные сонаров можно представить в таком формате, задав каждую точку облака в виде координат x, y и координаты z равной 0. При этом на каждый сонар можно задать несколько таких точек, что позволяет повысить плотность облака. Вот так выглядит визуализация сенсорных данных сонаров Tod.


Визуализация сенсорных данных сонара в Rviz.

Спасибо за внимание, на сегодня это всё. В следующей статье, мы продолжим рассказывать о возможностях навигационного стека ROS на примере нашего подопытного: подключим к Tod Kinect, построим с его помощью карту квартиры, научим определять собственное местоположение уже на основе визуальной одометрии, планировать путь и объезжать препятствия.

ссылка на оригинал статьи http://habrahabr.ru/company/tod/blog/204250/