Mengkodekan Robot AI VEX

Artikel ini akan membahas contoh proyek yang menampilkan dasbor yang melaporkan status komunikasi robot ke robot menggunakan VEXlink dan juga status ke Jetson. Proyek ai_demo dihosting di Github kami. Proyek demo ini mengumpulkan data dari prosesor Jetson melalui koneksi serial USB. Setelah data diterima, data tersebut ditampilkan di layar V5 Brain dan juga dikirimkan ke robot mitra V5 yang terhubung melalui VEXlink.

Catatan: Proyek ini memerlukan versi terbaru dari Ekstensi VS Code untuk V5. Unduh Ekstensi VS Code untuk V5 di sini.


Komunikasi Otak NVIDIA Jetson Nano ke VEX V5

Prosesor Jetson berisi aplikasi yang mengumpulkan data berikut dari perangkat lunak VEX AI:

Dua diagram lapangan yang menunjukkan posisi robot, orientasi, dan sumbu koordinat untuk pelacakan lokasi.

Data Lokasi Robot:

  • Lokasi X,Y robot dalam meter dari pusat lapangan.
  • Azimuth (Heading), Elevation (Pitch), Rotation (Roll) Robot semuanya dalam radian.

Data Deteksi Objek (tiga jenis):

Tampilan kamera dengan objek game yang terdeteksi diberi label berdasarkan warna, koordinat posisi, dan jarak.

Deteksi Gambar (tipe satu):

  • Data ini mewakili objek yang terdeteksi oleh VEX AI Intel Camera.
  • Data ini mendeskripsikan objek dengan mengacu pada gambar kamera.
  • Nilai untuk X, Y, lebar, dan tinggi dalam satuan piksel. Nilai piksel mengacu pada sudut kiri atas kotak deteksi gambar dan objek. Resolusi gambar 640x480.

 

Diagram lapangan yang menunjukkan sumbu koordinat X dan Y serta posisi referensi X0 Y0 di tengah lapangan.

Deteksi Peta (tipe dua):

  • Data ini menunjukkan lokasi objek di lapangan dalam sistem koordinat yang sama dengan Sensor GPS, dilaporkan dalam meter.
  • Setiap objek juga berisi lokasi objek relatif terhadap pusat bidang. Nilai untuk X dan Y dalam satuan meter dari pusat lapangan pada sumbu masing-masing. Nilai Z adalah meter dari petak lapangan (ketinggian).

Objek Deteksi (tipe tiga):

Cuplikan kode C++ yang mendefinisikan struktur data untuk objek yang terdeteksi, termasuk klasifikasi, posisi, dan koordinat gambar serta peta.

  • Ini merangkum semua informasi tentang objek yang terdeteksi.
  • Setiap objek berisi nilai yang mewakili klasifikasi objek yang terdeteksi. (ID Kelas: 0 = GreenTriball, 1 = RedTriBall, 2 = BlueTriBall)
  • Setiap objek juga mengandung probabilitas yang mewakili keyakinan VEX AI dalam deteksi. Ini setelah filter dalam model.py yang menghilangkan deteksi probabilitas rendah.
  • Selain itu, kedalaman objek dilaporkan dalam meter dari Kamera VEX AI Intel.
  • Deteksi Gambar dan Deteksi Peta dilampirkan ke setiap objek untuk mewakili koordinat objek pada gambar dan dunia nyata.

Rincian program ai_demo:

Utama.cpp

Cuplikan kode C++ yang menunjukkan penyertaan proyek VEX standar dan pengaturan inisialisasi.

Standar mencakup untuk proyek VEX:

// Buat instance kelas Jetson untuk menerima lokasi dan data
dari Jetson Nano
//
ai::jetson jetson_comms;

Nyatakan contoh kelas Jetson. Kelas ini digunakan untuk mengirim permintaan data ke Jetson serta menerima data melalui koneksi serial USB.

#definisikan MANAJER_ROBOT 1

Cuplikan kode C++ yang menunjukkan konfigurasi peran robot manajer dan pekerja menggunakan pernyataan define yang berbunyi #define MANAGER_ROBOT 1.

Nyatakan contoh kelas robot_link. Objek ini akan digunakan untuk menghubungkan dan mentransfer data antara robot ini dan robot mitra. Proyek yang sama dapat diunduh ke dua robot terpisah. Satu robot harus memiliki garis:

//#definisikan MANAJER_ROBOT 1

Sebelum Anda memuat kode ke robot kedua, Anda perlu mengomentari baris tersebut:

Kelas robot_link menyiapkan VEXlink robot dan menangani pengiriman dan penerimaan data antara kedua robot. Kami tidak akan membahas secara rinci dalam artikel ini tentang cara kerja kelas tersebut. Ada baiknya untuk memahami terlebih dahulu cara kerja VEXlink. Untuk informasi lebih rinci tentang penggunaan API VEXlink V5, dokumen menjelaskan pustaka dan cara menggunakannya secara efektif untuk komunikasi antar robot.

  • Penanganan Acara Kompetisi

    Kode C++ yang menunjukkan logika kondisional yang beralih antara rutin otonom isolasi dan interaksi.

    Salah satu perbedaan terbesar antara VAIC dan VRC adalah tidak adanya periode kontrol pengemudi. Sebaliknya ada dua periode otonomi, periode isolasi dan periode interaksi. Dalam contoh ini, ada rutinitas terpisah untuk setiap periode otonomi. Karena VEX API tidak mendukung dua panggilan balik yang berbeda, harus ada tanda dalam program untuk menentukan rutin mana yang akan dieksekusi. Dalam program contoh ini, "firstAutoFlag" digunakan untuk memanggil fungsi Isolasi saat otonomi diaktifkan untuk pertama kalinya, dan fungsi interaksi saat otonomi diaktifkan untuk kedua kalinya. Satu hal yang perlu diperhatikan adalah jika karena alasan tertentu pertandingan perlu diatur ulang, program demo perlu dimulai ulang agar firstAutoFlag dapat diatur ulang.

  • Utama()

    Cuplikan kode C++ dari loop utama yang menangani pengambilan data dari Jetson, pemrosesan, dan komunikasi dengan robot mitra.

    Ini adalah tugas utama untuk proyek ini. Dimulainya dengan memanggil vexcodeInit() untuk menyiapkan lingkungan VEXcode dengan benar. Berikutnya, objek AI_RECORD lokal dideklarasikan untuk menyimpan data yang kami terima dari Jetson. Tugas terpisah juga disiapkan untuk menangani pembaruan layar dengan data terkini. Kode untuk tugas tersebut terdapat dalam berkas dashboard.cpp. Panggilan balik otonom juga didaftarkan untuk menangani kapan periode otonom dimulai.

    Perulangan while() utama dimulai dengan menyalin data terkini dari objek jetson_comms ke objek AI_RECORD lokal kita. Kemudian, ia meneruskan informasi lokasi robot ke objek tautan sehingga dapat dikirimkan ke robot mitra kami. Setelah selesai memproses data, ia meminta lebih banyak data dari Jetson dan tidur selama 66 milidetik. Laju polling untuk data ini adalah 15Hz. Tidak ada alasan untuk melakukan polling lebih cepat karena data sistem AI diperbarui pada sekitar 15Hz.

    Catatan: data peta Jetson hanya perlu diminta oleh satu tugas.

For more information, help, and tips, check out the many resources at VEX Professional Development Plus

Last Updated: