Πίνακας περιεχομένων:

Haptic Drawing Robot: 5 βήματα (με εικόνες)
Haptic Drawing Robot: 5 βήματα (με εικόνες)

Βίντεο: Haptic Drawing Robot: 5 βήματα (με εικόνες)

Βίντεο: Haptic Drawing Robot: 5 βήματα (με εικόνες)
Βίντεο: Haptic Device 2.0 Demo: IKEA chair assembly 2024, Νοέμβριος
Anonim

Στο πλαίσιο της μεταπτυχιακής μου αποφοίτησης στο τμήμα. Βιομηχανικός σχεδιασμός στο Πανεπιστήμιο Αϊντχόφεν, δημιούργησα μια απτική συσκευή σχεδίασης που μπορεί να χρησιμοποιηθεί για να πλοηγηθείτε σε ένα ημιαυτόνομο αυτοκίνητο μέσω της κυκλοφορίας. Η διεπαφή ονομάζεται σκαρίφημα και επιτρέπει στον χρήστη να βιώσει απτικά εξαρτήματα σε χώρο 2D μέσω μιας μεταβλητής δύναμης και θέσης. Παρόλο που η ιδέα δεν είναι αυτό που διδάσκει, μπορείτε να διαβάσετε περισσότερα για το Scribble εδώ:

Το Scribble χρησιμοποιεί μια διαμόρφωση σύνδεσης 5 γραμμών που της επιτρέπει να μετακινεί δύο πλευρικούς βαθμούς ελευθερίας (DoF). Αυτή η ρύθμιση είναι αρκετά δημοφιλής μεταξύ των πρωτοτύπων για τη δημιουργία ρομπότ σχεδίασης, εδώ είναι μερικά παραδείγματα:

www.projehocam.com/arduino-saati-yazan-kol-…

blogs.sap.com/2015/09/17/plot-clock-weathe…

www.heise.de/make/meldung/Sanduhr-2-0-als-Bausatz-im-heise-shop-erhaeltlich-3744205.html

Μηχανικά αυτά τα ρομπότ είναι εύκολο να γίνουν. Χρειάζονται μόνο βασικές αρθρώσεις και έχουν δύο ενεργοποιητές που μπορούν να δημιουργήσουν αρκετά ρευστές κινήσεις. Αυτή η δομή είναι ιδανική για σχεδιαστές που ενδιαφέρονται να κάνουν κινούμενη δομή. Ωστόσο, επειδή δεν είμαι μηχανικός, βρήκα ότι η κινηματική είναι πολύ δύσκολο να μεταφραστεί σε κώδικα. Ως εκ τούτου, θα παράσχω βασικό κώδικα Arduino που υπολογίζει την εμπρόσθια και αντίστροφη κινηματική, ώστε να μπορείτε εύκολα να το χρησιμοποιήσετε στα μελλοντικά σας σχέδια!;-)

Παρακαλώ κατεβάστε τον παρακάτω κώδικα!

* ΕΠΕΞΕΡΓΑΣΙΑ: για ένα παρόμοιο έργο, ρίξτε μια ματιά στο https://haply.co *

Βήμα 1: Χτίζοντας τη δομή

Χτίζοντας τη δομή
Χτίζοντας τη δομή

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

Για το πρωτότυπό μου, τρέχω τον κώδικα μου σε ένα Arduino DUE που ελέγχεται κατά σειρά από ένα πρόγραμμα στο Mac μου που δημιουργήθηκε στα Open Frameworks. Το πρόγραμμα χρησιμοποιεί σύνδεση UDP για επικοινωνία με προσομοιωτή οδήγησης που βασίζεται σε Unity 3D.

Το πρωτότυπο Scribble χρησιμοποιεί ρουλεμάν 5 χιλιοστών και είναι κατασκευασμένο από ακρυλικό κομμένο με λέιζερ 5 χιλιοστών. Οι ενεργοποιητές είναι οι Haptic Engines του Frank van Valeknhoef που επιτρέπουν την ενεργοποίηση, την ανάγνωση της θέσης και την έξοδο μιας μεταβλητής δύναμης. Αυτό τα έκανε ιδανικά για τις επιθυμητές απτικές ιδιότητες του Scribble. Περισσότερα για τους ενεργοποιητές του μπορείτε να βρείτε εδώ:

Βήμα 2: Γνωρίστε τις αξίες υλικού σας

Γνωρίστε τις αξίες του υλικού σας
Γνωρίστε τις αξίες του υλικού σας

Η κινηματογραφική κίνηση βασίζεται στον μετεωρολογικό σταθμό Plot clock της SAP:

Όπως φαίνεται στη διαμόρφωσή τους, επεκτείνεται για το χέρι να κρατάει έναν δείκτη για να σχεδιάσει. Αυτό έχει αφαιρεθεί αφού δεν εξυπηρετούσε κανένα σκοπό για το πρωτότυπο σκαρίφημα. Ελέγξτε τον κωδικό τους εάν θέλετε να προσθέσετε ξανά αυτό το στοιχείο. Τα ονόματα στην εικόνα διατηρούνται τα ίδια στη διαμόρφωσή μου.

Ανάλογα με το υλικό σας, ο αλγόριθμος πρέπει να γνωρίζει τις ιδιότητες του υλικού σας:

int leftActuator, rightActuator; // γωνία για να γράψετε στον ενεργοποιητή σε βαθμίδα, αλλάξτε σε πλωτήρες εάν θέλετε περισσότερη ακρίβεια

int posX, posY; // οι συντεταγμένες της θέσης του δείκτη

Ορίστε την ανάλυση των τιμών εισόδου σας

int posStepsX = 2000;

int posStepsY = 1000;

Διαστάσεις της ρύθμισής σας, οι τιμές είναι σε mm (δείτε εικόνα SAP)

#define L1 73 // μήκος βραχίονα κινητήρα, δείτε την εικόνα SAP (αριστερά και δεξιά είναι τα ίδια)

#define L2 95 // βραχίονας επέκτασης μήκους, δείτε την εικόνα SAP (αριστερά και δεξιά είναι τα ίδια)

#καθορίστε το εύρος X 250 // μέγιστο εύρος σε κατεύθυνση Χ για να μετακινηθεί το σημείο (από αριστερά προς τα δεξιά, 0 - maxVal)

#ορίστε το εύροςY 165 // μέγιστο εύρος στην κατεύθυνση Υ για να κινείται το σημείο (από το 0 στη μέγιστη προσέγγιση ενώ μένετε στο κέντρο)

#καθορίστε την προέλευσηL 90 // μετατόπιση της απόστασης από την ελάχιστη ελάχιστη τιμή X έως τη θέση του κεντρικού ενεργοποιητή

#καθορίστε την προέλευσηR 145 // μετατόπιση της απόστασης από την ελάχιστη ελάχιστη τιμή X στη θέση του κεντρικού ενεργοποιητή, η απόσταση μεταξύ των δύο κινητήρων είναι στην περίπτωση αυτή

Βήμα 3: Forward Kinematics

Forward Kinematics
Forward Kinematics

Όπως αναφέρθηκε στο προηγούμενο βήμα, η κινηματογραφική κίνηση βασίζεται στον αλγόριθμο του SAP.

Το κενό ενημερώνει τις επιθυμητές τιμές γωνίας αριστερού και δεξιού ενεργοποιητή που ορίστηκαν νωρίτερα. Με βάση τις τιμές Χ και Υ που είναι συνδεδεμένες, θα υπολογίσει τις σωστές γωνίες για να φτάσει ο δείκτης σε αυτήν τη θέση.

void set_XY (διπλό Tx, διπλό Ty) // εισάγετε την τιμή Χ και Υ {// ορισμένα βαλς που χρειαζόμαστε αλλά δεν θέλουμε να τα αποθηκεύσουμε για μεγάλο χρονικό διάστημα διπλά dx, dy, c, a1, a2, Hx, Hy. // ανάλυση inpit χάρτη στο εύρος της διαμόρφωσής σας στον πραγματικό κόσμο int realX = χάρτης (Tx, 0, posStepsX, 0, rangeX); // swap if mapping if is inversed int realY = map (Ty, posStepsX, 0, 0, rangeY); // swap if mapping if inversed // calc angle for left actuator // cartesian dx/dy dx = realX - originL; // περιλαμβάνει offset dy = realY; // πολικό μήκος (c) και γωνία (a1) c = sqrt (dx * dx + dy * dy); a1 = atan2 (dy, dx); a2 = return_angle (L1, L2, c); leftActuator = πάτωμα (((M_PI - (a2 + a1)) * 4068) / 71); // τελική γωνία και μετατροπή από rad σε deg // γωνία calc για σωστό ενεργοποιητή dx = realX - originR; // περιλαμβάνει offset dy = realY; c = sqrt (dx * dx + dy * dy); a1 = atan2 (dy, dx); a2 = γωνία επιστροφής (L1, L2, c); rightActuator = πάτωμα (((a1 - a2) * 4068) / 71); // τελική γωνία και μετατροπή από rad σε deg}

Πρόσθετο κενό για τον υπολογισμό της γωνίας:

διπλό γωνία επιστροφής (διπλό a, διπλό b, διπλό c) {// κανόνας συνημίτονο για γωνία μεταξύ c και επιστροφής acos ((a * a + c * c - b * b) / (2 * a * c)); }

Βήμα 4: Αντίστροφη κινηματική

Αντίστροφη Κινηματική
Αντίστροφη Κινηματική

Η αντίστροφη κινηματική λειτουργεί αντίστροφα. Συνδέετε την περιστροφή των ενεργοποιητών σας σε μοίρες και το κενό θα ενημερώσει τη θέση που ορίστηκε νωρίτερα.

Λάβετε υπόψη ότι θα χρειαστείτε ενεργοποιητές ή ξεχωριστό αισθητήρα που μπορεί να διαβάσει τη γωνία του βραχίονα. Στην περίπτωσή μου, χρησιμοποίησα ενεργοποιητές που μπορούν να διαβάζουν και να γράφουν ταυτόχρονα τη θέση τους. Μη διστάσετε να πειραματιστείτε με αυτό και σκεφτείτε να προσθέσετε κάποιο είδος βαθμονόμησης, ώστε να είστε βέβαιοι ότι η γωνία σας έχει διαβαστεί σωστά.

Συνιστάται: