Braiteoir Fís#
Réamhrá#
Is braiteoir ceamara-bhunaithe é an Braiteoir Fís ar féidir leis Sínithe Dathanna agus Cóid Dathanna a bhrath agus a rianú. Ligeann sé do róbat a thimpeallacht a anailísiú agus freagairt d’ionchur amhairc.
Maidir leis na samplaí thíos, tabharfar vision_1ar an Braiteoir Fís 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 mhodhanna ranga Vision.
Seo thíos liosta de na modhanna uile:
Faighteoirí — Faigh sonraí ón Braiteoir Fís.
take_snapshot— Gabhann sé sonraí le haghaidh síniú ar leith.installed— Cibé an bhfuil an Braiteoir Fís ceangailte leis an Inchinn IQ (2ú glúin).
Airíonna — Sonraí réada arna bhfilleadh ó take_snapshot.
largest_object— Roghnaigh an réad is mó láithreach ón ngrianghraf den Braiteoir Fís..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..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.
Tógálaithe — Na braiteoirí a thosú agus a chumrú de láimh.
Faighteoirí#
take_snapshot#
take_snapshot scagann sé sonraí ón bhfráma Braiteora Fís go síniú aonair — cur síos sábháilte ar rud is féidir leis an braiteoir a aithint, amhail Síniú Dathanna nó Cód Dathanna 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:
vision_1.take_snapshot(SIGNATURE)
Paraiméadair |
Cur síos |
|---|---|
|
Scagann sé an tacar sonraí chun sonraí an tsínithe tugtha amháin a áireamh. Is iad na sínithe atá ar fáil:
|
# Move forward if a red object is detected
while True:
red_box = vision_1.take_snapshot(vision_1__RED_BOX)
if red_box[0].exists:
drivetrain.drive_for(FORWARD, 10, MM)
wait(5, MSEC)
Sínithe Dath#
Is dath uathúil é Síniú Datha is féidir leis an Braiteoir Fís a aithint. Ligeann na sínithe seo don Braiteoir Fís 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 Fís, dhá líne faoi, agus ansin ainm an tSínithe Datha. Mar shampla: 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 = vision_1.take_snapshot(vision_1__RED_BOX)
if red_box[0].exists:
brain.screen.print("Color signature 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 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: 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 = vision_1.take_snapshot(vision_1__BOX_CODE)
if box_code[0].exists:
brain.screen.print("Color code detected!")
wait(100, MSEC)
installed#
installed luach Booleach ar ais a léiríonn an bhfuil an Braiteoir Fís ceangailte leis an Inchinn IQ (2ú glúin) faoi láthair.
True— Tá an Braiteoir Radhairc ceangailte leis an Inchinn IQ (2ú glúin).False— Níl an Braiteoir Radhairc ceangailte leis an Inchinn IQ (2ú glúin).
Usage:
vision_1.installed()
Paraiméadair |
Cur síos |
|---|---|
Níl aon pharaiméadair ag an modh seo. |
# Display a message if the Vision Sensor is connected
if vision_1.installed():
brain.screen.print("Installed!")
Airíonna#
largest_object#
Aisghabhann largest_object an réad braite is mó chun sonraí a fháil uaidh sa tuple a tugadh ar ais ón úsáid is déanaí de take_snapshot.
Is féidir an modh seo a úsáid chun an réad is mó a fháil ó thupla i gcónaí gan innéacs a shonrú.
Usage:
vision_1.largest_object()
# Turn slowly until the largest object is centered in
# front of the Vision Sensor
drivetrain.set_turn_velocity(10, PERCENT)
drivetrain.turn(RIGHT)
while True:
red_box = vision_1.take_snapshot(vision_1__RED_BOX)
if red_box[0].exists:
if 140 < vision_1.largest_object().centerX < 180:
drivetrain.stop()
wait(10,MSEC)
Tuple Properties#
Tá ocht n-airíonna san áireamh le gach réad atá stóráilte i dtuple tar éis take_snapshot a úsáid.
Déanann na luachanna maoine go léir cur síos ar shuíomh agus méid an réada braite i radharc an Braiteora Fís tráth a úsáideadh take_snapshot Tomhaistear na luachanna seo i bpicteilíní, bunaithe ar réiteach 316 faoi 212 picteilín an braiteora.
ann#
.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 one red objects is detected
# You will receive an error if no objects are detected
while True:
brain.screen.clear_screen()
brain.screen.set_cursor(1, 1)
red_objects = vision_1.take_snapshot(vision_1__RED_BOX)
if red_objects[0].exists:
brain.screen.print("At least 1")
else:
brain.screen.print("No red objects")
wait(0.5, SECONDS)
.leithead#
Tugann .width leithead an réada braite i bpicteilíní ar ais, ar slánuimhir é idir 1 agus 316.
# Move towards a blue object until its width is
# larger than 100 pixels
while True:
blue_box = vision_1.take_snapshot(vision_1__BLUE_BOX)
if blue_box[0].exists:
if blue_box[0].width < 100:
drivetrain.drive_for(FORWARD, 10, MM)
else:
drivetrain.stop()
wait(50, MSEC)
airde#
.height tugann sé airde an réada braite i bpicteilíní ar ais, ar slánuimhir é idir 1 agus 212.
# Move towards a blue object until its height is
# larger than 100 pixels
while True:
blue_box = vision_1.take_snapshot(vision_1__BLUE_BOX)
if blue_box[0].exists:
if blue_box[0].height < 100:
drivetrain.drive_for(FORWARD, 10, MM)
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 316 é.
# Turn slowly until the largest blue object is centered
# in front of the Vision Sensor.
drivetrain.set_turn_velocity(10, PERCENT)
drivetrain.turn(RIGHT)
while True:
blue_box = vision_1.take_snapshot(vision_1__BLUE_BOX)
if blue_box[0].exists:
if 140 < vision_1.largest_object().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 212.
# Move towards a blue object until its
# center y-coordinate is more than 140 pixels
while True:
blue_box = vision_1.take_snapshot(vision_1__BLUE_BOX)
if blue_box[0].exists:
if blue_box[0].centerY < 140:
drivetrain.drive(FORWARD)
else:
drivetrain.stop()
wait(50, MSEC)
.uillinn#
Tugann .angle treoshuíomh an réada braite ar ais i gcéimeanna, ar slánuimhir é idir 0 agus 359.
# Turn left or right depending on how a
# configured box code is rotated
while True:
box_code = vision_1.take_snapshot(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 316 í.
# Display if a red object is to the
# left or the right
while True:
brain.screen.clear_screen()
brain.screen.set_cursor(1,1)
red_box = vision_1.take_snapshot(vision_1__RED_BOX)
if red_box[0].exists:
if red_box[0].originX < 160:
brain.screen.print("To the left!")
else:
brain.screen.print("To the right!")
wait(50, MSEC)
.bunúsY#
Tugann .originY comhordanáid-y chúinne uachtarach na láimhe clé de bhosca teorann an réada braite ar ais i bpicteilíní, ar slánuimhir idir 0 agus 212 í.
# Display if a red object is close or far
# from the robot
while True:
brain.screen.clear_screen()
brain.screen.set_cursor(1,1)
red_box = vision_1.take_snapshot(vision_1__RED_BOX)
if red_box[0].exists:
if red_box[0].originY < 80:
brain.screen.print("Far")
else:
brain.screen.print("Close")
wait(50, MSEC)
Tógálaithe#
Úsáidtear tógálaithe chun réada Vision, Signature, agus Code a chruthú de láimh, atá riachtanach chun na braiteoirí a chumrú lasmuigh de VEXcode.
Vision Sensor#
Cruthaíonn Vision Braiteoir Fís.
Úsáid
Vision(port, brightness, sigs)
Paraiméadair |
Cur síos |
|---|---|
|
Cén Port Cliste a bhfuil an Braiteoir Fís ceangailte leis, ó 1 go 12. |
|
Roghnach. An luach gile don Braiteoir Fís, ó 1 go 100. |
|
Roghnach. Ainm réad amháin nó níos mó de na réadaí Síniú Datha nó Cód Datha. |
Sampla
# Create a new Signature "RED_BOX" with the Signature class
RED_BOX = Signature(1, -3911, -3435, -3673,10879, 11421, 11150,2.5, 0)
# Create a new Vision Sensor "vision_1" with the Vision
# class, with the "RED_BOX" Signature.
vision_1 = Vision(Ports.PORT1, 100, RED_BOX)
# Move forward if a red object is detected
while True:
red_object = vision_1.take_snapshot(RED_BOX)
if red_object[0].exists:
drivetrain.drive_for(FORWARD, 10, MM)
wait(5, MSEC)
Color Signature#
Cruthaíonn Signature Síniú Datha. Is féidir suas le seacht Síniú Datha éagsúla a stóráil ar Braiteoir Fís ag an am céanna.
Úsáid:
Signature(index, uMin, uMax, uMean, vMin, vMax, vMean, rgb, type)
Paraiméadar |
Cur síos |
|---|---|
|
Innéacs an réada |
|
An luach ó |
|
An luach ó |
|
An luach ó |
|
An luach ó |
|
An luach ó |
|
An luach ó |
|
An luach ó |
|
An luach ó |
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 Signature class
RED_BOX = Signature(1, 10121, 10757, 10439,-1657, -1223, -1440,2.5, 1)
# Create a new Vision Sensor "vision_1" with the Vision
# class, with the RED_BOX Signature.
vision_1 = Vision(Ports.PORT1, 100, RED_BOX)
# Move forward if a red object is detected
while True:
red_object = vision_1.take_snapshot(RED_BOX)
if red_object[0].exists:
drivetrain.drive_for(FORWARD, 10, MM)
wait(5, MSEC)
Color Code#
Cruthaíonn Cód Code 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:
Code(sig1, sig2, sig3, sig4, sig5)
Paraiméadar |
Cur síos |
|---|---|
|
Síniú Datha a cruthaíodh roimhe seo. |
|
Síniú Datha a cruthaíodh roimhe seo. |
|
Roghnach. Síniú Datha a cruthaíodh roimhe seo. |
|
Roghnach. Síniú Datha a cruthaíodh roimhe seo. |
|
Roghnach. Síniú Datha a cruthaíodh roimhe seo. |
Sampla
# Create two new Signatures for a red and blue box
RED_BOX = Signature(1, 10121, 10757, 10439,-1657, -1223, -1440, 2.5, 1)
BLUE_BOX = Signature(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 = Code(RED_BOX, BLUE_BOX)
# Create a new Vision Sensor "vision_1" with the Vision
# class, with the red_box and blue_box Signatures.
vision_1 = Vision(Ports.PORT1, 100, 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 = vision_1.take_snapshot(RED_BLUE)
if box_code[0].exists:
brain.screen.print("Color code detected!")
wait(100, MSEC)