Hari baik untuk semua! Nama saya Maxim, saya adalah pengembang terkemuka di Habilect.
Dalam kehidupan setiap programmer, momen datang ketika Anda ingin membagikan apa 2/3 dari hidup Anda dihabiskan - deskripsi pekerjaan dan proyek :)
Secara historis, bidang utama aktivitas saya adalah pengembangan sistem berdasarkan sensor tanpa kontak.
Selama hampir 7 tahun, banyak pilihan telah dicoba - Microsoft Kinect (baik versi untuk XBOX 360 dan Kinect One untuk Windows), Intel RealSense (dimulai dengan versi pertama yang tersedia di pasar - F200, melanjutkan SR300 dan, pada saat ini, yang terakhir dirilis - D435), Orbbec (Astra dan Persee), Leap Motion (yang bahkan saya tulis di sini tentang pemrosesan gerakan khusus). Secara alami, itu tidak dapat dilakukan tanpa webcam biasa - analisis gambar, OpenCV, dll.
Mereka yang tertarik - saya minta kucing.
Untuk jaga-jaga, program pendidikan singkat tentang topik sensor tanpa kontak ini:
Bayangkan sebuah situasi yang Anda butuhkan untuk secara program melacak tindakan orang tertentu.
Tentu saja, Anda dapat menggunakan webcam biasa, yang dapat dibeli di toko mana pun. Tetapi dengan use case ini, Anda perlu menganalisis gambar, yang intensif sumber daya dan, terus terang, penting (masalah alokasi memori dalam OpenCV yang sama masih relevan).
Oleh karena itu, lebih optimal untuk mengenali orang bukan sebagai bagian dari gambar kamera, tetapi sebagai "kerangka" yang diperoleh oleh sensor khusus menggunakan pengukur jarak aktif. Ini memungkinkan Anda untuk melacak seseorang (atau beberapa orang), dan bekerja dengan bagian individu dari "kerangka".
Dalam terminologi Microsoft Kinect SDK, bagian-bagian individual ini disebut "Sendi." Dalam kasus sensor secara default, statusnya diperbarui setiap 30 ms.
Setiap sendi berisi:
- data pada posisi titik kerangka yang sesuai dalam ruang (koordinat X-, Y- dan Z) relatif terhadap sumbu optik sensor,
- keadaan visibilitas titik (ditentukan, tidak ditentukan, posisi dihitung oleh sensor),
- angka empat rotasi relatif ke titik sebelumnya
Gambar tersebut menunjukkan Sendi yang diproses oleh Kinect v2 menggunakan Vitruvian Man karya Leonardo Da Vinci sebagai contoh.
Dengan demikian, bekerja dengan sensor non-kontak, pengembang mendapatkan kesempatan untuk menganalisis tindakan seseorang atau sekelompok orang (misalnya, dengan Kinect dimungkinkan untuk secara bersamaan melacak 6 orang dalam sebuah bingkai). Dan apa yang harus dilakukan dengan array data yang diterima tergantung pada aplikasi spesifik.
Aplikasi untuk sensor semacam itu tidak ada habisnya. Bidang utama pekerjaan saya adalah iklan dan obat-obatan.
Pertimbangkan arah
periklanan . Sekarang, untuk pengoperasian stand iklan interaktif, beberapa modul dasar diperlukan, yaitu:
- Materi iklan sendiri
- Pengumpulan statistik tentang tingkat menarik perhatian pengunjung ke tampilan iklan tertentu, yang menarik bagi pengiklan
- Kemungkinan konfigurasi jarak jauh dudukan iklan
- Efek menarik yang membedakan stand interaktif dari TV konvensional dengan iklan dan spanduk cetak
Jika semuanya jelas dengan materi iklan itu sendiri, maka sensor digunakan untuk mengumpulkan statistik. Misalnya, setiap pengiklan tertarik pada berapa banyak orang yang memperhatikan iklannya? Pria, wanita atau anak-anak? Jam berapa mereka paling sering berhenti? Berapa banyak waktu mereka melihat iklan, dan tidak hanya berdiri di samping dudukan, menggali telepon? Menggunakan sensor, ini dapat dilacak dan laporan dibuat dalam bentuk yang nyaman bagi pengiklan.
Untuk konfigurasi jarak jauh, model yang paling sederhana dan jelas kemungkinan digunakan - Kalender Google. Setiap kalender dilampirkan ke stand tertentu, dan, di St. Petersburg, Anda dapat mengelola stand di mana saja di dunia.
Dan efek yang menarik adalah fungsi yang sangat, karena yang berdiri disebut interaktif. Anda dapat membuat game yang dikendalikan oleh orang dengan logo sponsor, mewujudkan suara sambutan ketika seseorang muncul di bidang sensor, membuat kode QR dengan kupon diskon di toko pengiklan jika, misalnya, seseorang berdiri sebentar dan menonton iklan. Pilihan dibatasi terutama oleh fantasi, dan bukan oleh teknologi.
Mengapa menggunakan sensor dalam
pengobatan ? Jawaban atas pertanyaan ini sederhana dan sederhana - biaya pemeriksaan dan rehabilitasi berkurang dengan tetap menjaga akurasi.
Salah satu contoh yang mencolok adalah pengembangan di bidang stabilometri - ilmu penyimpangan pusat gravitasi ketika berjalan, yang memengaruhi postur, tulang belakang, dan fungsi otot yang tepat. Anda dapat pergi ke pusat khusus untuk simulator khusus, yang merupakan prosedur yang sangat mahal, yang, bagaimanapun, tidak selalu disediakan. Dan Anda dapat membeli rumah sensor dan perangkat lunak, terhubung ke TV dan melakukan tes diagnostik, yang hasilnya secara otomatis dikirim ke dokter Anda.
Contoh lain adalah rehabilitasi rumah. Bukan rahasia bagi siapa pun bahwa ada dua masalah utama dalam rehabilitasi: panggilan dokter yang mahal ke rumah (apa yang perlu dilakukan beberapa kali seminggu) dan keengganan orang yang direhabilitasi untuk melakukan latihan serupa untuk waktu yang lama. Untuk ini, beberapa postulat dasar sistem dikembangkan, yaitu:
- Kompilasi program rehabilitasi jarak jauh oleh dokter untuk pemantauan jarak jauh implementasi. Sebagai contoh, seorang dokter dari St. Petersburg dari jarak jauh dapat memonitor jalannya latihan yang diresepkan untuk seorang pasien dari Vladivostok, dan jika perlu, mengubah latihan, menambah atau mengurangi kompleksitas dan intensitas kelas, mempelajari statistik secara real time, dll.
- Proses latihan Gamified. Jika simulator modern terutama difokuskan pada melakukan gerakan dasar untuk mengembangkan otot dan persendian yang rusak, maka sistem rehabilitasi interaktif memungkinkan Anda untuk melakukan latihan, secara harfiah, dengan mudah. Misalnya, dengan bantuan Tetris yang terkenal, yang, alih-alih menekan tombol, dikendalikan oleh gerakan yang ditentukan oleh dokter (mengangkat tangan kiri, menggerakkan kaki kanan, memiringkan kepala ke depan dan seterusnya).
- Penerapan kriteria kinerja olahraga. Saat bekerja bersama dengan pasien, dokter memantau latihan dengan bantuan tip dan bantuan sentuhan (misalnya, Anda tidak dapat menekuk lengan pada siku ketika Anda memindahkan lengan - ini mempengaruhi fungsi sendi bahu). Sistem interaktif memperkirakan sudut relatif antara Sendi dan, dalam hal melebihi kisaran yang dapat diterima, membuat peringatan kepada pengguna dan tidak memperhitungkan pelaksanaan latihan yang salah.
Sistem seperti ini memungkinkan Anda untuk mengurangi waktu (baik dokter maupun pasien - untuk bepergian satu sama lain), dan menjaga keakuratan latihan yang diperlukan untuk kemajuan.
Untuk implementasi proyek menggunakan tumpukan teknologi .NET. Saya bekerja untuk Windows saja :). Ya, karena ini, saya harus menulis pembungkus untuk SDK asli beberapa kali (sebagai contoh nyata, saya membuat adapter untuk Intel RealSense SDK, karena pada waktu itu hanya kode yang tidak dikelola). Harganya cukup banyak waktu, saraf dan rambut beruban, tetapi diizinkan untuk menghubungkan perpustakaan ke berbagai proyek yang dikembangkan pada platform Windows.
Perlu dicatat bahwa sensor utama (Kinect dan RealSense) memerlukan resolusi x64 untuk pengembangan.
Untuk menyederhanakan pekerjaan aplikasi klien, layanan terpisah diimplementasikan, bekerja dengan sensor, mengemas data dalam format yang nyaman bagi kami dan mengirim data ke pelanggan menggunakan protokol TCP. Omong-omong, ini memungkinkan kami untuk membuat sistem yang bekerja dengan beberapa sensor, yang secara signifikan dapat meningkatkan akurasi pengenalan.
Diagram yang disederhanakan menunjukkan manfaat menggunakan beberapa sensor untuk melacak objek. Titik biru (sambungan) ditentukan secara stabil oleh sensor pertama dan kedua, hijau - hanya oleh yang kedua. Secara alami, solusi yang dikembangkan diimplementasikan di bawah "model N-sensor."
Proses terperinci pemrosesan data dari beberapa sensor disajikan dalam diagram di atas.Dengan hampir semua perkembangan, salah satu kriteria utama untuk pemain adalah minat. Setelah, selama beberapa tahun berturut-turut saya menerapkan jenis aplikasi web yang sama di ASP.NET dan PHP, saya menginginkan sesuatu yang baru dan lebih, katakanlah, pintar. Dalam pengembangan web (dengan pengecualian langka), semuanya telah ditemukan. Situs yang bagus, layanan yang baik, database yang baik. Dalam kasus bekerja dengan sensor, tugas yang menarik dan kontroversial selalu muncul, misalnya, "bagaimana saya mengirim video-hd dari sensor melalui TCP sehingga ini tidak menutup sistem?" (contoh dari kehidupan, meskipun sudah lama sekali dilakukan). Dan sulit untuk memprediksi bahwa hal berikut akan diperlukan untuk meningkatkan dan mengembangkan sistem. Jelas bahwa ada sprint pengembangan utama di mana peningkatan global dan pra-rencana dijelaskan. Tapi subtugas lokal semacam itu adalah salah satu yang paling menarik dalam keahlian seorang programmer.
Pekerjaan seperti itu jelas tidak rutin. Jika seseorang tertarik untuk belajar lebih detail, atau jika seseorang ingin tahu harus mulai dari mana di bidang ini, saya terbuka untuk komunikasi. Siap untuk menjawab pertanyaan apa pun :) Dan semoga kekuatan bersamamu!