Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Manufacturing Technology >> Proses manufaktur

KITtyBot

Komponen dan persediaan

SparkFun Arduino Pro Mini 328 - 5V/16MHz
× 1
Servo (Tower Pro MG996R)
SG-90 atau 9 g servo dengan faktor bentuk yang sama
× 12
Adafruit UBEC DC/DC Konverter Step-Down (Buck) - Keluaran 5V @ 3A
× 1
Kontrol Jarak Jauh Mini Adafruit
Tentu saja Anda dapat menggunakan remote apa pun. Ini terjadi untuk bekerja sama dengan baik dengan perpustakaan IRLib
× 1
Sensor Penerima Adafruit IR (Inframerah) - TSOP38238
× 1
Resistor 1k ohm
× 1
Resistor 2.2k ohm
× 1
Baterai LiPo 7,4 V / 500 mAh
Baterai dengan kapasitas kira-kira ini yang ditujukan untuk hobi R/C cukup
× 1

Alat dan mesin yang diperlukan

Printer 3D (generik)
Besi solder (generik)
Desain papan tempat memotong roti dapat dilakukan tanpa menyolder

Aplikasi dan layanan online

Arduino IDE

Tentang proyek ini

Pendahuluan

Saya ingin melakukan robot berkaki empat yang berjalan, lebih bergaya "mamalia" daripada "laba-laba" atau "serangga" biasa. Inspirasinya datang dari robot Boston Dynamics yang terkenal dan robot penelitian berkaki empat lainnya. Membuat robot seperti ini cukup menantang karena cukup mudah terbalik karena pusat gravitasi yang tinggi dan kaki di bawah tubuh alih-alih menyebar ke sudut.

Tujuannya adalah untuk membangun robot murah, menggunakan Arduino dan servos mikro berbiaya rendah. Solusi ini tentu saja memiliki keterbatasan. Seseorang tidak dapat mengharapkannya menjadi sempurna tetapi saya telah berhasil membuat beberapa robot sekarang yang dapat melakukan perilaku berjalan seperti yang dijelaskan dalam film ini. Dan melakukan yang terbaik dengan anggaran yang sangat kecil merupakan tantangan tersendiri dan mungkin sesuatu yang tidak pernah dihadapi oleh orang-orang dalam proyek penelitian yang didanai besar-besaran. :)

Itu diidentifikasi awal bahwa studi kinematika terbalik (IK) diperlukan untuk mendapatkan yang benar. Kode memiliki seperangkat persamaan untuk menghitung sudut sendi berdasarkan gerakan kaki yang diinginkan. Ini dapat digunakan lebih lanjut dalam fungsi untuk beberapa tugas berulang seperti melakukan gerakan tubuh (menggerakkan keempat kaki ke arah yang berlawanan) dan membuat gerakan kaki lengkap (mengangkat ke atas bergerak ke arah tertentu dan meletakkannya lagi).

Tantangan selanjutnya adalah melakukan studi gait, yaitu mendefinisikan bagaimana robot harus berjalan dan berputar dalam hal gerakan tubuh dan kaki. Robot saya menggunakan gaya berjalan yang stabil secara statis sepanjang waktu. Satu kaki pada saat diangkat dan dimasukkan ke posisi baru. Tubuh bertumpu pada tiga kaki lainnya dan agar tidak terbalik di atas pusat gravitasi harus tetap berada di dalam tripod yang membentuk kaki ini. Saya mengembangkan empat gaya berjalan standar - maju, mundur, kiri dan kanan. Ini pada gilirannya memanfaatkan fungsi gerakan kaki dan tubuh untuk digabungkan menjadi satu rangkaian penuh.

Saya juga merancang fungsi untuk gerakan servo sinkron. Dalam beberapa kasus beberapa servos membuat pukulan yang berbeda selama waktu yang ditentukan. Ini harus disinkronkan untuk mencapai gerakan yang mulus.

Last but not least saya menggunakan baterai LiPo yang benar-benar tidak terlindungi. Ini bisa berisiko, bahaya utama adalah melepaskannya terlalu cepat atau terlalu dalam. Bahaya pertama dapat dihindari selama tidak terjadi hubungan pendek secara tidak sengaja. Baterai R/C normal memiliki laju pengosongan 25 C yang dalam hal ini memungkinkan untuk 12 A. UBEC akan mencegahnya lebih tinggi dari 2 A dalam keadaan apa pun. Bahaya kedua dicegah dengan fungsi pengawasan dalam perangkat lunak. Tegangan diukur pada salah satu pin analog dan jika lebih rendah dari 7,0 V, robot akan diistirahatkan.

Dan akhirnya saya harus menekankan bahwa baterai harus diisi dengan pengisi daya yang dibuat khusus dan ditangani dengan hati-hati, jangan pernah meninggalkan pengisian tanpa pengawasan. Baterai harus dilepas dari robot (menggunakan velcro untuk memasangnya) dan diisi di dalam tas tahan api atau setidaknya dengan jarak aman dari bahan yang mudah terbakar sehingga api dapat dipadamkan dan tidak menyebar. Simpan juga baterai Anda dengan aman.

Jika Anda tidak terbiasa dengan baterai LiPo, berkonsultasilah dengan toko hobi R/C setempat dan beli baterai bersama dengan pengisi daya yang sesuai dan mungkin tas/wadah tahan api untuk pengisian dan penyimpanan. Barang-barang ini seringkali penuh dengan tanda-tanda peringatan. Reda mereka dan gunakan penilaian baik Anda sendiri. :)

Membuat robot

Cetak bagian sesuai dengan file yang disediakan. Luangkan waktu untuk melihat gambar dan mencari cara untuk merakit bagian-bagian sebelum memulai. Saya Skandinavia tetapi instruksi ini jauh dari level instruksi IKEA atau LEGO :)

Sendi pinggul harus dirakit terlebih dahulu. Saya menggunakan selotip dua sisi berkualitas baik untuk menyambung bagian-bagiannya. Mereka bisa direkatkan juga tetapi jika ada kebutuhan untuk memperbaiki bagian yang rusak, mereka tidak mungkin dibongkar, satu servo yang rusak mengarah ke penggantian sambungan yang lengkap.

Letakkan dukungan servo di bagian bawah satu servo, sesuai dengan sumbu aktuasi. Kemudian gabungkan servo lain dengan sumbu tegak lurus. Gambar di bawah ini menunjukkan sendi pinggul untuk depan-kanan dan belakang-kiri. Untuk dua sudut lainnya, sambungan cermin harus dibuat.

Sebelum melanjutkan, ada baiknya untuk memastikan bahwa semua 12 servo berada di tengah. Cara terbaik adalah dengan merakit PCB (atau papan tempat memotong roti, lihat di bawah), sambungkan semua servos dan muat kodenya. Ketika Arduino dihidupkan, semua servos akan berada di tengah (sinyal perintah 90 derajat). Nanti akan ada kebutuhan untuk menyesuaikan posisi tengah setelah robot dirakit.

Langkah selanjutnya adalah menempelkan bagian yang disebut paha, "tungkai atas" dari rakitan kaki. Bagian ini memiliki ceruk yang sesuai dengan tanduk servo yang biasanya dikirimkan bersama dengan servo. Rekatkan tanduk ke dalam ceruk. Pastikan untuk menggunakan lem yang berfungsi untuk menyatukan bahan cetakan 3D dan plastik nilon yang terbuat dari tanduk. Pistol lem yang saya gunakan berfungsi dengan baik, tetapi saya memiliki beberapa keberhasilan campuran dengan lem CA (beberapa merek berfungsi, yang lain tidak).

Paha bergabung dengan sendi pinggul pada sudut 60 derajat. Cobalah untuk menemukan posisi yang sedekat mungkin dengan sudut ini ketika servos telah dipusatkan. Kencangkan klakson ke spline servo dengan sekrup yang disediakan (seringkali yang lebih pendek dari tiga yang dikirimkan dengan servo). Di bawah ini adalah dua gambar pahat dan pinggul yang dirakit, tanduk servo tidak termasuk untuk kejelasan (atau tidak pernah dimodelkan karena kemalasan dari sisi saya) .

Bagian bawah kaki juga harus dirakit. Dalam hal ini servo dipasang pada bagian kaki menggunakan sekrup. Ada sekrup yang disertakan dengan servo (seringkali dua sekrup "kayu" yang lebih panjang).

Sekarang kaki bisa dipasang ke tubuh. Ada dua bagian yang saya sebut "bumper" yaitu di bagian depan dan belakang robot (seperti bemper pada mobil). Mereka memiliki ceruk untuk tanduk servo seperti bagian paha. Rekatkan tanduk ke dalamnya. Kemudian geser penopang servo dari kaki bagian atas ke dalam lubang yang sesuai di tubuh. Ketika ini dilakukan di kedua sisi, rakitan dapat diamankan dengan bumper. Biarkan kaki menunjuk sekitar 12 derajat (jari kaki keluar 20 mm dari kaki). Bumper diamankan ke bodi dengan menggunakan sekrup servo yang tersisa (lebih panjang).

Akhirnya kaki bagian bawah robot bisa dipasang. Mereka harus miring ke arah yang berlawanan dari paha, membuat ujung kaki berada tepat di bawah sendi pinggul dari setiap rakitan kaki.

Dengan ini robot dirakit. Seharusnya terlihat seperti pada gambar di bawah ini. Perhatikan bahwa desain robot telah sedikit berubah dibandingkan dengan gambar atas dan klip film. Bodinya telah didesain ulang untuk menyederhanakan dan membuat desain yang lebih kokoh. Dukungan servo dan tanduk untuk sendi pinggul telah bertukar tempat. Jadi susunlah sesuai dengan gambar 3D dan hindari kebingungan dengan foto dan klip film.

Tentu saja sudut setiap sambungan tidak bisa tepat pada sudut yang dibutuhkan, jumlah splines pada servo SG-90 adalah 21, yang mengarah ke sudut 17 derajat antara dua posisi. Anda dapat merakit robot paling baik dalam 10-20 derajat, kesalahan yang tersisa harus disesuaikan dengan mengubah posisi netral dalam kode, lihat lebih jauh ke bawah dalam instruksi ini. Mungkin ide yang baik untuk sekali lagi menghubungkan semua servos dan menyalakan Arduino dan memeriksa posisi netral dan jika perlu melakukan beberapa penyesuaian mekanis (menggerakkan sambungan satu atau dua spline). Seseorang cenderung secara tidak sengaja memutar servo saat bekerja dengannya.

Menghubungkan elektronik

Ada dua opsi, memiliki semuanya di satu papan tempat memotong roti atau untuk menghasilkan PCB dengan file Fritzing yang disediakan. Anda mungkin mengalami beberapa masalah dengan tegangan di papan tempat memotong roti jika Anda tidak berhati-hati saat menghubungkan semua saluran listrik dan ground ke servos. Dalam kasus ekstrim satu servo dapat mengkonsumsi 600 mA dan koneksi yang buruk menyebabkan perilaku yang tidak menentu. PCB memiliki jejak tembaga yang sangat luas untuk saluran listrik, jadi jika Anda menyolder dengan benar, itu akan berfungsi dengan baik.

Tidak ada saklar daya dalam desain saya. Robot hanya dihidupkan dan dimatikan dengan menghubungkan baterai. Jika Anda ingin menambahkan satu harus setelah konektor baterai, memotong pasokan 7,4 V ke Arduino dan UBEC.

Versi papan tempat memotong roti

Dimungkinkan untuk memiliki Pro Mini, konektor untuk servos dan sebagian besar elektronik lainnya pada satu papan tempat memotong roti setengah ukuran. Saya menggambar skema pada gambar di bawah ini. Pastikan untuk menggunakan kabel jumper pendek, terutama untuk daya 5 V dan koneksi ground ke servos. Konektor servo hanyalah header jantan ekstra panjang yang dipotong menjadi tiga bagian dan ditekan ke papan tempat memotong roti.

Yang tidak terlihat di gambar adalah baterai dan UBEC. Mungkin ada beberapa penyolderan untuk memperbaikinya untuk memasang konektor yang pas ke baterai. Dari konektor, dua kabel jumper harus dihubungkan ke "rel daya" yang lebih rendah dari papan tempat memotong roti untuk memberi makan Pro Mini (terhubung ke RAW dan GND). Hubungkan juga dua resistor dari suplai 7,4 V ke pin A0. 2.2k pergi dari sisi positif dan 1k dari tanah. Ini akan membagi tegangan, yang lebih dari 8 V pada baterai penuh, ke nilai di bawah 5 V yang dapat diukur dengan pin analog.

Sisi keluaran UBEC memiliki konektor servo. Cukup nyaman untuk menambahkan tajuk dua laki-laki di "rel daya" atas. Letakkan di suatu tempat di tengah seperti pada gambar untuk memastikan bahwa distribusi daya ke servos seimbang mungkin.

Penerima IR harus terhubung ke A1 dan memiliki suplai 5V. Pin pada penerima cukup panjang untuk dipasang ke lubang langsung di papan tempat memotong roti.

Ada skema di bawah ini dan gambar tentang bagaimana papan tempat memotong roti yang sudah jadi mungkin terlihat. Perhatikan bahwa gambar menunjukkan versi robot yang lebih lama dengan pinout dan koneksi yang berbeda. Ini masih memberikan gambaran tentang cara menghubungkan kabel jumper dan konektor servo.

Papan tempat memotong roti melekat pada tubuh dengan bagian belakang berperekat. Arahkan sehingga sudut dengan servos terhubung ke pin D3, D4 dan D5 (kanan atas dalam skema) berada di sudut depan/kiri robot dan pastikan papan berada di tengah badan (bagian tengah yang benar dari robot). gravitasi sangat penting).

Versi PCB

Saya menambahkan file Fritzing di bawah ini. Ini dapat digunakan untuk memproduksi PCB, baik dengan memesan dari layanan yang tersedia di Fritzing atau dengan mengekspor file untuk pembuatan PCB. Saya melakukan serangkaian gambar untuk menunjukkan perakitan di bawah ini. PCB dibuat khusus untuk robot ini dengan konektor ke semua servos, IR, dan pengukuran tegangan. Namun ada juga konektor yang putus dari pin yang tersisa. Ini dapat digunakan untuk menghubungkan peralatan lain jika Anda ingin mengembangkan robot di masa mendatang.

Ada "bantalan" kecil di bodi yang pas di sudut-sudut PCB. Juga di sini sudut dengan konektor D3 ke D5 harus berada di depan/kiri. Ada lubang pemasangan di PCB tetapi saya hanya menggunakan selotip dua sisi di bodi untuk memasangnya. Itu akan tetap di tempatnya.

Baterai

Baterai terpasang di bagian bawah dengan velcro. Ada permukaan datar yang didedikasikan untuk ini di tubuh. Baterai LiPo 7.4V/500mAh biasanya memiliki faktor bentuk sekitar 55x30x10 mm (memberi atau menerima beberapa mm) dan cukup cocok dengan tempat ini.

Akhirnya robot dapat "disentuh" ​​dengan mengikat kabel servo menjadi bundel yang bagus sehingga tidak tersandung saat berjalan. Ini juga memberi robot tampilan yang bagus untuk benar-benar menjadi makhluk berkaki empat yang berjalan-jalan dan bukan tumpukan kabel servo. :)

Menyelesaikan

Sebelum menggunakan robot, posisi tengah harus disetel dengan baik. Ini dilakukan dengan mengedit array servodeg0 dalam kode:

const float servodeg0[12] ={90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90};  

Nilainya berurutan alfa, beta gamma dan depan/kiri, belakang/kiri, depan/kanan, belakang/kanan. Jadi beta di kanan depan adalah posisi kedelapan dalam array atau servodeg0[7] (penomoran array dimulai dengan 0).

Ada juga array yang disebut servodir yang mendefinisikan arah rotasi servos.

const int servodir[12] ={ +1, +1, -1, -1, -1, +1, -1, -1, -1, +1, +1, +1}; // Arah belok (positif adalah servo berlawanan arah jarum jam)  

Servo yang saya gunakan bergerak dari 0 hingga 180 derajat berlawanan arah jarum jam. Saya telah membaca di suatu tempat bahwa ada servos pergi ke arah lain. Dalam kasus seperti itu, servodir array harus memiliki tanda-tanda yang berubah selama ini.

Mulai Arduino dan periksa sudut pada semua servos. Buat ukuran dan lihat semuanya terlihat lurus dan simetris. Jarak dan sudut harus sesuai dengan gambar di bawah ini.

Sulit untuk berada dalam milimeter yang tepat pada setiap pengukuran, berada dalam cm adalah wajar. Lihat perubahan apa yang diperlukan dan tambahkan/kurangi ke nilai dalam array servodeg0. Ini pasti akan membutuhkan beberapa iterasi sebelum semuanya benar. Anda akan mengakhiri dengan array servodeg0 yang terlihat seperti ini (sepotong kode sebenarnya dari salah satu robot saya). Dan yang terpenting, pada akhirnya Anda harus memiliki robot yang bertumpu pada keempat kaki dan berdiri tegak.

 const float servodeg0[12] ={80, 95, 100, 100, 110, 90, 100, 115, 100, 80, 80, 100}; 

Sekarang semuanya sudah selesai. Selamat menikmati!

Mungkin hanya beberapa tips.

Servo mungkin perlu dikalibrasi ulang setelah beberapa saat. Posisi tengah bisa melayang seiring waktu. Cukup periksa apakah semuanya selaras dari waktu ke waktu.

Jika Anda telah melakukan semuanya dengan benar dan masih memiliki robot yang akan terbalik, periksa pusat gravitasi. Baterai dapat dipindahkan untuk menyeimbangkan ini, satu hal yang baik dengan menggunakan velcro.

Dan sekali lagi. Rawat baterai LiPo Anda dengan hati-hati.

Peningkatan lebih lanjut

Dengan mengirimkan robot saya di sini, saya juga mengundang orang untuk menyempurnakan desain, baik menambahkan lebih banyak fungsi atau melakukan tata letak yang sedikit berbeda (lebih besar, lebih kecil, lebih keren). Kode harus dapat digunakan kembali pada robot dengan tata letak atau ukuran yang sedikit berbeda. Sketsa di bawah ini menunjukkan perbedaan konstanta dalam kode. Semua IK dan fungsi gerakan harus tetap bekerja jika robot dengan ukuran berbeda dibuat. Ini juga menunjukkan koordinat yang ditentukan, x menunjuk ke arah depan.

Dan tentunya akan menarik jika orang menambahkan fungsi pada robot. Ada beberapa tombol pada remote yang dapat diberikan fungsi (mengapa tidak menari atau melakukan beberapa urutan gerakan lainnya jika tombol ditekan).

Saya pribadi bereksperimen dengan input analog. Saya juga telah bekerja dengan gaya "berputar sambil berjalan" untuk dapat mengarahkan robot sampai batas tertentu, atau untuk memperbaiki penyimpangan arah dengan bantuan gyro atau kompas. Dan saya juga menambahkan sensor ultrasonik dan perilaku otonom (menghindari rintangan). Proyek saya saat ini adalah menggabungkan kontrol analog dengan otonom dan semuanya dikontrol dari smartphone. Ini telah memaksa saya untuk belajar tentang banyak hal baru (Blynk, ESP6822, komunikasi serial antar perangkat dll) dan semoga saya dapat meluncurkan versi robot yang disempurnakan (atau mungkin seseorang dengan keterampilan yang lebih baik mengalahkan saya dalam hal itu) :)

Kode

  • Kode untuk KITtyBot2
Kode untuk KITtyBot2Arduino
Unggah ke Arduino Mini
/* Versi KITtyBot 2 yang dikendalikan IR. Ini menggunakan Arduino Pro Mini dan papan PCB yang dirancang oleh saya (Sketsa Fritzing Kittybotmini.fzz) Ini didasarkan pada robot sebelumnya KITtyBot dan KITtyBot mini menggunakan remote IR untuk mengontrol robot Menggunakan remote NEC (Adafruit) dan perpustakaan IRLib2, lihat https://github.com/cyborg5/IRLib2. Unduh pustaka IRLib2 dari repositori dan instal sesuai dengan instruksi. Dimensi umum mirip dengan KITtyBot asli tetapi ada perpindahan antara sumbu gamma dan alfa 12 mm (servo dipasang di atas satu sama lain) Saya telah secara bertahap mengubah gaya berjalan untuk berjalan dan berputar tetapi sejauh ini saya merasa ini telah diberikan perilaku yang paling stabil. Dibuat oleh Staffan Ek 2017*/#include #include #include  // Pertama-tama sertakan basis decode#include  // Hanya sertakan protokol Anda using#define MY_PROTOCOL NEC //Mendefinisikan kontrol IR (NEC)long Sebelumnya;IRrecv My_Receiver(A1);//Receive pada pin A0IRdecodeNEC My_Decoder;const int servonum =12; // Jumlah servosServo servo[servonum]; // Buat objek servoconst float servodeg0[12] ={90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90};// Posisi netral untuk servo yang disesuaikan dari nominal 90 derajat ( kalibrasi diperlukan untuk menyesuaikan nilai-nilai ini)float servodegnew[servonum]; // Posisi servo yang diinginkan dalam derajatfloat servodegold[servonum]; // Posisi servo lama (atau saat ini)// Perbarui nilai di bawah ke miniconst int servodir KITtyBot[12] ={ +1, +1, -1, -1, -1, +1, -1, -1, -1, +1, +1, +1}; // Arah belok (positif adalah servo berlawanan arah jarum jam)const float pi =3.1416;const float alfa0 =pi / 6; // Posisi netral alfa (30 deg)const float beta0 =pi / 3; // Posisi netral beta (60 deg)const float jointlength =50; // Panjang bagian kaki (keduanya sama panjang)const float width =120; // Lebar (jarak antara kaki dalam arah y, dengan toeout0 ditambahkan)const float leng =120; // Panjang (jarak antara kaki dalam arah x)const float distag =12; // Jarak antara alfa dan gamma axisconst float toeout0 =20; // Jarak luar kaki dari pusat gamma servo (jarak kaki menunjuk ke luar)const float leglength0 =2 * jointlength * cos(alfa0);const float gamma0 =asin(toeout0 / (leglength0 + distag)); // Posisi netral gamma (karena toe out 20 mm dan distag 12 mm)const float bodyradius =sqrt(pow((width / 2), 2) + pow((leng / 2), 2)); // Panjang diagonal (jarak dari pusat ke sudut kaki)const float phi0 =atan(lebar / panjang); // Sudut radius tubuh vs sumbu x (menunjuk ke depan) dengan ketinggian float0 =sqrt(pow(panjang kaki0 + distag, 2) - pow(toeout0, 2)); // Tinggi normal robot (jika ada sudut atau jarak yang diubah, ini harus diperbarui)float leglength [4] ={sqrt(pow(height0, 2) + pow(toeout0, 2)), sqrt(pow(height0, 2) + pow(toeout0, 2)), sqrt(pow(height0, 2) + pow(toeout0, 2)), sqrt(pow(height0, 2) + pow(toeout0, 2)) };// Mulai nilai dari leglengthunsigned long timestep =500; // Waktu yang dibutuhkan oleh setiap urutan (saat menggunakan servomove())int steplength =40; //Panjang langkah dalam arah x selama berjalan (merangkak maju dan mundur)float phi =20; // belokan selama belokan (dalam derajat, bukan radian!)// Variabel untuk footpos gerakanfloat[12]; // Posisi kaki, urutan LeftFrontxyz, LeftRearxyz, RightFrontxyz, RightRearxyzfloat stepturn[12] ={0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; // Gerakan kaki saat berbelok// Posisi kaki dikalibrasi dengan posisi awal masing-masingconst float jointangle0[12] ={alfa0, beta0, 0, alfa0, beta0, 0, alfa0, beta0, 0, alfa0, beta0, 0};sudut sambungan mengambang[12]; //Menggunakan vektor untuk sudut, urutkan LeftFrontAlfaBetaGamma etcconst int voltagepin =A0; // Pin yang ditetapkan untuk pengukuran tegangan tegangan rendah =0; // Variabel yang menghentikan robot jika tegangan masuk <7.0 mode Vint =0; // Mode berjalan yang dipesan saat ini; maju, mundur, kiri, kananvoid setup() { Serial.begin(9600); Serial.println("KITtyBot mini"); // Baris-baris ini hanya untuk memeriksa konfigurasi. Bisa dihapus. Serial.print("Gamma0:"); Serial.println(gamma0); Serial.print("Panjang Kaki0:"); Serial.println(panjang kaki0); Serial.print("Radius Badan :"); Serial.println(radius badan); Serial.print("Phi0:"); Serial.println(phi0); Serial.print("Tinggi0:"); Serial.println(tinggi0); servo[0].attach(3); servo[1].attach(4); servo[2].attach(5); servo[3].attach(6); servo[4].attach(7); servo[5].attach(8); servo[6].attach(2); servo[7].attach(A3); servo[8].attach(12); servo[9].attach(11); servo[10].attach(10); servo[11].attach(9); for (int i =0; i  2 * jointlength) lresult =2 * jointlength; // Jika panjang kaki lebih tinggi dari kemungkinan beberapa fungsi berikut menjadi tidak stabil return lresult;}float legright(float dx, float dz, float gamma) { float lresult =sqrt(pow(leglength0 - (dz / cos(gamma0 - gamma)), 2) + pow(dx, 2)); if (lresult> 2 * jointlength) lresult =2 * jointlength; // Jika panjang kaki lebih tinggi dari yang mungkin, beberapa fungsi berikut menjadi tidak stabil return lresult;}// Beta, the "knee joint"float beta(float leg) { float bresult =2 * acos(leg / (2 * jointlength)); return bresult;}// Alfa, yang lain hip servofloat alfafront(float dx, float beta, float leg) { float aresult =(beta / 2) - asin(dx / leg); return aresult;}float alfarear(float dx, float beta, float leg) { float aresult =(beta / 2) + asin(dx / leg); return aresult;}// Memberikan posisi kaki berdasarkan sudut belok f (dalam derajat). Stepturn digunakan untuk membuat nilai footposvoid turnpos(float f) { stepturn[0] =bodyradius * cos(phi0 + (f * pi / 180)) - leng / 2; stepturn[1] =bodyradius * sin(phi0 + (f * pi / 180)) - lebar / 2; stepturn[3] =bodyradius * cos(pi - phi0 + (f * pi / 180)) + leng / 2; stepturn[4] =bodyradius * sin(pi - phi0 + (f * pi / 180)) - lebar / 2; stepturn[6] =bodyradius * cos(2 * pi - phi0 + (f * pi / 180)) - leng / 2; stepturn[7] =bodyradius * sin(2 * pi - phi0 + (f * pi / 180)) + lebar / 2; stepturn[9] =bodyradius * cos(pi + phi0 + (f * pi / 180)) + leng / 2; stepturn[10] =bodyradius * sin(pi + phi0 + (f * pi / 180)) + width / 2;}// Menghitung posisi servo (dalam derajat) berdasarkan sudut sambungan dalam fungsi di atasvoid servopos() { untuk ( int i =0; i <12; i++) { servodegnew[i] =servodeg0[i] + servodir[i] * (jointangle[i] - jointangle0[i]) * 180 / pi; }}// Algoritme servo untuk gerakan yang dikontrol dan disinkronkan. Semua servo harus mencapai posisi akhir mereka di akhir timestepvoid servomove() { int servotimeold[servonum]; // Variabel lokal untuk waktu posisi servo terakhir int servotimenew[servonum]; // Variabel lokal untuk waktu saat ini ketika servo i diposisikan int SERVOPULSE[servonum]; // Variabel lokal untuk menulis ke driver servo float servodeg[servonum]; // Variabel lokal untuk posisi servo saat ini float servodegspeed[servonum]; // Variabel lokal untuk penurunan kecepatan servo yang diinginkan per milidetik waktu mulai lama yang tidak ditandatangani =milis(); // Stempel waktu awal algoritma unsigned long timenow =starttime; // Menyetel ulang waktu sekarang untuk (int i =0; i   

Suku cadang dan penutup khusus

The body of the robot. Carries the PCB and battery.At each end of body, like bumper on a car. You should have two of these.Supports the hip joint. Print four of theseThe upper limb of leg. Print four.The lower limb (or foot). Print four.All parts put together. Not for printing.

Skema

This is a Fritzing file to allow PCB production. Use it to order from Fritzing themselves or export to a suitable format an manufacture elsewhere. kittybotmini_XKZYltyQVJ.fzz

Proses manufaktur

  1. Windows 10 IoT Core pada Raspberry Pi 2 – Data Adafruit Sensor
  2. Jam dinding sederhana menggunakan Adafruit 1/4 60 Ring Neopixel
  3. UnifiedWater v1
  4. Avenger Rakitan:Helm Iron Man &Reaktor Busur
  5. Kotak Suara Seluler
  6. Intel Arduino 101 BLE Blynk Tank
  7. Arduino101 / tinyTILE BLE:Kacamata Mencocokkan
  8. Whac-A-Mole (Edisi Tombol)
  9. Jukebox Modern
  10. Arduino Apple Watch