did other stuff
This commit is contained in:
@ -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}
|
||||
|
||||
}
|
@ -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ó}
|
||||
|
||||
|
@ -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}
|
@ -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
|
BIN
src/figures/ursim_services_plan-clean.pdf
Normal file
BIN
src/figures/ursim_services_plan-clean.pdf
Normal file
Binary file not shown.
BIN
src/figures/work_table.pdf
Normal file
BIN
src/figures/work_table.pdf
Normal file
Binary file not shown.
Reference in New Issue
Block a user