arni: arni_core | arni_countermeasure | arni_gui | arni_msgs | arni_nodeinterface | arni_processing | arni_rqt_detail_plugin | arni_rqt_overview_plugin

Package Summary

Metapackage for Advanced Ros Network Introspection.

  • Maintainer status: maintained
  • Maintainer: Matthias Hadlich <matthiashadlich AT yahoo DOT de>, Andreas Bihlmaier <andreas.bihlmaier AT gmx DOT de>
  • Author:
  • License: BSD

About

Advanced ROS Network Introspection (ARNI) extends the /statistics features introduced with Indigo and completes the collected data with measurements about the hosts and nodes participating in the network. These are gathered from an extra node that has to run on each host machine. All statistics or metadata can be compared against a set of reference values using the monitoring_node. The rated statistics allow to run optional countermeasures when a deviation from the reference is detected, in order to remedy the fault or at least bring the system in a safe state.

All data can be displayed and monitored through new ARNI rqt_gui plugins.

ARNI Overview

a) Publishing /statistics data for topics and connections. b) Publishing /statistics_host and /statistics_node data. c) Comparing actual values to a YAML specification (d) and publishing /statistics_rated. e) Automatically acting on rated data, given a YAML countermeasure file (f). g) ARNI rqt_gui to visualize current state of ROS network. h) rqt_gui Node Graph showing /statistics data.

If you have any further questions / issues / ideas do not hesitate to either use github or to contact the current maintainer directly.

Installation

Get the latest version from our GitHub repository:

cd ~/catkin_ws/src
git clone https://github.com/ROS-PSE/arni.git
cd ..
catkin_make

Dependencies:

  • If ros-indigo-desktop-full is installed, most system dependencies should already be met.

  • Three additional Python packages are required, these can be easily installed using pip:

    • pip install --user --upgrade psutil
      pip install --user pysensors
      pip install --user pyqtgraph

Documentation

Each package has it's own documentation.

SEUID

A SEUID (Statistics Entity Unique IDentifier) identifies a certain node, host, connection (a topic, a subscriber and a publisher) or a topic following the this pattern:

  • Hosts: h!127.0.0.
  • Nodes: n!/my_node
  • Topics: t!/topic_name
  • Connections: c!subscriber!topic!publisher

SEUIDs are used in the configuration-files for the arni_processing and arni_countermeasurenode as well as on the used topics.

Used Parameters

Parameter

Default value

Description

Enabling and disabling of data collection and processing

/enable_statistics

False

(The same parameter as used for the normal indigo /statistics) Enables or disables the processing of statistics.

/arni/check_enabled_interval

10

The interval until the next time will be checked if processing is enabled.

All references for rating the incoming statistics are stored as specifications in a list on the parameterserver.

/arni/specifications

[]

See the Specification format below.

Additionaly some commands can be send as service calls:

Service

Content

Effect

/monitoring_node/reload_specifications

std_srvs.srv.Empty

Reloads all specifications from the namespace /arni/specifications (see Parameters)

/countermeasure/reload_constraints

std_srvs.srv.Empty

Reloads all constraints for the countermeasure node

Messagetypes

The message types can be founde here: messagetypes (Note: may be deprecated, see in source code for most recent information. The package arni_msgs contains all needed information).

Tutorials

Several Tutorials have been written to ease the use of ARNI. They can be found here: arni/Tutorials

We highly recommend the Springer tutorial which can be found below - it is more detailed and more up to date than the tutorials in this wiki!

Source / Issues

https://github.com/ROS-PSE/arni

Advanced ROS Network Introspection (ARNI) in Robot Operating System (ROS): The Complete Reference (Volume 1)

@Inbook{Bihlmaier2016,
author="Bihlmaier, Andreas and Hadlich, Matthias and W{\"o}rn, Heinz",
editor="Koubaa, Anis",
chapter="Advanced ROS Network Introspection (ARNI)",
title="Robot Operating System (ROS): The Complete Reference (Volume 1)",
year="2016",
publisher="Springer International Publishing",
pages="651-670",
isbn="978-3-319-26054-9",
doi="10.1007/978-3-319-26054-9_25",
url="http://dx.doi.org/10.1007/978-3-319-26054-9_25"
}

@inproceedings{bihlmaier14arni,
  title = {Increasing ROS Reliability and Safety Through Advanced Introspection Capabilities},
  author = {Bihlmaier, Andreas and W{\"o}rn, Heinz},
  booktitle = {Proceedings of the INFORMATIK 2014},
  pages = {1319--1326},
  year = 2014
}

Data Flow in ARNI

arni_dataflow.png ARNI Dataflow

Troubleshooting

The Gui does not show any entries: Make sure you have the minimum required ROS Version for statistics. arni shell output and debug messages will tell you if there is any problem on the current host. On remote hosts you have to check their log as well.

The graphs are empty: This may be due to many different problems. Make sure the host really sends data and that the values in the GUI are changing. If this is the case it might be that the remote host is sending data too seldomly. Currently we do not interpolate between two data points, which means, if the host sends data every ten seconds and the graph show only 10 seconds the graph will move out of range immediately. The solution is updating the time range, e.g. to 30 seconds.

If you ran into any other problems (and maybe also found a solution?) send us a mail or post it on http://answers.ros.org!

Wiki: arni (last edited 2017-08-21 06:33:57 by GvdHoorn)