The swarmbots had four distinct working sub-systems: motor control, reflective photodetection, collision detection, and infrared communications. The subsystems were controlled by firmware in an Arduino. The toughest part was getting the swarmbots to communicate via infrared LEDs at a distance. We ended up building a rotating tower on each bot that scans for a signal from the other bot.
Here's a video that sums up the project, including some footage of our swarmbots in action.