<<StackHeader(diagnostics)>>

== Overview ==

The diagnostics system is designed to collect information from hardware drivers and robot hardware to users and operators for analysis, troubleshooting, and logging. The diagnostics stack contains tools for collecting, publishing, analyzing and viewing diagnostics data. 

The diagnostics toolchain is built around the `/diagnostics` topic. On this topic, hardware drivers and devices publish <<MsgLink(diagnostic_msgs/DiagnosticArray)>> messages with the device names, status and specific data points. 

The [[diagnostic_updater]] and [[self_test]] packages allow nodes to collect and publish diagnostics data. The [[diagnostic_aggregator]] can categorize and analyze diagnostics at runtime. Operators and developers can view the diagnostics data using the [[rqt_robot_monitor]] package. The [[diagnostic_analysis]] package can convert diagnostics logs to CSV files for examination and after-the-fact analysis.

== Collecting and Publishing ==

To collect and publish diagnostics data, nodes can use tools in the [[diagnostic_updater]] package. The updater allows nodes, especially hardware drivers, to collect and publish diagnostics data. Using the tools in the updated package, drivers can monitor frequency and connection status. The [[self_test]] package uses the [[diagnostic_updater]] to perform a self test on a driver, using a special service call.

== Analysis and Aggregation ==

The [[diagnostic_aggregator]] package contains tools for categorizing and analyzing diagnostics at runtime. Using a plug-in model, a diagnostic aggregator can be configured for different types of robots to allow simple analysis of diagnostics. It is easy to summarize hundreds of diagnostic items into just a few categories. The diagnostic aggregator plug-ins can allow developers to give users easy to understand messages for common problems.

== Viewing ==

The [[rqt_robot_monitor]] package contains the `robot_monitor` tool which displays the processed data from a `diagnostic_aggregator` in graphical form.

For robots without a `diagnostic_aggregator`, the [[rqt_runtime_monitor]] package contains a simple monitor that displays data from the `/diagnostics` topic.

== Off-Board Analysis ==

The tools in [[diagnostic_analysis]] allow users to convert diagnostics bag files into one or more CSV files for plotting or viewing with off-the-shelf spreadsheet software. The `export_csv.py` tool allows the bag file to be converted into several CSV files, with each diagnostic status name made into its own file.

== Further information ==

Further information will be found in the [[http://www.ros.org/reps/rep-0107.html| REP #107: Diagnostic System for Robots Running ROS]].


## AUTOGENERATED DON'T DELETE
## CategoryStack
## CategoryStackROSPKG