Pada saat penulisan ini, perkiraan biaya akhir produk adalah ~ 70.000 rubel. Jika Anda memiliki printer 3D, maka Anda dapat dengan aman mengurangi 20.000 rubel darinya. Jika tidak ada printer, maka penampilannya akan menjadi bonus yang menyenangkan. Saya akan menjelaskan semua pengeluaran dengan asumsi bahwa kita tidak punya apa-apa selain uang.
Seperti apa hasilnya:
Perlu juga dicatat bahwa untuk memprogram tangan, kita memerlukan komputer dengan OS Linux yang terinstal (saya menggunakan Ubuntu 18.04) dan kerangka kerja ROS (saya menggunakan Melodic).
Mungkin timbul pertanyaan "mengapa 70K rubel itu murah?"
Saya menjawab.Awalnya, saya tidak mau repot membuat lengan robotik dan berpikir untuk hanya membeli sesuatu yang sederhana, tetapi cukup fungsional untuk merakitnya.
Apa kriteria untuk fungsionalitas dan kesederhanaan minimum yang dapat diterima untuk saya (yaitu mengapa manipulator dari aliexpress TIDAK cocok) - dapat didiskusikan di komentar agar tidak membebani mereka yang jelas dan / atau tidak tertarik.
Solusi kompetitif di pasar
Namun, saya akan menjelaskan secara singkat contoh dari apa yang saya pertimbangkan di pasar:
1) top3dshop.ru/robots/manipulators/dobot-magician-basic.html
176.000 rubel. Anda dapat membeli DOBOT tidak hanya di toko ini, tetapi biasanya harganya lebih mahal. Tentunya ada peluang untuk menemukannya di tempat yang lebih murah, tetapi harganya masih jauh lebih mahal daripada 70.000 rubel.
2) robotbaza.ru/product/robot-manipulyator-widowx-robotic-arm-mark-ii
280.000 rubel. Bahkan lebih mahal. Secara umum, manipulator dari TossenRobotics langsung dari pabrikan membutuhkan uang yang sangat masuk akal. Tetapi pengiriman ke Rusia (dan saya ada di sini) dari toko mereka tidak dapat dipesan.
Berjalan sedikit ke depan, saya akan mengatakan bahwa kami akan membuat salinan Kit Arm Robot PhantomX Pincher Mark II, yang diproduksi oleh TossenRobotics.
Secara total, kami melihat bahwa 70.000 rubel sama sekali tidak mahal.
Apa yang perlu kita beli?
Saya mengutip semua harga pada saat penulisan ini (Juli 2020):
1) 6 motor DYNAMIXEL AX-12A
Saya beli dengan harga 7200 rubel untuk 1 buah, tetapi tampaknya Anda dapat menemukannya dengan harga 6000 jika Anda benar-benar menginginkannya. Anggaplah Anda tidak beruntung dan Anda juga akan membeli seharga 7200.
Total biaya: 43.200 rubel
2) Printer 3D
Apa pun yang sederhana bisa dilakukan, Anda dapat menyimpan dalam 20.000 rubel.
3) Arduino Uno +
Biaya Perisai Daya : ~ 4.000 rubel
4) Opsional (tetapi saya sangat merekomendasikan): Catu daya laboratorium
Biaya: ~ 3.500 rubel
Majelis
Luar biasa! Kami membeli semua yang kami butuhkan (mungkin menunggu terlama untuk pengiriman motor, mereka diangkut ke saya selama lebih dari sebulan).
Apa berikutnya?
1) Mari mencetak bagian untuk manipulator pada printer 3D.
Unduh file STL dari sini
2) Menyatukannya dengan motor. Seharusnya tidak ada masalah dengan perakitan, tetapi jika tiba-tiba muncul, Anda dapat menggunakan instruksi ini.
Membuat model 3D
Kelas! Kami memiliki tangan, tetapi harus dikendalikan. Saya ingin memanfaatkan pencapaian umat manusia semaksimal mungkin, jadi mari kita instal ROS untuk diri kita sendiri .
Agar dapat bekerja sepenuhnya dengan manipulator di ROS, Anda harus menjadikannya model URDF . Kami akan membutuhkannya untuk mengontrol lengan robot menggunakan paket MoveIT!
Pada saat penulisan ini, build stabil terbaru tersedia untuk Melodic / Ubuntu 18.04, yang menjelaskan pilihan saya tentang versi sistem dan kerangka kerja di awal artikel.
Membangun model URDF adalah bagian yang agak melelahkan (dan, menurut saya, paling membosankan) dari proyek ini. Anda perlu menyelesaikan sedikit dengan file stl dari model komponen dan menghubungkannya bersama dalam file berbentuk XML, secara manual memilih koefisien perpindahan bagian yang benar terhadap satu sama lain.
Siapapun yang ingin dapat melakukan pekerjaan mereka sendiri, saya akan menyelamatkan semua orang dan hanya memberikan link ke file saya yang sudah selesai:
github.com/vladmiron85/armbot/blob/master/catkin_ws/src/armbot_description/urdf/base.urdf
Model ini belum menarik perangkat, bagaimanapun, untuk saat menangkap objek di dunia nyata, kita masih jauh. Untuk tugas lain, model ini sudah lebih dari cukup.
Modelnya terlihat seperti ini:
Dari file URDF yang dihasilkan, kita akan membuat MoveIT! Config, yang memungkinkan kita mensimulasikan gerakan manipulator dan mengirim perintah kontrol ke lengan robot yang sebenarnya.
Ada tutorial yang sangat bagus untuk membuat config ( link )
Di sini saya dapat menghemat waktu dan memberikan konfigurasi saya lagi. Itu ada di sini:
github.com/vladmiron85/armbot/tree/master/catkin_ws/src/armbot_moveit_config
Anda dapat mengunduh konfigurasi dari github dan menjalankannya dengan perintah berikut:
roslaunch armbot_moveit_config demo.launch
Sesuatu seperti ini akan mungkin untuk mengontrol robo-hand kita yang sebenarnya melalui rviz ketika kita menghubungkannya ke ROS:
Bagaimana dengan tangan aslinya?
Mari beralih dari dunia model 3D ke realitas pahit. Kami memiliki manipulator yang dirakit sebelumnya. Saya ingin memindahkannya entah bagaimana. Mari lakukan ini dengan Arduino UNO dan Power Shield. Mari
hubungkan motor pertama manipulator (yang ada di bawah) ke Power Shield dan catu daya sebagai berikut:
Ya, kami akan menghubungkan pin data motor langsung ke pin 3 dan 4 Arduino. Pembaca manual Dynamixel yang ingin tahu (ini dia ) akan segera melihat bahwa komunikasi dengan dunia luar di motor diatur menurut Half Duplex Asynchronous Serial Communication, yang berarti bahwa pin data digunakan segera untuk menerima perintah dan untuk merespons.
Secara default, di tingkat perangkat keras, Arduino hanya dapat bekerja dengan Full Duplex UART. Masalah ini dapat diatasi dengan menggunakan perpustakaan Soft Serial, yang akan kita lakukan. Ini adalah penggunaan mode Half Duplex yang menjelaskan koneksi pin data motor ke 3 dan 4 pin pelindung pada saat yang bersamaan.
Selain komunikasi setengah dupleks, bekerja dengan Dynamixel melalui Arduino memiliki beberapa poin menarik yang mungkin tidak sepenuhnya terlihat jelas sejak awal. Mari kita satukan semuanya.
Bagaimana cara memindahkan manipulator kami?
1) Pertama, unduh perpustakaan yang diperlukan. Ini disebut ardyno dan dapat diperoleh melalui Manajer Perpustakaan Arduino, atau di sini ( tautan )
2) Secara default, Dynamixel AX-12A ingin bekerja dengan baud rate = 1000000. Namun, Antarmuka Serial Perangkat Lunak tidak akan mendukung kecepatan ini, jadi baud rate harus dikurangi menjadi 57600. Jadi, awal file dengan program Anda akan terlihat seperti ini:
#include "DynamixelMotor.h"
// communication baudrate
const long unsigned int baudrate = 57600;
SoftwareDynamixelInterface interface(3, 4);
3) Semua motor kita terhubung secara seri satu sama lain. Jadi, untuk mengatasinya masing-masing, Anda perlu tahu ID-nya? Ini memang masalahnya, objek DynamixelMotor menerima dua parameter selama inisialisasi: antarmuka (sama untuk semua orang, kami mengaturnya di paragraf sebelumnya) dan id (setiap orang pasti berbeda, jika tidak perilaku manipulator akan sangat aneh)
DynamixelMotor motor(interface, id);
Id untuk setiap motor harus disetel secara manual. Tampaknya, jika dihubungkan secara seri, mereka dapat menghitung sendiri menggunakan angka dari 1 hingga 6, tetapi ini tidak tersedia. Oleh karena itu, Anda perlu menghubungkan setiap motor secara terpisah ke Arduino (memutus dari yang lain) dan menjalankan program berikut:
#include "DynamixelMotor.h"
// communication baudrate
const long unsigned int baudrate = 57600;
// id of the motor
const uint8_t id=1;
SoftwareDynamixelInterface interface(3, 4);
DynamixelMotor motor(interface, id);
void setup()
{
interface.begin(baudrate);
delay(100);
// check if we can communicate with the motor
// if not, we turn the led on and stop here
uint8_t status=motor.init();
if(status!=DYN_STATUS_OK)
{
pinMode(LED_BUILTIN, OUTPUT);
digitalWrite(LED_BUILTIN, HIGH);
while(1);
}
motor.changeId(NEW_ID);
}
void loop()
{}
Awalnya, semua motor memiliki id = 1, itulah sebabnya kami tunjukkan di atas
const uint8_t id=1;
NEW_ID tiap motor harus diganti angka 1 sd 6 (ya ok motor dulu boleh dibiarkan saja). Kami menomori mereka secara berurutan dari bawah ke atas.
Hore! kami memiliki manipulator lengkap yang dapat kami pindahkan, dan kami juga memiliki model 3D untuk itu. Anda dapat menggunakan ROS dan memprogram semua hal keren. Tapi ini sudah menjadi cerita untuk artikel terpisah (dan bukan satu). Cerita ini telah berakhir, terima kasih atas perhatiannya!