The Multipurpose Mobile Manipulator runs on two levels of software: low level and high level:
Low Level Software
On the low level, the robot runs on an Arduino Mega 2560, which constantly receives and parses commands from a USB serial channel and relays them to all of the actuators, while simultaneously sending sensor data back through the same USB communication channel.
High Level Software
On the high level, another device, usually a laptop computer running Mac, Windows or Linux, does the "intelligence" processing. Programs running on the laptop make sense of the incoming sensor data and make decisions using Python 2.7, Unity, ROS, Processing, and other languages. Once the intelligent processing has been completed, the laptop sends commands through the USB cable to the Arduino Mega to control the various actuators. In a way, this hierarchy makes the robot a gigantic USB peripheral: any device that can communicate through USB serial can be used to control the robot (including Raspberry Pis and Android devices).