Robot Buggy Module 4 – Open Loop Control

Open-Loop Control

Robot systems accept inputs, such as directions on how to move, and produce the requested movements as outputs.

The outputs from robots that use Open-Loop Control have no effect on its inputs. When the inputs are matched to the task and the robot’s movements precise, Open Loop Control is a good choice.

Simple Motion

The  GPIOZERO Robot Class provides methods for simple motions:

  • forward()
  • backward()
  • left()
  • right()
  • stop()

Simple Motion with Speed Control

Robot speed is controlled with versions of the basic methods that take a FLOAT argument (i.e., a decimal number in the range 0.0 to 1.0) as the speed:

  • forward(speed)
  • backward(speed)
  • left(speed)
  • right(speed)

Chaining movements

So far, this code has been straightforward with a single movement. A robot can do a sequence of actions after each other. The code listing chaining_movements.py shows how.

				
					import gpiozero
import time
robot = gpiozero.Robot(left=(27, 17), right=(24, 23))
try: # Robot actions here
    for n in range(6):
        robot.forward()
        time.sleep(0.5)
        robot.left()
        time.sleep(0.3)
        robot.right()
        time.sleep(1)
finally: robot.stop()
				
			

By tuning the timings, this will drive in a shape such as a hexagon. Line 8 makes a loop, so the action will be repeated. Lines 9, 10 drive forward for a little time. Lines 11,12 then turn left for a bit of time too. Lines 13 and 14 then do a victory spin to the right. An excellent, fun way to end autonomous events if you can determine a victory condition.