Walabot Touchpad
Walabot Touchpad Solusi sederhana yang dapat mengubah permukaan apa pun menjadi touchpad untuk laptop Anda. Bayangkan menggunakan buku, meja, atau dinding sebagai touchpad. Dikombinasikan dengan teknologi proyektor, Anda dapat mereplikasi layar sentuh di permukaan apa pun.
Proyek ini bertujuan untuk menghadirkan utilitas ini dan kemudahan penggunaan melalui protokol soket sederhana dan Walabot, perangkat pencitraan 3D tingkat konsumen.
Karena saya ingin solusi ini praktis dalam penggunaan sehari-hari dan dapat diakses secara universal, jadi saya memilih pengaturan yang paling tidak menggunakan perangkat keras. Untuk menyeimbangkan kemudahan penyiapan dengan akurasi pencitraan, saya menerapkan loop konfigurasi dasar yang berjalan setiap kali Walabot dimulai.
Tutorial ini mencakup prosedur penyiapan untuk Raspberry Pi dan kontrol kursor pada komputer host.
Bagaimana Cara Kerjanya?
Proyek ini bergantung pada klien Raspberry Pi 3 yang mengambil pembacaan dari sensor Walabot Creator (terima kasih Walabot!), dan mesin host yang dalam hal ini adalah laptop saya.
Alur pengguna secara umum adalah sebagai berikut:
- Raspberry Pi mengirimkan sinyal pemicu ke Walabot
- Walabot mendeteksi target dan menemukan target
- Raspberry Pi mengambil data ini, menentukan tindakan pengguna, dan mengirimkannya ke host soket melalui koneksi WiFi lokal
- Mesin host menerima perintah dan melakukan kontrol kursor melalui PyAutoGUI
Demonstrasi
Dalam Kemajuan
Menyiapkan Pi
Pertama, kita perlu menyiapkan pi agar dapat digunakan dan semua pustaka yang diperlukan telah terinstal.
- Jika Pi Anda tidak dimuat sebelumnya dengan OS, Anda dapat mengikuti tutorial ini untuk menginstal Raspbian dengan NOOBS. Raspbian adalah OS resmi Raspberry Pi dan sejauh ini yang paling populer.
- Jika Anda tidak memiliki monitor dan ingin mengakses pi tanpa kepala, sebaiknya siapkan VNC atau SSH dan tambahkan tombol matikan ke Pi.
- Kami tidak memerlukan IO sehingga Anda dapat membiarkan pin header tidak disolder.
- Masukkan kartu SD ke Pi, dan sambungkan ke layar dan daya. Pi harus boot.
- Hubungkan ke internet, dan buka Chromium.
- Buka halaman unduhan Walabot
- Unduh Penginstal Raspberrypi dan klik simpan untuk mengonfirmasi unduhan
- Kembali ke desktop, buka terminal dan ketik
sudo apt-get update
Unduhan cd
sudo dpkg –i walabot_maker_1.0.34_raspberry_arm32.deb
Ringkasnya, perintah memperbarui daftar paket sistem, dan menginstal WalabotSDK
- Setelah melalui beberapa petunjuk persetujuan, Anda harus menginstal Walabot SDK. Kemudian ketik
sudo apt-get dist-upgrade
sudo reboot
Ini memperbarui paket yang diinstal dan mem-boot ulang RPi.
Untuk kecepatan yang lebih tinggi, sebaiknya nonaktifkan GUI desktop seperti yang ditunjukkan di sini.
Antarmuka Walabot
Sekarang di sinilah Walabot masuk. Ini adalah sensor pencitraan gelombang mikro 3D yang dapat melakukan banyak hal, mulai dari penginderaan pernapasan, melihat menembus dinding, dan mendeteksi beberapa target. Anda dapat melihatnya di channel youtube mereka!
Fungsi yang sangat berguna untuk proyek ini adalah penginderaan tiga dimensi RF, yang dapat mendeteksi koordinat x, y, dan x dari suatu target. Selain itu, kemampuan pemfilteran dinamisnya yang menghilangkan sinyal statis dapat dikombinasikan dengan pemfilteran reflektor tetapnya, memungkinkan Anda melacak objek secara akurat bahkan melalui bahan lain.
Namun, satu peringatan menggunakan perangkat yang begitu kuat adalah konsumsi dayanya yang tinggi. Walabot menggunakan 400-900 mA, yang terlalu tinggi untuk output USB default raspberry. Ini dapat diselesaikan dengan menavigasi ke /boot/config.txt dan menambahkan baris ini:max_usb_current=1.Itu akan meningkatkan arus maksimum menjadi 1200 mA.
Deteksi Target
Memastikan Walabot hanya mendeteksi jari saya ketika saya menginginkannya adalah kuncinya, atau komputer saya dapat memindahkan kursor secara acak, bahkan mungkin di luar batas. Untuk proyek saya, saya berinteraksi dengan Walabot API menggunakan fungsi GetSensorTargets() dan mematikan mode MTI (Moving Target Identification) untuk mencegah pemfilteran sinyal jari dalam jangka waktu yang lebih lama. Saya mengatur radius deteksi (r) di proyek saya hingga maksimum 10 cm untuk mengatur arena ke area tepat di atas Walabot. Ini berubah berdasarkan ketebalan material.
Saya mencoba menyetel dimensi arena dalam nilai x, y, dan z, tetapi itu hanya berfungsi paling baik pada profil jarak pendek yang hanya tersedia di edisi pengembang Walabot. Ketika saya mencoba ini pada mode pemindai default, saya mendapatkan hampir nol deteksi target, mungkin karena mode pemindai membaca secara radial alih-alih melalui koordinat Cartesian. Jadi saya telah menetapkan profil pemindai standar, mengatur arena secara radial, dan mengubah dimensi radial menjadi koordinat Cartesian.
Objek target memiliki parameter x, y, z, dan amplitudo, di mana saya hanya menggunakan nilai x dan y. Karena sumbu y berada di sepanjang Walabot, saya menerjemahkannya ke sumbu x di layar ketika Walabot ditempatkan secara horizontal seperti touchpad. Ketika saya membandingkan koordinat dengan batas arena, saya dapat menemukan lokasi relatif target ke arena dan menerjemahkannya ke lokasi relatif kursor di layar host.
Namun, karena arena saya diinisialisasi berdasarkan nilai r, theta, dan phi, saya harus secara manual menemukan batas arena yang dapat digunakan melalui pengukuran nilai terendah dan tertinggi dari koordinat x dan y. Saya kemudian mengotomatiskan ini pada pengaturan sehingga program dapat menemukan batas ketika pengguna menggeser jari mereka di sepanjang sumbu x dan sumbu y. Meskipun ada rumus untuk mengubah koordinat kutub ke Cartesian, batas yang ditetapkan berbeda dari arena terukur yang sebenarnya karena tidak dapat memperhitungkan interferensi permukaan lain pada area terdaftar.
Untuk menentukan apakah pengguna ingin memindahkan kursor, klik kanan atau klik kiri, saya memanfaatkan beberapa fitur deteksi target Walabot. Pergerakan akan menjadi 1 titik kontak, klik kanan akan menjadi 2 titik kontak dan klik kiri akan menjadi 3. Tampaknya solid, waktu untuk mengujinya.
Argh! Ini ternyata jauh lebih sulit untuk diatur. Awalnya saya merencanakan kode untuk mengklik tombol masing-masing pada mouse ketika Walabot mendeteksi dua atau lebih target, tetapi pada saat jari memasuki bidang pandang, Walabot mendeteksi satu target, sehingga menggerakkan mouse sebelum mengklik .
Keseimbangan yang sulit untuk memaksimalkan area arena tanpa meningkatkan rentang-z di tengahSolusi yang jelas adalah dengan mengurangi rentang arena itu sendiri, yang secara alami mengurangi rentang-z. Ini memiliki efek samping menghasilkan touchpad yang terlalu kecil untuk digunakan. Rute lain yang saya ambil adalah menyaring target secara manual dengan atribut z yang terlalu tinggi, tetapi itu tidak berfungsi karena target di sepanjang sumbu z masih terdaftar lebih tinggi di tepi daripada di tengah. Amplitudo tidak berfungsi dengan baik, karena berpusat di sekitar bagian modul yang paling sensitif. Saya mempertimbangkan untuk mengubah nilai parameter-z secara manual untuk semua target dengan menambahkan
abs(sudut phi – 90 derajat) * pengganda ke semua target, tetapi sayangnya parameter sudut phi bukanlah parameter target sensor yang dapat diakses. Pada akhirnya, saya hanya bisa menyelesaikan ini dengan menggunakan touchpad melengkung untuk mencocokkan kelengkungan jangkauan deteksi, atau dengan mendapatkan edisi Pengembang Walabot.
Baca Selengkapnya Detail :Walabot Touchpad