Sastra untuk Kinematika Invers: Batas Bersama dan seterusnya

8

Baru-baru ini saya bermain-main dengan Kinematika Invers dan cukup terkesan dengan hasilnya. Tentu saja saya ingin melanjutkan, tetapi tidak tahu harus mulai dari mana. Secara khusus, saya ingin memperkenalkan batas bersama (yaitu untuk sambungan prismatik sejauh mana ia dapat bergerak, bergantung pada sendi sudut mana yang harus ada di antara, dll.).

Saat ini saya mengerti bagaimana membuat matriks Jacobian untuk berbagai jenis sambungan. Saya terutama mencari literatur (lebih disukai gratis, dan lebih disukai mudah dipahami) tentang berbagai cara untuk menerapkan batasan bersama. Saya juga ingin mengetahui berbagai ide tentang bagaimana kinematika terbalik dapat digunakan.

Jeff
sumber

Jawaban:

4

Ini mungkin bukan jawaban terbaik yang bisa saya berikan sekarang, tetapi pertimbangkan Cyclic Coordinate Descent (CCD) yang berfungsi untuk matriks Jacobian yang tidak dapat dibalik. Video singkat di sini .

Sumber terbaik yang mencakup CCD adalah tesis MSc Chris Wellman sendiri. Untuk ulasan minimal / singkat, Anda dapat membaca sumber ini yang menyebutkan sebagian besar metode di luar sana.

Makalah yang lebih matematis (untuk peneliti di Anda: D) adalah ini http://math.ucsd.edu/~sbuss/ResearchWeb/ikmethods/iksurvey.pd f.

Untuk peneliti hardcore: http://matwbn.icm.edu.pl/ksiazki/amc/amc19/amc1941.pdf

Ini kelihatannya seperti metode hibrid, meskipun mereka hanya slide dengan gagasan yang paling akrab: http://cmp.felk.cvut.cz/~hlavac/TeachPresEn/55IntelligentRobotics/KjchoInverseKinematics.pdf Satu lagi yang patut dibaca: http: // www .cns.atr.jp / erato / DB / PDF / tevatia-icra2000.pdf

Karena Anda mengatakan Anda lebih suka memiliki sumber gratis, saya tidak akan menyebutkan beberapa buku yang dapat dibeli dari Amazon yang mengatasi masalah ini. Secara pribadi, saya puas dengan CCD. Untuk ketepatan ultra, saya lebih suka Inverse Jacobian (di mana saya tahu sistem menghasilkan matriks terbalik karena 6 DOF dari rig robot).

Bagaimana IK dapat digunakan? Sebagian besar ketika Anda ingin menghidupkan karakter dengan menyediakan hanya posisi dan orientasi efektor akhir dari anggota tubuh tertentu. (youtube untuk contoh). Jika Anda ingin memulai karir di bidang robotika, IK adalah suatu keharusan jika Anda berurusan dengan robot artikulasi. Dalam dunia permainan, itu adalah suatu keharusan ketika Anda menggunakan deteksi gerakan gerakan manusia melalui kamera (mis. Http://www.youtube.com/watch?v=HSradQVj26E - contoh sederhana saya tentang antarmuka wiimote dan robot virtual ccd robotik lengan).

teko teh
sumber
2

Artikel Asli: Tinjauan Kinematika Terbalik

Saya sangat menyarankan tautan di atas untuk ikhtisar tingkat tinggi Invers Kinematics. Ini melampaui jargon IK, penggunaan / aplikasi IK, dan deskripsi tingkat tinggi dari kinematika maju dan kinematika terbalik.

Apa kegunaan IK?

IK dapat digunakan untuk lengan humanoid untuk meraih objek / target, seperti yang telah kita lihat. IK juga dapat digunakan untuk loncatan kaki, sehingga kami memberi tahu kaki di mana harus melangkah dan figur IK bagaimana mengkonfigurasi sambungan kaki. IK biasanya tidak digunakan sebagai animasi itu sendiri (meraih objek), tetapi lebih sebagai alat animasi. Jadi, jika Anda menerapkan siklus berjalan, Anda bisa memposisikan beberapa bingkai kunci menggunakan alat IK.

Poin kunci lain tentang IK adalah bahwa sasaran / target Anda tidak terbatas pada posisi saja - tujuan Anda dapat didefinisikan sebagai rotasi. Misalnya, jika kaki Anda perlu berputar berdasarkan medan yang tidak rata, sasaran rotasi IK Anda dapat ditentukan berdasarkan normal lantai. Dengan cara ini kaki Anda condong di lantai, seperti saat Anda berjalan menanjak. Perhatikan bahwa Anda juga dapat menggunakan IK untuk membuat kepala Anda (atau bahkan mata) melihat ke arah tertentu. Jika Anda ingin kepala Anda mengikuti objek, Anda dapat menggunakan IK agar kepala mengikuti objek di sekitar.

Bagaimana cara menerapkan batas bersama?

Saya biasanya menerapkan batas bersama dengan pernyataan if sederhana. Sebagai contoh, ini akan bekerja untuk sambungan revolute.

if (limb.rotation >  45.0f) limb.rotation =  45.0f;
if (limb.rotation < -45.0f) limb.rotation = -45.0f;

Ini jauh lebih sedikit matematis daripada Jacobian, dan sangat mudah diimplementasikan setelah Anda memiliki Jacobian bekerja.

Luis B
sumber