Changed program to more variability
This commit is contained in:
parent
9277c635cd
commit
5ceb290435
@ -25,10 +25,11 @@ m_right.polarity = 'inversed' # use 'normal' to initialize it to run clockwise
|
|||||||
m_left.polarity = 'inversed'
|
m_left.polarity = 'inversed'
|
||||||
|
|
||||||
# Defined inputs for the given experiment / enviroment
|
# Defined inputs for the given experiment / enviroment
|
||||||
orange = 1 # Signatur of orange dice
|
sig_sort = 2 # Signatur of green dice
|
||||||
green = 2 # Signatur of green dice
|
sig_let = 1 # Signatur of orange dice
|
||||||
fast = 30 # driving speed
|
fast = 30 # driving speed
|
||||||
slow = 10 # searching speed
|
slow = 10 # searching speed
|
||||||
|
line = 10 # min. reflection of outline
|
||||||
|
|
||||||
# initalization state defined
|
# initalization state defined
|
||||||
state = 1 # Initiate search state for beginning
|
state = 1 # Initiate search state for beginning
|
||||||
@ -51,28 +52,28 @@ def search ():
|
|||||||
m_right.on(SpeedPercent(-slow))
|
m_right.on(SpeedPercent(-slow))
|
||||||
m_left.on(SpeedPercent(slow))
|
m_left.on(SpeedPercent(slow))
|
||||||
# search for blocks
|
# search for blocks
|
||||||
nr_orange, o_block = pixy2.get_blocks(orange, 2)
|
nr_sort, sort_block = pixy2.get_blocks(sig_sort, 2)
|
||||||
nr_green, g_block = pixy2.get_blocks(green, 2)
|
nr_let, let_block = pixy2.get_blocks(sig_let, 2)
|
||||||
if cs.reflected_light_intensity < 15: # if outline is reached change state to edge
|
if cs.reflected_light_intensity < line: # if outline is reached change state to edge
|
||||||
tank.stop()
|
tank.stop()
|
||||||
last_state = state
|
last_state = state
|
||||||
state = 5
|
state = 5
|
||||||
elif us.distance_centimeters < 10: # if a block is currently in the arms change to sort
|
elif us.distance_centimeters < 10: # if a block is currently in the arms change to sort
|
||||||
last_state = state
|
last_state = state
|
||||||
state = 3
|
state = 3
|
||||||
elif nr_orange > 0: # when orange block is found then change to get
|
elif nr_sort > 0: # when block to sort is found then change to get
|
||||||
tank.stop()
|
tank.stop()
|
||||||
last_state = state
|
last_state = state
|
||||||
state = 2
|
state = 2
|
||||||
elif nr_green > 0: # when green block is found then change to avoid
|
elif nr_let > 0: # when block to let be is found then change to avoid
|
||||||
last_state = state
|
last_state = state
|
||||||
state = 4
|
state = 4
|
||||||
elif gyro.angle > 720: # when the robot does not find a block drive a little bit forward
|
elif gyro.angle > 720: # when the robot does not find a block drive a little bit forward
|
||||||
while cs.reflected_light_intensity > 8 and j <= 5:
|
while cs.reflected_light_intensity > line and j <= 5:
|
||||||
tank.on(fast,fast)
|
tank.on(fast,fast)
|
||||||
sleep(0.2)
|
sleep(0.2)
|
||||||
j+=1
|
j+=1
|
||||||
if cs.reflected_light_intensity <= 8 :
|
if cs.reflected_light_intensity <= line :
|
||||||
tank.stop()
|
tank.stop()
|
||||||
last_state = state
|
last_state = state
|
||||||
state = 5
|
state = 5
|
||||||
@ -86,14 +87,14 @@ def get ():
|
|||||||
global last_state
|
global last_state
|
||||||
global i
|
global i
|
||||||
# drive twoards block and get it into arms
|
# drive twoards block and get it into arms
|
||||||
leds.set_color("LEFT", "ORANGE")
|
leds.set_color("LEFT", "GREEN")
|
||||||
leds.set_color("RIGHT", "BLACK")
|
leds.set_color("RIGHT", "BLACK")
|
||||||
# drive straight ahead
|
# drive straight ahead
|
||||||
tank.on(fast,fast)
|
tank.on(fast,fast)
|
||||||
# find the orange block again
|
# find the block for sorting again
|
||||||
nr_orange, o_block = pixy2.get_blocks(orange, 2)
|
nr_sort, sort_block = pixy2.get_blocks(sig_sort, 2)
|
||||||
if nr_orange > 0: # if block is found again get position
|
if nr_sort > 0: # if block is found again get position
|
||||||
x = o_block[0].x_center #get where in the field of vision the block lays
|
x = sort_block[0].x_center #get where in the field of vision the block lays
|
||||||
i= 0
|
i= 0
|
||||||
else: # when block is not found, virtually place the robot in the middle of the vision
|
else: # when block is not found, virtually place the robot in the middle of the vision
|
||||||
x = 130
|
x = 130
|
||||||
@ -121,7 +122,7 @@ def get ():
|
|||||||
elif x > 150: # turn right
|
elif x > 150: # turn right
|
||||||
m_right.on(SpeedPercent(-slow))
|
m_right.on(SpeedPercent(-slow))
|
||||||
m_left.on(SpeedPercent(slow))
|
m_left.on(SpeedPercent(slow))
|
||||||
if cs.reflected_light_intensity < 15: # robot detected line change to edge
|
if cs.reflected_light_intensity < line: # robot detected line change to edge
|
||||||
tank.stop()
|
tank.stop()
|
||||||
last_state = state
|
last_state = state
|
||||||
state = 5 # When colorsensor detects line then switch state
|
state = 5 # When colorsensor detects line then switch state
|
||||||
@ -132,17 +133,17 @@ def sort ():
|
|||||||
global state
|
global state
|
||||||
global last_state
|
global last_state
|
||||||
# block is caught, drive to the edge
|
# block is caught, drive to the edge
|
||||||
leds.set_color("LEFT", "ORANGE")
|
leds.set_color("LEFT", "GREEN")
|
||||||
leds.set_color("RIGHT", "ORANGE")
|
leds.set_color("RIGHT", "GREEN")
|
||||||
# drive straight ahead
|
# drive straight ahead
|
||||||
tank.on(fast,fast)
|
tank.on(fast,fast)
|
||||||
# search for green blocks
|
# search for block to let be in area
|
||||||
nr_green, g_block = pixy2.get_blocks(green, 2)
|
nr_let, let_block = pixy2.get_blocks(sig_let, 2)
|
||||||
if cs.reflected_light_intensity < 15: # when reached line change to edge
|
if cs.reflected_light_intensity < line: # when reached line change to edge
|
||||||
tank.stop()
|
tank.stop()
|
||||||
last_state = state
|
last_state = state
|
||||||
state = 5
|
state = 5
|
||||||
elif nr_green > 0:
|
elif nr_let > 0:
|
||||||
last_state = state
|
last_state = state
|
||||||
state = 4
|
state = 4
|
||||||
|
|
||||||
@ -151,12 +152,12 @@ def avoid ():
|
|||||||
global state
|
global state
|
||||||
global last_state
|
global last_state
|
||||||
# found green block, do not want to kick it out
|
# found green block, do not want to kick it out
|
||||||
leds.set_color("LEFT", "GREEN")
|
leds.set_color("LEFT", "ORANGE")
|
||||||
leds.set_color("RIGHT", "GREEN")
|
leds.set_color("RIGHT", "ORANGE")
|
||||||
# search for green block again
|
# search for green block again
|
||||||
nr_green, g_block = pixy2.get_blocks(green, 2)
|
nr_let, let_block = pixy2.get_blocks(sig_let, 2)
|
||||||
if nr_green > 0: # if block is found again get position
|
if nr_let > 0: # if block is found again get position
|
||||||
x = g_block[0].x_center # get where in the field of vision the block lays
|
x = let_block[0].x_center # get where in the field of vision the block lays
|
||||||
else: # when block is not found, virtually place the robot in the middle of the vision
|
else: # when block is not found, virtually place the robot in the middle of the vision
|
||||||
x = 130
|
x = 130
|
||||||
# When block lays in middle of the vision drive around it
|
# When block lays in middle of the vision drive around it
|
||||||
|
Loading…
Reference in New Issue
Block a user