Parallelism Day 12 Computer Programming through Robotics CPST 410 Summer 2009 Course organization  Course home page (http://robolab.tulane.edu/CPST410/)  Lab (Newcomb 442) will be open for practice with 3-4

Download Report

Transcript Parallelism Day 12 Computer Programming through Robotics CPST 410 Summer 2009 Course organization  Course home page (http://robolab.tulane.edu/CPST410/)  Lab (Newcomb 442) will be open for practice with 3-4

Parallelism
Day 12
Computer Programming
through Robotics
CPST 410
Summer 2009
Course organization
 Course home page
(http://robolab.tulane.edu/CPST410/)
 Lab (Newcomb 442) will be open for
practice with 3-4 Macs, but you can bring
your own laptop and all robots.
7/1/09
Harry Howard, CPST 410, Tulane University
2
Parallelism
Beams vs. tasks
Multiple beams in NXT-G
Open the Mindstorms app.
Parking
 Tribot,
 drive straight forward for 1 rotations,
 then drive forward turning to the right for 1 rotations,
 then back up for 2 seconds.
 When you are finished, display a locked lock for 3
seconds and reset the screen.
 While you are backing up,
 play a warning sound (! hydraulic 03).
7/1/09
Harry Howard, CPST 410, Tulane University
5
ParkBot.rbt, part 1
The second part
 How do you make Tribot play a sound
while it backs up?
 You need to pull out a new sequence beam.
Hold down shift key to pull out new beam.
 Also, Tribot must play the sound
continuously.
 The next program is a good first try.
ParkBot.rbt, Part 2, first try
7/1/09
Harry Howard, CPST 410, Tulane University
8
A problem
 The problem is that the sound does not
necessarily stop when Tribot stops backing
up.
 To do so, you have to ensure that the loop
breaks when the backup motion has
finished.
 This can only be done with a logical
variable.
ParkBot.rbt, Part 2, final try
Parallel beams = tasks in NXC
Close the Mindstorms app,
and open BricxCC.
Task overview
 An NXC program consists of at most 256 tasks,
each of which must have a unique name.
 There must always be a task named main, since
this is the first task to be executed.
 Another task will be executed
 when a running task tells it to be executed;
 if it is explicitly scheduled in main.
 Tasks run simultaneously unless otherwise
specified by scheduling statements.
7/1/09
Harry Howard, CPST 410, Tulane University
12
Task syntax and usage
task name()
{
“statements”
}
 Start a task by means of the function:
 StartTask(task)
 Example
 StartTask(sound); // start the sound
task
7/1/09
Harry Howard, CPST 410, Tulane University
13
Parallelism
 Even though tasks run simultaneously, the action
performed by the task has to be programmed to
run continuously.
 So always put the action within an endless while loop:
my_task()
{
while(true)
{
// do something
}
}
7/1/09
Harry Howard, CPST 410, Tulane University
14
Now translate the parking
program to NXC
7/1/09
Harry Howard, CPST 410, Tulane University
15
Scheduling tasks
p. 159
 Since tasks execute simultaneously, it takes
special functions to schedule them:
 Precedes(task1, task2, …, taskN);
 Follows(task1, task2, …, taskN);
 ExitTo(task);
 Usage
 Precedes and Follows should only be used once within
a task, preferably at its beginning.
 If multiple tasks declare that they precede or follow the
same task, then they execute simultaneously.
7/1/09
Harry Howard, CPST 410, Tulane University
16
Halting the program
p. 159
 Halt the program by stopping all tasks:
Stop(condition);
StopAllTasks;
 Usage
The program halts after either command, so
everything following them is ignored.
7/1/09
Harry Howard, CPST 410, Tulane University
17
Next time
 E-mail me your final project
ideally, by the end of class on Monday;
or by Tuesday evening.
 Drop off your robot at Newcomb 302,
between 9am and 5 pm, or
e-mail me to make an appointment for some
other time.
7/1/09
Harry Howard, CPST 410, Tulane University
18