180 likes | 262 Views
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. Parallelism.
E N D
ParallelismDay 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. Harry Howard, CPST 410, Tulane University
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). Harry Howard, CPST 410, Tulane University
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 Harry Howard, CPST 410, Tulane University
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.
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. Harry Howard, CPST 410, Tulane University
Task syntax and usage task name() { “statements” } • Start a task by means of the function: • StartTask(task) • Example • StartTask(sound); // start the sound task Harry Howard, CPST 410, Tulane University
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 } } Harry Howard, CPST 410, Tulane University
Now translate the parking program to NXC Harry Howard, CPST 410, Tulane University
Scheduling tasksp. 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. Harry Howard, CPST 410, Tulane University
Halting the programp. 159 • Halt the program by stopping all tasks: • Stop(condition); • StopAllTasks; • Usage • The program halts after either command, so everything following them is ignored. Harry Howard, CPST 410, Tulane University
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. Harry Howard, CPST 410, Tulane University