The software is divided into two pieces: The robot software, and the web interface. The robot software performs the majority of the tasks, including hardware communication and localization. The web interface displays the robot’s status, selected mode of operation, the map of the environment, sensor data, and allows the user to control the robot.
The robot software communicates with the web interfacing using socket.io, which uses WebSockets to provide a real-time, low-latency data link between the robot and the browser. Data is transmitted between the two in the form of events, which have a human-readable name and a JSON data object. Any module on the robot can listen to any event from the web interface, and vice versa. The documentation on each module lists which events are sent and what data those contain.