The interface of the class BeBot_SW defines three incoming parameters: the distance to a BeBot that drives in front, the cruisingSpeed of the BeBot, and bebotStop that defines if the BeBot has to stop. The outgoing parameter is the speed of the BeBot. Furthermore five asynchronous messages are defined that can be sent and received: StartPlatoon to propose to start a platoon, Con?rm to confirm the start proposal, EndPlatoon to command the end of the platoon, Stop to command a rear-driving BeBot to stop, and Drive to inform a rear-driving BeBot that it no longer has to stop.
Within BeBot_SW two parallel branches were defined. The first branch handles the platoon activation and deactivation and consists of the steps NoPlatoon, PlatoonProposed, and FrontPlatoon; the second branch handles the coordinated braking within a platoon and consists of the steps Regular (a BeBot has no limita- tions regarding braking), Front (a BeBot has first to inform the rear-driving BeBot before braking), and Rear (a BeBot must brake when the front-driving BeBot commands it). The synchronization between the two branches is realized by using synchronous messages, e.g. if step FrontPlatoon is activated, then step Front will also be activated at the same time. Among others, this class contains a timing constraint that the state PlatoonProposed is no longer active than 50ms.