Braiteoir Fís AI#

Réamhrá#

Is féidir leis an Braiteoir Fís IQ AI rudaí, dathanna agus aitheantóirí AprilTag a bhrath agus a rianú. Ligeann sé seo don róbat a thimpeallacht a anailísiú, rudaí a leanúint agus imoibriú bunaithe ar shonraí amhairc a braitheadh.

Maidir leis na samplaí thíos, tabharfar ai_vision_1ar an Braiteoir Fís IQ AI cumraithe, agus úsáidfear na réada Sínithe Datha cumraithe, amhail RED_BOX, i ngach sampla ina dhiaidh sin ar fud an doiciméid API seo agus tagairt á déanamh do AiVision.

Seo thíos liosta de na modhanna uile:

Faighteoirí — Faigh sonraí ón Braiteoir Fís IQ AI.

  • take_snapshot — Gabhann sé sonraí le haghaidh síniú ar leith.

  • installed — Cibé an bhfuil an Braiteoir Fís IQ AI ceangailte leis an Inchinn IQ (2ú glúin).

Airíonna — Sonraí réada arna bhfilleadh ó take_snapshot.

  • .exists — Cibé an bhfuil an réad ann sa bhrath reatha.

  • .width — Leithead an réada braite.

  • .height — Airde an réada braite.

  • .centerX — Suíomh X lár an réada.

  • .centerY — Suíomh Y lár an réada.

  • .angle — Treoshuíomh an Chóid Datha nó ID AprilTag.

  • .originX — Suíomh X chúinne uachtarach na láimhe clé den réada.

  • .originY — Suíomh Y chúinne uachtarach na láimhe clé den réada.

  • .id — Classification or tag ID of the object.

  • .score — Scór muiníne le haghaidh Aicmithe AI.

Tógálaithe — Na braiteoirí a thosú agus a chumrú de láimh.

  • AiVision — Cruthaíonn sé Braiteoir Fís IQ AI.

  • Colordesc — Cruthaíonn sé Síniú Datha.

  • Codedesc — Cruthaíonn sé Cód Datha.

Faighteoirí#

take_snapshot#

Scagann take_snapshot sonraí ó fhráma Braiteoir Fís IQ AI go síniú aonair — cur síos sábháilte ar rud is féidir leis an braiteoir a aithint, amhail réad réamh-oilte, aitheantóir AprilTag, nó Síniú Dath nó Cód Dath cumraithe — agus tugann sé tuple ar ais.

Ní mór Sínithe Datha agus Cóid Datha a chumrú ar dtús san Fhís-Uirlis sula bhféadfar iad a úsáid leis an modh seo.

Stórálann an tuple réada in ord ón gceann is mó go dtí an ceann is lú de réir leithead, ag tosú ag innéacs 0. Is féidir rochtain a fháil ar airíonna gach réada trína innéacs a úsáid. Seoltar tuple folamh ar ais mura mbraitear aon réada comhoiriúnacha.

Usage:
ai_vision_1.take_snapshot(SIGNATURE)

Paraiméadair

Cur síos

SIGNATURE

Scagann sé an tacar sonraí chun sonraí an tsínithe tugtha amháin a áireamh. Is iad na sínithe atá ar fáil:

  • Sínithe Datha nó Cóid Datha - Ainm an Braiteora Fís IQ AI, dhá líne faoi, agus ansin ainm an tSínithe Datha nó an Chóid Datha. Mar shampla: ai_vision_1__RED_BOX.
  • AiVision.ALL_AIOBJS - Gach ceann a braitheadh ​​Aicmithe AI ag brath ar an tsamhail atá cumraithe san Fhóntas Fís AI.
  • AiVision.ALL_TAGS - Gach ID AprilTag.

count

Roghnach. Socraíonn sé seo an líon uasta réad is féidir a thabhairt ar ais ó 1 go 24 (réamhshocrú: 8).

# Move forward if an object is detected
while True:
    objects = ai_vision_1.take_snapshot(AiVision.ALL_AIOBJS)
    if objects[0].exists:
        drivetrain.drive_for(FORWARD, 50, MM)
    wait(50, MSEC)

Nóta: Is féidir an tuple a chuirtear ar ais a shórtáil de réir aon mhaoin, ní hamháin leithead, ag baint úsáide as feidhm sorted Python. Mar shampla, sórtáil de réir AprilTag ID:

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

Nó sórtáil de réir airde ina ionad:

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

Aicmithe AI#

Is féidir leis an Braiteoir Fís IQ AI rudaí éagsúla a bhrath faoi Aicmithe AI ​​áirithe. Ag brath ar an tsamhail Aicmithe AI ​​a roghnaítear agus an Braiteoir Fís AI á chumrú sa fhuinneog Gléasanna, braithfear rudaí éagsúla. Is iad seo a leanas na samhlacha atá ar fáil faoi láthair:

Réada Seomra Ranga

Uimhir Aitheantais

Aicmiú AI

0

ClassroomElements.BLUE_BALL

1

ClassroomElements.GREEN_BALL

2

ClassroomElements.RED_BALL

3

ClassroomElements.BLUE_RING

4

ClassroomElements.GREEN_RING

5

ClassroomElements.RED_RING

6

ClassroomElements.BLUE_CUBE

7

ClassroomElements.GREEN_CUBE

8

ClassroomElements.RED_CUBE

Comórtas Róbataice VEX IQ Meascán & Meaitseáil

Uimhir Aitheantais

Aicmiú AI

0

GameElementsMixAndMatch.BEAM

1

GameElementsMixAndMatch.BLUE_PIN

2

GameElementsMixAndMatch.RED_PIN

3

GameElementsMixAndMatch.ORANGE_PIN

Comórtas Róbataice VEX IQ Leibhéal Suas

Uimhir Aitheantais

Aicmiú AI

0

GameElementsLevelUp.BLUE_BEANBAG

1

GameElementsLevelUp.RED_BEANBAG

2

GameElementsLevelUp.YELLOW_BEANBAG

Sínithe Dath#

Is dath uathúil é Síniú Datha is féidir leis an Braiteoir Fís IQ AI a aithint. Ligeann na sínithe seo don Braiteoir Fís IQ AI rudaí a bhrath agus a rianú bunaithe ar a ndath. Nuair a bheidh Síniú Datha cumraithe, is féidir leis an braiteoir rudaí leis an dath sonrach sin ina réimse radhairc a aithint. Úsáidtear sínithe datha le take_snapshot chun rudaí daite a phróiseáil agus a bhrath i bhfíor-am.

Chun Síniú Datha cumraithe a úsáid i dtionscadal, ní mór a ainm a bheith mar ainm an braiteora, dhá líne faoi, agus ansin ainm an tSínithe Datha. Mar shampla: ai_vision_1__RED_BOX.

# Display if any objects match the RED_BOX signature
while True:
    brain.screen.set_cursor(1, 1)
    brain.screen.clear_row(1)
    # Change to any configured Color Signature
    red_box = ai_vision_1.take_snapshot(ai_vision_1__RED_BOX)
    if red_box[0].exists:
        brain.screen.print("Color detected!")
        wait(100, MSEC)

Cóid Dathanna#

Is patrún struchtúrtha é Cód Datha atá comhdhéanta de shínithe datha atá eagraithe in ord sonrach. Ligeann na cóid seo don Braiteoir Fís IQ AI patrúin réamhshainithe dathanna a aithint. Tá Cóid Datha úsáideach chun rudaí casta a aithint nó marcóirí uathúla a chruthú le haghaidh loingseoireachta uathrialach.

Chun Cód Dathanna cumraithe a úsáid i dtionscadal, ní mór a ainm a bheith mar ainm an braiteora, dhá líne faoi, agus ansin ainm an Chóid Dathanna. Mar shampla: ai_vision_1__BOX_CODE.

# Display if any objects match the BOX_CODE code
while True:
    brain.screen.set_cursor(1, 1)
    brain.screen.clear_row(1)
    # Change to any configured Color Code
    box_code = ai_vision_1.take_snapshot(ai_vision_1__BOX_CODE)
    if box_code[0].exists:
        brain.screen.print("Code detected!")
        wait(100, MSEC)

installed#

installed luach Booleach ar ais a léiríonn an bhfuil an Braiteoir Fís IQ AI ceangailte leis an Inchinn IQ (2ú glúin) faoi láthair.

  • True — Tá Braiteoir Fís IQ AI ceangailte leis an Inchinn IQ (2ú glúin).

  • False — Níl an Braiteoir Fís IQ AI ceangailte leis an Inchinn IQ (2ú glúin).

Usage:
ai_vision_1.installed()

Paraiméadair

Cur síos

Níl aon pharaiméadair ag an modh seo.

# Display a message if the AI Vision Sensor is connected
if ai_vision_1.installed():
    brain.screen.print("Installed!")

Airíonna#

Tá deich n-airíonna san áireamh le gach réad atá stóráilte i tuple tar éis take_snapshot a úsáid.

Déanann gach luach maoine seachas .id agus .score cur síos ar shuíomh agus méid an réada braite i radharc Braiteoir Fís IQ AI ag an nóiméad a úsáideadh take_snapshot Tomhaistear na luachanna seo i bpicteilíní, bunaithe ar réiteach 320 faoi 240 picteilín an braiteora.

.exists#

.exists tugann sé luach Booleach ar ais a léiríonn an bhfuil an t-innéacs sa tuple nó nach bhfuil.

  • True — Tá an t-innéacs ann.

  • False — Níl an t-innéacs ann.

# Check if at least two objects are detected
while True:
    brain.screen.clear_screen()
    brain.screen.set_cursor(1, 1)
    objects = ai_vision_1.take_snapshot(AiVision.ALL_AIOBJS)

    if objects[0].exists:
        if objects[1].exists:
            brain.screen.print("At least 2")

        else:
            brain.screen.print("Less than 2")
    wait(50, MSEC)

.width#

Tugann .width leithead an réada braite i bpicteilíní ar ais, ar slánuimhir é idir 1 agus 320.

# Approach an object until it's at least 100 pixels wide
while True:
    objects = ai_vision_1.take_snapshot(AiVision.ALL_AIOBJS)

    if objects[0].exists:
        if objects[0].width < 100:
            drivetrain.drive(FORWARD)
    else:
        drivetrain.stop()
    wait(50, MSEC)

.height#

.height tugann sé airde an réada braite i bpicteilíní ar ais, ar slánuimhir é idir 1 agus 240.

# Approach an object until it's at least 90 pixels tall
while True:
    objects = ai_vision_1.take_snapshot(AiVision.ALL_AIOBJS)

    if objects[0].exists:
        if objects[0].height < 90:
            drivetrain.drive(FORWARD)
    else:
        drivetrain.stop()
    wait(50, MSEC)

.centerX#

.centerX seolann sé comhordanáid-x lár an réada braite i bpicteilíní ar ais, ar slánuimhir idir 0 agus 320 é.

# Turn until an object is directly in front of the sensor
drivetrain.set_turn_velocity(10, PERCENT)
drivetrain.turn(RIGHT)

while True:
    objects = ai_vision_1.take_snapshot(AiVision.ALL_AIOBJS)

    if objects[0].exists:
        if 140 < objects[0].centerX < 180:
            drivetrain.stop()
    wait(10,MSEC)

.centerY#

.centerY seolann sé comhordanáid-y lár an réada braite i bpicteilíní ar ais, ar slánuimhir idir 0 agus 240 é.

# Approach an object until the object's center is
# high enough in the field of view
while True:
    objects = ai_vision_1.take_snapshot(AiVision.ALL_AIOBJS)

    if objects[0].exists:
        if objects[0].centerY < 150:
            drivetrain.drive(FORWARD)
    else:
        drivetrain.stop()
    wait(50, MSEC)

.angle#

Tugann .angle treoshuíomh an Chóid Dathanna nó ID AprilTag braite ar ais i gcéimeanna, ar slánuimhir idir 0 agus 359 é.

# Turn left or right depending on how a
# configured Color Code is rotated
while True:
    box_code = ai_vision_1.take_snapshot(ai_vision_1__BOX_CODE)

    if box_code[0].exists:
        if 50 < box_code[0].angle < 100:
            drivetrain.turn(RIGHT)

        elif 270 < box_code[0].angle < 330:
            drivetrain.turn(LEFT)

        else:
            drivetrain.stop()
    else:
        drivetrain.stop()
    wait(50, MSEC)

.originX#

.originX seolann sé comhordanáid-x chúinne uachtarach na láimhe clé de bhosca teorann an réada braite i bpicteilíní, ar slánuimhir idir 0 agus 320 í.

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

    objects = ai_vision_1.take_snapshot(AiVision.ALL_AIOBJS)

    if objects[0].exists:
        if objects[0].originX < 120:
            brain.screen.print("To the left!")
        else:
            brain.screen.print("To the right!")
    else:
        brain.screen.print("No objects")
    wait(100, MSEC)

.originY#

Tugann .originY comhordanáid-y chúinne uachtarach na láimhe clé de bhosca teorann an réada braite ar ais i bpicteilíní, arb é slánuimhir idir 0 agus 240 é.

# Display if an object is close or far
while True:
    brain.screen.clear_screen()
    brain.screen.set_cursor(1,1)

    objects = ai_vision_1.take_snapshot(AiVision.ALL_AIOBJS)

    if objects[0].exists:
        if objects[0].originY < 110:
            brain.screen.print("Close")
        else:
            brain.screen.print("Far")

.id#

Tugann .id ID an Aicmithe AI nó an ID AprilTag a braitheadh ​​ar ais mar shlánuimhir. Braitheann Aicmithe AI ​​ar an tsamhail atá cumraithe san AI Vision Utility.

I gcás aitheantais AprilTag, seasann an mhaoin .id don uimhir aitheantais AprilTag a braitheadh ​​sa raon 0 go 36. I gcás Aicmiú AI, comhfhreagraíonn an mhaoin .id don aitheantas réamhshainithe sa rannán Aicmithe AI.

# Move forward when AprilTag ID 1 is detected
while True:
    apriltags = ai_vision_1.take_snapshot(AiVision.ALL_TAGS)

    if apriltags[0].exists:
        if apriltags[0].id == 1:
            robot.drive(FORWARD)
    else:
        drivetrain.stop()

    wait(50, MSEC)

.score#

.score tugann sé scór muiníne an Aicmithe AI ​​a braitheadh ​​ar ais mar shlánuimhir idir 1 agus 100.

Ciallaíonn scór níos ísle go bhfuil an braiteoir níos lú muiníne faoin réad a braitheadh, agus ciallaíonn scór níos airde go bhfuil an braiteoir níos muiníní.

# Display if a score is confident
while True:
    objects = ai_vision_1.take_snapshot(AiVision.ALL_AIOBJS)
    brain.screen.clear_screen()
    brain.screen.set_cursor(1, 1)
    if objects[0].exists:
        if objects[0].score > 95:
            brain.screen.print("Confident")
    else:
        brain.screen.print("Not confident")

    wait(50, MSEC)

Tógálaithe#

Úsáidtear tógálaithe chun AiVision, Colordesc, agus Codedesc a chruthú de láimh, atá riachtanach chun Braiteoir Fís IQ AI a chumrú lasmuigh de VEXcode.

AI Vision Sensor#

Cruthaíonn AiVision Braiteoir Fís IQ AI.

Úsáid

Vision(port, sigs)

Paraiméadair

Cur síos

port

Cén Port Cliste a bhfuil an Braiteoir Fís IQ AI ceangailte leis, ó 1 go 12.

sigs

Roghnach. Ainm sínithe amháin nó níos mó:

Sampla

ai_vision_1 = AiVision(Ports.PORT1, AiVision.ALL_AIOBJS)

# Move forward if an object is detected
while True:
    objects = ai_vision_1.take_snapshot(AiVision.ALL_AIOBJS)
    if objects[0].exists:
        drivetrain.drive_for(FORWARD, 50, MM)
    wait(50, MSEC)

Color Signature#

Cruthaíonn Colordesc Síniú Datha. Is féidir suas le seacht Síniú Datha éagsúla a stóráil ar Braiteoir Fís IQ AI ag an am céanna.

Úsáid:

Colordesc(index, uMin, uMax, uMean, vMin, vMax, vMean, rgb, type)

Paraiméadar

Cur síos

index

Innéacs an réada Colordesc , ó 1 - 7. Nóta: Má chruthaítear dhá Colordesc réad leis an uimhir innéacs chéanna, cuirfidh an dara réad cruthaithe sárú ar an gcéad cheann.

uMin

An luach ó uMin san Fhóntas Fís.

uMax

An luach ó uMax san Fhóntas Fís.

uMean

An luach ó uMean san Fhóntas Fís.

vMin

An luach ó vMin san Fhóntas Fís.

vMax

An luach ó vMax san Fhóntas Fís.

vMean

An luach ó vMean san Fhís-Uirlis.

rgb

An luach ó rgb san Fhóntas Fís.

type

An luach ó type san Fhóntas Fís.

Chun na luachanna a fháil chun Síniú Datha a chruthú, téigh go dtí an Fís-Fhóntais. Nuair a bheidh Síniú Datha cumraithe, cóipeáil na luachanna paraiméadair ón bhfuinneog Cumraíochta.

Sampla

# Create a new Signature RED_BOX with the Colordesc class
RED_BOX = Colordesc(1, 10121, 10757, 10439,-1657, -1223, -1440,2.5, 1)
# Create a new AI Vision Sensor "ai_vision_1" with the AiVision
# class, with the RED_BOX Signature.
ai_vision_1 = AiVision(Ports.PORT1, 100, RED_BOX)

# Move forward if a red object is detected
while True:
    red_object = ai_vision_1.take_snapshot(RED_BOX)
    if red_object[0].exists:
        drivetrain.drive_for(FORWARD, 10, MM)
    wait(5, MSEC)

Color Code#

Cruthaíonn Codedesc Cód Dathanna. Éilíonn sé dhá Shíniú Dathanna ar a laghad atá sainithe cheana féin chun go n-úsáidfear é. Is féidir suas le hocht gCód Dathanna éagsúla a stóráil ar Braiteoir Fís ag an am céanna.

Úsáid:

Codedesc(sig1, sig2, sig3, sig4, sig5)

Paraiméadar

Cur síos

sig1

Síniú Datha a cruthaíodh roimhe seo.

sig2

Síniú Datha a cruthaíodh roimhe seo.

sig3

Roghnach. Síniú Datha a cruthaíodh roimhe seo.

sig4

Roghnach. Síniú Datha a cruthaíodh roimhe seo.

sig5

Roghnach. Síniú Datha a cruthaíodh roimhe seo.

Sampla

# Create two new Signatures for a red and blue box
RED_BOX = Colordesc(1, 10121, 10757, 10439,-1657, -1223, -1440, 2.5, 1)
BLUE_BOX = Colordesc(2, -4443, -3373, -3908,6253, 7741, 6997, 2.5, 1)
# Create a Color Code for a red box to the left of a blue box
RED_BLUE = Codedesc(RED_BOX, BLUE_BOX)
# Create a new AI Vision Sensor "ai_vision_1" with the AiVision
# class, with the RED_BOX and BLUE_BOX Signatures.
ai_vision_1 = AiVision(Ports.PORT1, RED_BOX, BLUE_BOX)

# Display a message if Color Code is detected
while True:
    brain.screen.set_cursor(1, 1)
    brain.screen.clear_row(1)
    # Change to any configured Color Code
    box_code = ai_vision_1.take_snapshot(RED_BLUE)
    if box_code[0].exists:
        brain.screen.print("Code detected!")
        wait(100, MSEC)