Troubleshooting¶
In robotics, troubleshooting is a crucial part in insuring that your code, electronics, and design performs as expected. As a result, its important to use problem-solving skills to identify, understand, and rectify various bugs and hitches that will undoubtedly occur. As you build systems that are increasingly complex, a methodology for troubleshooting should be followed to decrease time wasted and frustration.
Below are steps that one should consider while troubleshooting:
-
Identify the source of the issue.
- Problems can arise from all sorts of places, whether it be programming, electrical, mechanical, or a combination of them all.
- Like diagnosing a patient, you should find what's causing the symptoms (problems) to manifest themselves. Re-creating the issue can be helpful, espeically when the problem is programming related.
- Create a backup before making any changes, just in case something goes wrong.
-
Establish a theory of probable cause.
- Once a problem has been identified, establish a ranked list of probable causes based on information gathered and your own technical knowledge. The way subteams are divided makes it essential to work together with others within and outside the programming subteam.
- Don't Tunnel Vision. It's easy to overlook the most elementary problems when working with complex systems.
-
Test your theory to determine that actual cause.
- Go through the list of probable causes and test them to determine the true underlying issue.
-
Issue a Fix.
- Develop and execute an appropriate fix to the issue.
-
Verify functionality.
- Ensure the problem has been resolved and the system performs as designed. Side effects should be minimized.
- Implement measures to prevent the issue from happening again.
-
Document the issue and process.
- Chances are the issue will pop up again. Documenting the process and issue allows others to quickly resolve the issue without frustration. This can save time during future troubleshooting and prevent others from taking the same missteps you may have taken.
Tip
Add your documented issues to the common issues page for others to reference.
Additional Resources:
- Guide to Debugging Things by Eric Xiao
- WPILIB Debugging a Robot Program