did other stuff

This commit is contained in:
2021-05-21 04:39:17 +02:00
parent 83445c5b7c
commit 00e67ab6cd
9 changed files with 133 additions and 30 deletions

View File

@ -322,6 +322,11 @@
title = {For Dummies -- The Introduction to Neural Networks we all need!},
howpublished = {\url{https://medium.com/technologymadeeasy/for-dummies-the-introduction-to-neural-networks-we-all-need-c50f6012d5eb}},
note = {Megtekintve: 2020-12-01}
}
@misc{ur3_specs,
title = {UR3 Technical Specifications},
howpublished = {\url{https://www.universal-robots.com/media/240736/ur3_en.pdf}},
note = {Hozzáférve: 2021-05-21}
}

View File

@ -110,14 +110,6 @@ Az egyes szolgáltatások között mindig csak a legkisebb hasznos adat kerül t
A rendszerbe érkező összes hangminta a beérkezés pontján címkézésre kerül. Később a feldolgozó szalag egyes fázisain ezzel lehet hivatkozni egy konkrét hangmintára. Ezek a címkék biztosítottan egyediek a rendszeren belül.
A rendszert alkotó mikroszolgáltatások négy fő csoportra oszthatóak. Ezt a felosztást mutatja be \aref{fig:architecture-redesigned}.\ ábra. Röviden ezek a csoportok az alábbiak:
\begin{itemize}
\item \textbf{West-End Subsystem} Az itt található szolgáltatások felelnek a beérkező hangfájlok és egyéb mérések adminisztrációjáért.
\item \textbf{AI Subsystem} Ezek a szolgáltatások felelnek az intelligens felismerésért.
\item \textbf{East-End Subsystem} Az intelligens felismerés eredményének hatására aktiválódó szolgáltatások vannak itt.
\item \textbf{Device Subsystem} Azok a szolgáltatások, amelyek közvetlenül az eszközök vezérlésért, azok adminisztrációjáért felelnek.
\end{itemize}
\begin{figure}[h!]
\centering
\includegraphics[width=1.05\textwidth]{figures/architecture-redesigned}
@ -125,43 +117,60 @@ A rendszert alkotó mikroszolgáltatások négy fő csoportra oszthatóak. Ezt a
\label{fig:architecture-redesigned}
\end{figure}
A rendszert alkotó mikroszolgáltatások négy fő csoportra oszthatóak. Ezt a felosztást mutatja be \aref{fig:architecture-redesigned}.\ ábra. Röviden ezek a csoportok a következőek:
\begin{itemize}
\item \textbf{West-End Subsystem} Az itt található szolgáltatások felelnek a beérkező hangfájlok és egyéb mérések adminisztrációjáért.
\item \textbf{AI Subsystem} Ezek a szolgáltatások felelnek az intelligens felismerésért.
\item \textbf{East-End Subsystem} Az intelligens felismerés eredményének hatására aktiválódó szolgáltatások vannak itt.
\item \textbf{Device Subsystem} Azok a szolgáltatások, amelyek közvetlenül az eszközök vezérlésért, azok adminisztrációjáért felelnek.
\end{itemize}
A rendszerhez készült egy webes kezelőfelület is, amelyet hallgatótársunk Kunkli Richárd fejlesztett.
\subsubsection{Implementált mikroszolgáltatások}
Az általunk tervezett és implementált mikroszolgáltatások működéséről és felelősségeiről egy rövid leírás olvasható az alábbiakban.
\begin{itemize}
\item \textbf{Input Service}
\item \textbf{Input Service} Ez az a szolgáltatás amely a felhőbe érkező hangfájlokat fogadja. Ennek a szolgáltatásnak a felelőssége ellátni az egyes hangmintákat címkével. Ezeket a címkéket lokálisan egy relációs adatbázisban is letárolja a hangfájlhoz tartozó egyéb információkkal együtt. A fogadott hangfájlt továbbküldi a \textit{Storage Service} számára. Miután az sikeresen eltárolta, ez a szolgáltatás az üzenetsorba publikál egy üzenetet hogy értesítse a feliratkozókat az új hangminta érkezéséről.
\item \textbf{Storage Service}
\item \textbf{Storage Service} Ez a szolgáltatás valósítja meg a hangfájlok hosszútávú tárolását egy objektum tárolóban. Képes kérésre visszaadni a hangfájlokat, illetve törölni is a mintákat.
\item \textbf{\acrshort{ai} Service}
\item \textbf{Model Service}
\item \textbf{\acrshort{ai} Service} Ez a szolgáltatás valósítja meg a beérkezett hangmintán hallható madár hang konkrét azonosítását. Ehhez \acrshort{cnn} algoritmust használ. Mind a folyamat elkezdéséhez szükséges üzenet fogadását, mind az eredmény publikálását üzenet sorokra kapcsolódva valósítja meg. A működéséhez szükséges modellt a \textit{Model Service} komponensből tölti le, amellyel \acrshort{rest} interfészen kommunikál. A hangmintát tag alapján a \textit{Storage Service}-ből tölti le címke alapján. Az adott eredmény egy hangminta címkéje és a felismert osztály (amely modelltől függően egy madár faj lehet).
\item \textbf{Model Service} Ez egyfajta okos tároló a rendszerben használt különböző \acrshort{mi} algoritmusok által használt modellek tárolására és kezelésére. Nem csak magát a modellt de arról különböző metaadatokat is képes eltárolni, amelyeket automatikusan olvas be a modellből. Ilyen például, hogy milyen modelleket képes azonosítani, ezekből melyik jelent veszélyt vagy, hogy az előfeldolgozásánál a hangnak milyen paramétereket kell használni.
\item \textbf{Results Service}
\item \textbf{Results Service} Ez a szolgáltatás az egyes mintákra való kiértékelések eredményét tárolja le. Minden mintára az eredmények egyértelműen visszakereshetőek és lekérdezhetőek. Ennek a megoldására relációs adatbázist használ.
\item \textbf{Metrics Service}
\item \textbf{Metrics Service} Az előző szolgáltatással ellenben ez a szolgáltatás az eredményeket időben változó metrikaként kezeli. Elabsztrahálja az egyes mintákat és statisztikai adatokat kezel. Ez különösen hasznos lehet bizonyos elemzéseknél és vizualizálásoknál.
\item \textbf{Guard Service}
\item \textbf{Guard Service} Ez a szolgáltatás is a mérések eredményét kapja meg a bemenetén, de itt nem eltárolja azokat, hanem ha az bizonyos határértéket átlép, akkor parancsot küld a termőföldre telepített \acrshort{iot} eszközöknek, hogy kezdjék meg a madarak elriasztását.
\item \textbf{Command and Control Service}
\item \textbf{Command and Control Service} Ez a szolgáltatás egy olyan interfészt valósít meg, amelyen keresztül egyszerűen lehet eszközöket, vagy azok egy csoportját kezelni. Azoknak lehet parancsot küldeni, vagy az állapotukat lekérdezni. Az eszközökkel \acrshort{mqtt} interfészen kommunikál, míg önmaga egy \acrshort{rest} interfészt szolgál ki.
\end{itemize}
\subsubsection{Használt külső fejlesztésű szoftverek}
\begin{itemize}
\item \textbf{PostgreSQL}
Az alkalmazás több "off-the-self" komponenst is használ ahhoz, hogy megvalósítsa a tervezett működést. Ezeket mi választottunk ki a tervezés során. A következőkben csak röviden bemutatom ezeket a komponenseket és a kiválasztásának okát.
\item \textbf{MinIO}
\begin{itemize}
\item \textbf{PostgreSQL} (Relációs Adatbázis): Második legnépszerűbb nyílt forráskódú relációs adatbázis kezelő rendszer, kifejezetten alacsony erőforrás igényekkel, valamint igen fejlett képességekkel rendelkezik. Rendkívül jó a közösségi támogatása. A fejlesztés előtt volt már vele korábbi tapasztalatunk.
\item \textbf{MinIO} (Objektum tár): Nagy teljesítményű Objektum tár, amely az Amazon S3 \acrshort{api}-ját implementálja. Egyenesen \textit{Kubernetes} környezetbe tervezve. Egyszerűen használható és telepíthető. Emellett rendelkezik a fejlesztőktől származó \gls{python} implementációval, melyhez könnyen kezelhető \textit{Flask} plugin is tartozik.
\item \textbf{InfluxDB}
\item \textbf{InfluxDB} (Idősoros adatbázis): Az \textit{Influx Data} által fejlesztett idősoros adatbázis. Rendkívül hatékonyan tud az adatokon műveleteket végezni, az \acrshort{api} kezelése egyszerű és intuitív. A fejlesztés előtt volt már vele korábbi tapasztalatunk.
\item \textbf{RabbitMQ}
\item \textbf{RabbitMQ} (Üzenetsor): \textit{Erlangban} írt, népszerű, nyílt forráskódú üzenetsort megvalósító rendszer. Kezelése kifejezetten egyszerű és rendelkezik \gls{python} \acrshort{api}-val, valamint rendkívül jó minőségű dokumentáció érhető el hozzá.
\end{itemize}
A mikroszolgáltatás architektúrának és a megfelelő tervezésnek köszönhetően ezek a technológiák könnyen lecserélhetőek. Kizárólag az adott komponenssel közvetlenül kommunikáló szolgáltatást kell módosítani.
\subsection{Kommunikáció}

View File

@ -134,6 +134,19 @@
description={TODO}
}
\newglossaryentry{ini}
{
name={INI},
description={TODO}
}
\newglossaryentry{xlsx}
{
name={XLSX},
description={TODO}
}
\newacronym{mdt}{MDT}{Model-Driven Telemetry}
\newacronym{ai}{AI}{Artificial Intelligence}
@ -215,4 +228,5 @@
\newacronym{wifi}{WiFi}{Wireless Fidelity}
\newacronym{mqtt}{MQTT}{Message Queuing Telemetry Transport}
\newacronym{aws}{AWS}{Amazon Web Services}
\newacronym{io}{I/O}{Input/Output}
\newacronym{io}{I/O}{Input/Output}
\newacronym{rtde}{RTDE}{Real-time Data Exchange}

View File

@ -4,6 +4,13 @@
\label{chapter:ursim}
%----------------------------------------------------------------------------
% Ipar 4.0 ???
% leírni, hogy igazából itt csak egy demót alakítottam át, így kívülről nem fog semmi érdekes látszani
\section{Környezet ismertetése} % Általánosan a robotkar cumók ismertetése
% Ide leírom, hogy mi volt kész, amivel dolgozni tudtam
@ -11,26 +18,63 @@
% Mivel ezt a dipterv alatt csináltam, ezért részletesebben fogok írni róla
\section{Környezet ismertetése} % Általánosan a robotkar cumók ismertetése
\subsection{Universal Robots}
% Általános leírás a robotkarokról
% Általános leírás a robotkarokról, meg hogy ezek a csávók gyártanak ilyeneket
\subsubsection{Fizikai jellemzők}
A használt robotok
\cite{ur3_specs}
% Ide majd keresek valamit, lehet átnevezem valami okosra a címét
\subsubsection{Kommunikációs interfész}
% URTD Interface
% RTDE Interface
\subsubsection{Szimulátor}
% Dockursim
\subsection{Demo vezérlés}
\subsection{Demó}
\subsubsection{Környezet}
% Mindenképp meg kell említeni hogy találó neveket adtak nekik
% Itt le lehetne írni, hogy hogy is néz ki ez a demo, milyen lépésekből áll és mi a setup
% Ki kell emelni hogy van egy kritikus szinkronizációs pont
\begin{figure}[h!]
\centering
\includegraphics[width=0.6\textwidth]{figures/work_table}
\caption{A demó környezet elemeit tartalmazó asztal alaprajza}
\label{fig:work_table}
\end{figure}
\subsubsection{Vezérlés}
A demo vezérlésére a munkám elején egy monolit Python program állt rendelkezésemre. A program úgy lett tervezve, hogy elindításával csatlakozik mindkettő robotkar \acrshort{rtde} interfészére. Majd sorban elküldi a robotkaroknak a demo végrehajtásához szükséges utasításokat. A % TODO
gripper vezérlését \acrshort{rest} apin keresztül végzi.
A két robotkar vezérlése két külön szálon valósítja meg. Mindkettő szálon egymás után következnek az utasítások, a kritikus szinkronizációs részek egyszerű szál-szinkronizációs primitívekkel vannak megoldva.
A programban több futtatási mód is implementálva van. Egyrészt választani lehet a végrehajtás sebességét gyors és lassú között. Ez a robotkarok mozgási sebességét befolyásolja. Emellett lehetőség van "Jogging" módban futtatni. Ebben a módban a program minden mozdulat végrehajtása előtt várakozik egy gomb lenyomására a további parancsok kiadása előtt. Így lehetőség adódik az esetleges hibás mozgások hibakeresésére illetve a program teljesen automatikus lefuttatása előtt manuális tesztelésre.
A program a konfigurációs beállításait egy \gls{ini} fájlban tárolja. Ezek a konfigurációs beállítások elsősorban a robotkarok és a hozzá tartozó Gripperek hálózati címeit adja meg illetve a konkrét sebesség módokhoz tartozó konfigurációs értékeket.
Az \gls{ini} fájl mellett a program a konkrét lépésekhez tartozó koordinátákat egy \textit{Microsoft Excel} \gls{xlsx} fájlból olvassa ki. Ebben a fájlban mindkét robotkarhoz tartozóan fel vannak sorolva a koordináták mind tool- és joint térben. %TODO verify naming
\section{Tervezés} % Itt foglalom össze, hogy hogy terveztem meg ezt a fost
% funkcionális felbontás
% külön lehet írni a magas szintű tervezésről és egyes szoftverek architektúrájáról
% Itt le lehet írni a controller magas szintű terveit, plugin architektúrát
% tervezés és a nehézségek nem tételesen de hasonlóan struktúrálva
% Illetve a komoly megoldásaim
@ -40,4 +84,32 @@
% ha nagyon kevés oldal van, akkor itt tudok írni a fejlesztői környezetről is illetve a tesztelésről
% Szinkronizációs protokol lófasznál ne felejtsek el írni az NTP-ről és PTP-től
% Szinkronizációs protokol lófasznál ne felejtsek el írni az NTP-ről és PTP-től
\begin{figure}[h!]
\centering
\includegraphics[width=1\textwidth]{figures/ursim_services_plan-clean}
\caption{A tervezett mikroszolgáltatások a futtatási környezetük szerint csoportosítva}
\label{fig:usrsim_services_plan-clean}
\end{figure}
\section{Implementáció}
% Hát itt kénytelen leszek kódot magyarázni szerintem
% Redis
% Technológia stack
% az egyes mikroszolgáltatások különszedve
% Le lehet írni azt is hogy hogyan extractoltam ki a lépéseket az eredeti kódból, erről egy egész szekciót lehetne írni
% Tiny HTTP Szerver, endpointok felsorolása
% Pluginok compilerekkel
% Esetleg pluginok felsorolással
% A programok felépítéséről is lehet írni

Binary file not shown.

BIN
src/figures/work_table.pdf Normal file

Binary file not shown.