Robot yang dikarantina

Di sini baru-baru ini orang-orang di Habré berbicara tentang Flipper dan debugging pada osiloskop melalui komunikasi video.



Dan ini, tentu saja, adalah kemenangan di luar persaingan! Namun kami juga memiliki pengalaman menarik saat men-debug robot yang terletak 2000 km dari kami di garasi kapal di pantai Norwegia. Di bawah potongan, sebuah cerita tentang bagaimana kami membuat visi dan mengatur "otak awan" untuk robot selama karantina dari jarak jauh:







Pada musim semi, kami membuat prototipe dari seluruh sistem kendali jarak jauh untuk streaming 3D dan pelatihan oleh robot pada YuMi dua tangan dan bertemu dengan perusahaan Norwegia yang solusinya sangat berguna bagi kami untuk menyiarkan aliran 3D kamera Realsense - Aivero. Jadi setelah masa kerja yang sulit, rencananya tampak tidak berawan: terbang ke Italia selama sebulan musim dingin bersama keluarga saya, dari sana untuk melakukan perjalanan ke pameran robotika di Eropa dan mengakhiri semuanya dengan berhenti selama beberapa minggu di kota dengan fjord yang indah di sekitarnya - Stavanger, tempat mendiskusikan integrasi 3D codec ke dalam sistem kami dan mencoba meyakinkan Aivero untuk menempatkan beberapa robot bersama-sama.



Apa yang salah dalam rencana luar biasa ini ...



Duduk di karantina selama 2 minggu setelah kembali (bukan tanpa insiden) dari penguncian Italia, saya harus membuang debu dari bahasa Inggris lisan dan tulisan saya dan melaksanakan bagian kedua dari rencana yang sudah ada di Zoom, dan bukan di rombongan fjord.



Meskipun, begini cara melihatnya. Karantina memaksa banyak orang untuk secara serius mulai mengerjakan kemungkinan cara untuk mengotomatiskan di mana tidak sulit untuk menggantikan seseorang. Terlebih lagi untuk negara-negara Barat, di mana upah minimum di atas 1500 Euro, di mana robotisasi tenaga kerja manual masih relevan bahkan tanpa situasi epidemiologis saat ini.



Kami menghubungkan robot yang berbeda



Izinkan saya mengingatkan Anda bahwa kami telah melatih robot menggunakan catatan kendali jarak jauh. Itu. robot terhubung ke Internet, ke cloud kami dan mulai mengirimkan gambar 3D dan pembacaan sensor. Menerima perintah kembali dan menjalankannya. Dalam logika ini, tugas kita adalah mengajarkan prosesor ML untuk berperilaku seperti operator. 3D diperlukan untuk merender pemandangan dalam realitas virtual bagi operator. Ini nyaman, dan ML menjadi jauh lebih akurat saat menangkap objek saat ada peta kedalaman.



Sesuai rencana, kita dapat menghubungkan berbagai robot ke cloud kita, tetapi membuat sendiri semua variasi itu adalah jalan yang sulit. Kami fokus pada otak mereka, belajar.

Hasilnya, kami setuju dengan Aivero untuk membuat robot satu tangan universal dengan mata 3D dengan kekuatan mereka, sebut saja "Unit", dan semua Robotika awan diserahkan kepada kami untuk melakukannya.



Prioritasnya adalah kesederhanaan dan biaya solusi untuk pelanggan akhir. Dan, tentu saja, keserbagunaan. Kami ingin meminimalkan ambang pintu masuk untuk mengotomatiskan pekerjaan manual sederhana. Idealnya, bahkan pemilik bisnis kecil tanpa keahlian khusus dapat membeli atau menyewa “Unit” kami, meletakkannya di tempat kerja dan menjalankannya.



Kami berpikir selama beberapa minggu, menguji hipotesis selama beberapa bulan dan inilah yang terjadi (versi dengan Jetson AGX di pangkalan dan kamera ikhtisar yang berbeda dari pada judul satu):







Dan sorotan yang lebih dekat:







Komposisi:



  • Jetson NX
  • 2 kamera 3D Realsense (satu tinjauan, yang lainnya untuk area kerja)
  • menyoroti
  • pompa vakum jika diperlukan
  • lengan robotik (Eva / UR / ABB YuMi) dengan vakum atau pegangan mekanis
  • Internet WiFi atau kabel






Dudukan teleskopik dengan kalkulator dan pompa vakum di pangkalan ditempatkan di sebelah area kerja robot, terhubung ke Internet (misalnya, melalui kode QR ke WiFi), dan segera mulai menyelesaikan tugas dengan sedikit atau tanpa konfigurasi.



Di sini Anda dapat langsung memperkirakan biayanya. Lengan robot paling terjangkau Eva adalah 8000 Euro (tidak disediakan di Rusia), dan UR10 sudah akan menelan biaya hampir 50.000 Euro, tetapi di sini perlu dicatat bahwa UR mengklaim keandalan yang jauh lebih besar, jadi mungkin tidak jauh lebih mahal dalam jangka panjang. Dan harganya semakin murah belakangan ini. Paket lainnya berharga sekitar 2.000 Euro.



ABB YuMi IRB 14050



Kami sebelumnya telah berurusan dengan YuMi dua tangan , tetapi di sini kami mencoba versi baru IRB14050, yang pada dasarnya hanya satu tangan yang terputus.





Secara singkat apa yang saya suka:



  • pengerjaan presisi dan mekanis
  • sensitivitas tinggi terhadap benturan dan peredam pada sendi


dan tidak menyukainya:



  • sulit untuk menyelesaikan tabrakan dan situasi darurat dari jarak jauh
  • Gerakan sudut kecil pada beberapa sambungan membuat lintasan agak sulit untuk gerakan yang tampaknya sederhana, yang tidak sulit untuk kinematika lengan berkoordinasi 6 lainnya
  • daya dukung yang rendah dibandingkan dengan analog
  • tambahan membutuhkan pengunggahan (dan terkadang debugging) program dalam bahasa pemrogramannya sendiri dari ABB, yang memproses perintah TCP dari komputer


Dan tidak sebentar.



Di sinilah kami menghabiskan paling banyak waktu. Resep untuk meluncurkan sama sekali tidak sederhana:



  1. Ambil mesin Windows karena jika tidak, Anda tidak akan dapat menginstal RobotStudio ABB.
  2. https://github.com/BerkeleyAutomation/yumipy RAPID ( ABB) ( , ), python API YuMi IRB 14050 IRB 14000.
  3. , IRB14000 urdf ROS moveit. IRB14000, IRB14050.

  4. ROS moveit Python API .
  5. FlexPendant for OmniCore, .


Tapi, tentu saja, ini hanya kemungkinan lintasan bagaimana YuMi bisa dibuat untuk taat, dan semua hal kecil yang bisa membuat Anda tersandung tidak lagi disebutkan di sini, tentu saja.



Eva







Secara singkat apa yang kami suka:



  • Tentu saja harganya
  • API sederhana dan ringkas


Dan kekurangannya:



  • tidak ada deteksi tabrakan (diumumkan pada rilis musim gugur)
  • akurasi posisi - pabrikan masih perlu mengerjakannya, tetapi kami sudah cukup



Tentu saja, kemudahan manajemen memikat:



pip install evasdk 


dan



import evasdk
eva = evasdk.Eva(host_ip, token)

with eva.lock():
    eva.control_wait_for_ready()
    eva.control_go_to([0, 0, 0, 0, 0, 0])


Dan lengan robotnya keluar! dan tampil.



Tidak, tentu saja, kemudian kami dapat meluap log di pengontrol tangan, setelah itu berhenti mendengarkan. Tetapi kita harus memberi penghormatan kepada pabrikan - penciptaan masalah dalam gita mereka sudah cukup bagi mereka untuk memahami alasannya (dan menyebabkan beberapa panggilan telepon dengan seluruh dewan tentang masalah kita).



Dan secara umum, Automata (produser Eva) hebat! Saya berharap mereka dapat tumbuh dan berkembang di pasar robotika lebih lanjut, membuat robot jauh lebih terjangkau dan lebih mudah daripada sekarang.



UR





Menyukai:



  • mekanik yang sangat baik dan presisi tinggi

  • rentang besar sudut sambungan, yang membuat perencanaan lintasan jauh lebih mudah

  • tabrakan dapat diselesaikan di VNC Viewer dengan menghubungkan ke komputer robot

  • debug dengan baik dalam infrastruktur ROS


Minus:



  • OS usang pada pengontrol UR, selama sekitar satu setengah tahun tidak ada pembaruan keamanan
  • masih bukan cara komunikasi yang paling modern, meskipun itu tercakup dengan baik oleh perpustakaan terbuka yang tersedia


Dari python, lengan robotik tersedia dalam dua skenario utama:



  1. Instal https://github.com/SintefManufacturing/python-urx dan nikmati. Daftarnya sedikit lebih panjang dari pada kasus evasdk, jadi saya tidak akan memberikannya. Ada juga masalah kompatibilitas yang diketahui dengan lengan robot baru, dilihat dari pelacak masalah. Sesuatu yang juga harus diperbaiki sendiri, tk. tidak semua mode gerakan diimplementasikan di perpustakaan, tetapi ini hanyalah kehalusan.

  2. “ROS-” (https://github.com/ros-industrial/universal_robot). , ROS , : UR moveit ( ROS, , , ).



Kami mencoba menghindari ROS karena bagian dari fungsinya (perantara pesan) dilakukan oleh rabbitmq di sistem kami, dan ada komplikasi serius dari tumpukan teknologi yang digunakan. Jadi untuk kasus ketika Anda perlu melewati rintangan, kami merangkum ROS menjadi layanan mikro di sisi server.



Sekarang triknya!



Untuk Anda pahami, UR adalah:







Yaitu. bersin apapun diperbolehkan pada panel sentuh robot. Dan untuk menyiksa rekan kami dari Aivero tidak 5 kali sehari, dengan mengemudi ke garasi kapal, Anda harus masuk ke sana dari jarak jauh.



Ternyata pengontrol UR telah menginstal linux (dan omong-omong, bukan prosesor x86 terlemah).

Kami mengetik ssh IP ... user: root, password: easybot.



Dan Anda berada di Debian Wheezy.



Jadi kami mengambil dan menginstal server VNC dan menemukan diri kami master robot yang lengkap! (Di sini hanya perlu dicatat bahwa Wheezy belum diperbarui selama 2 tahun dan Anda tidak akan dapat begitu saja mengambil dan menginstal server vnc karena register yang sudah usang. Tetapi ada tautan ke "file ajaib" yang memungkinkan Anda melakukan ini).



Omong-omong, Robot Universal, ketika kami menunjukkan demo kami kepada mereka, mengatakan bahwa kendali jarak jauh seperti itu memerlukan prosedur sertifikasi keamanan baru. Cukup adil. Sangat aneh bagaimana Smart Robotics melakukannya dengan ini secara umum. Saya tidak dapat membayangkan bahwa variabel penargetan dari computer vision bisa 100% aman untuk orang lain.



Saatnya mengajari robot untuk mengambil kotak



Izinkan saya mengingatkan Anda bahwa kami menunjukkan apa yang seharusnya dilakukan robot di VR:





Itu. untuk setiap gerakan kami telah merekam bagaimana pemandangan itu terlihat dan jenis perintahnya, misalnya:



{“op": "pickup_putdown_box", 
"pos1": [441.1884, -112.833069, 151.29303],
"pos2": [388.1267, 91.0179138, 114.847595],
"rot1": [[0.9954941, 0.06585537, -0.06822499], [0.0917332, -0.851038456, 0.517028868], [-0.0240128487, -0.52095747, -0.85324496]],
"rot2": [[0.992139041, 0.102700718, -0.07150351], [0.100485876, -0.99436, -0.0339238755], [-0.0745842, 0.026472155, -0.996863365]],
"calibration": [[-0.01462146, 0.9814359, -0.191232175, 551.115051], [0.9987302, 0.0051134224, -0.0501191653, -6.613386], [-0.0482108966, -0.191722155, -0.9802644, 771.933167]],
"box": [[474.331482, -180.079529, 114.765076], [471.436157, -48.88102, 188.729553], [411.868164, -180.27713, 112.670532], [476.105164, -148.54512, 58.89856]],
"source": "operator"}


Secara umum, ini cukup bagi kita untuk melatih kisi-kisi untuk menentukan kotak pembatas suatu objek di ruang angkasa dan di mana harus mengambilnya.



Jadi kami duduk selama setengah jam dan menunjukkan robot bagaimana menyulap dengan 4 jenis kotak, kami mendapatkan sekitar 100 contoh. Kita tekan tombol ajaib ... yah, lebih tepatnya sudo buruh pelabuhan run -e INPUT_S3_FOLDER = ... OUTPUT_S3_FOLDER = ... rembrain / train_all_stages: dev . Dan ayo tidur. Di pagi hari, buruh pelabuhan mengirim pesan ke prosesor ML untuk memperbarui bobot, dan dengan napas tertahan (meskipun robot diberi pengujian gratis oleh produsen, biayanya sangat mahal), kami meluncurkan dan ...







OOPS ... Saya



harus mengatakan bahwa tidak ada satu robot pun yang dirugikan selama debugging. Saya pikir semata-mata karena keberuntungan yang luar biasa.



Suatu hari putra saya yang berusia 2 tahun datang dan memutuskan untuk bermain dengan pelacak VR. Dia naik ke kursi, mengambilnya dari ambang jendela ... Dan mengirim UR10 dalam perjalanan yang tak terbayangkan, mendorong bilah kamera ke samping dan menempatkan lengan robot itu ke posisi yang agak rumit. Jadi saya harus menambahkan beberapa sekering ke kontrol. Dan kamera observasi kedua, tk. jika tidak, kadang-kadang tidak terlihat ke mana tangan itu pergi dan apakah mungkin untuk memindahkannya.



Dan jika ini bukan lelucon, maka akurasi pendeteksian kotak sederhana tersebut dalam pengujian kami melebihi 99,5% bahkan dengan sampel pelatihan kecil yang terdiri dari beberapa ratus contoh. Sumber utama masalah di sini bukan lagi computer vision, tetapi kesulitan terkait: misalnya, beberapa anomali dalam pengaturan awal objek, atau gangguan yang tidak disengaja pada frame. Tapi kemudian kami membuat sistem pembelajaran dengan operator dalam satu putaran untuk siap menghadapi apa pun, memecahkan masalah tanpa melibatkan orang secara langsung di tempat.



Satu lagi algoritme, tentang keberadaan saya di backend dan ketinggalan di antarmuka UI




bin-picking «bin-stuffing», .. . — . , .



, , . . .. , , . , .



, . , ( , ). - :







, .. , :







Backend



, websocket-, :







, Coordinator . , Rabbit mongoDB, , ( ). , .



, , backend- , ML .



UI



. , UI , . .



AWS console, Yandex console, , , , . .



, .



, -> -> , , , -> , .







, “”. , UX . — . UI robot Console .



Apa berikutnya



Kami merekam video pemasangan dan penyiapan robot dalam 2 menit, menyiapkan bahan untuk promosi pada beberapa jenis tugas.



Pada saat yang sama, kami mencari aplikasi praktis baru selain bin-picking yang populer dan mudah dipahami (secara pribadi, saya bermimpi menggunakan robot di lokasi konstruksi).



Saya pikir dalam beberapa bulan kita akan menjadi lebih berpakaian lebih baik, belajar menjual solusi kita untuk aplikasi yang paling beragam dan akan membangun cloud brain brick demi bata dalam lingkungan yang sangat kompetitif dari perusahaan yang membuat robot pintar, yang merupakan kabar baik.



Jadi karantina bagus!



All Articles