%% LaTeX beamer template
%% this file is part of the kdissert templates
%% http://freehackers.org/~tnagy/kdissert/index.html
%% created by Thomas Nagy <tnagy2^8@yahoo.fr> in 2004
%%
%% permission is granted to redistribute copies and
%% derivated work of this file without restrictions
%%

%% to compile, use "make"

%\documentclass[ucs]{beamer}
 \documentclass[hyperref={unicode=true}, ucs]{beamer}

% Setup appearance:

\usetheme{Warsaw}
\usefonttheme[onlylarge]{structurebold}
\setbeamerfont*{frametitle}{size=\normalsize,series=\bfseries}
\setbeamertemplate{navigation symbols}{}

%\mode<presentation>
%{
%  \usetheme{Warsaw}
%  \setbeamercovered{transparent}
%}

% Кирилізація
\usepackage{cmap}
\usepackage[utf8x]{inputenc}
%\usepackage[utf8]{inputenc}
\usepackage[T1,T2A]{fontenc}
\usepackage[warn]{mathtext}
\usepackage[english,russian,ukrainian]{babel}
% or whatever

%\usepackage[unicode]{hyperref}
%\hypersetup{%
 % unicode = true,
  %pdftitle    = { },
  %pdfsubject = {Visual control},
  %pdfkeywords = {visual, robot, control},
 % pdfauthor   = {\textcopyright\ },
 % pdfcreator = {\LaTeX\ with package \flqq hyperref\frqq},
 % pdfproducer = {pdfLaTeX-0.\the\pdftexversion\pdftexrevision},
%}

%\usepackage[latin1]{inputenc}
% if you are using utf8 you may have to use
% \usepackage[latin1,utf8]{inputenc} instead

% If you are on Fedora Core you may have problems with accents
% in this case replace the accentuated characters like this :
%
%  é -> \'e
%  è -> \`e
%  ê -> \^e and so on
%
% To automate the replacement you can make yourself a script
% here is a handy command-line for doing this :
% perl -pi -e "s/é/\\\'e/g" main.tex

%\usepackage{times}
%\usepackage[T1]{fontenc}
% Or whatever. Note that the encoding and the font should match. If T1
% does not look nice, try deleting the line with the fontenc.

\usepackage{amsmath,amssymb,amsfonts,textcomp,mathrsfs}
% math extension - one probably wants to use symbols like '[' (written
% as '$[$')

% Ілюстрації
%\usepackage[caption2]{ccaption}
%\captionnamefont{\Large\sffamily}
\usepackage{ccaption}
% заменяем для рисунков ’ : ’ после номера рисунка на ’ . ’
%\captiondelim{.} % после точки стоит пробел !
%\renewcommand{\captionlabeldelim}{.}


%\usepackage{caption}
%   \addto\captionsukrainian{\def\tablename{Табл.}}
%   \addto\captionsukrainian{\def\figurename{Рис.}}
%\DeclareCaptionLabelSeparator{colon}{. }
%\captionsetup[figure]{%
%labelsep=colon,justification=centering,singlelinecheck=false,%
%aboveskip=0mm,belowskip=3mm}
\graphicspath{{pics/}}

% Таблииці
\usepackage{array}
\usepackage{booktabs}
\usepackage{supertabular}
\usepackage{multirow}
\usepackage{multicol}
\usepackage{hhline}
\usepackage{colortbl}
\usepackage{tabularx}
\usepackage{slashbox}

% Celsium
\newcommand{\gc}{\ensuremath{^\circ\mbox{C}}}
% Deg
\newcommand{\degr}{\ensuremath{^\circ}~}

% Delete this, if you do not want the table of contents to pop up at
% the beginning of each subsection:
\AtBeginSubsection[]
{
  \begin{frame}<beamer>
%    \frametitle{Outline}
    \tableofcontents[currentsection,currentsubsection]
  \end{frame}
}

% If you wish to uncover everything in a step-wise fashion, uncomment
% the following command:

%\beamerdefaultoverlayspecification{<+->}

% Author, Title, etc.

\title[Апаратна платформа]
{%
Візуальне керування рухомими об'єктами.
Апаратна платформа.%
}

\author[О.~М.~Лаврущекнко]
{
  Олександр~Лаврущекнко%\inst{1}
}

\institute[Лаврущекнко]
{
  %\inst{1}%
  Національний технічний університет України \\
  \flqq{Київський політехнічний інститут}\frqq
}

\date[OSDN 2008]
{FOSS OSDN 2008}


\begin{document}

%\frame[plain]{\titlepage}
\frame{\titlepage}
%\tableofcontents
% оглавление создаётся из элементов \section и \subsection.
% you may probably wish to insert them before the appropriate frames


\begin{frame}
 \frametitle{Вступ}
 \tableofcontents
 \end{frame}

%-------------------------------------------------------------------
\section{Що було?}
%-------------------------------------------------------------------
\begin{frame}
\frametitle{Що було?}
%
  \begin{center}
    \includegraphics[width=0.6\textwidth]{VOS-proto.pdf}
    \label{fig:VOS-proto.pdf}
  \end{center}
\begin{center}
\textit{\footnotesize{Прототип СВО у зібраному вигляді: 1~–~RS-232
конектор; 2~–~конектор живлення; 3~–~конектор USB камери; 4~–~корпус
контролеру; 5~–~кроковий двигун ШД-200-1-1; 6~–~кріплення камери до валу
двигуна; 7~–~камера.}}
\end{center}
\end{frame}

\begin{frame}
\frametitle{Що було?}
%
Дискретні складові, великі габаритні розміри, немобільність, велика
маса, перш за все~-- двигун.
  \begin{center}
    \includegraphics[width=0.6\textwidth]{drvcon_old.pdf}

    \label{fig:drvcon_old.pdf}
    \textit{\footnotesize{Старий контролер двигуна}}
  \end{center}

\end{frame}
%-------------------------------------------------------------------
\section{Що хочеться?}
%-------------------------------------------------------------------
\begin{frame}
\frametitle{Що хочеться?}
%
Система має бути частиною рухомого об'єкту, в ідеалі таким собі чорним
ящиком, що можливо встановити на будь-яку платформу, незалежно
від її способу переміщення.

Мобільність системи вимагає:
\begin{itemize}
%
\item малої маси;
%
\item малих габариних розмiрiв;
%
\item низького рівня енергоспоживання;
%
\item гарної вiброзахищеностi.
%
\end{itemize}


\end{frame}
%-------------------------------------------------------------------
\section{Алгоритми}
%-------------------------------------------------------------------
\begin{frame}
\frametitle{Алгоритми}
Під час проведення роботи створені або знаходяться у стадії розробки
математичні моделі:
\begin{itemize}
 \item рухомої платформи;
 \item обертальної платформи (процесу керування активним сенсором на
рухомій платформі);
 \item ПЗС-камери з перспективною проекцією і Байєровською моделлю
кольорового простору;
 \item моделі маркерів, мапи і середовища;
 \item процесу обробки кадру;
 \item визначення оптимальної траєкторії;
 \item визначення просторових координат об'єктів.
\end{itemize}
\end{frame}
%-------------------------------------------------------------------
%
\begin{frame}
\frametitle{Алгоритми}
Вони  складаються з алгоритмів, що мажна згрупувати наступним чином:
\begin{itemize}
\item обробки зображень;
\item орієнтації;
\item локалізації;
\item навігації;
\item планування шляху;
\item керування.
\end{itemize}
\end{frame}

\section{Програмне забезпечення}
%
\begin{frame}
\frametitle{Операційне середовище}
Робототехніка вимагає ПЗ з низькою латенцією
\footnote
{
Латенція (англ.~latency~-- часова затримка, затримка таймеру)
},
оскільки оточення в якому вони діють небезпечне, тобто може здійснювати
впливи, що можуть перешкоджати виконанню поставленного завдання. З цих
міркувань звично в якості середовища виконання алгоритмів
життєдіяльності роботу використовують ОСРЧ
\footnote
{
ОСРЧ (англ.~RTOS~-- операційні системи реального часу
}.
Найбільш популярними у промисловості ОСРЧ є \textbf{QNX Momentics} і
\textbf{VXWorks}, та вони є дуже дорогими.

Не дивлячись на те, що QNX вільна для академічних застосувань, було
обрано \textbf{Linux/Xenomai}.
\end{frame}

\subsection{Debian Linux}
%-------------------------------------------------------------------
\begin{frame}
\frametitle{Debian Linux}
\begin{figure}[htbp]
  \begin{flushleft}
    \includegraphics[width=0.05\textwidth]{debian.pdf}
    \label{fig:debian.pdf}
  \end{flushleft}
\end{figure}
Дебіан~-- один з найстаріших та найрозповсюдженіших
дистрибутивів ОС~Лінукс.
\begin{itemize}
 \item Відомий своєю якістю, стабільний та зрозумілий
 \item Величезні репозитарії пакунків програм
 \item Широко застосовується розробниками вбудованих систем
 \item Має в репозитарії \textbf{три(!)} розширення РЧ для Лінукс
\end{itemize}
\end{frame}
%-------------------------------------------------------------------
\subsection{Розширення РЧ}
%-------------------------------------------------------------------
\begin{frame}
\frametitle{Розширення РЧ}
\begin{figure}[htbp]
  \begin{center}
    \includegraphics[width=0.75\textwidth]{Xenomai.pdf}

    \label{fig:Xenomai.pdf}
  \end{center}
\end{figure}

\begin{figure}[htbp]
  \begin{center}
    \includegraphics[width=0.25\textwidth]{RTAI.pdf}

    \label{fig:RTAI.pdf}
  \end{center}
\end{figure}
\end{frame}

\begin{frame}
\frametitle{Розширення РЧ}

\begin{itemize}
\item Xenomai~-- фреймоворк для розробки програмного забезпечення
працюючому у режимі реального часу, що кооперує з ядром Linux, для
забезпечення всебічної, інтерфейсо-незалежної підтримки жорсткого
реального часу для програм простору користувача, добре інтегровану у
оточення GNU/Linux.
%
%
\item RTAI~-- інтерфейс реального часу для Linux-програм, що дозволяє
створювати софт з чіткими вимогами до часу виконання.
%
\end{itemize}
\end{frame}

\begin{frame}
\frametitle{Xenomai}

При продовженні проекту було вирішено мігрувати з RTAI на Xenomai,
причинами переносу на інше розширення стали:
\begin{itemize}
\item значно краща документація

\item наявність колекції прикладів

\item зрозуміла політика
%
\item внесений до репозитаріїв Debian
%
\end{itemize}
\begin{block}{Інсталяція}
\texttt{aptitude install linux-patch-xenomai xenomai-runtime
xenomai-doc}
\end{block}
\end{frame}
%-------------------------------------------------------------------
\subsection{Клієнт}
%-------------------------------------------------------------------
\begin{frame}
\frametitle{Клієнт}
Клієнта для системи планується розробити з використанням Java, з
причин її гарної переносимості. В випадку Java, ми можемо запускати
клієнта віддаленого мониторінгу та контролю на будь-якій системі, що
підтримує JVM\footnote
{
JVM (англ. абр.)~-- java virtual machine.
}, зараз це майже кожний мобільний телефон. У функції клієнта входять
візуализація даних, ведення вторинного логу роботи системи, графічний
та командний інтерфейс.
\begin{itemize}
\item Простий інтерфейс
%
%
\item \~{}RT відеосигнал
%
%
\item можливість керування всими параметрами роботу
%
%
\item командний рядок
%
%
\item захищеність потоку керування
%
%
\end{itemize}
\end{frame}
%-------------------------------------------------------------------
\subsection{Сервер}
%-------------------------------------------------------------------

\begin{frame}
\frametitle{Бажані властивості}
Багато розробників після виконання великої частини роботи зустрічаються
з необхідністю додати чи видалити деякі можливості, неочикуваними
проблемами, необхідністю змінити апаратне забезпечення чи навіть зі
зміною базової постановки завдання. Такі несподіванки можуть створити
додаткові перешкоди для успішного завершення розробки роботу.
\end{frame}

\begin{frame}
\frametitle{Бажані властивості}
Тому одним з найважливіших моментів при виконані роботи, є створення
розширюваного, максимально кроссплатфоменного набору ПЗ для задач
керування мобільними роботами.
Вимоги:
 \begin{itemize}
  \item кросплатформеність та відповідність існуючим відкритим
стандартам, наприклад POSIX;
  \item простота та легка розширюваність, відповідно~-- IMHO
модульність;
  \item захищеність;
  \item KISS\footnote{KISS~--~Keep It Simple Stupid}, ``бритва Оккама''.
 \end{itemize}
\end{frame}

\begin{frame}
\frametitle{Архітектура ПЗ системи}
 \begin{figure}[htbp]
  \begin{center}
    \includegraphics[width=0.6\textwidth]{architect.pdf}
    \label{fig:architect.pdf}
  \end{center}
 \end{figure}
\end{frame}

%-------------------------------------------------------------------
\section{Апаратна платформа}
\begin{frame}
\frametitle{Апаратна платформа}
Властивості мобільного роботу та результативність алгоритмів напряму
залежать від використаного апаратного забезпечення, бо його
характеристики входять у математичну модель у якості коефіцієнтів
рівнянь.
\end{frame}

\subsection{Cервоконтролер}
\begin{frame}
\frametitle{Cервоконтролер}
У якості контролера двигунів використовується спеціально розроблена
плата. Вона базується на мікроконтролері Atmel, який безпосередньо керує
серво-двигунами. Ця плата зв'язана з бортовим комп'ютером за допомогою
послідовної лінії за допомогою інтерфейсу RS-232, з головної плати
можливе також керування її живленням.
\end{frame}

\begin{frame}
\frametitle{Вимоги до сервоконтролеру}

\begin{itemize}
\item простота
\item функціональність
\item низьке енергоспоживання
\item невелика маса
\item невеликі габаритні розміри
\end{itemize}
\end{frame}

%-------------------------------------------------------------------
\begin{frame}
\frametitle{Вимоги до серводвигунів}

\begin{itemize}
\item невелика маса
\item невеликі габаритні розміри
\item достатній крутний момент
%
\item легкість керування
%
\item точність
%
\end{itemize}
\pause
У якості двигунів було обрано серводвигуни з необмеженим кутом оберту
виробництва Parallax (Futaba).
\end{frame}

\begin{frame}
\frametitle{Cерводвигуни: зовнішній вигляд, характеристики та
підключення}
\centering
\begin{multicols}{2}
  \hfill
\includegraphics[width=0.345\textwidth]{parallax_servo.pdf}
\label{fig:parallax_servo}
  \hfill
\includegraphics[width=0.45\textwidth]{parallax_servo4.pdf}
\label{fig:parallax_servo4}
\end{multicols}
\begin{table}[htb]
\begin{center}
\begin{small}
\begin{tabular}{|l|l|}
\hline
Максимальна напруга$^{*}$, В & 6\\ \hline
Максимальна швидкість$^{**}$, об/хв & 60  \\ \hline
Маса, г & 45,0  \\ \hline
Момент, $\text{кг} \cdot \text{см}$ &  3,40 \\ \hline
Розмір, мм & 40,5x20,0x38,0\\ \hline
Додатково & Порт для ручного налаштування\\ \hline
\end{tabular}
\end{small}
\\$*$\begin{scriptsize}постійний струм;\end{scriptsize}
$**$\begin{scriptsize}при напрузі 5В, без прикладення
навантаження\end{scriptsize}
\end{center}
\end{table}
\end{frame}
%-------------------------------------------------------------------
%-------------------------------------------------------------------
\begin{frame}
\frametitle{Мікроконтролер: технічні характеристики ATmega8-16PU }
%
\begin{table}[htb]
\centering
%\begin{center}
\begin{small}
\begin{tabular}{|l|l|l|l|l|}
\hline
Частота, МГц & Живлення, В & Пакунок & Робочий діапазон, \gc\\
\hline
16 & 4,5~-~5,5 & 28P3 & -40\gc~до 85\gc\\
\hline
\end{tabular}
\end{small}
%\end{center}
\end{table}
У драйвері використано мікроконтролер \textbf{AVR ATmega8}, оскільки він
підтримує необхідні в проекті вимоги, до того ж є недорогим,
широкорозповсюдженим, і має компілятор \textbf{С} під Linux.
\begin{block}{Інсталяція}
\texttt{aptitude install gcc-avr avr-libc binutils-avr gdb-avr}
\end{block}
\end{frame}
%-------------------------------------------------------------------
%-------------------------------------------------------------------
\begin{frame}
\frametitle{Конвертер інтерфейсів}
Оскільки цифрові рівні відмінні від стандартних рівней \textbf{TTL} та
\textbf{CMOS} мікросхем. Виникає необхідність використання додаткових
апаратних засобів, для перетворення сигналу на приймаючій та передаючій
сторонах, для цього застосовується конвертер \texttt{MAX232A}.
\begin{figure}[htb]
\centering
\includegraphics[width=0.6\textwidth]{max232_top_wire.pdf}
%\caption{MAX232 Top Wire}
\label{fig:max232_top_wire}
\end{figure}

\end{frame}
%-------------------------------------------------------------------
\begin{frame}
\frametitle{Принципова схема сервоконтролера}
\begin{figure}[htbp]
  \begin{center}
    \includegraphics[angle=-90,width=0.8\textwidth]{drvcon_color.pdf}
    %\textit{\footnotesize{Принципова схема сервоконтролера}}
    \label{fig:drvcon_color.pdf}
  \end{center}
\end{figure}
\end{frame}
%-------------------------------------------------------------------
\begin{frame}
\frametitle{Тестова збірка сервоконтролера}
\begin{figure}[htbp]
  \begin{center}
    \includegraphics[width=0.6\textwidth]{drvcon_test.pdf}
    %\textit{\footnotesize{Принципова схема сервоконтролера}}
    \label{fig:drvcon_test.pdf}
  \end{center}
\end{figure}
\end{frame}
%-------------------------------------------------------------------
\subsection{Вбудований компьютер}
%
%-------------------------------------------------------------------
\begin{frame}
\frametitle{Вимоги до бортового комп'ютера}
Має бути:
\begin{itemize}
\item недорогий;
%
\item компактний;
%
\item легкий;
%
\item віброзахищений;
%
\item з багатим набором портів вводу виводу;
%
\item з низьким енергоспоживанням;
%
\item Linux-сумісним;
%
\item заснований на стандартій платформі.
%
\end{itemize}
\end{frame}

\begin{frame}
\frametitle{Бортовий комп'ютер: варіант \No 1}
  \begin{center}
    \includegraphics[width=0.3\textwidth]{verdex.pdf}
    \includegraphics[width=0.3\textwidth]{sdwifi.pdf}
    \includegraphics[width=0.3\textwidth]{robotstix.pdf}
    \label{fig:ts-7800.pdf}
  \end{center}
МП: Marvell® PXA270, 600МГц / 128MB RAM, 32MB Flash \\
Можливості:  USB-хост, контролер CCD-камери, 10/100baseT \\
ethernet, microSD, 802.11(b,g), шини I2C та SPI \\
Конектори: 60-пін Hirose, 120-пін MOLEX, 24-пін гнучкий стрічковий
Розміри:  80мм x 20мм \\
Живлення: 3,5В~-~6В \\
Все разом: \$317.00
\end{frame}

%-------------------------------------------------------------------
\begin{frame}
\frametitle{Бортовий комп'ютер: варіант \No 2}
  \begin{center}
    \includegraphics[width=0.6\textwidth]{ts-7800.pdf}
    \label{fig:ts-7800.pdf}
  \end{center}
\end{frame}
\begin{frame}
\frametitle{Бортовий комп'ютер}
\begin{itemize}
    \item 500МГц ARM9 ЦП Marvell®;
    \item вбудована шина PCI та PC/104 роз'єм;
    \item 12000 ЛТ ПЛІС;
    \item 128Mб духканальної пам'яті;
    \item 512Mб NAND Flash 17Mб/с;
    \item 2 SD роз'єма (1 micro-SD, 1 SD);
    \item 2 SATA порта;
    \item 2 USB 2.0 480Mbps host/slave порта;
    \item Gigabit Ethernet;
    \item п'ятиканальний 10-bit АЦП;
\end{itemize}
\end{frame}

\begin{frame}
\frametitle{Бортовий комп'ютер}
\begin{itemize}
    \item 10 послідовних портів;
    \item 110 GPIO (86 використано як шина PC/104);
    \item годинник реального часу (RTC), з запасним елементом живлення;
    \item робочий діапазон температур без активного охолодження:
$-20$\gc $\div$ $+70$\gc;
    \item температурний сенсор;
    \item живлення 4Вт@5В;
    \item у сплячому режимі використовує 200мА;
    \item вхідне живлення 5В.
\end{itemize}
\end{frame}
%-------------------------------------------------------------------
\begin{frame}
\frametitle{Плата живлення з акумуляторами}
  \begin{center}
    \includegraphics[width=0.5\textwidth]{ts-bat3.pdf}
    \label{fig:ts-bat3.pdf}
  \end{center}
\end{frame}

\begin{frame}
\frametitle{Плата живлення з акумуляторами}

Являє собою інтелектуальний блок безперебійного живлення. До складу
TS-BAT3 входять NiMh акумуляторні батареї і вбудований зарядний пристрій
з монітором зарядки/розрядки. У можливості плати входять:
\begin{itemize}
\item легка заміна елементів живлення;
\item контроль за зарядом;
\item сумісність з бортовим коп'ютером;
\item гарантований контроль вимикання бортового комп'ютера;
\item використання сплячого режиму для TS-7800;
\item 2000мА$\cdot$ч@5В.
\end{itemize}

\end{frame}
%-------------------------------------------------------------------
%-------------------------------------------------------------------
\begin{frame}
\frametitle{Модуль бездротового зв'язку}
Зв'язок роботу з станцією моніторингу і керування забезпечується
приємопередавачем стандарту IEEE~802.11g (WiFi), але за бажанням можна
легко підключити наприклад GPRS-модем, тоді зв'язок з роботом можна буде
підтримувати на всій зоні покриття стільникового зв'язку.
\end{frame}
%-------------------------------------------------------------------

\subsection{Рухома платформа}
%-------------------------------------------------------------------
\begin{frame}
\frametitle{Рухома платформа}
Обраний кінематичний тип рухомої платфоми, чотирьох-колісний візок з
передньою рульовою віссю~-- неголономний, що накладає обмеження на
можливі маневри роботу.
\begin{itemize}
\item маневреність
\item легкість керування
\item звичність
\item гарна проходимість
\item можливо доступність у готовому вигляді
\item задовільні розміри
\end{itemize}
\end{frame}

\begin{frame}
\frametitle{Рухома платформа}
  \begin{center}
    \includegraphics[width=0.5\textwidth]{platform.pdf}

\begin{footnotesize}
\textit{Рухома платформа: 1~--~двигун заднього приводу; 2~–-~зубчаста
передача; 3~-–~колесо; 4~-–~плата керування; 5~-–~двигун повороту
передньої осі; 6~-–~корпус платформи.}
\end{footnotesize}
    \label{fig:platform.pdf}
  \end{center}
\end{frame}

\begin{frame}
\frametitle{Рухома платформа}
Можливо прийдеться розробляти CAD-модель платформи самостійно, оскільки
якість виконання пластикової моделі може виявитися недостатньою для
досягнення задовільних показників керування системою.
\end{frame}

%-------------------------------------------------------------------
\section{Висновки}
%-------------------------------------------------------------------
\begin{frame}
\frametitle{Висновки}
%
\begin{itemize}
 \item В статті розглянуто загальну архітектуру створюємого ПЗ, докладно
описані апаратні компоненти обчислювального комплексу роботу, та
використані сенсори, актуатори та ін.
 \item Проект знаходиться у стадії розробки.
\end{itemize}
\end{frame}

\begin{frame}
\frametitle{Висновки}
%
Підводячи підсумок, можна виділити перспективні напрями покращення
апаратної та програмної архітектури роботу:
\begin{itemize}
\item винесення низькорівневих алгоритмів обробки відеоданих з
центрального процесору бортового комп'ютера на спеціалізований
мікропроцесор вбудований у відеосенсор, або використання ПЛІС, як
обробників
відеоданих, що дуже прискорює систему, та вивільняє процесорні ресурси
для інших задач;
\item використання у якості середовища виконання алгоритмів і
керування ресурсами відмовостійких і високомодульних мікроядерних
операційних систем реального часу\footnote
{
Нажаль повністю вільних
таких систем досі немає.
}.
\end{itemize}
\end{frame}

\end{document}

