From b4e46b75f5e2a890b41d2e20a89767590e54ccb4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jure=20=C5=BDabkar?= Date: Tue, 15 Dec 2015 10:34:40 +0100 Subject: Dodani plani za robotske probleme. --- robot/problems/introduction/circle20/sl.py | 16 +++++++++------- robot/problems/introduction/countlines/common.py | 1 + robot/problems/introduction/countlines/sl.py | 13 +++++++++++++ robot/problems/introduction/followline/common.py | 8 +++----- robot/problems/introduction/followline/sl.py | 15 +++++++++++++++ robot/problems/introduction/forward/sl.py | 10 ++++++++++ robot/problems/introduction/forward1m/sl.py | 14 ++++++++++++-- robot/problems/introduction/gyro90/common.py | 3 --- robot/problems/introduction/gyro90/sl.py | 11 +++++++++++ robot/problems/introduction/gyrosquare/common.py | 3 --- robot/problems/introduction/gyrosquare/sl.py | 11 +++++++++++ robot/problems/introduction/printcolors/common.py | 2 -- robot/problems/introduction/printcolors/sl.py | 13 +++++++++++++ robot/problems/introduction/rotateback/common.py | 2 -- robot/problems/introduction/rotateback/sl.py | 12 ++++++++++++ robot/problems/introduction/spotturn90/common.py | 5 +---- robot/problems/introduction/spotturn90/sl.py | 11 +++++++++++ robot/problems/introduction/square20/common.py | 3 --- robot/problems/introduction/square20/sl.py | 11 +++++++++++ robot/problems/introduction/wall1m/common.py | 2 -- robot/problems/introduction/wall1m/sl.py | 14 ++++++++++++++ 21 files changed, 147 insertions(+), 33 deletions(-) (limited to 'robot') diff --git a/robot/problems/introduction/circle20/sl.py b/robot/problems/introduction/circle20/sl.py index abe70eb..735458a 100644 --- a/robot/problems/introduction/circle20/sl.py +++ b/robot/problems/introduction/circle20/sl.py @@ -13,7 +13,7 @@ hint = { '''

robot.connect_motor( 'left' ).

'''], 'connectMotorRight':['''

Robotu priključi desni motor

''', '''

robot.connect_motor( 'right' ).

'''], - 'moveSteering':['''

Sinhroniziraj motorja in ju zaženi za 3 sekunde.

''', + 'moveSteering':['''

Sinhroniziraj motorja.

''', '''

Za sinhronizirano vožnjo je najbolj primerna metoda robot.move_steering( ... ).

'''], 'onForSeconds':['''

Prvi argument metode robot.move_steering naj pove, da bo delovanje motorjev časovno omejeno.

''', '''

robot.move_steering('on_for_seconds', ... ).

'''], @@ -25,10 +25,12 @@ hint = { '''

robot.move_steering( 'on_for_seconds', direction=0, seconds=3 ).

'''], } -plan = [ '''\ -

1) Naredi robota

-''', -''' - -''' +plan = ['''\ +

Program izvedemo v naslednjih korakih:

+
    +
  1. Naredimo objekt mindstorms_widgets(), s katerim predstavimo robota.
  2. +
  3. Nanj povežemo oba pogonska motorja.
  4. +
  5. Izračunamo ostrino zavoja, pri kateri bo robot vozil po krogu s polmerom 20 cm.
  6. +
  7. Sinhronizirano poženemo oba motorja za premik v izračunani smeri in časovno omejimo na en obhod.
  8. +
''' ] diff --git a/robot/problems/introduction/countlines/common.py b/robot/problems/introduction/countlines/common.py index 6a50988..925fc06 100644 --- a/robot/problems/introduction/countlines/common.py +++ b/robot/problems/introduction/countlines/common.py @@ -31,6 +31,7 @@ while time.time()-start < 2.1: stevec += 1 color = c robot.move_steering( 'off' ) + print( "Stevilo crt:", stevec ) ''' diff --git a/robot/problems/introduction/countlines/sl.py b/robot/problems/introduction/countlines/sl.py index 4e1c3d4..1f8ea18 100644 --- a/robot/problems/introduction/countlines/sl.py +++ b/robot/problems/introduction/countlines/sl.py @@ -24,3 +24,16 @@ hint = { '''

Zanka je lahko časovno omejena, npr. z uporabo metode time.time().

''', '''

while time.time()-start < 1.1:.

'''], } + +plan = ['''\ +

Program izvedemo v naslednjih korakih:

+
    +
  1. Naredimo objekt mindstorms_widgets(), s katerim predstavimo robota.
  2. +
  3. Nanj povežemo oba pogonska motorja.
  4. +
  5. Povežemo barvni senzor.
  6. +
  7. Vklopimo oba motorja tako, da robot vozi naravnost.
  8. +
  9. V zanki naj robot bere barve in jih šteje.
  10. +
  11. Zanka naj se konča po vnaprej določenem času, npr. 3 sekunde.
  12. +
  13. Ustavimo oba motorja.
  14. +
''' +] diff --git a/robot/problems/introduction/followline/common.py b/robot/problems/introduction/followline/common.py index 3e84cd4..46df5c6 100644 --- a/robot/problems/introduction/followline/common.py +++ b/robot/problems/introduction/followline/common.py @@ -11,8 +11,6 @@ visible = True solution = '''\ import time -from ev3dev import * -from mindstorms_widgets import mindstorms_widgets robot = mindstorms_widgets() robot.connect_motor( 'left' ) @@ -21,10 +19,10 @@ robot.connect_sensor( 'color' ) start = time.time() while time.time()-start < 10: - if robot.color_sensor_measure('reflected_light_intensity') < 30: - L, R = 0, 20 + if robot.color_sensor_measure('reflected_light_intensity') < 50: + L, R = 0, 30 else: - L, R = 20, 0 + L, R = 30, 0 robot.move_tank( 'on', lr_power=[L,R]) robot.move_tank( 'off' ) ''' diff --git a/robot/problems/introduction/followline/sl.py b/robot/problems/introduction/followline/sl.py index 848fe2b..cdc6e19 100644 --- a/robot/problems/introduction/followline/sl.py +++ b/robot/problems/introduction/followline/sl.py @@ -32,3 +32,18 @@ hint = { 'if': ['''

V zanki uporabi pogojni stavek...

''', '''

Če robot vidi črto, naj zavije z nje; če vidi podlago, naj zavije proti črti.

'''] } + +plan = ['''\ +

Program izvedemo v naslednjih korakih:

+
    +
  1. Naredimo objekt mindstorms_widgets(), s katerim predstavimo robota.
  2. +
  3. Nanj povežemo oba pogonska motorja.
  4. +
  5. Povežemo barvni senzor.
  6. +
  7. V zanki preverjamo, kakšno barvo vidi robot s senzorjem.
  8. +
  9. Če vidi črno, naj zavije desno, če vidi belo, naj zavije levo. (Sledi desnemu robu črte).
  10. +
  11. Zanka naj se konča po vnaprej določenem času, 10 sekund.
  12. +
  13. Ustavimo oba motorja.
  14. +
+

Opomba: potrebna je predhodna kalibracija barvnega senzorja.

+''' +] diff --git a/robot/problems/introduction/forward/sl.py b/robot/problems/introduction/forward/sl.py index a6f7e86..cd9b096 100644 --- a/robot/problems/introduction/forward/sl.py +++ b/robot/problems/introduction/forward/sl.py @@ -21,3 +21,13 @@ hint = { 'seconds':['''

Napiši časovno omejitev v sekundah.

''', '''

robot.move_steering( 'on_for_seconds', direction=0, seconds=3 ).

'''], } + +plan = ['''\ +

Program izvedemo v naslednjih korakih:

+
    +
  1. Naredimo objekt mindstorms_widgets(), s katerim predstavimo robota.
  2. +
  3. Nanj povežemo oba pogonska motorja.
  4. +
  5. Vklopimo oba motorja v sinhronem načinu tako, da robot vozi naravnost.
  6. +
  7. Določimo čas trajanja vožnje 3 sekunde.
  8. +
''' +] diff --git a/robot/problems/introduction/forward1m/sl.py b/robot/problems/introduction/forward1m/sl.py index 8045d58..2240d3c 100644 --- a/robot/problems/introduction/forward1m/sl.py +++ b/robot/problems/introduction/forward1m/sl.py @@ -12,12 +12,22 @@ hint = { '''

robot.connect_motor( 'left' ).

'''], 'connectMotorRight':['''

Robotu priključi desni motor

''', '''

robot.connect_motor( 'right' ).

'''], - 'moveSteering':['''

Sinhroniziraj motorja in ju zaženi za 3 sekunde.

''', + 'moveSteering':['''

Sinhroniziraj motorja in ju zaženi.

''', '''

Za sinhronizirano vožnjo je najbolj primerna metoda robot.move_steering( ... ).

'''], 'onForRotations':['''

Prvi argument metode robot.move_steering naj pove, da bo delovanje motorjev določeno s številom obratov.

''', '''

robot.move_steering('on_for_rotations', ... ).

'''], 'direction':['''

Navedi smer premikanja motorjev, naravnost = 0.

''', '''

robot.move_steering( 'on_for_rotations', direction=0, ... ).

'''], - 'rotations':['''

Določi število obratov; za koliko obratov naj se zavrtita motorja? Izmeri dolžino 1m, izpisuj obrate print(robot.motor['left'].count_per_rot, robot.motor['right'].count_per_rot) in tako določi ustrezno število obratov.

''', + 'rotations':['''

Določi število obratov; za koliko obratov naj se zavrtita motorja? Izmeri obseg kolesa in preračunaj, koliko obratov je potrebnih za 1m.

''', '''

robot.move_steering( 'on_for_rotations', direction=0, rotations=5 ).

'''], } + +plan = ['''\ +

Program izvedemo v naslednjih korakih:

+
    +
  1. Naredimo objekt mindstorms_widgets(), s katerim predstavimo robota.
  2. +
  3. Nanj povežemo oba pogonska motorja.
  4. +
  5. Vklopimo oba motorja v sinhronem načinu tako, da robot vozi naravnost.
  6. +
  7. Glede na obseg koles izračunamo, koliko obratov mora narediti kolo na dolžini 1m; ustrezno nastavimo število obratov, po katerih se robot ustavi.
  8. +
''' +] diff --git a/robot/problems/introduction/gyro90/common.py b/robot/problems/introduction/gyro90/common.py index 06b4f1d..78c5dca 100644 --- a/robot/problems/introduction/gyro90/common.py +++ b/robot/problems/introduction/gyro90/common.py @@ -10,9 +10,6 @@ number = 7 visible = True solution = '''\ -from ev3dev import * -from mindstorms_widgets import mindstorms_widgets - robot = mindstorms_widgets() robot.connect_motor( 'left' ) robot.connect_motor( 'right' ) diff --git a/robot/problems/introduction/gyro90/sl.py b/robot/problems/introduction/gyro90/sl.py index 0a82c6d..c0f9451 100644 --- a/robot/problems/introduction/gyro90/sl.py +++ b/robot/problems/introduction/gyro90/sl.py @@ -27,3 +27,14 @@ hint = { 'while':['''

Program naj teče dokler je kot zasuka manjši od 90 stopinj.

''', '''

robot.gyro_sensor_measure() < 90:

'''], } + +plan = ['''\ +

Program izvedemo v naslednjih korakih:

+
    +
  1. Naredimo objekt mindstorms_widgets(), s katerim predstavimo robota.
  2. +
  3. Nanj povežemo oba pogonska motorja.
  4. +
  5. Povežemo žiroskop in ga resetiramo.
  6. +
  7. Vklopimo oba motorja tako, da se vrtita z enako močjo, a v različnih smereh; robot se začne obračati na mestu.
  8. +
  9. V zanki merimo kot zasuka in zanko končamo, ko kot doseže 90 stopinj.
  10. +
''' +] diff --git a/robot/problems/introduction/gyrosquare/common.py b/robot/problems/introduction/gyrosquare/common.py index 5bf6068..872f436 100644 --- a/robot/problems/introduction/gyrosquare/common.py +++ b/robot/problems/introduction/gyrosquare/common.py @@ -10,9 +10,6 @@ number = 8 visible = True solution = '''\ -from ev3dev import * -from mindstorms_widgets import mindstorms_widgets - robot = mindstorms_widgets() robot.connect_motor( 'left' ) robot.connect_motor( 'right' ) diff --git a/robot/problems/introduction/gyrosquare/sl.py b/robot/problems/introduction/gyrosquare/sl.py index 16b2c94..7d1f832 100644 --- a/robot/problems/introduction/gyrosquare/sl.py +++ b/robot/problems/introduction/gyrosquare/sl.py @@ -36,3 +36,14 @@ hint = { 'seconds':['''

Napiši časovno omejitev v sekundah.

''', '''

robot.move_steering( 'on_for_seconds', direction=0, seconds=3 ).

'''], } + +plan = ['''\ +

Program izvedemo v naslednjih korakih:

+
    +
  1. Naredimo objekt mindstorms_widgets(), s katerim predstavimo robota.
  2. +
  3. Nanj povežemo oba pogonska motorja.
  4. +
  5. Povežemo žiroskop in ga resetiramo.
  6. +
  7. Napišemo funkcijo, ki robota pelje naravnost po stranici, nato pa ga na mestu obrne za 90 stopinj.
  8. +
  9. Zgornja funkcijo pokličemo 4-krat zaporedoma.
  10. +
''' +] diff --git a/robot/problems/introduction/printcolors/common.py b/robot/problems/introduction/printcolors/common.py index 4377c57..9b06575 100644 --- a/robot/problems/introduction/printcolors/common.py +++ b/robot/problems/introduction/printcolors/common.py @@ -11,8 +11,6 @@ visible = True solution = '''\ import time -from ev3dev import * -from mindstorms_widgets import mindstorms_widgets color_table = ['none', 'black', 'blue', 'green', 'yellow', 'red', 'white', 'brown'] diff --git a/robot/problems/introduction/printcolors/sl.py b/robot/problems/introduction/printcolors/sl.py index d233b0e..c705eaa 100644 --- a/robot/problems/introduction/printcolors/sl.py +++ b/robot/problems/introduction/printcolors/sl.py @@ -34,3 +34,16 @@ hint = { '''

while time.time()-start < 1.1:.

'''], 'print':['''

V zanki na zaslon izpisuj barvo, ki jo zazna robot.

'''] } + +plan = ['''\ +

Program izvedemo v naslednjih korakih:

+
    +
  1. Naredimo objekt mindstorms_widgets(), s katerim predstavimo robota.
  2. +
  3. Nanj povežemo oba pogonska motorja.
  4. +
  5. Povežemo barvni senzor.
  6. +
  7. Vklopimo oba motorja tako, da robot vozi naravnost.
  8. +
  9. V zanki naj robot bere barve in vsako izpiše na zaslon.
  10. +
  11. Zanka naj se konča po vnaprej določenem času, npr. 3 sekunde.
  12. +
  13. Ustavimo oba motorja.
  14. +
''' +] diff --git a/robot/problems/introduction/rotateback/common.py b/robot/problems/introduction/rotateback/common.py index 2dacaf3..7c8ce44 100644 --- a/robot/problems/introduction/rotateback/common.py +++ b/robot/problems/introduction/rotateback/common.py @@ -10,8 +10,6 @@ number = 11 visible = True solution = '''\ -from mindstorms_widgets import mindstorms_widgets - def sgn(x): return -1 if x<0 else (1 if x>0 else 0) diff --git a/robot/problems/introduction/rotateback/sl.py b/robot/problems/introduction/rotateback/sl.py index 269ea34..3242a80 100644 --- a/robot/problems/introduction/rotateback/sl.py +++ b/robot/problems/introduction/rotateback/sl.py @@ -31,3 +31,15 @@ hint = { 'while':['''

Program naj teče v neskončni zanki.

''', '''

while 1:

'''], } + +plan = ['''\ +

Program izvedemo v naslednjih korakih:

+
    +
  1. Naredimo objekt mindstorms_widgets(), s katerim predstavimo robota.
  2. +
  3. Nanj povežemo oba pogonska motorja.
  4. +
  5. Robotu dodamo žiroskop in ga resetiramo.
  6. +
  7. Robotu dodamo stikalo.
  8. +
  9. V neskončni zanki beremo vrednost kota z žiroskopom.
  10. +
  11. Glede na zasuk iz začetne lege, robota na mestu obrnemo v začetno smer.
  12. +
''' +] diff --git a/robot/problems/introduction/spotturn90/common.py b/robot/problems/introduction/spotturn90/common.py index add6643..e01de39 100644 --- a/robot/problems/introduction/spotturn90/common.py +++ b/robot/problems/introduction/spotturn90/common.py @@ -10,9 +10,6 @@ number = 3 visible = True solution = '''\ -from ev3dev import * -from mindstorms_widgets import mindstorms_widgets - robot = mindstorms_widgets() robot.connect_motor( 'left' ) robot.connect_motor( 'right' ) @@ -30,7 +27,7 @@ hint_type = { 'seconds': Hint('seconds'), } -def hint( code): +def hint( code ): tokens = get_tokens(code) # if code does not include mindstorms_widgets(), a student gets a hint that the robot should be somehow represented in the program diff --git a/robot/problems/introduction/spotturn90/sl.py b/robot/problems/introduction/spotturn90/sl.py index fe477aa..e3541c0 100644 --- a/robot/problems/introduction/spotturn90/sl.py +++ b/robot/problems/introduction/spotturn90/sl.py @@ -19,3 +19,14 @@ hint = { 'seconds':['''

Napiši časovno omejitev v sekundah.

''', '''

robot.move_tank( 'on_for_seconds', ..., seconds=... ).

'''], } + +plan = ['''\ +

Program izvedemo v naslednjih korakih:

+
    +
  1. Naredimo objekt mindstorms_widgets(), s katerim predstavimo robota.
  2. +
  3. Nanj povežemo oba pogonska motorja.
  4. +
  5. Povežemo barvni senzor.
  6. +
  7. Vklopimo oba motorja tako, da se z enako močjo vrtita v različnih smereh.
  8. +
  9. Motorja izlopimo po pretečenem času, ki pri izbrani moči obrne robota za 90 stopinj.
  10. +
''' +] diff --git a/robot/problems/introduction/square20/common.py b/robot/problems/introduction/square20/common.py index a293712..ce8bc14 100644 --- a/robot/problems/introduction/square20/common.py +++ b/robot/problems/introduction/square20/common.py @@ -10,9 +10,6 @@ number = 4 visible = True solution = '''\ -from ev3dev import * -from mindstorms_widgets import mindstorms_widgets - robot = mindstorms_widgets() robot.connect_motor( 'left' ) robot.connect_motor( 'right' ) diff --git a/robot/problems/introduction/square20/sl.py b/robot/problems/introduction/square20/sl.py index f52ddf7..50b335f 100644 --- a/robot/problems/introduction/square20/sl.py +++ b/robot/problems/introduction/square20/sl.py @@ -27,3 +27,14 @@ hint = { 'lrPower': ['''

Za obrat na mestu se morata kolesi vrteti z enako močjo in v nasprotni smeri.

''', '''

robot.move_tank( 'on_for_seconds', lr_power=[20,-20], seconds=.95 ).

'''], } + +plan = ['''\ +

Program izvedemo v naslednjih korakih:

+
    +
  1. Naredimo objekt mindstorms_widgets(), s katerim predstavimo robota.
  2. +
  3. Nanj povežemo oba pogonska motorja.
  4. +
  5. Vklopimo oba motorja tako, da robot vozi naravnost.
  6. +
  7. Robot se na mestu obrne za 90 stopinj; motorja z enako močjo, v različnih smereh.
  8. +
  9. Še 3-krat ponovimo koraka 3 in 4.
  10. +
''' +] diff --git a/robot/problems/introduction/wall1m/common.py b/robot/problems/introduction/wall1m/common.py index 4492cdc..42b4067 100644 --- a/robot/problems/introduction/wall1m/common.py +++ b/robot/problems/introduction/wall1m/common.py @@ -10,8 +10,6 @@ number = 6 visible = True solution = '''\ -from mindstorms_widgets import * - robot = mindstorms_widgets() robot.connect_motor( 'left' ) robot.connect_motor( 'right' ) diff --git a/robot/problems/introduction/wall1m/sl.py b/robot/problems/introduction/wall1m/sl.py index 18518d5..cbb27ed 100644 --- a/robot/problems/introduction/wall1m/sl.py +++ b/robot/problems/introduction/wall1m/sl.py @@ -29,3 +29,17 @@ hint = { 'while':['''

Uporabi zanko: robot naj se pelje naprej, dokler ne pride do razdalje 50 cm od zida.

''', '''

Uporabi še eno zanko: robot naj se pelje naprej z 20% močjo, dokler ne pride do razdalje 20 cm od zida.

'''], } + +plan = ['''\ +

Program izvedemo v naslednjih korakih:

+
    +
  1. Naredimo objekt mindstorms_widgets(), s katerim predstavimo robota.
  2. +
  3. Nanj povežemo oba pogonska motorja.
  4. +
  5. Robotu dodamo ultrazvočni senzor.
  6. +
  7. Vklopimo oba motorja tako, da robot vozi naravnost; moč nastavimo na 80.
  8. +
  9. V zanki merimo razdaljo z UZ senzorjem; zanko končamo, ko je razdalja <50 cm.
  10. +
  11. Moč motorjev nastavimo na 20.
  12. +
  13. V zanki merimo razdaljo z UZ senzorjem; zanko končamo, ko je razdalja <20 cm.
  14. +
  15. Ustavimo oba motorja.
  16. +
''' +] -- cgit v1.2.1