No troubleshooting tips have been added for this package/stack.
Errors from diagnostic_aggregator
Error: Analyzer fails to load
The aggregator_node loads diagnostic analyzers to collect and analyze diagnostics. These are loaded as plugins. If they fail to load, you may see:
An error in the robot_monitor, describing the initialization failure.
- An error in the ROS console, saying "Analyzer failed to load", or "Analyzer failed to initialize"
Analyzers are loaded at startup by the aggregator_node. Check your robot's launch file for a node in package diagnostic_aggregator, type `aggregator_node'.
<node pkg="diagnostic_aggregator" type="aggregator_node" name="diagnostic_aggregator" > <rosparam command="load" file="$(find some_pkg)/my_analyzers.yaml" /> </node>
The first thing to do is check the "some_pkg/my_analyzers.yaml" file and make sure it loads. Make a new launch file "analyzer_load_test.launch"
<launch> <test pkg="diagnostic_aggregator" type="analyzer_loader" name="analyzer_load_test" > <rosparam command="load" test-name="load_test" file="$(find some_pkg)/my_analyzers.yaml" /> </node> </launch>
Use rostest to launch it.
rostest analyzer_load_test.launch
If that passes, you should be OK, and you may have discovered a bug in the aggregator_node.
If that doens't pass, use rospack to find all diagnostic analyzer plugins.
$ rospack plugins --attrib=plugin diagnostic_aggregator
Compare the list from rospack with the YAML configuration file of the aggregator. The YAML file should look like this:
analyzers: motors: type: GenericAnalyzer path: Motors startswith: EtherCAT power: type: GenericAnalyzer path: Power System contains: Battery
Each parameter type gives a different class of analyzer to load. Make sure every value for type is a valid plugin.
$ rospack plugins --attrib=plugin diagnostic_aggregator | grep GenericAnalyzer
Make sure that all the plugins are built. Check the packages and dependencies and use rosmake to rebuild if necessary.
Check the dependencies of the plugin packages. Each package containing plugins should depend directly on pluginlib and diagnostic_aggregator.