Morse 1.0 is an open source robot simulator with full ROS support. Not only useful and fun, it also has uses in both research and teaching.
Morse is a full 3D simulator for mobile robots including multiple robots. It uses OpenGL as its 3D engine and has realistic rendering to make working with your simulated robot easy and more understandable.
It is command line oriented but you can also write Python scripts to control it. It also makes use of other open source projects such as Blender for its 3D scene editing and Bullet for physics simulation. You can create cameras as vi doe streams including depth cameras or semantic maps. You basically build your simulation using Blender to assemble your robot and place it in a 3D environment. When you run the simulation the Bender Game Engine is used to create a realistic representation of the robot.
You can see it in action in a variety of situations in the following video (not version 1.0):
A surprising component of Morse is its ability to model human-robot interaction. The user can view the scene from the point of view of a 3D human model and move within the environment to interact with the robot.
Currently it supports 20 classes of sensor including laser scanners and cameras and 15 classes of actuator including our favorite flying device, the quadrotor. If you need more, you can program them in C or Python.
Morse itself is mostly written in Python and can be extended and customized. Currently it has been tested using Linux but it does run under OSX and Windows. The only dependencies are an up-to-date Python and Blender installation.
Although the simulation is realistic, it doesn't claim to be physically accurate, i.e. you can't rely on using it to make measurements.
While this is an open source project, the documentation is very good! There are some nice tutorials that can get you started in no time at all.