Ada dua langkah khusus utama untuk teknik yang digunakan oleh sebagian besar pengontrol printer open-source 3d:
- Bagilah setiap segmen kode linier menjadi banyak sub-bagian yang sangat kecil ("Segmentasi")
- Gunakan beberapa trigonometri dasar atau teorema pythagoras untuk mengikat posisi ekstruder dengan ketinggian kereta untuk masing-masing dari tiga menara ("Invers Kinematika") untuk menemukan posisi target untuk setiap segmen kecil
Kinematika terbalik ternyata sangat sederhana. Segitiga 90 derajat virtual dibangun dari dua panjang yang diketahui untuk dipecahkan untuk panjang ketiga yang tidak diketahui:
- Panjang lengan delta tetap adalah sisi miring dari segitiga
- Jarak horizontal antara sambungan kolom dan sambungan end-effector dihitung dari koordinat XY nozzle dan posisi tetap kolom, untuk menentukan panjang sisi bawah segitiga.
- Panjang sisi atas segitiga dihitung dari dua sebelumnya melalui teorema pythagoras
- Panjang sisi atas ditambahkan ke ketinggian nozzle Z untuk mendapatkan ketinggian carriage yang diperlukan
Saya pikir referensi open-source terbaik di sini adalah dokumen Rostock Kinematika Steve Grave, rev3 tersedia untuk diunduh di sini: https://groups.google.com/d/msg/deltabot/V6ATBdT43eU/jEORG_l3dTEJ
Beberapa gambar yang relevan:
Perhitungan kinematika terbalik ini dilakukan untuk setiap carriage untuk mendapatkan posisi target "carriage space", dan ini dilakukan untuk setiap sub-segmen jalur.
Hasil dari langkah-langkah ini kemudian dapat dimasukkan kembali ke dalam teknik interpolasi jalur linier standar untuk printer, di mana ia meluncurkan langkah-langkah dalam rasio yang diperlukan dan pada tingkat yang diperlukan untuk menghasilkan gerakan garis lurus yang diinginkan dan profil percepatan / kecepatan. (Bagaimana hal itu dilakukan adalah pertanyaan yang berbeda.)
Efek bersihnya adalah bahwa printer akan bergerak melalui serangkaian gerakan carriage "linear" kecil (linear yang berarti kecepatan * konstan berkenaan dengan waktu) yang secara kolektif memperkirakan gerakan kereta yang diperlukan melengkung (posisi kuadrat dengan memperhatikan waktu) yang diperlukan untuk menghasilkan langkah-efek akhir garis lurus.
* ( Kecepatan konstan sebelum perlambatan akselerasi diterapkan untuk mematuhi batasan dinamika. Lagi-lagi, itulah subjek pertanyaan yang berbeda.)
Segmentasi sangat mirip dengan proses menggunakan poligon untuk memperkirakan lingkaran. Jika segi cukup kecil, poligon adalah pendekatan yang baik. Tingkat Segmentasi yang lebih tinggi menghasilkan lebih sedikit kesalahan mengikuti jalur. Perbedaan konseptual utama antara busur lingkaran gambar dan jalur gerak Delta adalah bahwa apa yang disebut "busur segi-segi" dengan Delta Segmentation dibangun dalam koordinat tinggi-vs-waktu, bukan koordinat X-vs-Y yang akan Anda gunakan untuk menggambar lingkari layar komputer.
Sistem ini digunakan sebagian besar karena dukungan untuk printer gaya Delta pada awalnya melesat ke perencana gerakan berbasis GRBL yang ditulis khusus untuk jalur gerak garis lurus pada printer Cartesius. Itu adalah modifikasi yang relatif minimal untuk basis kode yang ada dibandingkan dengan menerapkan interpolasi jalur kuadratik penuh.
Teknik telah berkembang selama bertahun-tahun. Dan pendekatan alternatif sering digunakan: misalnya, garpu dc42 dari RepRapFirmware melakukan path-following yang tepat tanpa segmentasi, dengan menghitung ulang waktu yang tepat untuk langkah berikutnya setelah setiap langkah . Ini secara fungsional setara dengan mendekati lingkaran dengan jumlah segi poligon begitu tinggi sehingga setiap piksel pada layar mendapatkan segi sendiri . Jadi persis seakurat resolusi posisi motor memungkinkan. Kelemahannya adalah bahwa teknik bebas segmentasi ini cukup intensif-prosesor, sehingga hanya bekerja pada pengontrol yang relatif cepat, bukan Atmega AVR 8bit yang lebih lama yang menggerakkan sebagian besar printer konsumen / penggemar saat ini.
Teknik lain dimungkinkan. Literatur kontrol robotika akademik paralel adalah seluruh dunia lain dari teknik matematika dan kompleksitas untuk menghasilkan algoritma kontrol umum yang bekerja untuk berbagai mekanisme robot. Versi yang kami gunakan dalam printer 3d open-source cukup sederhana dan spesifik aplikasi dibandingkan.