Aggelusi/oop_project
Folders and files
| Name | Name | Last commit date | ||
|---|---|---|---|---|
Repository files navigation
# README ## 1) Στοιχεία φοιτητών - Ονοματεπώνυμο: ΑΓΓΕΛΟΣ ΑΡΙΣΤΕΙΔΟΠΟΥΛΟΣ - ΑΜ: 1115202400009 - Ονοματεπώνυμο: ΑΡΙΣΤΟΤΕΛΗΣ ΒΑΣΙΛΕΙΟΣ ΓΕΩΡΓΟΥΛΗΣ - ΑΜ: 1115202400024 ## 2) Εντολή μεταγλώττισης ``` g++ -std=c++17 -O2 source/*.cpp -Iheaders -o oopproj_2025 ``` ## 3) Εντολή εκτέλεσης ``` ./oopproj_2025 --gps Χ Υ ``` ## 4) Μεθοδολογία / Παραδοχές / Αναπαραστάσεις - Αναπαράσταση δεδομένων: Χρησιμοποιούμε grid dimX×dimY. Κάθε κελί μπορεί να έχει πολλά αντικείμενα, οπότε κρατάμε λίστα με προτεραιότητες για το τι φαίνεται. Έχουμε κινούμενα/στατικά οχήματα, σήματα και φανάρια. Οι αποστάσεις για τους αισθητήρες είναι Manhattan. - Βασικές παραδοχές: Όλα μπαίνουν τυχαία με seed, το αυτοκίνητο ξεκινάει από (5,5) και κινείται μόνο οριζόντια/κάθετα. Οι στόχοι GPS δίνονται ανά ζεύγη (x,y). Οι αισθητήρες έχουν θόρυβο και περιορισμένο range. - Περιορισμοί/όρια: Πεπερασμένο μέγεθος κόσμου, fixed FOV/range για κάθε αισθητήρα, μόνο 3 επίπεδα ταχύτητας, μέγιστος αριθμός ticks, και φίλτρο confidence. - Σημαντικές επιλογές σχεδιασμού: Κλάσεις για κόσμο/αντικείμενα/αισθητήρες/όχημα. Κάνουμε sensor fusion με σταθμισμένο μέσο και κρατάμε μόνο ό,τι περνάει το κατώφλι. Λίστα προτεραιοτήτων στο ίδιο κελί για να μη χάνεται πληροφορία. ## 5) Βήματα μεθοδολογίας 1) Διαβάζουμε τα args και στήνουμε το grid. 2) Γεμίζουμε τον κόσμο με αντικείμενα και ξεκινάμε το αυτοκίνητο. 3) Προσθέτουμε αισθητήρες και περνάμε τους στόχους GPS. 4) Σε κάθε tick: ενημέρωση κόσμου → αισθητήρες → fusion → απόφαση → κίνηση. 5) Σταματάμε όταν πιάσουμε όλους τους στόχους ή τελειώσουν τα ticks.