Μονάδα 2 / 9

Τεχνητή Νοημοσύνη στη Ρομποτική και τον Έλεγχο Κίνησης

Κέρδη:

  • Δυνατότητα ρύθμισης και επίλυσης προβλημάτων κινηματικής προς τα εμπρός/αντίστροφα και σχεδιασμού τροχιάς με τη βοήθεια AI
  • Δυνατότητα δημιουργίας ασφαλούς τροχιάς δίνοντας όρια αρθρώσεων ρομπότ, περιορισμούς ταχύτητας και επιτάχυνσης ως πλαίσιο στην προτροπή
  • Δυνατότητα αριθμητικής και φυσικής επαλήθευσης της κινηματικής και τροχιάς εξόδου που παράγεται από το AI

Φέρνοντας τη λαβή στο άκρο ενός βραχίονα ρομπότ σε ένα συγκεκριμένο σημείο στο διάστημα, σε έναν συγκεκριμένο προσανατολισμό. Ακούγεται απλό, αλλά υπάρχουν κινηματικές εξισώσεις, όρια αρθρώσεων, ιδιομορφίες και σχεδιασμός τροχιάς πίσω από αυτό. Εδώ, ο μηχανικός μηχατρονικής χρησιμοποιεί μαζί την τριγωνομετρία, τη γραμμική άλγεβρα και τη θεωρία ελέγχου. Η τεχνητή νοημοσύνη είναι ένα ισχυρό βοήθημα σε αυτή τη διαδικασία: μπορεί να δημιουργήσει κινηματικές εξισώσεις προς τα εμπρός, να προτείνει προσεγγίσεις λύσης για την αντίστροφη κινηματική, να παραμετροποιήσει μια τροχιά σύμφωνα με τους περιορισμούς ταχύτητας/επιτάχυνσης. Ωστόσο, η ρομποτική είναι ένας από τους τομείς της μηχατρονικής με τον υψηλότερο φυσικό κίνδυνο. Εάν μια ακολουθία γωνίας που δημιουργείται από το AI αποσταλεί στο ρομπότ χωρίς επαλήθευση, ο βραχίονας μπορεί να χτυπήσει τον εαυτό του, το περιβάλλον ή τον χειριστή. Σε αυτή την ενότητα θα δούμε πώς να ρυθμίσουμε και να επαληθεύσουμε την κινηματική και τον σχεδιασμό τροχιών με AI.

Εμπρός και Αντίστροφη Κινηματική

Μπροστινή κινηματική (FK): Εύρεση της θέσης και του προσανατολισμού του τελικού τελεστή εάν είναι γνωστές οι γωνίες άρθρωσης. Υπάρχει μόνο μία λύση, είναι άμεση.

Αντίστροφη κινηματική (ΙΚ): Εάν είναι γνωστή η επιθυμητή θέση της τελικής συνάρτησης, εύρεση των γωνιών άρθρωσης που θα το παρέχουν. Συνήθως έχει περισσότερες από μία λύσεις (όπως αγκώνα πάνω/κάτω), μερικές φορές δεν έχει λύσεις (απρόσιτο σημείο), μερικές φορές έχει άπειρες λύσεις (μοναδικότητα).

έννοια

εισαγωγή

εξόδου

Αριθμός λύσεων

Εμπρός κινηματική

γωνίες αρθρώσεων

Ακραία θέση/προσανατολισμός

ενιαίος

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

Ακραία θέση/προσανατολισμός

γωνίες αρθρώσεων

Πολλαπλά/κανένα/άπειρο

Για έναν επίπεδο βραχίονα δύο αρθρώσεων, η αντίστροφη κινηματική μπορεί να ρυθμιστεί στο AI και να επαληθευτεί χειροκίνητα ως εξής:

εισαγωγή numpy ως npdef inverse_kinematik_2r(x, y, L1, L2): """IK για επίπεδο βραχίονα 2 αρθρώσεων. Επιστρέφει γωνίες σε ακτίνια (λύση με αγκώνα προς τα κάτω).""" r2 = x**2 + y**2 # Έλεγχος προσβασιμότητας: είναι το σημείο στον χώρο εργασίας; αν np.sqrt(r2) > (L1 + L2) ή np.sqrt(r2) < abs(L1 - L2): raise ValueError("Το σημείο βρίσκεται εκτός του προσβάσιμου χώρου εργασίας") cos_t2 = (r2 - L1**2 - L2**2) / (2 * L1 * L2, -n,ct.) cos_t. 1.0) # αριθμητική ασφάλεια t2 = np.arccos(cos_t2) # αγκώνα κάτω t1 = np.arctan2(y, x) - np.arctan2(L2*np.sin(t2), L1 + L2*np.cos(t2)) επιστροφή np.arctan L1=L2=1, στόχος (1,1) -> αναμενόμενο t2=90 μοίρες εκτύπωσης(inverse_kinematik_2r(1.0, 1.0, 1.0, 1.0)) # ~ (0.0, 90.0)

Οι κρίσιμες γραμμές εδώ είναι εκεί όπου η τεχνητή νοημοσύνη συχνά παραλείπει: έλεγχος προσβασιμότητας (είναι το σημείο στον χώρο εργασίας) και «np.clip» (αποτρέπει την είσοδο arccos να υπερβεί το ±1 λόγω σφάλματος στρογγυλοποίησης). Χωρίς αυτές τις δύο προστασίες, ο κώδικας θα παράγει NaN ή θα συντριβεί σε μη έγκυρο σημείο.

Συμβουλή: Όταν ζητάτε ανάλυση IK, πείτε ξεκάθαρα στο AI «να προσθέσει έλεγχο προσβασιμότητας και να περιορίσει την είσοδο arccos στο κλιπ». Αυτές οι δύο γραμμές αποτρέπουν τα σιωπηλά σφάλματα που προκαλούν τους περισσότερους πονοκεφάλους στο πεδίο.

Κοινά Όρια, Μοναδικότητα και Πολλαπλές Λύσεις

Κάθε άρθρωση ενός πραγματικού ρομπότ έχει ένα εύρος γωνίας (π.χ. -170° έως +170°), ένα όριο ταχύτητας και ένα όριο επιτάχυνσης. Ακόμα κι αν το IK δίνει μια μαθηματικά έγκυρη γωνία, δεν μπορεί να χρησιμοποιηθεί εάν αυτή η γωνία είναι εκτός του φυσικού εύρους της άρθρωσης. Επιπλέον, το ρομπότ εμπίπτει σε μοναδικότητα σε ορισμένες διαμορφώσεις: δύο άξονες είναι ευθυγραμμισμένοι, ένας βαθμός ελευθερίας χάνεται και οι αρθρικές ταχύτητες προσπαθούν να πάνε στο άπειρο για μια μικρή κίνηση κορυφής.

Γι' αυτό η λύση HR από μόνη της δεν αρκεί. Κάθε λύση πρέπει να περάσει από ένα φίλτρο αποδοχής:

def solution_gecerli_mi(acilar_deg, limits_deg): """πόνοι: [t1,t2,...], όρια: [(min,max),...]""" για πόνο, (amin, amax) σε zip(acilar_deg, limits_deg): αν όχι (αμίνη <= πόνος <= fa. ({amine},{amax}) εκτός" return True, "OK"limits = [(-170, 170), (-120, 120)]print(cozum_valid_mi([0.0, 90.0], limits)) # (True, 'OK')print.)(cozum_valid_mi) (Λάθος, 'Υπέρβαση του κοινού ορίου...')

Το AI μπορεί να δώσει τη "μαθηματική" λύση του ΙΚ. αλλά τα όρια των αρθρώσεων και η αποφυγή της μοναδικότητας είναι ειδικά για το σύστημά σας και πρέπει να δίνονται ως πλαίσιο για την προτροπή.

Σχεδιασμός τροχιάς

Η μεταφορά του ρομπότ από το σημείο Α στο σημείο Β δεν είναι να χαράξουμε μια ευθεία γραμμή μεταξύ δύο γωνιών. Η απότομη αλλαγή ταχύτητας προκαλεί μηχανικό κραδασμό και κραδασμούς. Αντίθετα, χρησιμοποιούνται μαλακά προφίλ: τραπεζοειδές προφίλ ταχύτητας (σταθερή επιτάχυνση-σταθερή ταχύτητα-σταθερή επιβράδυνση) ή καμπύλη S (ομαλότερη, όπου η επιτάχυνση είναι επίσης περιορισμένη). Όταν κάνετε το AI να δημιουργήσει μια τροχιά, πρέπει να δώσετε τον στόχο, τη διάρκεια και τους περιορισμούς.

εισαγωγή numpy ως npdef trapez_yorunge(q0, q1, v_max, a_max, dt=0,01): """Τραπεζοειδές προφίλ ταχύτητας για μία μόνο άρθρωση. Επιστρέφεται ο πίνακας θέσης.""" distance = abs(q1 - q0) κατεύθυνση = np.sign(qspe_qpeed = vxma) 0,5 * a_max * t_speed**2 if 2 * distance_speed > απόσταση: # τριγωνικό προφίλ (v_max δεν είναι προσβάσιμο) t_speed = np.sqrt(distance / a_max) t_constant = 0,0 v_peak = a_max * t_speed stant other (t_speed -2) *_con v_max v_peak = v_max T = 2 * t_accelerate + t_constant t = np.arange(0, T, dt) # ... υπολογισμός θέσης για κάθε t (με βάση τις φάσεις επιτάχυνσης/σταθερής/επιβράδυνσης) επιστροφή t, T, v_peak, duration, vzdal_0,0ory. v_max=60.0, a_max=120.0)print(f"Συνολική διάρκεια: {duration:.3f} s, μέγιστη ταχύτητα: {vz:.1f} deg/s")

Ο λογικός έλεγχος εδώ είναι ο εξής: εάν η απόσταση είναι μικρή, ο κινητήρας δεν θα φτάσει ποτέ το v_max και το προφίλ θα μετατραπεί από τραπεζοειδές σε τριγωνικό. Εάν το AI χάσει αυτήν την συνθήκη, θα υπολογιστεί λάθος διάρκεια για σύντομες κινήσεις. Μπορείτε να το επαληθεύσετε δοκιμάζοντας τον κωδικό με μια γνωστή τιμή (για παράδειγμα, μια πολύ μικρή απόσταση).

Αδύναμη προτροπή / Ισχυρή προτροπή

ΑΔΥΝΑΜΟΣ:"Γράψτε μια τροχιά που οδηγεί τον βραχίονα του ρομπότ από το Α στο Β."(Χωρίς περιορισμό: όριο ταχύτητας; επιτάχυνση; απόσταση άρθρωσης; Τυφλή έξοδος.) ΔΥΝΑΤΟΤΗΤΑ:"Δημιουργήστε μια τροχιά σημείου προς σημείο στον χώρο άρθρωσης για ένα ρομπότ 6 αξόνων. Το όριο ταχύτητας για κάθε άρθρωση είναι 90 μοίρες/δευτερόλεπτο, το όριο επιτάχυνσης σε 2 το εύρος γωνίας είναι ^ Το τραπεζοειδές προφίλ ταχύτητας, εάν η απόσταση είναι μικρή, πέφτει σε τριγωνικό προφίλ.

Επαλήθευση: Από την προσομοίωση στο ρομπότ

Η τροχιά που δημιουργείται από το AI επαληθεύεται με αυτή τη σειρά πριν πάτε στο ρομπότ:

  1. Αριθμητικά: Είναι η γωνία άρθρωσης, η ταχύτητα και η επιτάχυνση κάθε βήματος εντός ορίων;
  2. Σύγκρουση: Κατά μήκος της τροχιάς, ο βραχίονας συγκρούεται με τον εαυτό του ή με το περιβάλλον (οπτικοποίηση/προσομοίωση αν είναι δυνατόν);
  3. Μοναδικότητα: Η τροχιά διέρχεται από μια περιοχή ιδιομορφίας (η ορίζουσα Jacobian προσεγγίζει το μηδέν);
  4. Αργή δοκιμή υλικού: Λειτουργήστε το ρομπότ με χαμηλή ταχύτητα (π.χ. 10%) και παρακολουθήστε το οπτικά.
  5. Σταδιακή αύξηση ταχύτητας: Μόλις επαληθευτούν όλα, η ταχύτητα αυξάνεται βήμα προς βήμα στην ονομαστική τιμή.
Προσοχή: Όταν ξεκινάτε ένα ρομπότ με νέα τροχιά για πρώτη φορά, η παράκαμψη ταχύτητας πρέπει να είναι πάντα χαμηλή και το E-stop θα πρέπει να είναι διαθέσιμο. Ακόμα κι αν η έξοδος AI είναι "μαθηματικά σωστή", μια μετατόπιση, αντίστροφος άξονας ή εμπλοκή καλωδίου στη φυσική ρύθμιση θα αποκαλυφθεί μόνο με αργή δοκιμή.

Μίνι θήκη

Ο μηχανικός αυτοματισμού Ece ζητά από το AI έναν κωδικό τροχιάς στον κοινό χώρο για μια εφαρμογή pick-and-place. Το AI παράγει ένα τραπεζοειδές προφίλ, αλλά όταν η Ece δοκιμάζει μια κίνηση σε μικρή απόσταση, βλέπει ότι ο χρόνος είναι αρνητικός: ο κωδικός δεν χειριζόταν την περίπτωση τριγωνικού προφίλ όπου δεν είναι δυνατή η πρόσβαση στο v_max. Η Ece το διορθώνει λέγοντας την προτροπή "αν η απόσταση είναι μικρή, πέσε στο τριγωνικό προφίλ". Στη συνέχεια, εκτελεί τις γωνίες άρθρωσης που δίνονται από το AI μέσω της συνάρτησης επικύρωσής του σε σχέση με τον δικό του πίνακα ορίων και βρίσκει ότι η άρθρωση 5 ήθελε +125° σε ένα σημείο, ενώ το όριο ήταν +120°. Ξανασχεδιάζει την τροχιά και την παρακολουθεί, αυτή τη φορά τρέχοντας το ρομπότ με ταχύτητα 10%. Στον πρώτο γύρο, βλέπει ότι η λαβή πλησιάζει πολύ στο τραπέζι και διορθώνει το όφσετ Z. Το AI επέστρεψε ένα περίγραμμα εργασίας μέσα σε λίγα λεπτά. αλλά τρεις ξεχωριστές επικυρώσεις (τριγωνικό προφίλ, όριο άρθρωσης, αργή δοκιμή) έπιασαν τρία διαφορετικά πραγματικά προβλήματα.

Κοινά λάθη

  • Χρήση της λύσης IK χωρίς περιορισμούς αρμών και έλεγχο προσβασιμότητας.
  • Δεν κόβει τις καταχωρήσεις arccos/arcsin αλλά παράγει NaN σε περίπτωση σφάλματος στρογγυλοποίησης.
  • Ζητώντας την τροχιά χωρίς περιορισμό ταχύτητας/επιτάχυνσης και δημιουργία μηχανικών κραδασμών.
  • Αγνοώντας τις ζώνες μοναδικότητας και αφήνοντας τις αρθρικές ταχύτητες να εκτοξεύονται στα ύψη.
  • Παράλειψη της μετάβασης τραπεζοειδούς-τριγωνικού προφίλ σε μικρή απόσταση και υπολογισμός λάθος χρόνου.
  • Διεξαγωγή της πρώτης τροχιακής δοκιμής σε πλήρη ταχύτητα και χωρίς πρόσβαση E-stop.

Συνοπτικά

  • Η μπροστινή κινηματική έχει μια ενιαία λύση. Η αντίστροφη κινηματική μπορεί να παράγει πολλαπλές, ανύπαρκτες ή άπειρες λύσεις.
  • Οι λύσεις IK είναι απαραίτητα φιλτραρισμένες ως προς τα όρια αρθρώσεων, την προσβασιμότητα και τη μοναδικότητα.
  • Σχεδιασμός τροχιάς; Χρησιμοποιεί μαλακά, συμβατά με όρια προφίλ, όπως τραπεζοειδή ή καμπύλη S.
  • Σε μικρή απόσταση το προφίλ αλλάζει από τραπεζοειδές σε τριγωνικό. αυτό πρέπει να αντιμετωπιστεί στον κώδικα.
  • Το AI επιταχύνει τα μαθηματικά. Τα όρια και το φυσικό περιβάλλον εγκατάστασης θα πρέπει να εισέλθουν στην προτροπή.
  • Η νέα τροχιά εκτελείται πάντα για πρώτη φορά με χαμηλή αναλογία ταχύτητας και προσβάσιμο E-stop.

Εργασία εφαρμογής

Επιλέξτε ένα μοντέλο βραχίονα δύο ή τριών αρθρώσεων (με πραγματικά ή φανταστικά μήκη συνδέσμων και όρια αρθρώσεων). Βάλτε το AI να δημιουργήσει μια αντίστροφη κινηματική συνάρτηση και έναν σχεδιαστή τροχιών με αυτό το πλαίσιο. Στη συνέχεια: (1) επαληθεύστε χειροκίνητα την έξοδο IK με έναν γνωστό στόχο (βάζετε τις γωνίες πίσω και επιστρέφετε στο ίδιο σημείο με το FK), (2) ελέγξτε ότι ο κώδικας τις συλλαμβάνει δίνοντας τουλάχιστον ένα απρόσιτο σημείο και ένα όριο άρθρωσης που υπερβαίνει τον στόχο, (3) ελέγξτε ότι σε μικρή απόσταση ο τροχιακός χρόνος αποδεικνύεται λογικός. Καταγράψτε πόσα ζητήματα επικύρωσης εντοπίσατε στην πρώτη έκδοση του κώδικα και ποιο επίπεδο εντόπισε το καθένα.