Introduction

The following projects were developed by James Arnold and Ralph Eastwood, under the supervision of Rob Alexander, during an internship in the High Integrity Systems Engineering Group of the Computer Science Department at the University of York.

libfaults

A standalone library for modelling faults on ground-truth values. Faulty values can be applied in-place, i.e. overwriting the ground truth, or returned as an extra variable.

Fault models currently implemented are:

faultyposition2d

A Player driver to inject faults into an existing position2d interface, allowing for hardware failures or glitches to be modelled in both simulation and the real-world.

Existing clients can use the library without any code modification; a simple change to the Player configuration file is all that is required.

Faults can be set on a per-parameter basis and toggled globally at runtime. The driver requires the libfaults library.

Event Detector

A Player client for passively monitoring robots and logging when various events occur. It works with simulations in either Stage and Gazebo, or in real-world scenarios on actual hardware.

Events currently monitored include:

The log file can be parsed online, i.e. while a scenario is running, or offline. The logging format is easy to parse and contains plenty of information for applying meta-analysis such as machine learning.

Batcher

Originally designed to aid with performing batch runs of Player/Stage simulations, it developed into a convenient, flexible mechanism for running arbitrary tasks (or sequences of tasks) repeatedly. The outputs of any executed commands are captured and collated between runs.

The Jinja2 templating engine is embedded, providing advanced value substitution on a per-run basis. This makes the process of varying the contents of configuration files extremely simple.

PlayerNSD

Designed to run a agnostic server application that allows communication between connected clients and allow scripts to simulate the network behind it.

It can be used in conjunction with the NSDNet driver for Player.

NSSim example provides a C++ program that interfaces with NS3.

NSDNet

It is a Player driver, client proxy and set of examples that allow Player clients to communicate with each other.

The protocol is high-level and requires the PlayerNSD daemon to pass the messages back and forth with the ability to simulating the underlying network.

NSSim

An example of using NS3 in conjunction with PlayerNSD.