Daftar Isi:

Localino Melacak Roomba IRobot, Memetakan Lingkungan dan Memungkinkan Kontrol.: 4 Langkah
Localino Melacak Roomba IRobot, Memetakan Lingkungan dan Memungkinkan Kontrol.: 4 Langkah

Video: Localino Melacak Roomba IRobot, Memetakan Lingkungan dan Memungkinkan Kontrol.: 4 Langkah

Video: Localino Melacak Roomba IRobot, Memetakan Lingkungan dan Memungkinkan Kontrol.: 4 Langkah
Video: 30 COOLEST Tech Gadgets you’ll NEED in 2024 – MUST HAVE 2024, November
Anonim
Image
Image

Untuk membangun jembatan WiFi-UART, Anda dapat melihat repo github ini:

Ini memiliki dasar yang bagus untuk memulai. Pastikan Anda membaca panduannya dengan baik, karena VCC Roomba saat pengisian daya meningkat hingga 20 Volt! Jika Anda menambahkan ESP8266 tanpa konverter uang yang tepat yang bekerja bahkan hingga 20V dan konversi turun ke 3.3V, Anda akan merusak ESP Anda.

Pastikan juga untuk menggunakan pemindah level (misalnya menggunakan pembagi tegangan) untuk menggeser level logika UART 5V dari Roomba ke 3.3V, yang digunakan oleh ESP.

Detail penting lainnya adalah, bahwa konverter buck harus memiliki 300mA, tetapi tidak jauh lebih sedikit atau lebih banyak (tergantung pada konverter buck itu sendiri). Ada beberapa di luar sana yang dapat melakukan lebih banyak arus, tetapi menyebabkan Roomba mogok karena mereka menarik terlalu banyak arus saat start-up. Kami menemukan bahwa Pololu 3.3V, 300mA Step-Down Voltage Regulator (D24V3F3) bekerja dengan sempurna. Versi alternatif yang memiliki 500mA / 600mA menyebabkan antarmuka UART Roomba mogok. Pada dasarnya Roomba bereaksi pada penekanan tombol, tetapi tidak pada perintah melalui antarmuka UART. Setelah ini terjadi, kami harus melepas baterai Roomba dan menyalakan ulang Roomba dengan jembatan WiFi-UART terpasang. Namun, hanya D24V3F3 yang bekerja dengan baik.

Selain detail teknis itu, Anda harus menambahkan perintah tambahan ke kode, yang dapat Anda temukan di spesifikasi antarmuka terbuka Roomba. Anda perlu menambahkan semua perintah yang Anda ingin agar roomba Anda bereaksi (misalnya, mundur, maju, kecepatan, dll.).

contoh dalam arduino IDE:

void goForward() { char c = {137, 0x00, 0xc8, 0x80, 0x00}; // 0x00c8 == 200 Serial.print(c); }

void goBackward() { char c = {137, 0xff, 0x38, 0x80, 0x00}; // 0xff38 == -200 Serial.print(c); }

void spinLeft() { char c = {137, 0x00, 0xc8, 0x00, 0x01}; Serial.print(c); }

void spinRight() { char c = {137, 0x00, 0xc8, 0xff, 0xff}; Serial.print(c); }

jika Anda menulis dalam lua terlihat sedikit berbeda, contoh untuk belok KIRI akan terlihat seperti ini:

if(_GET.pin == "LEFT")lalu print ('\137'); --VOR

tmr.delay(100);

cetak('\00'); -- Kecepatan = 200 = 0x00C8 -> 0 dan 200

tmr.delay(100);

cetak ('\200'); -- Kecepatan

tmr.delay(100);

cetak('\254'); -- Jari-jari = 500 = 0x01F4 = 0x01 0xF4 = 1 244

tmr.delay(100);

cetak('\12'); -- Berbelok

akhir

Pastikan Anda harus memperbaiki deskripsi antarmuka terbuka untuk Roomba Anda. Setidaknya ada dua spesifikasi antarmuka terbuka yang tersedia.

untuk seri Roomba 5xx:

untuk seri Roomba 6xx:

Setelah Anda membangun jembatan WiFi-UART dan menguji perintah, Anda membuat langkah besar lebih jauh. Video ini menunjukkan bahwa aplikasi dan pendekatan bekerja. Kami agak malas, antarmuka web kehilangan semua perintah kontrol lainnya, seperti maju, mundur, kecepatan, kanan, kiri, dan sebagainya, tetapi Anda dapat mengeluarkan perintah melalui http. Bagaimanapun, ini hanya demonstrasi bahwa remote control Roomba bekerja dengan perangkat keras dan perangkat lunak yang mudah menggunakan ESP8266.

Sekarang karena Anda dapat mengontrol Roomba Anda dari jarak jauh dari aplikasi PC, satu-satunya hal yang hilang adalah lokalisasi dalam ruangan. Kami membutuhkan ini untuk menutup loop umpan balik, karena tujuan kami adalah mengarahkan robot ke arah tertentu. Mari kita lakukan.

Langkah 3: Siapkan Sistem Lokalisasi Dalam Ruangan Anda

Untuk menutup loop umpan balik, kami menggunakan sistem lokalisasi dalam ruangan. Kami menggunakan Localino untuk ini. Sistem Localino terdiri dari "jangkar" dan "tag". Jangkar diposisikan di lokasi tetap di dalam ruangan dan menemukan posisi tag bergerak (yang ditempatkan di Roomba). Pemrosesan lokasi dilakukan dalam aplikasi PC. Itu adalah keuntungan besar, karena Anda juga dapat mengontrol Roomba dari PC yang sama! Ada kode sumber gratis yang tersedia dari situs web Localino, ditulis dengan python dan ada juga aliran waktu nyata yang menawarkan koordinat XYZ dari tag. Aliran data tersedia melalui jaringan UDP, tetapi Anda juga dapat menambahkan MQTT atau hal-hal mewah lainnya yang Anda suka. Jika Anda tahu Python, ada banyak perpustakaan yang membantu Anda.

Dalam video ini, lokalisasi Roomba ditunjukkan. Oleh karena itu kami memiliki 4 penyiapan jangkar di ruangan di lokasi tetap, yang memungkinkan pemosisian 3D Roomba. Secara umum, kami hanya membutuhkan 3 jangkar, karena Roomba mungkin tidak akan bergerak di sumbu Z, oleh karena itu 2D sudah cukup. Tetapi karena jangkar terletak pada ketinggian colokan utama AC (yang kira-kira 30cm di atas tanah), pengaturan 2D akan menyebabkan sedikit kesalahan estimasi posisi. Jadi kami memutuskan untuk memiliki 4 jangkar dan melokalisasi dalam 3D.

Sekarang karena kita memiliki posisi Roomba, langkah selanjutnya adalah mengontrol Roomba dari aplikasi yang sama. Idenya adalah untuk menggunakan kebenaran dasar dan memperkirakan jalur pembersihan yang sempurna untuk robot. Dengan menggunakan Localino kita dapat menutup loop umpan balik dan mengontrol robot dari aplikasi PC.

Pengaturan komentar

Posisikan jangkar Localino di dalam ruangan pada posisi x, y yang berbeda dan tiga di antaranya pada posisi z yang sama. Posisikan satu dari empat jangkar pada ketinggian yang berbeda z per ruangan. Pastikan ada cakupan yang baik dari tag Localino, yang akan bergerak dengan Roomba.

Semua jangkar memiliki ID jangkar unik, yang ditampilkan pada kode batang Localino dan dapat dibaca dengan alat "konfigurasi lokal".

Perhatikan posisi di X, Y, Z dan ID jangkar. Ini diperlukan untuk Perangkat Lunak Prosesor Localino dan harus diadaptasi di file “localino.ini” di folder “LocalinoProcessor”

Jangkar harus mengarah ke atas atau ke bawah di Z (ketika area XY tertutup), tetapi tidak ke arah area yang dicakup. Jangkar juga tidak boleh ditutupi oleh logam atau bahan pengganggu sinyal nirkabel lainnya. Jika ini tidak memungkinkan, juga harus ada celah udara tertentu antara bahan apa pun dan jangkar.

…akan datang lebih banyak lagi.

Langkah 4: Sesuaikan Perangkat Lunak Python

Pantau terus. akan datang lebih banyak lagi.

Direkomendasikan: