Generated data volumes are constantly increasing, dictating the need for more sophisticated algorithms and mathematical models to achieve faster and more accurate processing of this data volume. The execution requirements of these algorithms/models often require increased computational resources which entails increased energy and costs. It is evident that, as data continue to grow, performing such processing algorithms on robotic vehicles that do not have the computational power and the energy autonomy will be impossible.
This diploma thesis focuses on the implementation of a system that aims to offload some robotic vehicle operations into a computer cluster. This way, robots can execute algorithms that, due to computational resource and energy requirements, would be impossible. The proposed system allows developers that do not have robotic programming skills, to treat robotic systems under a software as a service prism.
1. ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ
ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ & ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ
ΤΟΜΕΑΣ ΗΛΕΚΤΡΟΝΙΚΗΣ & ΥΠΟΛΟΓΙΣΤΩΝ
Αυτοματοποιημένη δημιουργία εκτελέσιμων και
εκτέλεση ρομποτικών υπηρεσιών στο Νέφος
Υπό την επίβλεψη του Επίκουρου Καθηγητή
κ. Συμεωνίδη Ανδρέα
και του
Δρ. Εμμανουήλ Τσαρδούλια
Βασίλης Ρέμμας 8330 - Οκτώβριος 2017
2. Το πρόβλημα
Μπορούν τα ρομπότ να εκτελούν αλγορίθμους που απαιτούν μεγάλη υπολογιστική ισχύ;
Τι κόστος έχει αυτό;
Θα μπορούν να εκτελέσουν παρόμοιους αλγορίθμους στο μέλλον, όσο τα δεδομένα θα
συνεχίζουν να αυξάνονται;
Κατηγορίες ρομπότ:
Φθηνά ρομπότ
Περιορισμένη υπολογιστική ισχύς και προκαθορισμένες λειτουργίες
Απευθύνονται στο ευρύτερο κοινό
Ακριβά ρομπότ
Μεγαλύτερη υπολογιστική ισχύ από τα φθηνά
Απευθύνονται κυρίως σε βιομηχανίες
Βασίλης Ρέμμας 8330 - Οκτώβριος 2017
3. Το πρόβλημα – Αλγόριθμοι
Κάποια είδη αλγορίθμων:
Αναγνώριση προσώπου, φωνής και αντικειμένων
Αναγνώριση τοποθεσίας και χαρτογράφηση
Σχεδιασμού μονοπατιού
Προβλήματα εκτέλεσης τους στα ρομπότ:
Μεγάλη ανάγκη σε υπολογιστική ισχύ
Κατανάλωση ενέργειας
Βασίλης Ρέμμας 8330 - Οκτώβριος 2017
4. Το πρόβλημα – Αλγόριθμοι
Κάποια είδη αλγορίθμων:
Αναγνώριση προσώπου, φωνής και αντικειμένων
Αναγνώριση τοποθεσίας και χαρτογράφηση
Σχεδιασμού μονοπατιού
Προβλήματα εκτέλεσης τους στα ρομπότ:
Μεγάλη ανάγκη σε υπολογιστική ισχύ
Κατανάλωση ενέργειας
Βασίλης Ρέμμας 8330 - Οκτώβριος 2017
Πιθανή λύση
5. Το πρόβλημα – Αλγόριθμοι
Κάποια είδη αλγορίθμων:
Αναγνώριση προσώπου, φωνής και αντικειμένων
Αναγνώριση τοποθεσίας και χαρτογράφηση
Σχεδιασμού μονοπατιού
Προβλήματα εκτέλεσης τους στα ρομπότ:
Μεγάλη ανάγκη σε υπολογιστική ισχύ
Κατανάλωση ενέργειας
Βασίλης Ρέμμας 8330 - Οκτώβριος 2017
Πιθανή λύση
6. Το πρόβλημα – Αλγόριθμοι
Κάποια είδη αλγορίθμων:
Αναγνώριση προσώπου, φωνής και αντικειμένων
Αναγνώριση τοποθεσίας και χαρτογράφηση
Σχεδιασμού μονοπατιού
Προβλήματα εκτέλεσης τους στα ρομπότ:
Μεγάλη ανάγκη σε υπολογιστική ισχύ
Κατανάλωση ενέργειας
Βασίλης Ρέμμας 8330 - Οκτώβριος 2017
Πιθανή λύση
«άφθονη» υπολογιστική ισχύ
γρήγορες ταχύτητες
είναι σχετικά φθηνό
ο καθένας μπορεί να έχει πρόσβαση
σε αυτό
7. Στόχος της διπλωματικής
Στόχος της διπλωματικής εργασίας είναι η δημιουργία ενός συστήματος στο οποίο ο
καθένας θα μπορεί να καταθέσει και να εκτελέσει απομακρυσμένες ρομποτικές
υπηρεσίες, υλοποιώντας αλγορίθμους οι οποίοι αυτή την στιγμή εκτελούνται σε
ρομπότ, παρέχοντας μεγαλύτερη ταχύτητα και άρση περιορισμών σε
υπολογιστική ισχύ και ενέργεια.
Περαιτέρω στόχοι:
Εξοικονόμηση ενέργειας του ρομπότ
Επίτευξη μεγαλύτερης ταχύτητας εκτέλεσης αλγορίθμων (υπό συνθήκη)
Εύκολος διαμοιρασμός ρομποτικών υπηρεσιών στους κατόχους ρομποτικών
συσκευών
Χρήση ρομποτικών υπηρεσιών από ανθρώπους που δεν έχουν τεχνικές γνώσεις
Δυνατότητα δημιουργίας ρομποτικών εφαρμογών από προγραμματιστές
χρησιμοποιώντας υπηρεσίες οι οποίες εκτελούνται στο Νέφος
Βασίλης Ρέμμας 8330 - Οκτώβριος 2017
8. Προτεινόμενο σύστημα
SRCA – Scalable Robotic Cloud Agents
Το SRCA χρησιμοποιεί:
Το Νέφος για να εκτελεί τις ρομποτικές υπηρεσίες των χρηστών
Εργαλεία τα οποία δίνουν την δυνατότητα:
Πλήρης διαχείρισης του συστήματος
Εμφάνισης προβλημάτων κατά την δημιουργία εκτελέσιμων (build) ή την εκτέλεση
ενός πακέτου στον χρήστη (deploy)
Απομόνωσης του κάθε πακέτου υπηρεσιών από τα άλλα πακέτα
Κλιμάκωσης (scaling) ενός πακέτου υπηρεσιών με εύκολο τρόπο
Καταγραφής όλων των ενεργειών που έγιναν στο σύστημα
Βασίλης Ρέμμας 8330 - Οκτώβριος 2017
12. SRCA – Διαδικασία (2/4)
Η μορφή του requirements.yaml είναι η παρακάτω:
Βασίλης Ρέμμας 8330 - Οκτώβριος 2017
name: test
version: v1
environment: ROS
files:
- file_name: client.py
functions:
- name: add_two_ints
arguments:
params:
a: integer
b: integer
http-method: post
returns: string
- file_name: testfiles.py
functions:
- name: sendmyfile
arguments:
files:
fa:
params:
a: integer
http-method: post
returns: file
packages:
apt-get: net-tools vim
pip: numpy
npm: underscore
command: roslaunch test launch.launch
13. SRCA – Διαδικασία (2/4)
Η μορφή του requirements.yaml είναι η παρακάτω:
Βασίλης Ρέμμας 8330 - Οκτώβριος 2017
name: test
version: v1
environment: ROS
files:
- file_name: client.py
functions:
- name: add_two_ints
arguments:
params:
a: integer
b: integer
http-method: post
returns: string
- file_name: testfiles.py
functions:
- name: sendmyfile
arguments:
files:
fa:
params:
a: integer
http-method: post
returns: file
packages:
apt-get: net-tools vim
pip: numpy
npm: underscore
command: roslaunch test launch.launch
14. SRCA – Διαδικασία (2/4)
Η μορφή του requirements.yaml είναι η παρακάτω:
Βασίλης Ρέμμας 8330 - Οκτώβριος 2017
name: test
version: v1
environment: ROS
files:
- file_name: client.py
functions:
- name: add_two_ints
arguments:
params:
a: integer
b: integer
http-method: post
returns: string
- file_name: testfiles.py
functions:
- name: sendmyfile
arguments:
files:
fa:
params:
a: integer
http-method: post
returns: file
packages:
apt-get: net-tools vim
pip: numpy
npm: underscore
command: roslaunch test launch.launch
15. SRCA – Διαδικασία (2/4)
Η μορφή του requirements.yaml είναι η παρακάτω:
Βασίλης Ρέμμας 8330 - Οκτώβριος 2017
name: test
version: v1
environment: ROS
files:
- file_name: client.py
functions:
- name: add_two_ints
arguments:
params:
a: integer
b: integer
http-method: post
returns: string
- file_name: testfiles.py
functions:
- name: sendmyfile
arguments:
files:
fa:
params:
a: integer
http-method: post
returns: file
packages:
apt-get: net-tools vim
pip: numpy
npm: underscore
command: roslaunch test launch.launch
16. SRCA – Διαδικασία (2/4)
Η μορφή του requirements.yaml είναι η παρακάτω:
Βασίλης Ρέμμας 8330 - Οκτώβριος 2017
name: test
version: v1
environment: ROS
files:
- file_name: client.py
functions:
- name: add_two_ints
arguments:
params:
a: integer
b: integer
http-method: post
returns: string
- file_name: testfiles.py
functions:
- name: sendmyfile
arguments:
files:
fa:
params:
a: integer
http-method: post
returns: file
packages:
apt-get: net-tools vim
pip: numpy
npm: underscore
command: roslaunch test launch.launch
17. SRCA – Διαδικασία (2/4)
Η μορφή του requirements.yaml είναι η παρακάτω:
Βασίλης Ρέμμας 8330 - Οκτώβριος 2017
name: test
version: v1
environment: ROS
files:
- file_name: client.py
functions:
- name: add_two_ints
arguments:
params:
a: integer
b: integer
http-method: post
returns: string
- file_name: testfiles.py
functions:
- name: sendmyfile
arguments:
files:
fa:
params:
a: integer
http-method: post
returns: file
packages:
apt-get: net-tools vim
pip: numpy
npm: underscore
command: roslaunch test launch.launch
18. SRCA – Διαδικασία (2/4)
Η μορφή του requirements.yaml είναι η παρακάτω:
Βασίλης Ρέμμας 8330 - Οκτώβριος 2017
name: test
version: v1
environment: ROS
files:
- file_name: client.py
functions:
- name: add_two_ints
arguments:
params:
a: integer
b: integer
http-method: post
returns: string
- file_name: testfiles.py
functions:
- name: sendmyfile
arguments:
files:
fa:
params:
a: integer
http-method: post
returns: file
packages:
apt-get: net-tools vim
pip: numpy
npm: underscore
command: roslaunch test launch.launch
19. SRCA – Διαδικασία (2/4)
Η μορφή του requirements.yaml είναι η παρακάτω:
Βασίλης Ρέμμας 8330 - Οκτώβριος 2017
name: test
version: v1
environment: ROS
files:
- file_name: client.py
functions:
- name: add_two_ints
arguments:
params:
a: integer
b: integer
http-method: post
returns: string
- file_name: testfiles.py
functions:
- name: sendmyfile
arguments:
files:
fa:
params:
a: integer
http-method: post
returns: file
packages:
apt-get: net-tools vim
pip: numpy
npm: underscore
command: roslaunch test launch.launch
20. SRCA – Διαδικασία (2/4)
Η μορφή του requirements.yaml είναι η παρακάτω:
Βασίλης Ρέμμας 8330 - Οκτώβριος 2017
name: test
version: v1
environment: ROS
files:
- file_name: client.py
functions:
- name: add_two_ints
arguments:
params:
a: integer
b: integer
http-method: post
returns: string
- file_name: testfiles.py
functions:
- name: sendmyfile
arguments:
files:
fa:
params:
a: integer
http-method: post
returns: file
packages:
apt-get: net-tools vim
pip: numpy
npm: underscore
command: roslaunch test launch.launch
21. SRCA – Διαδικασία (2/4)
Η μορφή του requirements.yaml είναι η παρακάτω:
Βασίλης Ρέμμας 8330 - Οκτώβριος 2017
name: test
version: v1
environment: ROS
files:
- file_name: client.py
functions:
- name: add_two_ints
arguments:
params:
a: integer
b: integer
http-method: post
returns: string
- file_name: testfiles.py
functions:
- name: sendmyfile
arguments:
files:
fa:
params:
a: integer
http-method: post
returns: file
packages:
apt-get: net-tools vim
pip: numpy
npm: underscore
command: roslaunch test launch.launch
22. SRCA – Διαδικασία (2/4)
Η μορφή του requirements.yaml είναι η παρακάτω:
Βασίλης Ρέμμας 8330 - Οκτώβριος 2017
name: test
version: v1
environment: ROS
files:
- file_name: client.py
functions:
- name: add_two_ints
arguments:
params:
a: integer
b: integer
http-method: post
returns: string
- file_name: testfiles.py
functions:
- name: sendmyfile
arguments:
files:
fa:
params:
a: integer
http-method: post
returns: file
packages:
apt-get: net-tools vim
pip: numpy
npm: underscore
command: roslaunch test launch.launch
23. SRCA – Διαδικασία (3/4)
Η μορφή των αρχείων Python είναι η παρακάτω:
Βασίλης Ρέμμας 8330 - Οκτώβριος 2017
#!/usr/bin/env python
import sys
import rospy
from test.srv import *
def add_two_ints(x, y):
rospy.wait_for_service('add_two_ints_srv')
try:
add_two_ints_srv = rospy.ServiceProxy('add_two_ints_srv', AddTwoInts)
resp1 = add_two_ints_srv(x, y)
return resp1.sum
except rospy.ServiceException, e:
print "Service call failed: %s"%e
24. SRCA – Διαδικασία (3/4)
Η μορφή των αρχείων Python είναι η παρακάτω:
Βασίλης Ρέμμας 8330 - Οκτώβριος 2017
#!/usr/bin/env python
import sys
import rospy
from test.srv import *
def add_two_ints(x, y):
rospy.wait_for_service('add_two_ints_srv')
try:
add_two_ints_srv = rospy.ServiceProxy('add_two_ints_srv', AddTwoInts)
resp1 = add_two_ints_srv(x, y)
return resp1.sum
except rospy.ServiceException, e:
print "Service call failed: %s"%e
25. SRCA – Διαδικασία (4/4)
Αφού ο χρήστης αποστείλει το συμπιεσμένο αρχείο, ακολουθείται η παρακάτω
διαδικασία:
Βασίλης Ρέμμας 8330 - Οκτώβριος 2017
26. SRCA – Διαδικασία (4/4)
Αφού ο χρήστης αποστείλει το συμπιεσμένο αρχείο, ακολουθείται η παρακάτω
διαδικασία:
Βασίλης Ρέμμας 8330 - Οκτώβριος 2017
OpenAPI specifications
Δημιουργία ειδικής συνάρτησης
εξαίρεσης (Exception)
27. SRCA – Διαδικασία (4/4)
Αφού ο χρήστης αποστείλει το συμπιεσμένο αρχείο, ακολουθείται η παρακάτω
διαδικασία:
Βασίλης Ρέμμας 8330 - Οκτώβριος 2017
OpenAPI specifications
Χτίσιμο των πακέτων σε Kubernetes Pods
Δημιουργία ειδικής συνάρτησης
εξαίρεσης (Exception)
28. SRCA – Διαδικασία (4/4)
Αφού ο χρήστης αποστείλει το συμπιεσμένο αρχείο, ακολουθείται η παρακάτω
διαδικασία:
Βασίλης Ρέμμας 8330 - Οκτώβριος 2017
OpenAPI specifications
Χτίσιμο των πακέτων σε Kubernetes Pods
Δημιουργία ειδικής συνάρτησης
εξαίρεσης (Exception)
Δημιουργία συστήματος επαναφοράς των
υπηρεσιών σε περίπτωση βλάβης του
SRCA
41. Συμπέρασμα
Το σύστημα δημιουργήθηκε και είναι σε θέση να λύσει το πρόβλημα που
περιγράφηκε
Το σύστημα εξυπηρετεί σε σχετικά μικρό χρόνο πολλαπλά αιτήματα
Η χρήση των Container διευκολύνει την κλιμάκωση κάθε πακέτου
Το Kubernetes:
αποτελεί ένα πολύ δυνατό εργαλείο για την διαχείριση των Container,
καθιστά εύκολη την επέκταση της συστοιχίας υπολογιστών,
μπορεί να κλιμακώσει σε πολύ μικρό χρόνο ένα πακέτο
Βασίλης Ρέμμας 8330 - Οκτώβριος 2017
42. Επέκταση
Δυνατότητα χρήσης ροής δεδομένων (Streaming)
Αξιοποίηση των υπαρχόντων Docker εικόνων
Αποσύνδεση του γραφικού περιβάλλοντος από το κύριο πρόγραμμα
Δημιουργία ενός εργαλείου διαχείρισης της βάσης δεδομένων
Δημιουργία δικτύων από Kubernetes Pods που θα διέπουν τις υπηρεσίες ενός
ρομποτικού πακέτου
Βασίλης Ρέμμας 8330 - Οκτώβριος 2017
43. Ευχαριστίες
Θα ήθελα να ευχαριστήσω τον κ. Συμεωνίδη Ανδρέα καθώς και τους Εμμανουήλ
Τσαρδούλια και Κωνσταντίνο Παναγιώτου για την καθοδήγηση, τις διορθώσεις και
τις ιδέες τους.
Ευχαριστώ για την προσοχή σας…
Βασίλης Ρέμμας 8330 - Οκτώβριος 2017
Δεδομενα αυξανονται συνεχως
Επεξεργασια τους -> Αλγοριθμοι / μαθηματικα μοντελα
Αυτοι καλουνται να τρέξουν στα ρομποτ, τα οποια έχουν μικρότερη υπολογιστική ισχύ σε σχέση με τους υπολογιστές που έχουμε στο γραφείο μας, πόσο μάλλον σε σχέση με μια συστοιχία υπολογιστών.
Αυτην την στιγμή ένα μεγάλο μέρος αυτών των αλγορίθμων μπορεί να τρέξει στα ρομπότ
Πιθανόν να μην μπορούν να τρέξουν στο μέλλονΦθηνά ρομπότ: αυτόματη ηλεκτρική σκούπαΑκριβά ρομπότ: βραχίονας που προσθέτει το κέλυφος σε ένα αυτοκίνητο
Docker: Υπεύθυνο για την δημιουργία Container τα οποία περιέχουν τα πακέτα που ανεβάζει κάποιος χρήστης
Kubernetes: Υπεύθυνο για την ενορχήστρωση των παραπάνω Container, για την κλιμάκωση τους και για την καταγραφή πληροφοριών που προκύπτουν κατά την εκτέλεση τους.
MongoDB: NoSQL βάση δεδομένων στην οποία καταγράφονται σημαντικά στοιχεία για την ομαλή λειτουργία του συστήματος.
Docker Registry: Σύστημα αποθήκευσης των εικόνων Docker που προκύπτουν κατά την λειτουργία του συστήματος
NodeJS server: Διακομιστής υπεύθυνος για την ενορχήστρωση όλων των παραπάνω υποσυστημάτων. Επίσης παρέχει γραφικό περιβάλλον για τους χρήστες και έναν reverse proxy server, για να μπορεί ο χρήστης να καλεί τις υπηρεσίες.
Αρχείο παραμετροποίησηςφάκελος που περιέχει συναρτήσεις python
Files
Packages μόνο τι κάνει ( διαχειριστης πακέτων )
Command μόνο τι κάνει
Files
Packages μόνο τι κάνει ( διαχειριστης πακέτων )
Command μόνο τι κάνει
Files
Packages μόνο τι κάνει ( διαχειριστης πακέτων )
Command μόνο τι κάνει
Files
Packages μόνο τι κάνει ( διαχειριστης πακέτων )
Command μόνο τι κάνει
Files
Packages μόνο τι κάνει ( διαχειριστης πακέτων )
Command μόνο τι κάνει
Files
Packages μόνο τι κάνει ( διαχειριστης πακέτων )
Command μόνο τι κάνει
Files
Packages μόνο τι κάνει ( διαχειριστης πακέτων )
Command μόνο τι κάνει
Files
Packages μόνο τι κάνει ( διαχειριστης πακέτων )
Command μόνο τι κάνει
Files
Packages μόνο τι κάνει ( διαχειριστης πακέτων )
Command μόνο τι κάνει
Files
Packages μόνο τι κάνει ( διαχειριστης πακέτων )
Command μόνο τι κάνει
Files
Packages μόνο τι κάνει ( διαχειριστης πακέτων )
Command μόνο τι κάνει
Github or local
zip
Services clickable εμφανίζει τα service του πακέτου
Services clickable εμφανίζει τα service του πακέτου
Worker -> Δημιουργούνται από το Gunicorn server που υπάρχει σε κάθε container. Βοηθούν στην παράλληλη εξυπηρέτηση πολλαπλών αιτημάτων
Όπως video streaming
Για την ελαχιστοποίηση του χρόνου χτισίματος των πακέτων που ανεβάζουν οι χρήστες χρησιμοποιώντας πακέτα άλλων χρηστών
Ταχύτητα και δυνατότητα κλιμάκωσης του καθένα ξεχωριστά
Για τον διαχειριστή του συστήματος για να δίνει διαφορετικές δυνατότητες σε κάθε χρήστη. Αυτήν την στιγμή γίνεται κάνοντας σύνδεση στην βάση μέσω τρίτων προγραμμάτων
Δυνατότητα κλιμάκωσης του ROS Node που χρησιμοποιείται περισσότερο, ξεχωριστά από τα άλλα