Programming robot in simulation environment using Pyrobotics module

8
Παρουσίαση Project στο μάθημα Εισαγωγή στους Υπολογιστές Ι Από τους (με αλφαβητική σειρά): Βασίλειος Ορφανός Αλέξανδρος Οσάνα Γεώργιος-Μάριος Παπαδόπουλος Δημήτριος Σκρεπετός Κωνσταντίνος Φραγκάκης

description

Introduction to Computers Project - University of Patras - Electrical and Computer Engineering - Award Recipient

Transcript of Programming robot in simulation environment using Pyrobotics module

Page 1: Programming robot in simulation environment using Pyrobotics module

Παρουσίαση Project στο μάθημα

Εισαγωγή στους Υπολογιστές Ι

Από τους (με αλφαβητική σειρά):Βασίλειος ΟρφανόςΑλέξανδρος Οσάνα

Γεώργιος-Μάριος ΠαπαδόπουλοςΔημήτριος Σκρεπετός

Κωνσταντίνος Φραγκάκης

Page 2: Programming robot in simulation environment using Pyrobotics module

Σκοπός

Ο σκοπός του project είναι ο προγραμματισμός robot σε περιβάλλον προσομείωσης γραφικών (gui),

με την χρήση της γλώσσας προγραμματισμού python(www.python.org), και με την βοήθεια του

module pyrorobot(pyrorobotics.org)

Page 3: Programming robot in simulation environment using Pyrobotics module

Αρχικά στάδια

Μετά την ανάθεση του project, οι πρώτες 2 εβδομάδες καταναλώθηκαν στην λύση των πολλών τεχνικών προβλημάτων που κυμαίνονταν από την

εύρεση του κατάλληλου module, την επιτυχή εγκατάστασή του, καθώς και την δυνατότητα

χρησιμοποίησής του.

Page 4: Programming robot in simulation environment using Pyrobotics module

ΣχεδιασμόςΜετά την λύση των τεχνικών προβλημάτων, οι προσπάθειές μας κινήθηκαν στους εξής άξονες:

1) Κατασκευή προγράμματος το οποίο θα επιτρέπει στο robot να κινείται μέσα σε περιβάλλον από εμπόδια

και τοίχους, χωρίς να σταματάει, δηλ. Αποφυγή εμποδίων

2) Κατασκευή πίστας(world) με τοίχους και εμπόδια το οποίο θα δείχνει τις δυνατότητες του παραπάνω

προγράμματος3) Υπήρξε σκέψη για να κατασκευάζει το robot

γράμματα και αριθμούς, υπήρξε κατασκευή προγράμματος σε περιβάλλον turtle, αλλά δεν

επιτεύχθηκε τελικά η υλοποίηση.

Page 5: Programming robot in simulation environment using Pyrobotics module

ΥλοποίησηΤο πρώτο μέρος υλοποιήθηκε από τους Δημήτριο

Σκρεπετό, Γιώργο Παπαδόπουλου, και Αλέξανδρο Οσάνα

Το δεύτερο μέρος υλοποιήθηκε από τον Βασίλειο Ορφανό και τον Κωνσταντίνο Φραγκάκη

Το τρίτο μέρος υλοποιήθηκε σε περιβάλλον turtle από τον Γεώργιο-Μάριο Παπαδόπουλο και τον

Κωνσταντίνο Φραγκάκη.Η επίλυση των τεχνικών προβλήμάτων και η

επιμελεια της έκθεσης έγιναν από τον Αλέξανδρο Οσάνα.

Η παρουσίαση είναι εργο του Δημήτρη Σκρεπετού και του Βασίλη Ορφανού.

Page 6: Programming robot in simulation environment using Pyrobotics module

ΚώδικαςΚώδικας

# -*- coding: cp1253 -*-from pyrobot.brain import Brain class AvoidObstacles(Brain): def avoid(self, dist): self.robot.translate(0.5)ListSensors=["front","front-right","front-left","right","left","back","back-right","back-left"] LenghtListSensors=len(ListSensors) ListMinSensors={} for i in range(0, LenghtListSensors): a=min([s.distance() for s in self.robot.range[ListSensors[i]]]) ListMinSensors[ListSensors[i]]=a print ListMinSensors LenghtListMinSensors=len(ListMinSensors) ListSensorsClose={} for i in range (0, LenghtListMinSensors): if ListMinSensors[ListSensors[i]]<dist: ListSensorsClose[ListSensors[i]]=1 else: ListSensorsClose[ListSensors[i]]=0 print ListSensorsClose dist1=dist/4 ListSensorsClose2={} for i in range (0, LenghtListMinSensors): if ListMinSensors[ListSensors[i]]<dist1: ListSensorsClose2[ListSensors[i]]=1 else: ListSensorsClose2[ListSensors[i]]=0

print ListSensorsClose2 a1=ListSensorsClose["front"] a2=ListSensorsClose["front-right"] a3=ListSensorsClose["front-left"] b1=ListSensorsClose2["front"] b2=ListSensorsClose2["front-right"] b3=ListSensorsClose2["front-left"]c1=(b1)*(b2)*(b3) c2=(a1)*(a2) c3=(a1)*(a3) if a1==1: if ListMinSensors["front-right"]<ListMinSensors["front-left"] and c1==0: self.robot.move(0,1.0) elif ListMinSensors["front-right"]>ListMinSensors["front-left"] and c1==0 : self.robot.move(0,-1.0) elif c1==1: self.robot.move(-0.1,0) elif a1==0 and b2==1 and b3==0: self.robot.stop() self.robot.move(0.5,0.5) elif a1==0 and b2==0 and b3==1: self.robot.stop() self.robot.move(0.5,-0.5) else: self.robot.stop() self.robot.move(0.5,0) def step(self): self.avoid(1)

def INIT(engine): return AvoidObstacles('AvoidObstacles', engine)

Page 7: Programming robot in simulation environment using Pyrobotics module

Αψιμαχίες

● Όπως είναι φυσικό κατά τη διάρκεια του project υπήρχαν και σημαντικές διαφωνίες που ευτυχώς δεν κατέληξαν σε σοβαρούς τραυματισμούς

Page 8: Programming robot in simulation environment using Pyrobotics module

Ανεκπλήρωτα σχέδια

Θα θέλαμε πάρα πολύ να μπορέσουμε να βελτιστοποιήσουμε στο μέγιστο τα προγράμματα που κατασκευάσαμε, καθώς και να ασχοληθούμε με την κατασκευή άλλων προγραμμάτων, αλλά δυστυχώς ο χρόνος που σπαταλήθηκε για την

επίλυση των τεχνικών προβλημάτων, και η έλλειψη πείρας και γνώσεων στην των προγραμματιστων μας περιόρισαν στο

συγκεκριμένο αποτέλεσμα.