Keuntungan:
- Keupayaan untuk menyediakan dan menyelesaikan masalah kinematik ke hadapan/ songsang dan perancangan trajektori dengan bantuan AI
- Keupayaan untuk menghasilkan orbit yang selamat dengan memberikan had bersama robot, kekangan kelajuan dan pecutan sebagai konteks kepada gesaan
- Keupayaan untuk mengesahkan secara numerik dan fizikal output kinematik dan trajektori yang dihasilkan oleh AI
Membawa pencengkam di hujung lengan robot ke titik tertentu dalam ruang, dalam orientasi tertentu; Bunyinya mudah, tetapi terdapat persamaan kinematik, had bersama, singulariti dan perancangan trajektori di belakangnya. Di sini, jurutera mekatronik menggunakan trigonometri, algebra linear dan teori kawalan bersama-sama. Kecerdasan buatan ialah bantuan yang berkuasa dalam proses ini: ia boleh mewujudkan persamaan kinematik ke hadapan, mencadangkan pendekatan penyelesaian untuk kinematik songsang, parameterkan trajektori mengikut kekangan halaju/pecutan. Walau bagaimanapun, robotik adalah salah satu bidang dalam mekatronik dengan risiko fizikal yang paling tinggi; Jika jujukan sudut yang dijana oleh AI dihantar ke robot tanpa pengesahan, lengan mungkin terkena dirinya sendiri, persekitaran atau pengendali. Dalam unit ini kita akan melihat cara menyediakan dan mengesahkan kinematik dan perancangan trajektori dengan AI.
Kinematik Hadapan dan Songsang
Kinematik ke hadapan (FK): Mencari kedudukan dan orientasi kesan akhir jika sudut sambungan diketahui. Hanya ada satu penyelesaian, ia adalah langsung.
Kinematik songsang (IK): Jika kedudukan yang dikehendaki bagi fungsi akhir diketahui, cari sudut sambungan yang akan memberikan ini. Ia biasanya mempunyai lebih daripada satu penyelesaian (seperti siku ke atas/bawah), kadangkala ia tidak mempunyai penyelesaian (titik tidak boleh dicapai), kadangkala ia mempunyai penyelesaian tak terhingga (ketunggalan).
konsep
input
keluaran
Bilangan penyelesaian
Kinematik ke hadapan
sudut sendi
Kedudukan/orientasi yang melampau
bujang
Kinematik songsang
Kedudukan/orientasi yang melampau
sudut sendi
Berbilang/tiada/tak terhingga
Untuk lengan planar dua sambungan, kinematik songsang boleh disediakan dalam AI dan disahkan secara manual seperti berikut:
import numpy sebagai npdef inverse_kinematik_2r(x, y, L1, L2): """IK untuk lengan planar 2-sendi. Mengembalikan sudut dalam radian (penyelesaian siku-bawah).""" r2 = x**2 + y**2 # Semakan kebolehcapaian: adakah titik dalam ruang kerja? jika np.sqrt(r2) > (L1 + L2) atau np.sqrt(r2) < abs(L1 - L2): naikkan ValueError("Titik berada di luar ruang kerja yang boleh diakses") cos_t2 = (r2 - L1**2 - L2**2) / (2 * L1 * L2) cos_t2 = #np.clip, -0. numericalsecurity t2 = np.arccos(cos_t2) # siku ke bawah t1 = np.arctan2(y, x) - np.arctan2(L2*np.sin(t2), L1 + L2*np.cos(t2)) pulangan np.degrees(t1), np.degrees(t1)= Validation (Sasaran np.degrees(t1)# L1 t2=90 darjahprint(inverse_kinematik_2r(1.0, 1.0, 1.0, 1.0)) # ~ (0.0, 90.0)
Garis kritikal di sini ialah tempat AI sering melangkau: semakan kebolehcapaian (ialah titik dalam ruang kerja) dan `np.clip` (menghalang input arccos daripada melangkaui ±1 disebabkan ralat pembundaran). Tanpa kedua-dua perlindungan ini, kod akan menghasilkan NaN atau ranap pada titik yang tidak sah.
Petua: Apabila meminta resolusi IK, beritahu AI dengan jelas untuk "menambah kawalan kebolehaksesan dan mengehadkan input arccos pada klip". Kedua-dua baris ini menghalang kesilapan senyap yang menyebabkan paling banyak sakit kepala di lapangan.
Had Bersama, Ketunggalan dan Pelbagai Penyelesaian
Setiap sambungan robot sebenar mempunyai julat sudut (cth. -170° hingga +170°), had laju dan had pecutan. Walaupun IK memberikan sudut yang sah secara matematik, ia tidak boleh digunakan jika sudut tersebut berada di luar julat fizikal sendi. Selain itu, robot jatuh ke dalam ketunggalan dalam beberapa konfigurasi: dua paksi dijajarkan, satu darjah kebebasan hilang, dan halaju bersama cuba pergi ke infiniti untuk pergerakan hujung kecil.
Itulah sebabnya penyelesaian HR sahaja tidak mencukupi; Setiap penyelesaian mesti lulus penapis kebolehterimaan:
def solution_gecerli_mi(acilar_deg, limits_deg): """ pains: [t1,t2,...], limits: [(min,max),...]""" for pain, (amin, amax) in zip(acilar_deg, limits_deg): jika tidak (amine <= pain <= amax): return False, f"}Joint: limited. ({amine},{amax}) kecuali" pulangkan Benar, "OK"had = [(-170, 170), (-120, 120)]cetak(cozum_valid_mi([0.0, 90.0], had)) # (Benar, 'OK')cetak(cozum_valid_mi,][0.sebenar_mi(10.0, 90.0], had) 'Had bersama melebihi...')
AI boleh memberikan penyelesaian "matematik" IK; tetapi had bersama dan pengelakan ketunggalan adalah khusus untuk sistem anda dan mesti diberikan sebagai konteks kepada gesaan.
Perancangan Orbit
Mendapatkan robot dari titik A ke titik B bukan tentang melukis garis lurus antara dua sudut. Perubahan kelajuan secara mendadak menghasilkan kejutan mekanikal dan getaran. Sebaliknya, profil lembut digunakan: profil halaju trapezoid (pecutan malar–kelajuan malar–penyahpecutan malar) atau lengkung S (lebih licin, dengan pecutan juga terhad). Apabila membuat AI menghasilkan trajektori, anda mesti memberikan sasaran, tempoh dan kekangan.
import numpy sebagai npdef trapez_yorunge(q0, q1, v_max, a_max, dt=0.01): """Profil halaju trapezoid untuk satu sambungan. Tatasusunan kedudukan dikembalikan.""" jarak = abs(q1 - q0) arah = np.sign(q1 - q0) t_speed = v_max / a_0max jarak_ *** jarak_kelajuan > jarak: # profil segi tiga (v_maks tidak boleh dicapai) t_kelajuan = np.sqrt(jarak / a_maks) t_pemalar = 0.0 v_puncak = a_maks * t_kelajuan lain: t_pemalar = (jarak - 2 * jarak_kelajuan) / v_maks v_puncak = v_maks T = 2 = t_akselerasi t_maks T = 2 = t_akscelerat dt) # ... pengiraan kedudukan untuk setiap t (berdasarkan fasa pecutan/malar/ nyahpecutan) kembalikan t, T, v_puncak, tempoh, vz = trapezoid_trajektori(0.0, 90.0, v_maks=60.0, a_maks=120.0)cetakan(f"Jumlah tempoh,vkf: {durasi:{} deg/s")
Semakan logik di sini adalah ini: jika jaraknya pendek, motor tidak akan mencapai v_max dan profil akan bertukar dari trapezoid kepada segi tiga. Jika AI terlepas keadaan ini, tempoh yang salah akan dikira untuk pergerakan pendek. Anda boleh mengesahkan ini dengan menguji kod dengan nilai yang diketahui (contohnya, jarak yang sangat dekat).
Gesaan Lemah / Gesaan Kuat
LEMAH:"Tulis trajektori yang mengambil lengan robot dari A ke B."(Tiada kekangan: had laju? pecutan? jarak sambungan? Keluaran buta.)KUAT:"Jana trajektori titik ke titik dalam ruang bersama untuk robot 6 paksi. Had laju untuk setiap sambungan ialah 90 deg/s, had pecutan/sudut diberikan ialah 180 darjah. profil halaju trapezoid, jika jaraknya pendek, jatuh ke dalam profil segi tiga Keluaran setiap sambungan adalah Juga tulis fungsi pengesahan yang menyemak bahawa ia tidak melebihi had bersama: {{jadual}}"
Pengesahan: Dari Simulasi kepada Robot
Trajektori yang dijana oleh AI disahkan dalam susunan ini sebelum pergi ke robot:
- Berangka: Adakah sudut sendi, kelajuan dan pecutan setiap langkah dalam had?
- Perlanggaran: Di sepanjang trajektori, adakah lengan berlanggar dengan dirinya sendiri atau persekitaran (visualkan/simulasikan jika boleh)?
- Kesingularan: Adakah orbit melalui kawasan singulariti (adakah penentu Jacobian menghampiri sifar)?
- Ujian perkakasan perlahan: Kendalikan robot pada kelajuan rendah (cth. 10%) dan pantau secara visual.
- Peningkatan kelajuan beransur-ansur: Setelah semuanya disahkan, kelajuan meningkat langkah demi langkah ke nilai nominal.
Awas: Apabila memulakan robot dengan trajektori baharu buat kali pertama, override kelajuan hendaklah sentiasa rendah dan E-stop harus tersedia. Walaupun output AI adalah "betul secara matematik", offset, paksi songsang atau sangkut kabel dalam persediaan fizikal hanya akan didedahkan dengan ujian perlahan.
Mini Case
Jurutera automasi Ece meminta AI untuk kod trajektori dalam ruang bersama untuk aplikasi pilih-dan-tempat. AI menghasilkan profil trapezoid, tetapi apabila Ece menguji pergerakan jarak dekat, dia melihat bahawa masanya negatif: kod itu tidak mengendalikan kes profil segi tiga di mana v_max tidak dapat dicapai. Ece membetulkan ini dengan memberitahu gesaan "jika jaraknya pendek, jatuh ke dalam profil segi tiga". Ia kemudian menjalankan sudut sambungan yang diberikan oleh AI melalui fungsi pengesahannya terhadap jadual hadnya sendiri dan mendapati sambungan 5 dikehendaki +125° pada satu titik, sedangkan hadnya ialah +120°. Dia merancang semula trajektori dan memantaunya, kali ini menjalankan robot pada kelajuan 10%. Pada pusingan pertama, dia melihat bahawa pencengkam semakin hampir dengan meja dan membetulkan offset Z. AI mengembalikan garis kerja dalam beberapa minit; tetapi tiga pengesahan berasingan (profil segi tiga, had bersama, ujian perlahan) menangkap tiga masalah sebenar yang berasingan.
Kesilapan Biasa
- Menggunakan penyelesaian IK tanpa had bersama dan kawalan kebolehcapaian.
- Tidak memotong entri arccos/arcsin tetapi menghasilkan NaN sekiranya berlaku ralat pembundaran.
- Meminta orbit tanpa mengehadkan kelajuan/pecutan dan mencipta kejutan mekanikal.
- Mengabaikan zon singulariti dan membiarkan kelajuan sendi meroket.
- Melangkau peralihan profil trapezoid-segi tiga dalam jarak pendek dan mengira masa yang salah.
- Menjalankan ujian orbital pertama pada kelajuan penuh dan tanpa akses E-stop.
Secara ringkasnya
- Kinematik ke hadapan mempunyai penyelesaian tunggal; kinematik songsang boleh menghasilkan penyelesaian berbilang, tidak wujud atau tidak terhingga.
- Penyelesaian IK semestinya ditapis dari segi had bersama, kebolehcapaian dan ketunggalan.
- Perancangan trajektori; Ia menggunakan profil lembut, serasi had seperti trapezoid atau lengkung S.
- Pada jarak pendek profil berubah dari trapezoid ke segi tiga; ini harus dikendalikan dalam kod.
- AI mempercepatkan matematik; Had dan konteks pemasangan fizikal harus memasuki gesaan.
- Trajektori baharu sentiasa dijalankan buat kali pertama dengan nisbah kelajuan rendah dan hentian E yang boleh diakses.
Tugasan permohonan
Pilih model lengan dua atau tiga sendi (dengan panjang pautan sebenar atau khayalan dan had sendi). Minta AI menghasilkan fungsi kinematik songsang dan perancang trajektori dengan konteks ini. Kemudian: (1) mengesahkan output IK secara manual dengan sasaran yang diketahui (adakah anda meletakkan sudut kembali dan kembali ke titik yang sama seperti FK), (2) menguji bahawa kod menangkapnya dengan memberikan sekurang-kurangnya satu titik tidak boleh diakses dan satu had bersama melebihi sasaran, (3) semak bahawa pada jarak yang singkat masa orbit ternyata munasabah. Tuliskan bilangan isu pengesahan yang anda temui dalam versi pertama kod dan lapisan mana yang menangkap setiap satu.