Only released in EOL distros:  

tug_ist_model_based_diagnosis: tug_ist_diagnosis_board | tug_ist_diagnosis_engine | tug_ist_diagnosis_generator | tug_ist_diagnosis_launch | tug_ist_diagnosis_model | tug_ist_diagnosis_msgs | tug_ist_diagnosis_observers | tug_ist_diagnosis_repair

Package Summary

This package provides a set of observers like DOBs, GObs, NObs, QObs, BiQObs, MObs, PObs and HObs. An observer is a software entity actin like ROS node that observers particular property of the system or part of the system. Observation is a First Order Logic (FOL) sentence.

Overview

Diagnosis observers are that part of tug_ist_model_based_diagnosis which monitor the system behavior. These are general software entities implemented as ROS nodes that monitor particular aspects of the system. There are different kinds of observers supervising different aspects or properties. The result of the observation is published on the /observations topic as a first order logic (FOL) sentence. The sentence is a representation of the observed property and its status. Observations are published as a set of strings. Each string represents a single FOL sentence like ok(topic), running(node),.etc. There are different kinds of observers namely Diagnostic Observer (DObs), General Observer (GObs), Node Observer (NObs), Qualitative Observer (QObs), Binary Qualitative Observer (BiQObs), Multiple Observer (MObs), Hardware Observer (HObs) and Property Observer (PObs).

Nodes

DObs

DObs is Diagnostic Observer and it uses existing /diagnostics topic and publishes on /observations.It is the connection between the existing ROS diagnostics system and the integrated diagnosis and repair system. DObs receives diagnostic messages and generate the output based on similar rules as the existing ROS diagnostic analyzers.

Subscribed Topics

/diagnostics (diagnostic_msgs/DiagnosticArray)
  • diagnostics data from existing ROS diagnostics.

Published Topics

/observations (tug_ist_diagnosis_msgs/Observations)
  • This topic gives information in the form of First Order Logic (FOL) sentences like ok(device_name),~ok(device_name).

HObs

Hardware Observer subscribes to the measurements and status updates coming from the hardware diagnosis board to supervise the status of the different power supply channels. It provides the observation on(m) if the module m is powered, otherwise ~on(m). Moreover, it provides all current measurements and power states in a special message on the topic /board_measurments. This allows further observers to reuse the information.

Published Topics

/observations (tug_ist_diagnosis_msgs/Observations)
  • This topic gives information in the form of First Order Logic (FOL) sentences like on(device),~on(device).

Parameters

~topic (string, default: "/board_measurments")
  • It is the name of the topic published by the board controller.

GObs

General Observer simply subscribes to a particular topic and uses the received messages as input. This is done by checking the frequency of messages. It submits ok(t) if it observes the right frequency of the topic t otherwise ~ok(t).

Published Topics

/observations (tug_ist_diagnosis_msgs/Observations)
  • This topic gives information in the form of First Order Logic (FOL) sentences like running(node_name),~running(node_name).

Parameters

~topic (string, default: "/Topic")
  • It is the name of the topic whose frequency has to be observed.
~frq (int, default: 10)
  • It is normal and required current frequency of the running topic.
~dev (int, default: 5)
  • This deviation on both side of the frequency parameter.
~ws (int, default: 10)
  • This is window size describing the number of times of occurrence of the topic output. The less is the window size the more strict is the observer.

NObs

Node Observer observes the running state of software nodes. It submits running(n) if node n actually runs, ~running(n) otherwise. It takes name of the node to be observed as parameter.

Published Topics

/observations (tug_ist_diagnosis_msgs/Observations)
  • This topic gives information in the form of First Order Logic (FOL) sentences like running(node_name),~running(node_name).

Parameters

~node (string)
  • It is the name of the node to be observed if its running or not.

QObs

Qualitative Observer observes the abstract trend of a particular value in the message of a topic. It reports if value v actually increases inc(v), decreases dec(v) or stays constant const(v). The observer fits a linear regression for a given time window and compares it with a given slope.

Published Topics

/observations (tug_ist_diagnosis_msgs/Observations)
  • This topic gives information in the form of First Order Logic (FOL) sentences like inc(val), dec(val) or cons(val).

Parameters

~topic (string, default: "/pose")
  • It is the name of the topic whose message value has to be observed.
~field (string, default: "pose.pose.position.x")
  • This the field for value embedded inside the topic message.
~ws (int, default: 1000)
  • This is window size describing the number of times of occurrence of the topic output. The less is the window size the more strict is the observer.
~b (int, default: 0.000005)
  • It is the slop which is used for matching after linear regression.

BiQObs

Binary Qualitative Observer observes match or mismatch between abstract trends of two particular values in the massage of one or two topic(s). It issues observation matched(val1,val2) if abstract trend of val1 is similar to of val2 otherwise ~matched(val1,val2). BiQObs functions the same way as QObs except that it observes difference between two abstract trends.

Published Topics

/observations (tug_ist_diagnosis_msgs/Observations)
  • This topic gives information in the form of First Order Logic (FOL) sentences like matched(topic1_val,topic2_val) or '~matched(topic1_val,topic2_val).

Parameters

~topic1 (string, default: "/pose")
  • It is the name of the first topic whose message value has to be matched.
~field1 (string, default: "pose.pose.position.x")
  • This the field for value embedded inside the first topic message.
~ws1 (int, default: 1000)
  • This is window size describing the number of times of occurrence of the topic1 output. The less is the window size the more strict is the observer.
~b1 (int, default: 0.000005)
  • It is the slop which is used for matching after linear regression calculation for value of field1.
~topic2 (string, default: "/pose")
  • It is the name of the second topic whose message value has to be matched.
~field2 (string, default: "pose.pose.position.y")
  • This the field for value embedded inside the second topic message.
~ws2 (int, default: 1000)
  • This is window size describing the number of times of occurrence of the topic2 output. The less is the window size the more strict is the observer.
~b2 (int, default: 0.000005)
  • It is the slop which is used for matching after linear regression calculation for value of field2.
~mode (string, default: "LIN")
  • It is the mode of regression calculation and matching. It assumes one of two values "LIN" for simple linear regression, and "DRV1" for first calculating derivative of the values in the field1 of topic1.
~reg (string, default: yy)
  • This is regression calculation code. "yy" represents that regression should be calculated for both the field1 and field2, "ny" means do not calculate regression for field1 but calculate regression for field2, similarly "yn" and "nn" values.

MObs

Multiple Observer is similar to General Observer but subscribes to two topics. Therefore, more complex communication behaviors such as conditioned or triggered communication are observed between the topics.

Published Topics

/observations (tug_ist_diagnosis_msgs/Observations)
  • This topic gives information in the form of First Order Logic (FOL) sentences like running(node_name),~running(node_name).

Parameters

~in_topic (string, default: "/Topic1")
  • It is the name of the topic which acts like trigger for the other topic.
~out_topic (string, default: "/Topic2")
  • It is the name of the topic which is triggered from other topic.
~tim (int, default: 500)
  • This is time(ms) providing delta time between triggering and triggered actions of the topic. If the conditioned topic is not triggered in specified time then observers reports ~ok for the dependent topic.

PObs

Property Observer supervises properties not directly related to a topic that may affect the robot performance like CPU or memory usage of a particular service used by a node. This observer is still under construction.

Published Topics

/observations (tug_ist_diagnosis_msgs/Observations)
  • This topic gives information in the form of First Order Logic (FOL) sentences like ok(node,mem), ok(node,cpu).

Parameters

~node (string, default: "Node")
  • It is the name of node which is observed against some system resource.
~property (string, default: "MEM")
  • This is the property being observed for the node. It assumes two properties "cpu" and "mem"
~max_val (float, default: 0.2)
  • It is maximum limit value for checking the system resource value. This value is percentage value. Means 0.2 means 0.2%.
~mismatch_thr (int, default: 5)
  • This is threshold for counting how many times resource goes up to the maximum value. Until mismatch threshold system can tolerate but after mismatch threshold system will alarm for exceeding resource.
~ws (int, default: 10)
  • This is window size describing the number of times of occurrence of the resource property measurment. The less is the window size the more strict is the observer.

Wiki: tug_ist_diagnosis_observers (last edited 2013-02-27 14:09:38 by SafdarZaman)