From 5693fa162ff42ec97070c9fa2d60f9987b9de604 Mon Sep 17 00:00:00 2001 From: Georgios Gerontakis Date: Mon, 20 Jan 2020 11:15:18 +0200 Subject: [PATCH] Finalizing servo support Added new README too --- README.md | 50 +++++++++++++++++- camera module/README.md | 3 -- .../__pycache__/servo.cpython-37.pyc | Bin 0 -> 977 bytes camera module/main.py | 10 ++-- tracking and telemetry/README.md | 3 -- 5 files changed, 56 insertions(+), 10 deletions(-) delete mode 100644 camera module/README.md create mode 100644 camera module/__pycache__/servo.cpython-37.pyc delete mode 100644 tracking and telemetry/README.md diff --git a/README.md b/README.md index bf7044f..16f6a49 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,51 @@ # Talos_Drones_Tracking_and_Telemetry -![enter image description here](https://scontent.fath7-1.fna.fbcdn.net/v/t1.0-9/74674993_115153423241475_4772277731842850816_n.jpg?_nc_cat=103&_nc_ohc=fl0TAVjHIzoAQn0zfYrt0L-uHNcVjRjos4qpfN2RWaFryHpJ41NLYKVnA&_nc_ht=scontent.fath7-1.fna&oh=0b9912eb666fd830d18fce5fb9205b5b&oe=5ED97648) \ No newline at end of file +![enter image description here](https://scontent.fath7-1.fna.fbcdn.net/v/t1.0-9/74674993_115153423241475_4772277731842850816_n.jpg?_nc_cat=103&_nc_ohc=fl0TAVjHIzoAQn0zfYrt0L-uHNcVjRjos4qpfN2RWaFryHpJ41NLYKVnA&_nc_ht=scontent.fath7-1.fna&oh=0b9912eb666fd830d18fce5fb9205b5b&oe=5ED97648) + +# Περιγραφή του Project +Στο συγκεκριμένο project υλοποιούμε ένα σύστημα οπτικής καταγραφής πτήσεων και τηλεμετρίας για μη επανδρωμένα αεροσκάφη. + +**Το Project αυτό δημιουργήθηκε σε συνεννόηση με την ομάδα Έρευνας μη Επανδρωμένων συστημάτων ΤΑΛΟΣ του Πανεπιστημίου Δυτικής Αττικής και προορίζεται για χρήση σε πειραματικές πτήσεις drones** +# Camera Module +- Για την οπτική καταγραφή χρησιμοποιείται μια κάμερα η οποία είναι τοποθετημένη πάνω σε ένα tilt και εχει τη δυνατοτητα περιστροφής 180 μοιρών αριστερά-δεξιά ( ο ένας servo) και πάνω - κάτω + ( ο δεύτερος servo). + - Η κάμερα με το servo tilt συνδέεται με ένα raspberry pi (3 Model B+) και στο raspberry pi αυτό τρέχει ένας "δαίμονας" ο οποίος είναι υπεύθυνος για τη λήψη στιγμιότυπων από τη κάμερα πάνω στο tilt και μετά από επεξεργασία του στιγμιότυπου αυτού (με OpenCV) είναι σε θέση να βγάλει συμπεράσματα σχετικά με τη τοποθεσία του μη επανδρωμένου αεροσκάφους ως προς τη κάμερα. Στη συνέχεια ελέγχει τους 2 servo έτσι ώστε να ακολουθεί το drone. Τέλος, κάνει streaming της τελικής εικόνας στο Client του project ο οποίος έχει συνδεθεί. (**Για τη συνεχεία της εργασίας θα αναφερόμαστε σε όλο αυτό το σύστημα με τη κάμερα το servo tilt και την υπηρεσία επεξεργασίας και streaming ως "Camera Module"**) + + //insert camera module picture here// + +# Συνδεσμολογία Camera Module + +//insert scheme for camera module// + +# Εφαρμογή Χρήστη + Για την απεικόνιση των πληροφοριών από τη τηλεμετρία και τη προβολή των πλάνων από το Camera Module δημιουργήθηκε εφαρμογή σε C# η οποία κάνει χρήση του πρωτοκόλλου MAVLink για τη παροχή τη τηλεμετρία. +![enter image description here](https://lh3.googleusercontent.com/dC7GTFsNXT2gfqM8LNYjaqa8xut5k_XW5dd_rV6O5pTswJ4g56YVd2uWuM3fG5Yj_hu1oY6emXYxFTZGZVR1DnwTkVSfCh04bsWreLSm-RG-VIuE6TIJa2nHh0UDqml0tDA34vc0Lt0U5pgIGXgbv2lC-NT9TLTxPMnRJkv-wpVPF7wwTQwSiADNi3zZyQrd0Pqg8oWvKo81wvzu1AxqsRgVKCsTNUnCGMWAcNqzaBI-eE9hDQeHcfW_r1lvKVccvmuQM49jQPPGIpSkSrMpcrkjgtNKJElTdzw-6NLZItGhzwiQjvpb57h8axHlvPsxQwoRCHtVNSTKMwoVF8rQd8oJRq1Dp0p_0k68saiJ6CulH2pW2YVV1HsE28EPknjXBMdWcNzoyOxeShqyNclxg-KVTHLK6UcklvYueqtHfMUE0J9S5cASL_sgG-xki0wBcnpYraSU83pQPs14dPQP6_cPYLtF2tXPLoBc8j6528lpww7CjGErPCE7KCRb9Gix3yczcQ-uBlQXseFHZGbSx4DtzPUT5x_s0vUrc825GRpGfQA8nHFHz1HV0JbqPQRHU2Rx2OjUF7LG6U8oKLLDUKfpgcMewK6Txl7BPEnm-qzHnbulATJgvFEjENI19OzgtmdUM4lsbDyFb1dM1wETinGJmsSO2aixZw4vGMLHQApASaXG3f4eLjo=w1037-h572-no) + +Ο χρήστης της εφαρμογής μπορεί να έχει πρόσβαση στο Camera Module επιλέγοντας πατώντας το κουμπί "Add Camera Module" και εισάγοντας την διεύθυνση του. + + ![enter image description here](https://lh3.googleusercontent.com/ThGPIkvbm_SatkXSuAok1cr-9SXLPz5xF9wXCVF5oiCcrn2sKH6FSQ1tqxk2Ca8CF1-sV5vUjH68wXE8O240FRze4M6e7xm2eDtjJNIGnLdlf37rrRIKITILIv8XpHvaig2OwvmGUi00mwJ_7RY0Nt1NU2GWyG7PtBUFTD7eW6dOnvB7p2ByB-9OvZeV0gDWf9m9c3siRl1jalYWZ04ZpOaP9qS4QPh57WZNDkGDpbve9SRaoiFniNdsKImfczWqrtQNNfkVViIWiLzo94vMlZy6v8cvQX-kf1HE2dbvySIVcHdmCMTcb2nF-FkMZcI8JnEiq9PmUvb0RAMhoPK3hOps1Ji36syrPw7sra2E_9bB6yUElPRnOrBQSusac1Dmh2_jtFw5BdXG-P26hUZT489u8-VRK_j4qncBCm3SEKKwbCVYS1INJfVxDhNVBu1XHNRJnL1IEvWHKhE-AIQFLw0jXgOsrkBeaPt-HeoKkytOa231r38AweOb6W5l80cnhkkYGJh5qf1TKH7HEuz8jMua3QskkOLDVrYDa-SmeYDiRggue54dZeVbHqvNkjBgyRSDPJn2-koabzDSSj0JbsFzkbtFJ1gcR0MHji911Jq8G3Mxb8F986REQ0mjUJjYLiQGB3IktFibPR3c1YwN-3i_ihnAsLxqKpRsf5rH2EmFfyO4gSDaZQk=w852-h164-no) + +Μέσω της εφαρμογής έχουμε τη δυνατοτητα: + +- Εμφάνισης των μηνυμάτων τηλεμετρίας που στέλνονται από το drone στο δέκτη. +- Προσθήκης του Camera Module ετσι ώστε ο χρήστης να έχει και οπτική επαφή με το drone. +- Εμφάνισης πληροφοριών του drone σχετικά με το τύπο του, τον αυτόματο πιλότο, το base mode και τη κατάσταση στην οποία βρίσκεται. +- **Εντοπισμός σε πραγματικού χρόνο του drone και καταγραφή της πορείας του σε χάρτη.** +- Προβολής μπαταρίας που απομένει και ηχητική ειδοποίηση του χρήστη όταν αυτή φτάσει στη μέση και όταν τελειώνει με εντονότερη ηχητική ειδοποίηση. + +**Τα παραπανω έχουν δημιουργηθεί αποκλειστικά και μόνο για τους σκοπούς της παρουσίασης ενώ το Project θα συνεχίσει να αναπτύσσεται στο μέλλον μεχρι τη μόνιμη ενσωμάτωση του στα project της ομάδας ΤΑΛΟΣ** + + +# Τηλεμετρία +Για τη τηλεμετρία χρησιμοποιούμε ένα module ραδιο-τηλεμετρίας στα 433Mhz αφού πρώτα έχουμε εγκαταστήσει τους κατάλληλους drivers. +![enter image description here](https://drones.altigator.com/images/ardupilot/modem-4333-mhz-100mw-mavlink-telemetry-compatibility-pixhawk.jpg) +Ωστόσο δεν έχει σημασία με ποιο τρόπο γίνεται η ζεύξη του χρήστη με το drone για την επικοινωνία, καθώς κοινός παρονομαστής για την επικοινωνία το πρωτόκολλο MAVLink. + +# Χρήση του Project + + 1. Αφού η συνδεσμολογία του servo tilt με το development board είναι + σωστή, τρεχουμε στο development board + +> sudo ./setup.sh + + ώστε να εγκατασταθούν τα απαραιτητα για την εκκίνηση του δαίμονα. diff --git a/camera module/README.md b/camera module/README.md deleted file mode 100644 index bf7044f..0000000 --- a/camera module/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# Talos_Drones_Tracking_and_Telemetry - -![enter image description here](https://scontent.fath7-1.fna.fbcdn.net/v/t1.0-9/74674993_115153423241475_4772277731842850816_n.jpg?_nc_cat=103&_nc_ohc=fl0TAVjHIzoAQn0zfYrt0L-uHNcVjRjos4qpfN2RWaFryHpJ41NLYKVnA&_nc_ht=scontent.fath7-1.fna&oh=0b9912eb666fd830d18fce5fb9205b5b&oe=5ED97648) \ No newline at end of file diff --git a/camera module/__pycache__/servo.cpython-37.pyc b/camera module/__pycache__/servo.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..32fda421db6981794eb9d28880e788953ad5b414 GIT binary patch literal 977 zcmd6lJ8#=C5XVVTFFUrAK2x+yfKCF63>}LiXkwv8hsH)CBY+{)5JbXtqZdf3sR3td zK8QW`D{<}Qse7m1$uZEWa|!ULJMquEBadg@ZkxdP_3h=SwoS-Sbaul6;~h-(3cv}c z8OiB{Qnani%Grd0&A5F>CN_7t3txxROA>e+*g?(%Y8;gbQKb}p7z`$)A$^$Y4xq`3 zYVyTeLs+mGN6%hcjR(QFwYF~QlCE6NP_rc5enGf%NNz3Ad!TSp4GMp`jnd-Y_iZ#> z^>?fH`{}B^CQbA`{Bi>2w$3+L*yc4rVyT;l2t0qZLH~WwG4^2eVQ4%hbY5~{oU`HS zMF{5;x~>cxjw8cHS0CYrPNX(&S?j9SX21VADP|(9^`gH>Ga)gkv6U_>EDNEgkxbI- zc`=(N1)oMD6S>fG5vNHmWO4*W*O`bR)YtO3TA22w(5IMmTwz1hGXS9-+Jo7KiS+L& zaq<7}p#xP)JWSI=*|;vak@SGjL+RsU3xTg*?jbseE~1CnM;suqQ}O`5m1j4!LH&DeSl-D)!9ol8{xm8ePCWb@x{ Q8+wAzQ{gG0WtQLj18?Tc761SM literal 0 HcmV?d00001 diff --git a/camera module/main.py b/camera module/main.py index 4fb549b..f27854a 100644 --- a/camera module/main.py +++ b/camera module/main.py @@ -5,8 +5,8 @@ import servo # Constant variables definition. MAJOR_VERSION = cv2.getVersionMajor() -SERVO_INITIAL_X_ANGLE = 0 # The initial horizontal angle of the camera. -SERVO_INITIAL_Y_ANGLE = 0 # The initial vertical angle of the camera. +SERVO_INITIAL_X_ANGLE = 90 # The initial horizontal angle of the camera. +SERVO_INITIAL_Y_ANGLE = 90 # The initial vertical angle of the camera. SERVO_STEP_ANGLE = 5 # The angle at which the servo motors move each frame. DESIRED_HEIGHT = 480 # The input image will be resized to this height, preserving its aspect ratio. BLUE_THRESHOLD = 150 # If the blue channel is bigger than this, it is considered background and removed. @@ -113,6 +113,7 @@ def processImage(img): # Draw the bounding rectangle and its centroid to the image. #cv2.circle(resized, (objCenterX, objCenterY), 5, YELLOW, LINE_THICKNESS) cv2.rectangle(resized, (x,y), (x+w,y+h), RED, LINE_THICKNESS) + cv2.line(resized, (objCenterX, objCenterY), (imgCenterX, imgCenterY), YELLOW, LINE_THICKNESS) # Determinate the direction of the object relative to the center of the camera. xDir, yDir = determinateDir(imgCenterX, imgCenterY, objCenterX, objCenterY) @@ -153,7 +154,10 @@ footage_socket.connect('tcp://' + client_ip.decode() + ':5555') servoX = SERVO_INITIAL_X_ANGLE servoY = SERVO_INITIAL_Y_ANGLE -cap = cv2.VideoCapture('C:/Users/steyi/Desktop/drone_test.mp4') +servo.SetAngleUp(servoY) +servo.SetAngleDown(servoX) + +cap = cv2.VideoCapture('C:/Users/Giorgos Ger/Desktop/drone_test.mp4') if (cap.isOpened() == False): print('Error opening stream.') quit() diff --git a/tracking and telemetry/README.md b/tracking and telemetry/README.md deleted file mode 100644 index bf7044f..0000000 --- a/tracking and telemetry/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# Talos_Drones_Tracking_and_Telemetry - -![enter image description here](https://scontent.fath7-1.fna.fbcdn.net/v/t1.0-9/74674993_115153423241475_4772277731842850816_n.jpg?_nc_cat=103&_nc_ohc=fl0TAVjHIzoAQn0zfYrt0L-uHNcVjRjos4qpfN2RWaFryHpJ41NLYKVnA&_nc_ht=scontent.fath7-1.fna&oh=0b9912eb666fd830d18fce5fb9205b5b&oe=5ED97648) \ No newline at end of file