did other stuff

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

1
drawio/demo_table.drawio Normal file
View File

@ -0,0 +1 @@
<mxfile host="Electron" modified="2021-05-21T01:52:44.628Z" agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/12.2.2 Chrome/78.0.3904.94 Electron/7.1.0 Safari/537.36" etag="-N5YNRM7SfDisl8bOgEB" version="12.2.2" type="device" pages="1"><diagram id="CaFAC2JI3N3W6e__qGgP" name="Page-1">7ZZdb5swFIZ/DZeVAJM0uWzSdJu2VJOYVGl3Lj4BKwYz4xSyX7/jYkLAybppS9eL3UT2e46/nvfkCI8s8+adomW2lgyEF/qs8citF4azSYi/Rti3QnRNWiFVnLVS0Asx/w5W9K264wyqQaKWUmheDsVEFgUkeqBRpWQ9TNtIMTy1pCk4QpxQ4aoPnOmse5bf6++Bp1l3cuDbSE67ZCtUGWWyPpLIyiNLJaVuR3mzBGHYdVzadXdnooeLKSj0rywA9XH69UsVp/G9evi2Tu4/kPjKuvNExc4+2F5W7zsCSu4KBmYT3yOLOuMa4pImJlqj5ahlOhc4C3C4kYW2JgYRzu32oDQ0Z+8dHGhgFYHMQas9ptgFYWQBdhVkp3VvR9Rp2ZEVUecEtSWQHrbuKeHAgvoNaMSBtlJ864DDnbBK4WVotCrb0t3wxoC+CMXJkGLohw7G2QmKs0tBjByIdwof/6YhTuZvDOLEgbjeFVvKqKKPptuBePKWxLuZaxDcPBWZ/NkfXNBHEJ9lxTWXBWqqfeXCcOXYNj+N4jlnzBy0oIKnRhCwOc6/sfIh7xK1P7Lt2u0g5GQDuZBr01d3LZE5T2xqhVm8SBdSa5mjdnXK1pFLL7o6LoPXsHXqD20l/9rX+c99FaDo9tnYoPpv6/kmO7I1nLlN9i/ZitP+++s5dvQRS1Y/AA==</diagram></mxfile>

View File

@ -0,0 +1 @@
<mxfile host="Electron" modified="2021-05-20T23:47:43.476Z" agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/12.2.2 Chrome/78.0.3904.94 Electron/7.1.0 Safari/537.36" etag="3dZnjUl8q7QrIEI50qSO" version="12.2.2" type="device" pages="2"><diagram id="CBRj71-rHg4CvoN5Dju-" name="Page-1">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</diagram><diagram id="-1RDP5txrfMZXEfJhlDT" name="clean">7Vttc6o4FP41zOx+sBMIoH6s2u7L7O511nvnth9TiJBOJE6IrfbXbyJBhFBtVdC22+lMySGJ8pznOTknpBYczpa/cTSP/2YhppYDwqUFR5bj2NDuyz/Kssosju9khoiTUHcqDBPygrURaOuChDgtdRSMUUHmZWPAkgQHomRDnLPncrcpo+VPnaMIG4ZJgKhp/UlCEWfWngcK+++YRHH+yTbQd2Yo76wNaYxC9rxlgjcWHHLGRHY1Ww4xVeDluIzv4c3wn3Fy70yn8aL7iIdj1Mkmu33PkM0jcJyIg6ce/Fy6o7tHxu6S6x83cNXtDSZ6CHhCdKHx0s8qVjmAnC2SEKtJbAsOnmMi8GSOAnX3WVJG2mIxo/r2lFA6ZJRx2U5YIjsNQpTGm+H64zAXeFnxz56HszeIS6piNsOCr+Q4PQvs6SfRLLVz/z4XPrd9bYu3/O3kA5HmWbSZu8BSXmg43wEtdA0ocSipqZuMi5hFLEH0prAOCrCBbBV9/mJsriF8xEKstM7QQrCyA/CSiLut63s11ZWnW6OlnnndWOWNRD7v3XZja5RqFsPWrWJceK0UKpsBRWlKgsx4Sygt+Vs99wHeltixBQ/wDpB9HVEQj7DY0c/p1tOHY4oEeSp/u5NTwTdUNiFJJB3ugH/Zg4wfDhgyCS2jFPMdAgT7BdiUwFxQEVi3RmBOjcD8xvTl/a+vxvXVfau+eufUV/fz6QvWLWCt6qtvgJqukmCn5vSKf7zICuLrKQvWg/qU4mAJ7KW2v9Nv4Ar2fbfkuk4va76Z+3ryMSOJ2Iqw5QFsOk3l9yxlePmInEN+mUNOt8KNTO56VIUem0c7nDG2mU1+Tcq8kmy8TpnTMKZzPGWg7bRLmV31xsFUaGy53Z9gNL0g2+5xYet9FJN4oNVWh7niQVrDwLwMq0YgD+ykn9EfgArLsm9wWs7BsySOHzcJfDPnji2yzsK5fOugWc65xtI45iziaCaNE8yfiPTAUYnp9s6L5cDp+qfBhHWzwZfD7tQkrHarBaF/Xl1fAeCWtd2XoWafumVrjDmREGB+QZJ/68YKqCdJs5J3fK/EPRf4LUjY3MX5kz1IwzcexDgVHAkpvk+iZgjPrWbbLOoteFv8fpi9n911SdNCdk4iUFOBsMyXXpUHWeBorm7oXSw7wCdgx6ZSBSCvVI8kTMc/jDDFRK9XtScjlbnldTGk2hDpfuvOxyLVkQzqltf8vttuxHHMza2JwPO52lAG6VNgOT6V6A0eZNuP1NUvjyyKSBKpVRQR8WszGQFnQqLKkpJzT58g2GX0e3X5Qbuvf8ydo1ay/TNrSz/13rw8KzjP9UIm/5pbYhmxYDHDa0FPZKKsTm1U/ZfGaK4uQyRQKvvgC8yTK3mPXaODbpsycDxzzXoN16WCaR+ipY3y1uEto9v3TXTrDnE0dobDMWu+P5LODM+Ymrwa8EeSt2vkT0bvpnB2K0A7NUD3WqWxWe39SGSY4ilSY9dvcVMT8fzt7jWfmasBpWSenhFkr3omqQbk2jWzOTqbVdOnQxm6Z0e5pox4PfW74EN1dpXAdVu8dfEY2o1lffCTYOtV6uFLOLBoxuAx5ngWW0NoXdtU/RnAF5k+rvPIJExfak7TSJxEGWKOU/KCHtYdVI6sd3dlb29geSNpUXl2mqXcagCiJFL1TCABVpviAwU/CRC91jeEytYHqXSqLK++r1P3jtugs2C/7Cy3Lsa4dc5qzFdmJP+WdFJJ9S/hEL9SjtY5xGvVH2bMv8VUKsez+vZXk4sMZlf7/bM5aH+kg2SzOIOf7fYU/8kAb/4D</diagram></mxfile>

View File

@ -0,0 +1 @@
<mxfile host="Electron" modified="2021-05-20T23:52:55.012Z" agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/12.2.2 Chrome/78.0.3904.94 Electron/7.1.0 Safari/537.36" etag="g0EnsmLuwZDy8ol6Wr6f" version="12.2.2" type="device" pages="1"><diagram id="JO_Z-KRX5spVpJgGmPaf" name="Page-1">ddG9DoMgEADgp2FH6Y+7tXXp5NCZyFVI0CNIo+3TVwPWEtuJ47uDIwdheTteLDfyigI0SakYCTuRNE12NJuWWZ5ejtnBQ2OVCEUrVOoFAWnQhxLQR4UOUTtlYqyx66B2kXFrcYjL7qjjroY3sIGq5nqrNyWc9Jrt6eolqEYunRMaMi1figP0kgscvogVhOUW0fmoHXPQ8/CWufhz5z/Zz8MsdO7HgSlY75420Q+x4g0=</diagram></mxfile>

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.