As you’ve no doubt noticed by now, robotics applications can be complex. In addition to the usual complexity present in any software system, you have sensors and actuators that are interacting in uncertain ways with the physical (or simulated) world. And, at least in a ROS system, you have a distributed processing graph with many independent processes that are interacting asynchronously through message passing. In short, there are many ways for things to go wrong, and it can sometimes be tricky to figure out what the problem is.
When you have everything ready, and you hit the “Go” button, and… nothing happens, what do you do?
Fortunately, ROS provides some powerful tools to assist you in debugging your applications. In this chapter, we’ll go over the most commonly used tools, providing some debugging technique suggestions along the way.
Just as you would with any other software, when a ROS system isn’t behaving properly, you should first check for error messages. If you’re in luck, then some part of the system will be telling you exactly what’s wrong. Of course, the distributed nature of a ROS system makes error message handling a little more complex than with a single program.
If you’re running a single program, you would reasonably expect to see error messages from that program pop up in a dialog window (if it’s a graphical application, like a web browser) or be printed to the terminal where you ran ...