Daftar Isi:

Robot Menggambar Haptic: 5 Langkah (dengan Gambar)
Robot Menggambar Haptic: 5 Langkah (dengan Gambar)

Video: Robot Menggambar Haptic: 5 Langkah (dengan Gambar)

Video: Robot Menggambar Haptic: 5 Langkah (dengan Gambar)
Video: Finger Painting Tipe Non Haptic 2024, Juli
Anonim

Sebagai bagian dari wisuda master saya di dep. Desain Industri di Universitas Eindhoven, saya membuat perangkat gambar haptic yang dapat digunakan untuk menavigasi mobil semi-otonom melalui lalu lintas. Antarmuka disebut scribble dan memungkinkan pengguna mengalami perlengkapan haptic dalam ruang 2D melalui gaya dan lokasi variabel. Meskipun konsepnya bukan tentang instruksi ini, Anda dapat membaca lebih lanjut tentang Scribble di sini:

Scribble menggunakan konfigurasi linkage 5 batang yang memungkinkannya untuk memindahkan dua derajat kebebasan lateral (DoF). Setup ini cukup populer di kalangan prototyper untuk membuat robot gambar, berikut beberapa contohnya:

www.projehocam.com/arduino-saati-yazan-kol-…

blogs.sap.com/2015/09/17/plot-clock-weathe…

www.heise.de/make/meldung/Sanduhr-2-0-als-Bausatz-im-heise-shop-erhaeltlich-3744205.html

Secara mekanis robot ini mudah dibuat. Mereka hanya membutuhkan sambungan dasar dan memiliki dua aktuator yang dapat membuat beberapa gerakan yang lancar. Struktur ini sangat ideal untuk desainer yang tertarik untuk membuat struktur bergerak. Namun karena saya bukan seorang insinyur mesin, saya menemukan bahwa kinematika cukup sulit untuk diterjemahkan ke dalam kode. Oleh karena itu saya akan memberikan kode Arduino dasar yang menggambarkan kinematika maju dan terbalik sehingga Anda dapat dengan mudah menggunakan ini dalam desain masa depan Anda!;-)

Silahkan download kode dibawah ini!

* EDIT: untuk proyek serupa, lihat https://haply.co *

Langkah 1: Membangun Struktur

Membangun Struktur
Membangun Struktur

Bergantung pada tujuan yang ada dalam pikiran Anda, pertama-tama Anda harus mendesain struktur 5-tautan. Pikirkan tentang pengukuran, aktuator yang ingin Anda gunakan, dan cara memasang sambungan untuk gerakan yang mulus.

Untuk prototipe saya, saya menjalankan kode saya pada Arduino DUE yang dikendalikan secara serial oleh program di Mac saya yang dibuat di Open Frameworks. Program ini menggunakan koneksi UDP untuk berkomunikasi dengan simulator mengemudi berbasis Unity 3D.

Prototipe Scribble menggunakan bantalan 5mm dan terbuat dari acrilic potong laser 5 mm. Aktuatornya adalah Mesin Haptik Frank van Valeknhoef yang memungkinkan aktuasi, pembacaan posisi, dan keluaran gaya variabel. Ini membuatnya ideal untuk properti haptic yang diinginkan Scribble. Lebih lanjut tentang aktuatornya dapat ditemukan di sini:

Langkah 2: Ketahui Nilai Perangkat Keras Anda

Ketahui Nilai Perangkat Keras Anda
Ketahui Nilai Perangkat Keras Anda

Kinematika maju didasarkan pada stasiun cuaca jam Plot oleh SAP:

Seperti yang ditunjukkan dalam konfigurasi mereka diperpanjang untuk lengan untuk memegang penanda untuk menggambar. Ini telah dihapus karena tidak ada gunanya untuk prototipe coretan. Periksa kode mereka jika Anda ingin menambahkan komponen ini kembali. Nama-nama dalam gambar tetap sama dalam konfigurasi saya.

Bergantung pada perangkat keras Anda, algoritme perlu mengetahui properti perangkat keras Anda:

int Aktuator kiri, Aktuator kanan; //sudut untuk menulis ke aktuator dalam deg, ubah ke float jika Anda menginginkan lebih banyak akurasi

int posX, posY; //koordinat lokasi pointer

Atur resolusi nilai input Anda

int posStepsX = 2000;

int posStepsY = 1000;

Dimensi pengaturan Anda, nilainya dalam mm (lihat gambar SAP)

#define L1 73 // panjang lengan motor, lihat gambar SAP (kiri dan kanan sama)

#define L2 95 // panjang perpanjangan lengan, lihat gambar SAP (kiri dan kanan sama)

#define rangeX 250 // jangkauan maksimum dalam arah X untuk pergerakan titik (dari kiri ke kanan, 0 - maxVal)

#define rangeY 165 // jangkauan maksimum dalam arah Y untuk titik untuk bergerak (dari 0 ke jangkauan maksimal sambil tetap berada di tengah)

#define originL 90 //offset jarak dari nilai X paling minumim ke posisi tengah aktuator

#define originR 145 //offset jarak dari nilai X paling minumim ke posisi tengah aktuator, dalam hal ini jarak antara kedua motor

Langkah 3: Kinematika Maju

Kinematika Maju
Kinematika Maju

Seperti disebutkan pada langkah sebelumnya, kinematika maju didasarkan pada algoritma SAP.

Kekosongan memperbarui nilai sudut yang diinginkan aktuator kiri dan kanan yang ditentukan sebelumnya. Berdasarkan nilai X dan Y yang dicolokkan maka akan menghitung sudut siku-siku untuk mendapatkan penunjuk ke posisi ini.

void set_XY(double Tx, double Ty) //masukkan nilai X dan Y Anda{ // beberapa nilai yang kita perlukan tetapi tidak ingin disimpan untuk long double dx, dy, c, a1, a2, Hx, Hy; //petakan resolusi inpit ke kisaran konfigurasi Anda di dunia nyata int realX = map(Tx, 0, posStepsX, 0, rangeX); //swap if mapping if inverse int realY = map(Ty, posStepsX, 0, 0, rangeY); //menukar jika pemetaan jika terbalik // menghitung sudut untuk aktuator kiri // cartesian dx/dy dx = realX - originL; //sertakan offset dy = realY; // panjang kutub (c) dan sudut (a1) c = kuadrat(dx * dx + dy * dy); a1 = atan2(dy, dx); a2 = return_angle(L1, L2, c); kiriAktuator = lantai(((M_PI - (a2 + a1)) * 4068) / 71); //sudut akhir dan konversi dari rad ke deg // sudut kalk untuk aktuator kanan dx = realX - originR; //sertakan offset dy = realY; c = kuadrat(dx * dx + dy * dy); a1 = atan2(dy, dx); a2 = return_angle(L1, L2, c); rightActuator = lantai(((a1 - a2) * 4068) / 71); //sudut akhir dan konversi dari rad ke deg }

Kekosongan tambahan untuk perhitungan sudut:

double return_angle(double a, double b, double c) { // aturan kosinus untuk sudut antara c dan return acos((a * a + c * c - b * b) / (2 * a * c)); }

Langkah 4: Kinematika Terbalik

Kinematika Terbalik
Kinematika Terbalik

Kinematika terbalik bekerja sebaliknya. Anda memasang rotasi aktuator Anda dalam derajat dan kekosongan akan memperbarui posisi yang ditentukan sebelumnya.

Harap dicatat bahwa Anda memerlukan aktuator atau sensor terpisah yang dapat membaca sudut lengan. Dalam kasus saya, saya menggunakan aktuator yang dapat membaca dan menulis posisinya secara bersamaan. Jangan ragu untuk bereksperimen dengan ini dan pertimbangkan untuk menambahkan semacam kalibrasi sehingga Anda yakin sudut Anda terbaca dengan benar.

Direkomendasikan: