It is difficult to forget the roving Roomba, but it is time we have a new rover – Zumo-George. It is necessary to look differently at the process of control from a series of behaviors, while defining the tenets of development driven by behavior. Development undertaken via BDD or behavior-driven development is a superior method of emphasizing collaboration and communication between testers, developers and business stakeholders. Features and scenarios define behavior, as the Gherkin syntax specifically elicits –
Given: Zumo-George is more than 10cm from wall
Situation: Power is applied to the motors
Result: Zumo-George should drive forward
Developers write the BDD scenarios before writing other code, and this determines what code is written. This process reduces wastage. In addition, the written code drives the development, which, in most cases, passes the first time. As Zumo-George executes the scenarios, developers can see exactly what steps it passes, what it fails to pass and whether it encounters any situation that they have overlooked.
Intermixed with electronics, use of BBD to program robots such as Zumo-George can be an ideal abstraction for exploring robotic control based on behavior – BDR, or Behavior-Driven Robotics. Such programming can even include testing or internal diagnostics on Zumo-George. For example,
Given: Lights are all off
Situation: When
Result:
Or, on a lighter side,
Given: Batteries are fully charged
Situation: Shoot lasers
Result: Target should fry
As Zumo-George has no laser.
Zumo-George has to execute a series of internal diagnostic tests each time it boots up. If it fails any test, then it will simply refuse to rove and will flash a red light. This will preclude the problem of the robot running out of control.
Naming the robot Zumo-George, the developers prefer referring to the robot as a “he” rather than “it.” They expect Zumo-George to mimic certain human behavior. For example, do not bump into a wall while walking/driving.
Polulu’s Zumo and the Explorer HAT Pro from Pimroni form the basis of the rover (including its name). Therefore, Zumo comes in several variants. For example, for Arduino, there is the all singing Zumo 32U4, with accelerometers, LCD, buzzers, sensors and more. Then there is the bare-bones Zumo Chassis Kit and this is most suitable for Raspberry Pi (RBPi), as users can add their own electronics.