In order to understand what a robot operating system is and what function it serves, it is important to first understand the function of an ordinary operating system on a personal computer. An operating system is a collection of programs which control the raw computing power of the hardware of the computer. The operating system retains control of the hardware by choosing when application programs will receive computer resources, and when these programs will not. Computer resources can be either hardware or software; examples include the CPU, main memory, input-output devices, communication devices, and data. The operating system also provides a user-friendly environment for the execution of the application programs, with the ultimate goal of producing useful work. A user- friendly environment is one in which the low-level details of the bare hardware machine are separated and hidden so as to provide the user with an interface that is clean, uncluttered, and easy to navigate. A robot operating system (ROS) is similar to that of an operating system on a personal computer, in that it comprises a collection of programs which offer control to a user. In the case of an ROS however, these programs allow a user to control the mobile operations of a robot rather than applications on a computer. A good ROS will also make this control user-friendly. This research consisted of analyzing 16 ROSs in order to determine which one would best serve Trinity engineering undergraduate students in future research and in the classroom. These students are assumed to have a basic knowledge of a common programming language, such as C or java, along with a limited knowledge of embedded systems, as this is typical for the target audience.