Visi AI#

Perkenalan#

Sensor Penglihatan AI pada Robot Coding VEX AIM mendeteksi dan melacak objek, warna, dan ID AprilTag. Hal ini memungkinkan robot untuk menganalisis lingkungannya, mengikuti objek, dan bereaksi berdasarkan data visual yang terdeteksi.

Sensor Penglihatan AI memiliki resolusi 320×240 piksel. Titik asal (0, 0) terletak di pojok kiri atas, sehingga pusat sensor berada di (160, 120), seperti yang ditunjukkan pada diagram di bawah ini:

Diagram yang menunjukkan resolusi Sensor Penglihatan AI AIM, dengan koordinat 0, 0 di kiri atas diagram, 320, 0 di kanan atas, dan 0, 240 di kiri bawah, dengan 160, 120 tepat di tengah.

Berikut adalah daftar semua metode dan properti:

Aksi — Tampilkan atau sembunyikan tampilan kamera AI Vision.

  • show_aivision — Menampilkan umpan AI Vision di layar robot.

  • hide_aivision — Menyembunyikan umpan AI Vision dari layar.

  • tag_detection — Mengaktifkan atau menonaktifkan deteksi ID AprilTag.

Getters — Mendeteksi apakah robot sedang memegang suatu objek.

  • get_data — Mengembalikan tuple objek yang terdeteksi untuk tanda tangan tertentu.

  • has_sports_ball — Mengembalikan apakah robot memiliki bola olahraga.

  • has_any_barrel — Mengembalikan apakah robot memiliki jenis barel apa pun.

  • has_blue_barrel — Mengembalikan apakah robot memiliki barel biru.

  • has_orange_barrel — Mengembalikan apakah robot memiliki barel oranye.

Properti — Data objek yang dikembalikan dari get_data.

  • exists — Apakah objek tersebut ada dalam deteksi saat ini sebagai Boolean.

  • width — Lebar objek yang terdeteksi.

  • height — Tinggi objek yang terdeteksi.

  • centerX — Posisi X dari pusat objek.

  • centerY — Posisi Y dari pusat objek.

  • bearing — Sudut horizontal relatif terhadap bagian depan robot.

  • rotation — Orientasi objek.

  • originX — Posisi X dari sudut kiri atas objek.

  • originY — Posisi Y dari sudut kiri atas objek.

  • id — Klasifikasi atau ID tag objek.

  • score — Skor kepercayaan untuk Klasifikasi AI.

  • type — Mengembalikan tipe objek (AI, Tag, Warna, atau Kode).

Konstruktor — Mendefinisikan tanda dan kode warna.

  • Buat Tanda Warna — Membuat Tanda Warna baru berdasarkan rentang RGB dan hue/saturasi.

  • Buat Kode Warna — Menggabungkan beberapa Tanda Warna menjadi satu Kode Warna.

Tindakan#

show_aivision#

Perintah show_aivision menampilkan umpan data langsung dari Sensor Visi AI pada layar robot. Umpan data langsung akan menutupi gambar atau teks lain di layar.

Catatan: Layar tidak akan menampilkan gambar atau teks lain kecuali hide_aivision digunakan untuk menyembunyikan feed.

Usage:
robot.screen.show_aivision()

Parameter

Keterangan

Metode ini tidak memiliki parameter.

# Watch the AI Vision Sensor detect AI Classifications
# and AprilTag IDs as you move the robot
robot.screen.show_aivision()

hide_aivision#

hide_aivision menghapus umpan data langsung dari Sensor Penglihatan AI dari layar robot.

Usage:
robot.screen.hide_aivision()

Parameter

Keterangan

Metode ini tidak memiliki parameter.

# View the AI Vision Sensor's feed for five seconds
robot.screen.show_aivision()
wait(5, SECONDS)
robot.screen.hide_aivision()

tag_detection#

tag_detection mengaktifkan atau menonaktifkan deteksi ID AprilTag, di mana statusnya adalah nilai Boolean.

Sensor ini dapat mendeteksi ID AprilTag 0 hingga 36 dari keluarga Circle21h7.

Usage:
robot.vision.tag_detection(state)

Parameter

Keterangan

state

Nilainya adalah: True, yang mengaktifkan deteksi ID AprilTag, atau False, yang menonaktifkan deteksi ID AprilTag.

robot.screen.set_font(PROP30)

# Cut off AprilTag ID detection after 5 seconds
while True:
    if timer.time(SECONDS) > 5:
        robot.vision.tag_detection(False)

    robot.screen.clear_screen()
    robot.screen.set_cursor(3, 1)
    apriltags = robot.vision.get_data(ALL_TAGS)

    if apriltags[0].exists:
        robot.screen.print("AprilTag ID detected!")
    else:
        robot.screen.print("Nothing detected!")

    wait(0.1, SECONDS)

Pencari#

get_data#

get_data memfilter data dari frame AI Vision Sensor ke tanda tangan tunggal — deskripsi tersimpan dari sesuatu yang dapat dikenali sensor, seperti objek yang telah dilatih sebelumnya, ID AprilTag, atau Tanda Tangan Warna atau Kode Warna yang dikonfigurasi — dan mengembalikan tuple.

Tanda Warna dan Kode Warna harus dikonfigurasi terlebih dahulu di AI Vision Utility sebelum dapat digunakan dengan metode ini.

The tuple stores objects ordered from largest to smallest by width, starting at index 0. Each object’s properties can be accessed using its index. An empty tuple is returned if no matching objects are detected.

Usage:
robot.vision.get_data(signature, count)

Parameter

Keterangan

signature

Memfilter dataset agar hanya menyertakan data dengan tanda tangan yang diberikan. Tanda tangan yang tersedia adalah:

  • ALL_VISION - Bola olahraga, barel, Robot Pengkodean VEX AIM, ID AprilTag, warna, dan kode warna
  • ALL_CARGO - Bola olahraga dan barel
  • ALL_TAGS - Semua ID AprilTag
  • ALL_COLORS - Semua tanda tangan warna dan kode warna yang dikonfigurasi
  • SPORTS_BALL - Hanya bola olahraga
  • BLUE_BARREL - Hanya barel biru
  • ORANGE_BARREL - Hanya barel oranye
  • AIM_ROBOT - Semua Robot Pengkodean VEX AIM
  • TAG0 sampai TAG37 - Satu ID AprilTag dari 0 hingga 37
  • NAME - Tanda tangan warna atau kode warna di mana NAME adalah nama yang dikonfigurasi di AI Vision Utility.

count

Opsional. Mengatur jumlah maksimum objek yang dapat dikembalikan dari 1 hingga 24 (default: 8).

Catatan: ID AprilTag 5 hingga 37 dapat diperoleh dengan menggunakan ID AprilTag yang dicetak dari AIM Printables.

# Move forward if a sports ball is detected
while True:
    ball = robot.vision.get_data(SPORTS_BALL)
    if ball[0].exists:
        robot.move_for(10, 0)
    wait(50, MSEC)

Catatan: Tuple yang dikembalikan dapat diurutkan berdasarkan properti apa pun, bukan hanya lebar, menggunakan fungsi sorted Python. Misalnya, mengurutkan berdasarkan ID AprilTag:

# Print each detected AprilTag ID in ascending order by ID
while True:
    apriltags = sorted(robot.vision.get_data(ALL_TAGS), key=id)
    for tag in apriltags:
        print(tag.id)
    wait(1, SECONDS)

Atau mengurutkan berdasarkan tinggi badan:

# Print each detected AprilTag ID in ascending order by height
while True:
    apriltags_by_height = sorted(robot.vision.get_data(ALL_TAGS), key=lambda tag: tag.height)
    for tag in apriltags_by_height:
        print(tag.height)
    wait(1, SECONDS)

Melihat Data#

Mencetak tuple yang dikembalikan oleh get_data menampilkan daftar semua properti dari semua objek yang terdeteksi:

# Display properties of all detected AprilTag IDs
while True:
    vision_data = robot.vision.get_data(ALL_TAGS)

    if vision_data[0].exists:
        break

    wait(0.25, SECONDS)

print(vision_data)

Tangkapan layar jendela konsol yang menampilkan output debug untuk ID AprilTag yang terdeteksi. Teks tersebut mencantumkan 'Objek #0' dengan bidang seperti exists: True, type: AprilTag ID, id: 2, centerX: 223, centerY: 54, originX: 210, originY: 42, width: 27, height: 23, bearing: 14.1, dan rotation: 0.0, diikuti oleh garis pemisah dan awal dari 'Objek #1' dengan exists: True, type: AprilTag ID, id: 4, dan centerX: 122.

Klasifikasi AI#

Sensor Penglihatan AI AIM dapat mendeteksi Klasifikasi AI berikut:

Nomor ID

Klasifikasi AI

Tanda tangan

0

Bola

SPORTS_BALL

1

Tong Biru

BLUE_BARREL

2

Tong Jeruk

ORANGE_BARREL

3

Robot AIM

AIM_ROBOT

Tanda Warna#

Tanda warna adalah warna unik yang dapat dikenali oleh Sensor Visi AI. Tanda warna ini memungkinkan sensor untuk mendeteksi dan melacak objek berdasarkan warnanya. Setelah Tanda Warna dikonfigurasi, sensor dapat mengidentifikasi objek dengan warna spesifik tersebut dalam bidang pandangnya. Tanda warna digunakan dengan get_data untuk memproses dan mendeteksi objek berwarna secara real-time.

Utilitas Visi AI yang menunjukkan sensor visi terhubung yang mendeteksi dua objek berwarna. Sisi kiri menampilkan umpan kamera langsung dengan kotak biru di sebelah kiri dan kotak merah di sebelah kanan, masing-masing digariskan dengan kotak pembatas putih. Label hitam menampilkan nama, koordinat, dan dimensi masing-masing. Sisi kanan berisi pengaturan tanda warna, dengan penggeser untuk rentang rona dan saturasi untuk kotak merah dan biru. Tombol untuk menambahkan warna, membekukan video, menyalin, dan menyimpan gambar berada di bagian bawah, bersama dengan tombol tutup di sudut kanan bawah.

# Display if any objects match the Red_Box signature
while True:
    robot.screen.set_cursor(1, 1)
    robot.screen.clear_row(1)
    # Change to any configured Color Signature
    ai_objects = robot.vision.get_data(Red_Box)
    if ai_objects[0].exists:
        robot.screen.print("Color signature detected!")

Kode Warna#

Kode warna adalah pola terstruktur yang terdiri dari 2 hingga 4 tanda warna yang disusun dalam urutan tertentu. Kode-kode ini memungkinkan Sensor Penglihatan AI untuk mengenali pola warna yang telah ditentukan sebelumnya. Kode warna berguna untuk mengidentifikasi objek kompleks atau membuat penanda unik untuk navigasi otonom.

Antarmuka AI Vision Utility menampilkan sensor penglihatan yang terhubung mendeteksi dua objek yang berdekatan, kotak biru di sebelah kiri dan kotak merah di sebelah kanan, dikelompokkan bersama dalam satu kotak pembatas putih berlabel BlueRed. Informasi deteksi mencakup sudut (A:11°), koordinat (X:143, Y:103), lebar (W:233), dan tinggi (H:108). Pada panel kanan, terdapat tiga tanda warna yang tercantum: Red_Box, Blue_Box, dan BlueRed, dengan rentang rona dan saturasi yang dapat disesuaikan. Tanda warna BlueRed menggabungkan Blue_Box dan Red_Box. Di bawah umpan video terdapat tombol berlabel Bekukan Video, Salin Gambar, Simpan Gambar, dan Tutup.

# Display if any objects match the BlueRed code
while True:
    robot.screen.set_cursor(1, 1)
    robot.screen.clear_row(1)
    # Change to any configured Color Code
    ai_objects = robot.vision.get_data(BlueRed)
    if ai_objects[0].exists:
        robot.screen.print("Color code detected!")

has_sports_ball#

has_sports_ball mengembalikan nilai Boolean yang menunjukkan apakah robot saat ini memiliki bola olahraga.

  • True — Robot itu memiliki bola olahraga.

  • False — Robot tersebut tidak memiliki bola olahraga.

Usage:
robot.has_sports_ball()

Parameter

Keterangan

Metode ini tidak memiliki parameter.

# Kick when the robot has a sports ball
while True:
    if robot.has_sports_ball():
        robot.kicker.kick(MEDIUM)

    wait(50, MSEC)

has_any_barrel#

has_any_barrel mengembalikan nilai Boolean yang menunjukkan apakah robot saat ini memiliki jenis barel apa pun.

  • True — Robot itu memiliki sebuah tong.

  • False — Robot tersebut tidak memiliki tong.

Usage:
robot.has_any_barrel()

Parameter

Keterangan

Metode ini tidak memiliki parameter.

# Push a barrel away when detected
while True:
    if robot.has_any_barrel():
        robot.kicker.place()

    wait(50, MSEC)

has_blue_barrel#

has_blue_barrel mengembalikan nilai Boolean yang menunjukkan apakah robot saat ini memiliki barel biru.

  • True — Robot itu memiliki tong berwarna biru.

  • False — Robot tersebut tidak memiliki tong berwarna biru.

Usage:
robot.has_blue_barrel()

Parameter

Keterangan

Metode ini tidak memiliki parameter.

# Push a blue barrel away when detected
while True:
    if robot.has_blue_barrel():
        robot.kicker.place()

    wait(50, MSEC)

has_orange_barrel#

has_orange_barrel mengembalikan nilai Boolean yang menunjukkan apakah robot saat ini memiliki tong berwarna oranye.

  • True — Robot itu memiliki tong berwarna oranye.

  • False — Robot tersebut tidak memiliki tong berwarna oranye.

Usage:
robot.has_orange_barrel()

Parameter

Keterangan

Metode ini tidak memiliki parameter.

# Push an orange barrel away when detected
while True:
    if robot.has_orange_barrel():
        robot.kicker.place()

    wait(50, MSEC)

Properti#

Ada dua belas properti yang disertakan dengan setiap objek yang disimpan dalam tuple setelah metode robot.vision.get_data digunakan.

Semua nilai properti kecuali .id, .score, dan .type menjelaskan posisi, ukuran, orientasi, atau arah objek yang terdeteksi pada saat robot.vision.get_data digunakan. Nilai-nilai ini diukur dalam piksel atau derajat, berdasarkan resolusi sensor 320 x 240 piksel.

Sebuah tong biru dengan garis oranye berada di tengah bingkai, dikelilingi oleh kotak pembatas hitam. Sumbu x dan y diberi label 0 hingga 320 dari kiri ke kanan di bagian atas, dan 0 hingga 240 dari atas ke bawah di sepanjang sisi kiri.

.exists#

.exists mengembalikan nilai Boolean yang menunjukkan apakah indeks tersebut ada dalam tuple atau tidak.

  • True — Indeks tersebut ada.

  • False — Indeks tidak ada.

# Check if at least two objects are detected
while True:
    robot.screen.clear_screen()
    robot.screen.set_cursor(1, 1)
    ai_objects = robot.vision.get_data(ALL_CARGO)

    if ai_objects[0].exists:
        if ai_objects[1].exists:
            robot.screen.print("At least 2")
        else:
            robot.screen.print("Less than 2")
    wait(0.1, SECONDS)

.width#

.width mengembalikan lebar objek yang terdeteksi dalam piksel, yang merupakan bilangan bulat antara 1 dan 320.

Catatan: Nilai piksel relatif terhadap sistem koordinat sensor. Lihat diagram di Pendahuluan untuk referensi.

Sebuah tong biru dengan garis oranye berada di tengah bingkai, dikelilingi oleh kotak pembatas hitam. Dua garis putus-putus merah vertikal memanjang dari bagian atas bingkai ke tepi kiri dan kanan kotak pembatas. Panah hitam berkepala ganda di antara garis-garis ini menunjukkan ukuran lebar.

# Move towards a Blue Barrel until its width is
# larger than 100 pixels
while True:
    barrel = robot.vision.get_data(BLUE_BARREL)

    if barrel[0].exists:
        if barrel[0].width < 100:
            robot.move_at(0)
    else:
        robot.stop_all_movement()

    wait(50, MSEC)

.height#

.height mengembalikan tinggi objek yang terdeteksi dalam piksel, yang merupakan bilangan bulat antara 1 dan 240.

Catatan: Nilai piksel relatif terhadap sistem koordinat sensor. Lihat diagram di Pendahuluan untuk referensi.

Sebuah tong biru dengan garis oranye berada di tengah bingkai, dikelilingi oleh kotak pembatas hitam. Dua garis putus-putus merah horizontal membentang dari sisi kiri bingkai ke tepi atas dan bawah kotak pembatas. Panah hitam berkepala ganda di antara garis-garis ini menunjukkan pengukuran tinggi.

# Move towards a Blue Barrel until its height is
# larger than 100 pixels
while True:
    barrel = robot.vision.get_data(BLUE_BARREL)

    if barrel[0].exists:
        if barrel[0].height < 100:
            robot.move_at(0)
    else:
        robot.stop_all_movement()

    wait(50, MSEC)

.centerX#

.centerX mengembalikan koordinat x dari pusat objek yang terdeteksi dalam piksel, yang merupakan bilangan bulat antara 0 dan 320.

Catatan: Nilai piksel relatif terhadap sistem koordinat sensor. Lihat diagram di Pendahuluan untuk referensi.

Sebuah tong biru dengan garis oranye berada di tengah bingkai, dikelilingi oleh kotak pembatas hitam. Garis putus-putus merah vertikal membentang dari bagian atas bingkai ke tengah kotak pembatas, menunjukkan koordinat X dari pusatnya.

# Turn slowly until a Blue Barrel is centered in
# front of the robot
robot.set_turn_velocity(30)
robot.turn(RIGHT)

while True:
    barrel = robot.vision.get_data(BLUE_BARREL)

    if barrel[0].exists:
        if 140 < barrel[0].centerX < 180:
            robot.stop_all_movement()

    wait(10,MSEC)

.centerY#

.centerY mengembalikan koordinat y dari pusat objek yang terdeteksi dalam piksel, yang merupakan bilangan bulat antara 0 dan 240.

Catatan: Nilai piksel relatif terhadap sistem koordinat sensor. Lihat diagram di Pendahuluan untuk referensi.

Sebuah tong biru dengan garis oranye berada di tengah bingkai, dikelilingi oleh kotak pembatas hitam. Garis putus-putus merah horizontal membentang dari sisi kiri bingkai ke tengah kotak pembatas, menunjukkan koordinat Y dari pusatnya.

# Move towards a Blue Barrel until its
# center y-coordinate is more than 140 pixels
while True:
    barrel = robot.vision.get_data(BLUE_BARREL)

    if barrel[0].exists:
        if barrel[0].centerY < 140:
            robot.move_at(0)
    else:
        robot.stop_all_movement()

    wait(50, MSEC)

.bearing#

.bearing mengembalikan nilai desimal (float) yang menunjukkan seberapa jauh suatu objek berada di sebelah kiri atau kanan pusat pandangan Sensor Penglihatan AI dalam derajat. Nilai 0 berarti berada di tengah, nilai positif berarti objek berada di sebelah kanan, dan nilai negatif berarti objek berada di sebelah kiri.

Diagram dari atas ke bawah yang menunjukkan Robot Pemrograman VEX AIM yang berpusat pada alas melingkar dengan garis referensi vertikal dan garis merah yang membentuk sudut ke arah bola olahraga di sebelah kiri, berlabel -30 derajat. Diagram dari atas ke bawah yang menunjukkan Robot Pemrograman VEX AIM yang berpusat di alas melingkar dengan garis referensi vertikal dan garis merah yang membentuk sudut ke arah bola olahraga di sebelah kanan, berlabel 30 derajat.
# Turn to keep the Blue Barrel directly in front
robot.set_turn_velocity(40)
while True:
    vision_data = robot.vision.get_data(BLUE_BARREL)

    if vision_data[0].exists:

        if vision_data[0].bearing > 5:
            robot.turn(RIGHT)
        elif vision_data[0].bearing < -5:
            robot.turn(LEFT)
        else:
            robot.stop_all_movement()

    else:
        robot.stop_all_movement()

    wait(0.1, SECONDS)

.rotation#

.rotation mengembalikan orientasi objek pada bidang pandang Sensor Visi AI, diukur dalam derajat dari 0 hingga 359. Kode Warna adalah 0° ketika warnanya disusun dalam garis horizontal (misalnya, Merah–Biru). Jika warnanya diputar, sudutnya berubah (misalnya, menyusun Biru-Merah mengembalikan 180°).

Untuk contoh di bawah ini, Kode Warna telah dikonfigurasi dengan warna merah di sebelah kiri dan warna biru di sebelah kanan.

Dalam gambar ini, menempatkan warna biru di atas warna merah setara dengan memutar Kode Warna asli sebesar 270 derajat ke kanan.

Antarmuka kamera menampilkan objek yang ditumpuk secara vertikal dengan bagian atas berwarna biru dan bagian bawah berwarna merah, berpusat di dalam bingkai. Label di bawah objek bertuliskan Red_Blue A:270° CX:185 CY:81 W:93 H:150, yang menunjukkan nama objek, sudut rotasi, koordinat pusat X dan Y, lebar, dan tinggi. Garis kisi dan sumbu numerik menandai dimensi gambar, dengan X berkisar dari 0 hingga 320 dan Y dari 0 hingga 240.

# Slide left or right depending on how a Color Code (BlueRed)
# is rotated on the vertical plane
while True:
    # Original Color Code is Red to the left, Blue to the right
    code = robot.vision.get_data(BlueRed)

    if code[0].exists:
        # Check if Color Code is now Red on top of Blue
        if 50 < code[0].rotation < 100 :
            robot.move_at(90)

        # Check if Color Code is now Blue on top of Red
        elif 270 < code[0].rotation < 330 :
            robot.move_at(270)

        else:
            robot.stop_all_movement()
    else:
        robot.stop_all_movement()

    wait(50, MSEC)

.originX#

.originX mengembalikan koordinat x dari sudut kiri atas kotak pembatas objek yang terdeteksi dalam piksel, yang merupakan bilangan bulat antara 0 dan 320.

Catatan: Nilai piksel relatif terhadap sistem koordinat sensor. Lihat diagram di Pendahuluan untuk referensi.

Sebuah tong biru dengan garis oranye berada di tengah bingkai, dikelilingi oleh kotak pembatas hitam. Garis putus-putus merah vertikal membentang dari bagian atas bingkai ke tepi kiri kotak pembatas, menunjukkan koordinat X dari titik asal kotak pembatas.

# Display if an Orange Barrel is to the
# left or the right
while True:
    robot.screen.clear_screen()
    robot.screen.set_cursor(1,1)

    orange_barrel = robot.vision.get_data(ORANGE_BARREL)

    if orange_barrel[0].exists:
        if orange_barrel[0].originX < 160:
            robot.screen.print("To the left!")
        else:
            robot.screen.print("To the right!")

    wait(50, MSEC)

.originY#

.originY mengembalikan koordinat y dari sudut kiri atas kotak pembatas objek yang terdeteksi dalam piksel, yang merupakan bilangan bulat antara 0 dan 240.

Catatan: Nilai piksel relatif terhadap sistem koordinat sensor. Lihat diagram di Pendahuluan untuk referensi.

Sebuah tong biru dengan garis oranye berada di tengah bingkai, dikelilingi oleh kotak pembatas hitam. Garis putus-putus merah horizontal membentang dari sisi kiri bingkai ke tepi atas kotak pembatas, menunjukkan koordinat Y dari titik asal kotak pembatas.

# Display if an Orange Barrel is close or far
# from the robot
while True:
    robot.screen.clear_screen()
    robot.screen.set_cursor(1, 1)

    orange_barrel = robot.vision.get_data(ORANGE_BARREL)

    if orange_barrel[0].exists:
        if orange_barrel[0].originY < 80:
            robot.screen.print("Far")
        else:
            robot.screen.print("Close")

    wait(50, MSEC)

.id#

.id mengembalikan ID Klasifikasi AI yang terdeteksi atau ID AprilTag sebagai bilangan bulat.

Untuk ID AprilTag, properti .id mewakili nomor ID AprilTag yang terdeteksi dalam rentang 0 hingga 37. Untuk Klasifikasi AI, properti .id sesuai dengan ID yang telah ditentukan sebelumnya di bagian Klasifikasi AI.

# Move forward when AprilTag ID 1 is detected
while True:
    apriltags = robot.vision.get_data(ALL_TAGS)

    if apriltags[0].exists:
        if apriltags[0].id == 1:
            robot.move_at(0)
    else:
        robot.stop_all_movement()

    wait(50, MSEC)

.score#

.score mengembalikan skor kepercayaan dari Klasifikasi AI yang terdeteksi sebagai bilangan bulat antara 1 dan 100.

Skor yang lebih rendah berarti sensor kurang yakin terhadap objek yang terdeteksi, sedangkan skor yang lebih tinggi berarti sensor lebih yakin.

# Look confident if an Orange Barrel is detected
while True:
    barrel = robot.vision.get_data(ORANGE_BARREL)

    if barrel[0].exists:
        if barrel[0].score > 95:
            robot.screen.show_emoji(CONFIDENT)
        else:
            robot.screen.hide_emoji()

    wait(50, MSEC)

.type#

.type mengembalikan bilangan bulat yang menunjukkan tipe objek yang terdeteksi. Anda dapat membandingkan nilai ini menggunakan nomor tipe atau konstanta bernama yang sesuai:

Jenis Objek

Objek yang disertakan

AiVision.AI_OBJECT

— Bola olahraga
— Tong biru
— Tong oranye

AiVision.TAG_OBJECT

— ID AprilTag

AiVision.COLOR_OBJECT

— Tanda warna

AiVision.CODE_OBJECT

— Kode warna

# Display if an AprilTag ID or AI Classification
# is detected
while True:
    robot.screen.clear_screen()
    robot.screen.set_cursor(1, 1)
    vision_data = robot.vision.get_data(ALL_VISION)
    if vision_data[0].exists:
        if vision_data[0].type == AiVision.AI_OBJECT:
            robot.screen.print("AI Object!")
        elif vision_data[0].type == AiVision.TAG_OBJECT:
            robot.screen.print("AprilTag ID!")
    wait(0.1, SECONDS)

# Display a list of all detected objects
while True:
    robot.screen.clear_screen()
    robot.screen.set_cursor(1, 1)
    vision_data = robot.vision.get_data(ALL_VISION)

    if vision_data[0].exists:
        for obj in vision_data:
            if obj.type == AiVision.AI_OBJECT:
                robot.screen.print("- AI Object")
            elif obj.type == AiVision.TAG_OBJECT:
                robot.screen.print("- AprilTag ID")
            robot.screen.next_row()

    wait(0.1, SECONDS)

Konstruktor#

Creating a Color Signature#

Tanda Warna baru dibuat menggunakan konstruktor Colordesc dan kemudian didaftarkan ke Sensor Visi AI menggunakan metode color_description Objek Colordesc mendefinisikan 1 dari hingga 7 tanda warna yang dapat dideteksi untuk sensor, tetapi harus diatur secara eksplisit menggunakan color_description agar berlaku.

Penggunaan Colordesc:
Colordesc(index, red, green, blue, hangle, hdsat)

Parameter

Keterangan

index

Bilangan bulat dari 1 hingga 7 yang mewakili indeks Tanda Warna. Jika dua Tanda Warna menggunakan indeks yang sama, yang kedua akan menggantikan yang pertama.

red

Bilangan bulat dari 0 hingga 255 untuk komponen merah dari warna tersebut.

green

Bilangan bulat dari 0 hingga 255 untuk komponen hijau dari warna tersebut.

blue

Bilangan bulat dari 0 hingga 255 untuk komponen biru dari warna tersebut.

hangle

Angka desimal dari 1 hingga 40 yang mewakili rentang warna dalam derajat.

hdsat

Bilangan floating point dari 0,10 hingga 1,00 yang mewakili rentang saturasi.

Penggunaan color_description:
robot.vision.color_description(object)

Parameter

Keterangan

object

Objek Colordesc yang akan ditetapkan sebagai Tanda Warna yang dapat dideteksi.

# Detect a red object
red_box = Colordesc(1, 207, 19, 25, 10.00, 0.20)
robot.vision.color_description(red_box)

while True:
    robot.screen.clear_screen()
    robot.screen.set_cursor(1, 1)

    red_boxes = robot.vision.get_data(red_box)

    if red_boxes[0].exists:
        robot.screen.print("Red detected!")
    else:
        robot.screen.print("No red detected.")

    wait(0.2, SECONDS)

Creating a Color Code#

Kode Warna baru dibuat menggunakan konstruktor Codedesc dan kemudian diaktifkan menggunakan metode code_description Kode Warna mengelompokkan 2 hingga 4 objek Colordesc yang ada menjadi satu pengidentifikasi tunggal yang dapat dideteksi oleh Sensor Penglihatan AI sebagai sebuah urutan, tetapi harus diatur secara eksplisit menggunakan code_description agar berlaku.

Penggunaan Codedesc:
Codedesc(index, c1, c2, c3, c4, c5)

Parameter

Keterangan

index

Indeks Kode Warna, dari 1 hingga 8. Catatan: Jika Anda membuat dua objek Codedesc dengan indeks yang sama, objek kedua akan menimpa objek pertama.

c1

Objek Colordesc dalam kode tersebut.

c2

Objek Colordesc kedua dalam kode tersebut.

c3

Opsional. Objek Colordesc ketiga.

c4

Opsional. Objek Colordesc .

Penggunaan code_description:
robot.vision.code_description(object)

Parameter

Keterangan

object

Objek Codedesc untuk didaftarkan sebagai Kode Warna yang dapat dideteksi.

# Create Color Signatures
red_box = Colordesc(1, 207, 19, 25, 10.00, 0.20)
purple_box = Colordesc(2, 98, 18, 227, 10.00, 0.20)

robot.vision.color_description(red_box)
robot.vision.color_description(purple_box)

# Detect a red_purple Color Code
red_purple = Codedesc(1, red_box, purple_box)
robot.vision.code_description(red_purple)

while True:
    robot.screen.clear_screen()
    robot.screen.set_cursor(1, 1)

    code_objects = robot.vision.get_data(red_purple)

    if code_objects[0].exists:
        robot.screen.print("Code detected!")
    else:
        robot.screen.print("No code detected.")

    wait(0.2, SECONDS)