3η θέση στον διαγωνισμό
October 11th, 2010To Guard Dog βραβεύτηκε για δεύτερη φορά με την τρίτη θέση στον διαγωνισμό μετά από σχετική ψηφοφορία του κοινού!
Σας ευχαριστώ όλους για τις ψήφους σας και επιφυλάσσομαι για του χρόνου να έχω να παρουσιάσω κάτι ακόμα πιο εντυπωσιακό!
Περίληψη!
October 8th, 2010Καθότι τις τελευταίες μέρες το blog δέχεται κυρίως επίσκεψη από άτομα τα οποία συνάντησα στην Athens Digital Week μια μικρή σύνοψη του τι είναι και το τι κάνει το project μου :
Το όνομα του project είναι GuarddoG Robot και σκοπός του είναι η φύλαξη χώρων όταν απουσιάζουν οι ιδιοκτήτες.
Είναι ουσιαστικά ένας υπολογιστής πάνω σε ρόδες με αίσθηση του περιβάλλοντος χώρου γύρο του.
Ο ιδιοκτήτης του το αφήνει στον χώρο του σπιτιού του , τον οποίο το ρομπότ χαρτογραφεί και μαθαίνει , και έτσι όταν ο ιδικτήτης φύγει το ρομπότ συνεχίζει να τον περιδιαβαίνει αυτόνομα και όταν διαπιστώσει κίνηση / αλλαγή του χώρου σε σχέση με το μοντέλο που θυμάται σημαίνει ηχητικό συναγερμό τοπικά και ειδοποιεί το αφεντικό του με ένα mms που περιέχει την εικόνα που δείχνει την ασυμφωνία του χώρου στην μνήμη του ρομπότ με τον χώρο εκείνη την στιγμή .
Το παρόν είναι πειραματικό πρωτότυπο , μπορεί βέβαια να χρησιμοποιηθεί και για πολλούς άλλους σκοπούς , όπως να μεταφέρει μικρα φορτία , να παίζει μουσική , να εκφωνεί χρήσιμες πληροφορίες , όπως η ώρα, η θερμοκρασία και άλλα και να χειρίζεται συσκευές που λειτουργούν με remote control υπερύθρων.
Ο κώδικας και τα σχέδια του ρομπότ είναι GPL v3 opensource , ( τι είναι open source , http://en.wikipedia.org/wiki/GNU_General_Public_License ) και τον κώδικα του μπορεί τε να βρείτε στο repository του project ( http://github.com/AmmarkoV/ ) και κάποια video χρήσης του στο κανάλι μου στο youtube ( http://www.youtube.com/ammarkov )
Επίσης μπορεί να θέλετε να επισκευθείτε την gallery με φωτογραφίες μου ( όχι φωτογραφίες του ρομπότ , http://ammarkov1.deviantart.com/gallery/ ) καθώς έχω ως χόμπυ την φωτογραφία ..
Γενικά συχνάζω στο irc channel : #foss-aueb στο freenode.org ενώ όσοι έχουν κάρτα μου λογικά θα έχουν το mail μου για να επικοινωνήσουν..
Σας ευχαριστώ για το ενδιαφέρον σας και ελπίζω να σας φανεί ευχάριστο και χρήσιμο και αυτό το blog!
Επίσης κάποια άλλα θέματα που μπορούν να σας φανούν ενδιαφέροντα είναι το τι είναι το λειτουργικό linux ( http://en.wikipedia.org/wiki/Linux ) , τι είναι οι πατέντες λογισμικού και γιατί δεν πρέπει να εφαρμοστούν στην ευρωπαϊκή ένωση ( http://patentabsurdity.com/watch.html ) καθώς και η άσχημη πλευρά των Windows ( http://en.windows7sins.org/ ) ..
Photos from athens digital week 2010:
Today is the first day of Athens Digital week
October 7th, 2010Today is the first day of Athens Digital week!
Guarddog and me will be there !
On the robotics or opensource stands
Nice project :)
October 6th, 2010Drunken A* implementation ;p
October 5th, 2010Implementing MasterpathPlanning :)
October 3rd, 2010I am now underway re-implementing Master(path)Planning , you can view the source from here
http://github.com/AmmarkoV/RoboVision/tree/master/WorldMapping/MasterpathPlanning/
The functions exposed to the rest of RoboVision project will be
Code:
struct Map * CreateMap(unsigned int world_size_x,unsigned int world_size_y); | |
struct Map * LoadMap(char * filename) ; | |
int SaveMap(struct Map * world) ; | |
int DeleteMap(struct Map * world) ; | |
int SetMapUnit_In_cm(struct Map * world,unsigned int cm_per_unit) ; | |
int MapIsOk(struct Map * themap); | |
int ObstacleExists(struct Map * world,unsigned int x,unsigned int y) ; | |
int SetObstacle(struct Map * world,unsigned int x,unsigned int y,unsigned int safety_radious) ; | |
/*<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<*/ | |
int SetAgentSize(struct Map * world,unsigned int agentnum,unsigned int x_size,unsigned int y_size) ; | |
int SetAgentHeading(struct Map * world,unsigned int agentnum,unsigned int heading) ; | |
unsigned int GetAgentHeading(struct Map * world,unsigned int agentnum) ; | |
int SetAgentLocation(struct Map * world,unsigned int agentnum,unsigned int x,unsigned int y) ; | |
int SetAgentLocationName(struct Map * world,unsigned int agentnum,char * name) ; | |
int GetAgentLocation(struct Map * world,unsigned int agentnum,unsigned int * x,unsigned int * y) ; | |
int SetAgentTargetLocation(struct Map * world,unsigned int agentnum,unsigned int x,unsigned int y) ; | |
int SetAgentTargetLocationName(struct Map * world,unsigned int agentnum,char * name) ; | |
int MoveAgentForward(struct Map * world,unsigned int agentnum,int leftwheel_cm,int rightwheel_cm) ; | |
int SetObstacleSensedbyAgent(struct Map * world,unsigned int agentnum,int ultrasonic_left_cm,int ultrasonic_right_cm) ; | |
/*<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<*/ | |
int FindPath(struct Map * world,unsigned int agentnum) ; | |
int FindPathToPosition(struct Map * world,unsigned int agentnum,unsigned int x,unsigned int y) ; | |
int FindSponteneousPath(struct Map * world,unsigned int agentnum,struct Path * thepath,unsigned int x1,unsigned int y1,unsigned int x2,unsigned int y2) ; | |
/*<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<*/ | |
int AddLocation(struct Map * world,char * name,unsigned int pos_x,unsigned int pos_y) ; | |
int DeleteLocation_Number(struct Map * world,unsigned int position_id) ; | |
int DeleteLocation(struct Map * world,char * name) ; | |
/*<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<*/ | |
int ExtractRouteToLogo(struct Map * world,struct Path * thepath,char * filename) ; | |
int GetRoutePoints(struct Map * world,struct Path * thepath) ; | |
int GetRouteWaypoint(struct Map * world,struct Path * thepath,unsigned int *x,unsigned int *y) ; |
Rethinking pathplanning
October 2nd, 2010I am rethinking of my pathplaning algorithm
In the begining it was written in C and it just implemented A* ( http://github.com/AmmarkoV/RoboVision/tree/master/WorldMapping/PathPlanning_C/ ) ..
At one time I thought to try implementing it in a purely Object Oriented way ( i.e. Map room; room.SetPosition(x,y); ) and I did so ( http://github.com/AmmarkoV/RoboVision/tree/master/WorldMapping/PathPlanning/ )
Now I am rethinking it and it seems that the best solution would be to rewrite it in C with Struct Object Orientation
I will also add some more calls so that pathplanning will also handle maneouvering..
On the other hand I may change my mind again