Satuan 2 / 9

Kecerdasan Buatan dalam Robotika dan Kontrol Gerak

Keuntungan:

  • Kemampuan untuk mengatur dan memecahkan masalah kinematika maju/terbalik dan perencanaan lintasan dengan bantuan AI
  • Kemampuan untuk menghasilkan orbit yang aman dengan memberikan batas sambungan robot, batasan kecepatan dan percepatan sebagai konteks perintah
  • Kemampuan untuk memverifikasi keluaran kinematik dan lintasan yang dihasilkan oleh AI secara numerik dan fisik

Membawa gripper pada ujung lengan robot ke titik tertentu dalam ruang, dalam orientasi tertentu; Kedengarannya sederhana, tetapi ada persamaan kinematik, batas sambungan, singularitas, dan perencanaan lintasan di baliknya. Di sini, insinyur mekatronik menggunakan trigonometri, aljabar linier, dan teori kontrol secara bersamaan. Kecerdasan buatan merupakan bantuan yang ampuh dalam proses ini: ia dapat menetapkan persamaan kinematika maju, menyarankan pendekatan solusi untuk kinematika terbalik, membuat parameter lintasan berdasarkan batasan kecepatan/percepatan. Namun, robotika adalah salah satu bidang mekatronik dengan risiko fisik tertinggi; Jika urutan sudut yang dihasilkan oleh AI dikirim ke robot tanpa verifikasi, lengan tersebut dapat mengenai dirinya sendiri, lingkungan, atau operator. Dalam unit ini kita akan melihat cara menyiapkan dan memverifikasi kinematika dan perencanaan lintasan dengan AI.

Kinematika Maju dan Terbalik

Kinematika maju (FK): Mencari posisi dan orientasi efektor akhir jika sudut sambungan diketahui. Hanya ada satu solusi, yaitu langsung.

Kinematika terbalik (IK): Jika posisi fungsi akhir yang diinginkan diketahui, carilah sudut sambungan yang menyediakan hal ini. Biasanya mempunyai lebih dari satu solusi (seperti siku atas/bawah), terkadang tidak memiliki solusi (titik tidak terjangkau), terkadang memiliki solusi tak terhingga (singularitas).

konsep

masukan

keluaran

Jumlah solusi

Kinematika maju

sudut sambungan

Posisi/orientasi ekstrim

lajang

Kinematika terbalik

Posisi/orientasi ekstrim

sudut sambungan

Banyak/tidak ada/tak terbatas

Untuk lengan planar dua sambungan, kinematika terbalik dapat diatur di AI dan diverifikasi secara manual sebagai berikut:

import numpy as npdef inverse_kinematik_2r(x, y, L1, L2): """IK untuk lengan planar 2 sambungan. Mengembalikan sudut dalam radian (solusi siku-bawah).""" r2 = x**2 + y**2 # Pemeriksaan aksesibilitas: apakah titiknya ada di ruang kerja? jika np.sqrt(r2) > (L1 + L2) atau np.sqrt(r2) < abs(L1 - L2): raise ValueError("Titik berada di luar ruang kerja yang dapat diakses") cos_t2 = (r2 - L1**2 - L2**2) / (2 * L1 * L2) cos_t2 = np.clip(cos_t2, -1.0, 1.0) # keamanan numerik t2 = np.arccos(cos_t2) # siku ke bawah t1 = np.arctan2(y, x) - np.arctan2(L2*np.sin(t2), L1 + L2*np.cos(t2)) return np.degrees(t1), np.degrees(t2)# Validasi: L1=L2=1, target (1,1) -> diharapkan t2=90 derajatprint(inverse_kinematik_2r(1.0, 1.0, 1.0, 1.0)) # ~ (0.0, 90.0)

Garis kritis di sini adalah yang sering dilewati AI: pemeriksaan keterjangkauan (adalah titik di ruang kerja) dan `np.clip` (mencegah input arccos melampaui ±1 karena kesalahan pembulatan). Tanpa kedua perlindungan ini, kode akan menghasilkan NaN atau crash pada titik yang tidak valid.

Tip: Saat meminta resolusi IK, beri tahu AI dengan jelas untuk "menambahkan kontrol aksesibilitas dan membatasi input arccos ke klip". Kedua baris ini mencegah kesalahan senyap yang menyebabkan paling banyak sakit kepala di lapangan.

Batasan Gabungan, Singularitas, dan Solusi Berganda

Setiap sambungan robot sungguhan memiliki rentang sudut (misalnya -170° hingga +170°), batas kecepatan, dan batas percepatan. Sekalipun IK memberikan sudut yang valid secara matematis, IK tidak dapat digunakan jika sudut tersebut berada di luar jangkauan fisik sambungan. Selain itu, robot jatuh ke dalam singularitas dalam beberapa konfigurasi: dua sumbu sejajar, satu derajat kebebasan hilang, dan kecepatan gabungan mencoba mencapai tak terhingga untuk gerakan ujung yang kecil.

Itu sebabnya solusi SDM saja tidak cukup; Setiap solusi harus melewati filter penerimaan:

def solution_gecerli_mi(acilar_deg, limit_deg): """nyeri: [t1,t2,...], batas: [(min,max),...]""" untuk nyeri, (amin, amax) di zip(acilar_deg, limit_deg): jika tidak (amine <= pain <= amax): return False, f"Batas gabungan terlampaui: {pain:.1f} deg ({amine},{amax}) kecuali" kembali Benar, "OK"batas = [(-170, 170), (-120, 120)]print(cozum_valid_mi([0.0, 90.0], batas)) # (Benar, 'OK')print(cozum_valid_mi([0.0, 150.0], batas)) # (Salah, 'Batas gabungan terlampaui...')

AI dapat memberikan solusi "matematis" dari IK; tetapi batasan gabungan dan penghindaran singularitas bersifat spesifik untuk sistem Anda dan harus diberikan sebagai konteks pada perintah tersebut.

Perencanaan Orbit

Membawa robot dari titik A ke titik B bukanlah tentang menggambar garis lurus antara dua sudut. Perubahan kecepatan yang tiba-tiba menimbulkan guncangan dan getaran mekanis. Sebagai gantinya, profil lunak digunakan: profil kecepatan trapesium (percepatan konstan – kecepatan konstan – perlambatan konstan) atau kurva S (lebih halus, dengan percepatan juga terbatas). Saat membuat AI menghasilkan lintasan, Anda harus memberikan target, durasi, dan batasan.

import numpy as npdef trapez_yorunge(q0, q1, v_max, a_max, dt=0.01): """Profil kecepatan trapesium untuk sambungan tunggal. Susunan posisi dikembalikan.""" distance = abs(q1 - q0) arah = np.sign(q1 - q0) t_speed = v_max / a_max distance_speed = 0.5 * a_max * t_speed**2 if 2 * distance_speed > jarak: # profil segitiga (v_max tidak dapat dijangkau) t_speed = np.sqrt(jarak / a_max) t_constant = 0.0 v_peak = a_max * t_speed else: t_constant = (jarak - 2 * distance_speed) / v_max v_peak = v_max T = 2 * t_accelerate + t_constant t = np.arange(0, T, dt) # ... perhitungan posisi untuk setiap t (berdasarkan fase akselerasi/konstan/deselerasi) return t, T, v_peak, durasi, vz = trapezoidal_trajectory(0.0, 90.0, v_max=60.0, a_max=120.0)print(f"Total durasi: {duration:.3f} s, kecepatan puncak: {vz:.1f} derajat/dtk")

Logika pemeriksaannya begini: jika jaraknya pendek, motor tidak akan pernah mencapai v_max dan profil akan berubah dari trapesium menjadi segitiga. Jika AI melewatkan kondisi ini, durasi yang salah akan dihitung untuk pergerakan pendek. Anda dapat memverifikasi ini dengan menguji kode dengan nilai yang diketahui (misalnya, jarak yang sangat pendek).

Prompt Lemah / Prompt Kuat

LEMAH:"Tulis lintasan yang membawa lengan robot dari A ke B."(Tidak ada batasan: batas kecepatan? percepatan? jarak sambungan? Keluaran buta.) KUAT:"Hasilkan lintasan titik-ke-titik dalam ruang sambungan untuk robot 6 sumbu. Batas kecepatan setiap sambungan adalah 90 derajat/s, batas percepatan 180 derajat/s^2, rentang sudut diberikan dalam tabel. Gunakan profil kecepatan trapesium, jika jaraknya pendek, jatuh ke dalam segitiga profile. Output dari setiap sambungan juga tulis fungsi verifikasi yang memeriksa apakah tidak melebihi batas.

Verifikasi: Dari Simulasi ke Robot

Lintasan yang dihasilkan oleh AI diverifikasi dalam urutan berikut sebelum menuju ke robot:

  1. Numerik: Apakah sudut sambungan, kecepatan dan percepatan setiap langkah berada dalam batas?
  2. Tabrakan: Sepanjang lintasan, apakah lengan bertabrakan dengan dirinya sendiri atau dengan lingkungannya (visualisasikan/simulasikan jika memungkinkan)?
  3. Singularitas: Apakah orbit melewati wilayah singularitas (apakah determinan Jacobian mendekati nol)?
  4. Uji perangkat keras lambat: Operasikan robot pada kecepatan rendah (misalnya 10%) dan pantau secara visual.
  5. Peningkatan kecepatan bertahap: Setelah semuanya diverifikasi, kecepatan meningkat selangkah demi selangkah ke nilai nominal.
Perhatian: Saat memulai robot dengan lintasan baru untuk pertama kalinya, pengesampingan kecepatan harus selalu rendah dan E-stop harus tersedia. Meskipun keluaran AI “benar secara matematis”, offset, sumbu terbalik, atau hambatan kabel dalam pengaturan fisik hanya akan terlihat dengan pengujian yang lambat.

Kasus Mini

Insinyur otomasi Ece meminta AI untuk memberikan kode lintasan di ruang bersama untuk aplikasi pick-and-place. AI menghasilkan profil trapesium, tetapi ketika Ece menguji gerakan jarak pendek, dia melihat bahwa waktunya negatif: kode tersebut tidak menangani kasus profil segitiga di mana v_max tidak dapat dijangkau. Ece mengoreksinya dengan memberi tahu prompt "jika jaraknya pendek, masuklah ke dalam profil segitiga". Ia kemudian menjalankan sudut sambungan yang diberikan oleh AI melalui fungsi validasinya terhadap tabel batasnya sendiri dan menemukan bahwa sambungan 5 menginginkan +125° pada satu titik, sedangkan batasnya adalah +120°. Dia merencanakan ulang lintasan dan memantaunya, kali ini menjalankan robot dengan kecepatan 10%. Di ronde pertama, dia melihat gripper terlalu dekat dengan meja dan mengoreksi offset Z. AI mengembalikan garis besar kerja dalam hitungan menit; tetapi tiga validasi terpisah (profil segitiga, batas gabungan, uji lambat) menangkap tiga masalah nyata yang terpisah.

Kesalahan Umum

  • Menggunakan solusi IK tanpa batasan bersama dan kontrol aksesibilitas.
  • Tidak memotong entri arccos/arcsin tetapi menghasilkan NaN jika terjadi kesalahan pembulatan.
  • Meminta orbit tanpa membatasi kecepatan/percepatan dan menimbulkan guncangan mekanis.
  • Mengabaikan zona singularitas dan membiarkan kecepatan gabungan meroket.
  • Melewatkan transisi profil trapesium-segitiga dalam jarak dekat dan menghitung waktu yang salah.
  • Melakukan uji orbital pertama dengan kecepatan penuh dan tanpa akses E-stop.

Singkatnya

  • Kinematika maju mempunyai solusi tunggal; kinematika terbalik dapat menghasilkan solusi berganda, tidak ada, atau tak terbatas.
  • Solusi IK perlu disaring berdasarkan batasan gabungan, aksesibilitas, dan singularitas.
  • Perencanaan lintasan; Ini menggunakan profil lunak yang kompatibel dengan batas seperti trapesium atau kurva S.
  • Pada jarak dekat profilnya berubah dari trapesium menjadi segitiga; ini harus ditangani dalam kode.
  • AI mempercepat matematika; Batasan dan konteks instalasi fisik harus dimasukkan ke dalam prompt.
  • Lintasan baru ini selalu dijalankan untuk pertama kalinya dengan rasio kecepatan rendah dan E-stop yang dapat diakses.

Tugas aplikasi

Pilih model lengan dengan dua atau tiga sambungan (dengan panjang sambungan dan batas sambungan nyata atau imajiner). Minta AI menghasilkan fungsi kinematika terbalik dan perencana lintasan dengan konteks ini. Kemudian: (1) verifikasi keluaran IK secara manual dengan target yang diketahui (apakah Anda mengembalikan sudutnya dan kembali ke titik yang sama dengan FK), (2) menguji apakah kode menangkapnya dengan memberikan setidaknya satu titik tidak dapat diakses dan satu batas sambungan melebihi target, (3) periksa apakah pada jarak pendek waktu orbitnya ternyata masuk akal. Tuliskan berapa banyak masalah validasi yang Anda temukan di versi pertama kode dan lapisan mana yang menangkap setiap masalah tersebut.