Animasikan Robot Anda Di Blender

Anda telah membangun robot yang penuh dengan servos dan sekarang Anda puas dengan bagian yang menyenangkan, memprogram beruang animatronik menari baru Anda! Rasa sakit dalam hidup Anda baru saja dimulai. Bayangkan Anda memutuskan beruang penari harus mengangkat lengannya. Jika Anda hanya mengatur posisi servo, motor akan berputar ke tempatnya secepat mungkin. Yang Anda butuhkan adalah animasi, dan sebaiknya dengan akselerasi yang mulus.

Anda bisa mengerjakan semua matematika sendiri. Setelah setengah jam mengutak-atik angka, beruang dengan anggun mengangkat lengannya seperti zombie bersenjata satu. Dan kemudian Anda menyadari bahwa beruang itu memiliki 34 servo lagi.

render lengan tipe robot industri dengan alas, alas, lengan atas dan lengan bawah dan bola IK

Untungnya untuk semua orang yang melakukan hal di atas, ada Blender. Ini semua tentang menciptakan gerakan halus untuk animasi dan grafik komputer. Membuat gerakan robot dengan Blender, jika tidak mudah, setidaknya dapat ditoleransi. Kami membuat proyek sampel, lengan robot 3-sumbu untuk diilustrasikan. Ini memiliki alas yang tidak bergerak, alas berputar, lengan atas, dan lengan bawah. Kami akan menganimasikannya terlebih dahulu di Blender dan kemudian menerjemahkan file ke sesuatu yang dapat kami gunakan untuk menggerakkan servos dengan skrip kecil.

Sekarang, Blender terkenal dengan antarmuka pengguna yang sulit. Kabar baiknya adalah, dengan revisi 2.9, ia pindah ke antarmuka yang jauh lebih normal. Itu masih merupakan program besar, dengan 23 editor berbeda dan ribuan kontrol, tetapi kami hanya akan menggunakan subset kecil untuk membuat robot kami bergerak. Kami tidak akan mengajari Anda Blender di sini, karena ada ribuan tutorial Blender online yang bagus. Anda ingin fokus pada animasi, dan seri Humane Rigging sangat direkomendasikan.

Berikut adalah langkah-langkah utama untuk menganimasikan robot:

Buat ‘kerangka’ (armature) yang sesuai dengan robot Anda Pasang armature sehingga bergerak seperti robot Anda dan nyaman untuk dianimasikan Menganimasikan armature Mengekspor posisi servo ke program kontrol robot Anda

4 armatur tulang.  Tulang berbentuk segi delapan dengan bola di kepala dan ekorArmatur Robot

Umumnya, animasi komputer terdiri dari angker dan kemudian jala untuk tubuh yang menggantung di atasnya. Untuk robot, kami tidak membutuhkan mesh, hanya armature, karena kami tidak membuat film. Namun, angker tetap harus sesuai dengan ukuran perangkat keras. Impor file CAD atau buat di atas foto atau ukur robot.

Posisi istirahat robot adalah referensi posisi sendi, dimana robot berada saat sumbu berada pada posisi nol. Tangan kita menunjuk lurus ke atas.

robot menunjuk lurus ke atasPose Istirahat

Tulang berputar di sekitar ekor, dan kepala adalah ‘di mana mereka berada’. Ekor tulang kering Anda adalah lutut Anda, dan kepala tulang kering Anda adalah pergelangan kaki Anda. Tulang dapat memiliki orang tua. Tulang kering Anda adalah anak dari tulang paha Anda. Jika Anda menggerakkan tulang paha (tulang paha), tulang kering Anda akan mengikutinya.

Tulang hanya berputar pada sumbu tertentu. Lutut hanya berayun ke belakang dan ke depan, bukan ke samping. Anda dapat memutar pergelangan tangan Anda, tetapi tidak dengan kuku Anda. Mereka juga memiliki batas gerak. Anda mungkin tidak bisa menekuk lutut ke belakang.

Sendi engsel hanya berputar, tetapi beberapa tulang dapat menskala (robot lunak), atau menerjemahkan (router CNC).

Bahkan ada kendala yang lebih kompleks. Roda depan mobil penumpang menyetir bersama. Batang pada lokomotif uap tetap pada pinnya. Anjing dapat bergerak bebas sampai batas talinya.

Animator mungkin tidak ingin berpose dengan memposisikan tulang. Menganimasikan mata karakter dengan mengatur sudutnya akan menjadi canggung. Jauh lebih baik untuk memiliki tulang target ekstra yang selalu dilihat karakter, dan membatasi mata untuk melihat target. Kami biasanya mengeritingkan jari kami sekaligus, dan kami menggulung semua sendi pada satu jari sekaligus. Jadi bagaimana dengan tulang ekstra yang mengontrol semuanya sekaligus?

Armature dengan semua tulang kontrol ekstra dan batasan ini disebut rig. Blender memiliki alat yang ampuh untuk membangun rig seperti ini.

Tulang pertama contoh kita, alas, mewakili alas robot, bagian yang dibaut ke lantai. Tulang dimungkinkan – itulah intinya, Anda dapat menganimasikannya. Tapi tulang ini tidak pernah bergerak, jadi kami mengunci semuanya – lokasi, rotasi, dan skala.

Antarmuka blender n properti utama menunjukkan semua sumbu tetapi rotasi Y terkunci

Basis berputar pada tumpuan, sehingga tulang alas merupakan anak dari tulang tumpuan. kepala pangkalan berada di poros untuk lengan atas. Basis berputar pada sumbu Y tulang dasar. Itu hanya gerakan, jadi kami mengunci semua sumbu lainnya.

Tulang lainnya hampir sama. lengan atas adalah anak dari dasar, dengan kepala di siku. lengan bawah berjalan dari siku ke pergelangan tangan. Sambungan ini berorientasi untuk membelok sepanjang Z lokal.

Armature sekarang berfungsi. Pilih (mode pose) pangkalan dan putar (rotasi Y) dan tulang lengan juga berputar. Jika Anda mengacaukan posisi saat bereksperimen, cukup batalkan atau atur sumbu yang tidak terkunci ke nol.

Robot sampel kami memiliki jaring sederhana yang bergerak dengan tulang sehingga Anda dapat melihat robot bergerak.

Tetapi masih memungkinkan untuk menempatkan robot pada posisi yang tidak dapat dilakukan oleh perangkat keras. Katakanlah basis robot perangkat keras sampel kami hanya dapat berputar 90 derajat di setiap sisi tengah. Kita dapat mencegah animator melakukan gerakan yang tidak mungkin dengan batasan tulang. Kami menambahkan batasan rotasi batas untuk setiap tulang.

Berinteraksi

Ini bagus, tapi sekarang kami ingin robot beruang kami mengambil hadiah. Bagaimana robot akan berinteraksi dengan dunia luar. Solusinya adalah kinematika terbalik (IK). IK memungkinkan kita mengatakan di mana kita menginginkan pergelangan tangan, bukan di mana sendi bahu dan siku berada. Jadi kami menambahkan bola bernama IK ke tempat kejadian dan menambahkan batasan IK ke lengan bawah untuk mencoba menjangkau bola.

Jika Anda mengikuti, pindahkan contoh garis waktu ke bingkai 120, sehingga IK aktif dan Anda tidak mengacaukan animasi kami.

Pergelangan tangan robot kini ‘meraih’ bola IK. Dalam mode objek, pilih bola dan gunakan (tombol g) untuk ‘mengambil’ itu. Seret untuk memindahkan bola. Robot mengikuti dengan rapi, dan sendi mengatur diri untuk melakukan apa yang dibutuhkan. Jauh lebih nyaman.

Jika Anda ingin melihat-lihat batasan IK, rumahnya adalah lengan bawah. Dalam mode pose, pilih lengan bawah dan tab batasan tulang di editor properti objek di sebelah kanan. Kendala IK tinggal di sini.

Sedikit brilian dari Blender adalah bahwa hampir semua hal dapat dianimasikan. Sebagian besar nilai memiliki titik putih kecil di sebelah kanannya. Mengklik yang mengubahnya menjadi berlian dan membuat nilainya menjadi animasi. Kami melakukan ini untuk “Mempengaruhi”, yang merupakan ‘kekuatan’ dari kendala.

Waktu Animasi

Kami sekarang siap untuk menganimasikan. 10 FPS baik-baik saja untuk sebagian besar robot — atur ini di Render Properties. Kami hanya menempatkan semua animasi satu demi satu di timeline, dan mengambil potongan yang kami inginkan, jadi mungkin ‘beruang tertawa’ adalah bingkai 50 hingga 70.

Editor kurva blender menunjukkan gerakan bola IKgerak bola IK. Titik-titik hitam adalah keyframe.

Dulu ketika kami menggerakkan lengan beruang dengan mengetikkan angka, kami harus melakukan setiap frame. Syukurlah tidak dibutuhkan sekarang. Kita hanya perlu berpose robot pada frame yang cukup untuk mendapatkan perilaku yang kita inginkan. Ini adalah keyframe. Blender melakukan frame di antaranya.

Secara default Blender menambahkan kemudahan masuk dan keluar, sehingga servos berakselerasi dengan lancar. Anda dapat memilih bola IK dan memeriksa ‘Graph Editor’ jika Anda ingin melihat kurva.

Ada perbedaan antara berpose dan membuat keyframe. Berpose robot tidak mengubah animasi. Itu hanya membuat keyframe (i key) yang mengubah animasi.

Dalam bingkai 50 hingga 75 robot mengambil sesuatu dan memindahkannya. Perhatikan bahwa membuat animasi itu hanya ‘memindahkan bola, membuat keyframe’ empat kali. Butuh waktu kurang dari dua menit untuk membuat seluruh animasi. Kami tidak pernah menganimasikan robot yang sebenarnya — kinematika terbalik yang menanganinya untuk kami.

Dari 90 hingga 105 robot menghindari meja di dekatnya saat mengatur sesuatu di atasnya. Dalam praktiknya kita harus menjalankan ini di robot asli dan mengubahnya setengah lusin kali. Melakukan itu tanpa dukungan perangkat lunak akan menjadi mimpi buruk.

Dari Animasi ke Robot

Kami siap untuk memindahkan animasi kami ke program kontrol robot kami. Ada peretasan yang bagus untuk ini. Standar de facto untuk file animasi komputer adalah format ‘BioVision Hierarchical’ (bvh). Blender dapat mengekspornya, meskipun Anda mungkin perlu mengaktifkan plugin dan memilih angker. Berikut contoh.

HIERARCHY ROOT pedestal { OFFSET 0,000000 0,000000 -1,000000 SALURAN 6 Xposisi Yposisi Zposisi Xrotasi Yrotasi Zrotation JOINT base { OFFSET 0,000000 0,000000 1.000000 SALURAN 3 Xrotasi Yrotasi Zrotation JOINT lengan atas { OFFSET 0,000000 0,000000 OFFSET 0,000000 1.000000 CHANNEL 3 Xrotation Yrotation Zrotation JOINT lengan atas { OFFSET 0,000000 0,000000 OFFLINE 0,000000 Xrotation YHANNELS 3 Xrotation JOINT Xrotation Yrotation Zrotation Situs Akhir { OFFSET 0,000000 0,000000 3.100000 } } } } } Frame GERAK: 251 Frame Time: 0.100000 0,000000 0,000000 -1,000000 -0,000000 0,000000 -0,000000 -0,000000 0,000000 -0,000000 -0,000000 0,000000 -0,000000 -0,000000 0,000000 -0,000000 0,000000 0,000000 1.000.000 -0,000000 0,000000 -0,000000 -0,000000 0,000000 -0,000000 -0,000000 0,000000 -0,000000 -0,000000 0,000000 -0,000000 0,000000 0,000000 -1,000000 -0,000000 0,000000 -0,000000 -0,000000 0,000000 -0,000000 -0,000000 0,000000 -0,000000 -0,000000 0,000000 -0,000000 … banyak garis ini…

Meskipun ini terlihat tidak bagus untuk diuraikan, ada peretasan. Kami tidak peduli dengan bagian atas (kerangka). Kami hanya ingin frame data gerak dari bawah.

Temukan nomor baris dari baris setelah ‘Frame Time’, untuk file kami 29, dan gunakan tail -n +29 ./robotarm.bvh | sed –expression=’s/ $//g’ | sed –expression=’s/ /,/g’ >robotarm.csv untuk mendapatkan file CSV dari sudut sambungan untuk setiap frame.

Manakah dari semua angka ini yang merupakan servo? Dan bagaimana kita memetakan angka-angka ini ke angka yang dikirim ke servo?

Kami menambahkan animasi (bingkai 1-6) yang melatih setiap sumbu bebas secara berurutan — alas, lengan atas, lengan bawah — hingga batasnya. Jika kita melihat melalui file CSV untuk saluran mana yang berubah dalam urutan ini, kita menemukan bahwa saluran 8 adalah dasar, 10 adalah lengan atas, dan 13 adalah lengan bawah. Jika Anda mengetahui posisi servo pada batas pada perangkat keras, Anda dapat memetakan satu ke yang lain.

Angka sebenarnya adalah posisi gabungan Blender dalam derajat, jadi yang tersisa untuk dilakukan hanyalah mengatur servos sekali setiap waktu bingkai, dan animasi Anda akan diputar dalam kenyataan.

Jangan lupa, jika Anda memainkan animasi satu demi satu, bahwa animasi kedua harus dimulai dengan robot di mana yang terakhir meninggalkannya. Dan ingat bahwa hanya karena Anda meminta posisi servo, Anda mungkin tidak mendapatkannya. Jika Anda tahu robot Anda bergerak lambat, meminta tindakan cepat akan kehilangan kontrol posisi. Blendernya tidak tahu.

Terakhir, kami akan mencatat bahwa ‘robot’ tidak harus berupa robot. Apa pun yang membutuhkan animasi skrip dapat diperlakukan dengan cara ini.

Tentu saja, tidak hanya itu yang diperlukan untuk membuat asisten robot yang cerdas. Ada tugas lain, seperti penglihatan dan genggaman, yang memerlukan kontrol waktu nyata, menyesuaikan gerakan dengan cepat, membuat gerakan halus di antara animasi kalengan, mengurangi masuk dan keluar animasi, dan memadukan animasi. Tetapi Blender dan rutinitas ekspor sederhana dapat membantu Anda memulai.

Setengah kesenangan membuat robot adalah bermain dengan mereka. Kami harap kami telah menginspirasi Anda untuk memeriksa Blender, dan mungkin mengilhami beberapa animatronik di sepanjang jalan.