parallelism day 12
Post on 31-Dec-2015
20 Views
Preview:
DESCRIPTION
TRANSCRIPT
ParallelismDay 12
Computer Programming through Robotics
CPST 410
Summer 2009
7/1/09 Harry Howard, CPST 410, Tulane University
2
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.
Parallelism
Beams vs. tasks
Multiple beams in NXT-G
Open the Mindstorms app.
7/1/09 Harry Howard, CPST 410, Tulane University
5
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).
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.
7/1/09 Harry Howard, CPST 410, Tulane University
8
ParkBot.rbt, Part 2, first try
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.
7/1/09 Harry Howard, CPST 410, Tulane University
12
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
13
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
14
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
15
Now translate the parking program to NXC
7/1/09 Harry Howard, CPST 410, Tulane University
16
Scheduling tasksp. 159
Since tasks execute simultaneously, it takes special functions to schedule them:Precedes(task1, task2, …, taskN);Follows(task1, task2, …, taskN);ExitTo(task);
UsagePrecedes 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
17
Halting the programp. 159
Halt the program by stopping all tasks:Stop(condition);StopAllTasks;
UsageThe program halts after either command, so
everything following them is ignored.
7/1/09 Harry Howard, CPST 410, Tulane University
18
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, ore-mail me to make an appointment for some
other time.
top related