Simulations are great for quick development, but at some point you need to move into the real world.
Absolutely. The ideal situation would be to develop with simulated and real world testing together, comparing and validating your simulated results against your real world results. The original article isn't advocating for 100% in-a-vacuum simulation-based development, but rather trying to show how much you can do with carefully applied simulation -- using a cool, real-world project as an example. For what it's worth, this is just one small slice of a much larger marine debris effort that involves modeling and prediction based on satellite imagery, hours of close-in imagery captured from "manned" aircraft, as well as several at-sea tests of UAV's and UAV imagery. http://highseasghost.net/
I've noticed several design suggestions in your code.