Masalah singularitas pada Invers kinematic solver

9

Saya berjuang dengan masalah ini selama berhari-hari. Saya benar-benar berharap seseorang dapat memberi saya petunjuk apa masalahnya.

Robot itu terdiri dari 5 sumbu. Sumbu pertama berputar di sekitar sumbu z dan 4 sumbu lainnya berputar di sekitar sumbu y. Dan pemecah dasarnya bekerja.

Inilah yang telah saya lakukan sejauh ini:

  1. Saya menghitung faktor manipulabilitas dengan matriks Jacobian saya (hanya bagian translasi, karena hanya posisi yang dilacak di sini. Sebenarnya, saya juga mencoba dengan matriks Jacobian gabungan, jadi tidak hanya bagian translasi tetapi juga bagian rotasi. Tetapi gerakan dendeng ada di sana. bagaimanapun):

  2. Maka faktor redaman adalah:

    masukkan deskripsi gambar di sini

  3. Faktor redaman kemudian diintegrasikan ke dalam perhitungan invers semu:

masukkan deskripsi gambar di sini

Seperti yang Anda lihat, ini hanyalah solver kinematik terbalik semu klasik dengan metode kuadrat terkecil teredam. Faktor manipulabilitas menurut gerakan (masalah) kedua adalah: masukkan deskripsi gambar di sini Kemampuan manipulabilitas turun di awal video. Tapi kenapa? Sejauh yang saya tahu, faktor manipulabilitas ini menunjukkan ketergantungan linear dari sumbu. Bagi saya sumbu nampaknya tidak tergantung secara linear di bagian awal.

Gerakan tersentak ini membuatku gila. Seperti yang dapat Anda lihat di animasi pertama, pemecah tampaknya berfungsi dengan baik. Apa yang kulewatkan di sini?

Joe
sumber
1
Selamat datang di Robotika , Joe! Ini adalah pertanyaan yang fantastis, tetapi sayangnya saya tidak berpikir ada cukup detail untuk menjawab pertanyaan itu. Ketika suatu sistem menuju ke singularitas, saya akan mengharapkan beberapa sumbu gerak untuk membuat ayunan liar, seperti satu sumbu berayun 180 derajat karena yang lain mencoba untuk bergerak 89 hingga 91 derajat (jika 90 derajat adalah singularitas). Saya tidak benar-benar melihat perilaku itu di sini. Saya ingin tahu apakah ini lebih merupakan masalah implementasi, seperti menggunakan sesuatu seperti atanbukan atan2, dll. Bisakah Anda mengedit pertanyaan Anda untuk mengirim kode yang Anda gunakan?
Chuck
1
@ Chuck, saya mengedit pertanyaan sehingga "ayunan liar" dapat dilihat. (lihat 2. animasi yang diperbarui)
Joe

Jawaban:

1

Seperti yang telah ditunjukkan oleh orang lain, harus ada masalah dengan implementasi algoritma IK Anda karena tidak akan ada perilaku tunggal dalam deskripsi yang Anda berikan.

Sekarang Anda memiliki dua alternatif: Anda memulai debug kode atau Anda mungkin ingin mengeksploitasi fakta bahwa masalah dapat dengan mudah dipecah dalam dua sub-masalah yang Anda dapat menggunakan sebagian besar kode yang ditulis sejauh ini.

Mengingat target 3D yang diinginkan , mudah untuk mengamati bahwa nilai yang diinginkan dari sambungan pertama adalah: .(xd,yd,zd)θ1d=arctan(ydxd)

Hukum kontrol untuk menggerakkan sendi pertama dari manipulator ke dapat sesederhana:θ1d

θ1˙=K1(θ1dθ1).

Kemudian, misalkan menjadi matriks yang memperhitungkan rotasi sekitar sumbu :RSO(3)θ1dz

R=(cosθ1dsinθ1d0sinθ1dcosθ1d0001).

Melalui , Anda akan mendapatkan target baru yang akan membuat masalah planar IK 2D baru di bidang .R(xd,0,zd)1=RT(xd,yd,zd)Txz

Pada titik ini, Anda dapat menyelesaikan untuk dengan menggunakan Jacobian dari manipulator 4-DOF yang tersisa.(xd,zd)1

Ugo Pattacini
sumber
Saya pikir tidak perlu memecah masalah dalam submasalah. Karena deklarasi vektor satuan sudah menunjukkan apa yang baru saja Anda gambarkan.
Joe
Rinciannya hanyalah saran agar Anda dapat menggunakan kembali 4 DOF Jacobian, yang merupakan bagian dari kode Anda yang bekerja dengan lancar, seperti yang Anda laporkan pada awal posting Anda.
Ugo Pattacini
0

Saya pikir Anda telah memperkenalkan singularitas algoritmik pada sumbu pergelangan tangan pertama. Tampak bagi saya bahwa, ketika mencapai 90 derajat "turun," bahwa alih-alih ke 91 ia mencoba untuk membalik kembali melalui nol hingga -269 derajat.

Tentu saja ini spekulatif tanpa melihat kode.

SteveO
sumber