Fís AI#

Réamhrá#

Is féidir leis an Braiteoir Fís 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.

Úsáideann an leathanach seo ai_vision_1, RED_BOX, agus BOX_CODE mar ainmneacha samplacha Braiteoir Fís AI, Síniú Dathanna, agus Cód Dathanna faoi seach. Cuir d’ainmneacha cumraithe féin ina n-áit de réir mar is gá.

Seo thíos liosta de na modhanna uile:

Faighteoirí – Faigh sonraí ón Braiteoir Fís AI.

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

  • installed – Cibé an bhfuil an Braiteoir Fís AI ceangailte leis an EXP Brain.

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

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

  • .width – Width of the detected object.

  • .height – Height of the detected object.

  • .centerX – X position of the object’s center.

  • .centerY – Y position of the object’s center.

  • .angle – Treoshuíomh an Chóid Datha.

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

  • .originY – Y position of the object’s top-left corner.

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

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

Tógálaithe – Déan an Braiteoir Fís AI agus a shínithe a thosú agus a chumrú de láimh.

  • AiVision – Cruthaíonn sé Braiteoir Fís Intleachta Saorga.

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

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

  • Tagdesc – Cruthaíonn sé seo aitheantóir AprilTag.

Faighteoirí#

take_snapshot#

Scagann take_snapshot sonraí ó fhráma an Braiteora Físe AI go síniú aonair — cur síos sábháilte ar rud éigin 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íse 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 - Ciúbanna, fáinní, agus liathróidí.
  • 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. Is é 8 an réamhshocrú.

# Drive 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 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:

Eilimintí an tSeomra Ranga

Uimhir Aitheantais

Aicmiú AI

0

BLUE_BALL

1

GREEN_BALL

2

RED_BALL

3

BLUE_RING

4

GREEN_RING

5

RED_RING

6

BLUE_CUBE

7

GREEN_CUBE

8

RED_CUBE

Comórtas Róbataice VEX V5 Ard-Geallta

Uimhir Aitheantais

Aicmiú AI

0

MOBILE_GOAL

1

RED_RING

2

BLUE_RING

Brú Ar Ais ar Chomórtas Róbataice VEX V5

Uimhir Aitheantais

Aicmiú AI

0

BLUE_BLOCK

1

RED_BLOCK

Sárú Comórtais Róbataice VEX V5

Uimhir Aitheantais

Aicmiú AI

0

RED_BLUE_PIN

1

BLUE_YELLOW_PIN

2

RED_YELLOW_PIN

3

YELLOW_PIN

4

CUP

Sínithe Dath#

Is dath uathúil é Síniú Datha is féidir leis an Braiteoir Fís AI a aithint. Ligeann na sínithe seo don Braiteoir Fís 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 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 seolann sé luach Booleach ar ais a léiríonn an bhfuil an Braiteoir Fís AI ceangailte leis an EXP Brain faoi láthair.

  • True – Tá an Braiteoir Fís AI ceangailte leis an EXP Brain.

  • False – Níl an Braiteoir Fís AI ceangailte leis an EXP Brain.

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 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 ​​a braitheadh ​​nó ID AprilTag ar ais mar shlánuimhir.

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í.

Tógálaithe#

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

AiVision#

Cruthaíonn AiVision Braiteoir Fís Intleachta Saorga.

Úsáid

Vision(smartport, sigs)

Paraiméadair

Cur síos

smartport

An Port Cliste a bhfuil an Braiteoir Fís AI ceangailte leis, scríofa mar Ports.PORTx áit a seasann x do uimhir an phoirt.

sigs

Roghnach. Ainm sínithe amháin nó níos mó, scartha le camóga (,):

# Create the Color Signatures
RED_BOX = Colordesc(1, 255, 0, 0, 20, 0.9)
BLUE_BOX = Colordesc(0, 26, 255, 0, 20, 0.9)

# Create the Color Code
RED_BLUE = Codedesc(RED_BOX, BLUE_BOX)

"""
Create an AI Vision Sensor with the following signatures:
- RED_BLUE
- AiVision.ALL_TAGS - for AprilTag IDs
"""
ai_vision_1 = AiVision(Ports.PORT1, RED_BLUE, AiVision.ALL_TAGS)

Colordesc#

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 AI ag an am céanna.

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

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.

red

Luach dearg an datha ó 0 go 255.

green

Luach glas an datha ó 0 go 255.

blue

Luach gorm an datha ó 0 go 255.

hangle

An éagsúlacht datha incheadaithe mar réimse céimeanna ar an roth datha (1–40). Ceadaíonn luachanna níos airde diall rothlach níos leithne ón dath bunúsach.

hdsat

An diall sáithiúcháin incheadaithe, ó 0.10 go 1.00. Léiríonn an luach seo an codán den raon sáithiúcháin iomlán a bhféadfadh an dath athrú laistigh de (m.sh., 0.10 = ±10% sáithiúcháin)

Roth dathanna ciorclach a thaispeánann speictream iomlán dathanna atá lipéadaithe le luachanna céime timpeall an imlíne, ag méadú i méaduithe 30 céim ó 0° ag an mbarr go 360°.

"""
Create a Color Signature with the following values:
- index: 1
- red: 255
- green: 0
- blue: 0
- hangle: 20
- hdsat: 0.9
"""
# Create a red Color Signature
RED_BOX = Colordesc(1, 255, 0, 0, 20, 0.9)

Codedesc#

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.

Usage:
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.

# Create the Color Signatures
RED_BOX = Colordesc(1, 255, 0, 0, 20, 0.9)
BLUE_BOX = Colordesc(0, 26, 255, 0, 20, 0.9)

# Create a Color Code with the Color Signatures
BOX_CODE = Codedesc(RED_BOX, BLUE_BOX)

Tagdesc#

Cruthaíonn Tagdesc ID AprilTag. Is féidir leat é a úsáid chun IDanna AprilTag inaitheanta a shainiú, rud a fhágann go bhfuil do chód níos soiléire agus níos éasca le léamh.

Usage:
Tagdesc(id)

Paraiméadar

Cur síos

id

An ID AprilTag le húsáid.

# Set AprilTag ID 7 to be the "goal"
goal = Tagdesc(7)