punctuation, appended state of the art
This commit is contained in:
@ -138,10 +138,10 @@ Setting up the development environment for this project was a non-trivial task,
|
||||
The Raspberry Pi 4 Model B used in this project was delivered with a Quad Core Cortex-A72 64-bit SOC. However, a 32-bit kernel OS was used in this project, due to the netHAT drivers being delivered as 32-bit compiled binaries.
|
||||
|
||||
\subsubsection{Intel RealSense SDK}
|
||||
The Intel RealSense SDK, or librealsense, is a cross-platform library provided by Intel for use with their RealSense devices. Pre-compiled binaries for 32-bit ARM were not provided, and therefore must be compiled\cite{realsense_git}.
|
||||
The Intel RealSense SDK, or librealsense, is a cross-platform library provided by Intel for use with their RealSense devices. Pre-compiled binaries for 32-bit ARM were not provided, and therefore must be compiled \cite{realsense_git}.
|
||||
|
||||
\subsubsection{ZeroMQ}
|
||||
ZeroMQ is a lightweight asynchronous messaging library that extends the traditional socket interfaces\cite{zeromq_git}. In this project, ZeroMQ was used in order to:
|
||||
ZeroMQ is a lightweight asynchronous messaging library that extends the traditional socket interfaces \cite{zeromq_git}. In this project, ZeroMQ was used in order to:
|
||||
\begin{itemize}
|
||||
\item Broadcast raw sensor data to remote controllers using a publish/subscribe model
|
||||
\item Exchange configuration parameters between the remote controller and the local processor using a request/reply model
|
||||
@ -159,12 +159,12 @@ ZeroMQ was chosen to provide the aforementioned functionalities for the followin
|
||||
\subsubsection{Real-Time Kernel Patch}
|
||||
Traditionally, the Linux kernel only allows one process to preempt another process in specific circumstances. This means, that even a high-priority thread may not preempt kernel code until the kernel explicitly yields control.
|
||||
|
||||
This is particularly disadvantageous for any operations requiring real-time performance. In order to circumvent this, the \verb|CONFIG_PREEMPT_RT| Kernel Patch is used in order to allow kernel code to be preempted\cite{rtwiki}.
|
||||
This is particularly disadvantageous for any operations requiring real-time performance. In order to circumvent this, the \verb|CONFIG_PREEMPT_RT| Kernel Patch is used in order to allow kernel code to be preempted \cite{rtwiki}.
|
||||
|
||||
In the case of this project, this means that the local processor can process and deliver data in a more deterministic fashion.
|
||||
|
||||
\subsubsection{GUI with Qt}
|
||||
The Qt GUI framework was used in order to create a GUI for the remote controller. This allowed for the sensor data to be more easily calibrated and aligned, as well as providing a consistent interface for end-user configuration. Qt was chosen for its ease of use, as well as its ability to be compiled cross-platform\cite{qtWebsite}.
|
||||
The Qt GUI framework \cite{qtWebsite} was used in order to create a GUI for the remote controller. This allowed for the sensor data to be more easily calibrated and aligned, as well as providing a consistent interface for end-user configuration. Qt was chosen for its ease of use, as well as its ability to be compiled cross-platform.
|
||||
|
||||
\subsection{Development of Main Functionality}
|
||||
At this stage of the design process, the functionality that is fundamental to the principle operation described earlier was developed. These functions include:
|
||||
@ -208,7 +208,7 @@ The cost for each of these components are listed at the end of this section in \
|
||||
|
||||
The Raspberry Pi was chosen as the computation platform primarily for its widespread use in IoT and IIoT, low cost and commercial availability. It also supports the Linux kernel and operating system which greatly eases the software development and deployment process.
|
||||
|
||||
As shown in \autoref{tab:rpi}, the Quad-Core ARM processor as well as 2GB memory capacity provide ample performance for the intended computation. The wireless networking capability of the Raspberry Pi makes it an ideal candidate for an IoT product.
|
||||
As shown in \autoref{tab:rpi}, the Quad-Core ARM processor as well as 2 GB memory capacity provide ample performance for the intended computation. The wireless networking capability of the Raspberry Pi makes it an ideal candidate for an IoT product.
|
||||
|
||||
\begin{table}[H]
|
||||
\centering
|
||||
@ -231,7 +231,7 @@ Storage & Micro-SD card slot \\
|
||||
Operational Temperature & \SI{0}{\celsius} to \SI{50}{\celsius} \\
|
||||
\hline
|
||||
\end{tabularx}
|
||||
\caption{The relevant technical specifications of the Raspberry Pi 4 Model B used in this project\cite{rpiSpecs}.}
|
||||
\caption{The relevant technical specifications of the Raspberry Pi 4 Model B used in this project \cite{rpiSpecs}.}
|
||||
\label{tab:rpi}
|
||||
\end{table}
|
||||
|
||||
@ -270,7 +270,7 @@ The Intel Realsense L515 was also chosen primarily for its low cost. However, th
|
||||
\multicolumn{1}{|c|}{} & \multicolumn{2}{c|}{2x M3 Mounting Point}\\
|
||||
\hline
|
||||
\end{tabularx}
|
||||
\caption{The relevant technical specifications of the Intel RealSense L515 used in this project\cite{realsenseDatasheet}.}
|
||||
\caption{The relevant technical specifications of the Intel RealSense L515 used in this project \cite{realsenseDatasheet}.}
|
||||
\label{table:l515}
|
||||
\end{table}
|
||||
|
||||
@ -290,7 +290,7 @@ Memory & 4MB Quad SPI Flash \\ \hline
|
||||
Interface & SPI up to 125MHz \\ \hline
|
||||
Network & 2x Ethernet 100 BASE-TX \\ \hline
|
||||
\end{tabularx}
|
||||
\caption{The relevant technical specifications of the Hilscher netHat\cite{nethatHilscher}.}
|
||||
\caption{The relevant technical specifications of the Hilscher netHat \cite{nethatHilscher}.}
|
||||
\label{table:nethat}
|
||||
\end{table}
|
||||
|
||||
@ -357,9 +357,9 @@ The software architecture developed in this project---see \autoref{fig:SoftwareA
|
||||
\subsection{Development Language Choice}
|
||||
The software is written in \cpp\ for compatibility and performance reasons. All the device drivers provide libraries in either \clang\ or \cpp, while some drivers such as the library for the netHAT---called CIFX---are only provided in \clang.
|
||||
|
||||
The topic of performance between languages and systems is one of heated debate, however \cpp\ was chosen for this project due to the ability to program comfortably in a higher-level language, while having the ability to \textit{\enquote{drop down}} into \clang. The \clang\ Programming Language is often the benchmark for higher-level programming languages when programming for Real-Time Systems due to its predictability and the ability to run operations with few layers of abstraction on memory directly\cite{pizlo2010}.
|
||||
The topic of performance between languages and systems is one of heated debate, however \cpp\ was chosen for this project due to the ability to program comfortably in a higher-level language, while having the ability to \textit{\enquote{drop down}} into \clang. The \clang\ Programming Language is often the benchmark for higher-level programming languages when programming for Real-Time Systems due to its predictability and the ability to run operations with few layers of abstraction on memory directly \cite{pizlo2010}.
|
||||
|
||||
Furthermore, since the scale of the processing unit of the program is relatively small, the benefits that come from using a higher-level programming language---such as increased productivity, organization, and re-usability\cite{pizlo2010}---are not strictly necessary.
|
||||
Furthermore, since the scale of the processing unit of the program is relatively small, the benefits that come from using a higher-level programming language---such as increased productivity, organization, and re-usability \cite{pizlo2010}---are not strictly necessary.
|
||||
|
||||
As shown in \autoref{fig:processinglib}, the main functionality of the processing unit includes:
|
||||
|
||||
|
Reference in New Issue
Block a user