Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Fault injection on Robotic Systems Simulators

January 05, 2018

Fault injection on Robotic Systems Simulators

Intelligent Robotics Course @ ProDEI


January 05, 2018

More Decks by JP

Other Decks in Research


  1. Fault Injection in Robotic Systems A STUDY ON ROS/GAZEBO BASED

  2. Outline • Introduction • Background • ROS Fault Injection Toolkit

    • Experiments • Conclusions 2
  3. Introduction • Simulation systems are widely used in robotics as

    way of enabling the development and preliminary test of solutions instead real- world scenarios. • e.g. autonomous driving system design • Such simulation systems generally have simulation of the environment along with sensors and actuators. • However, typically, the sensor readings are not coherent with real- world behaviours. • Sensors have faults and missreadings (manufacture, environment conditions, …) 3
  4. • Autonomous Driving Simulator for the Portuguese Robotics Open •

    Uses different ROS nodes and communicate using streaming topics (publish/subscribe) Background: conde-simulator 4
  5. Background: fault-injection • Fault injection is a phrase covering a

    variety of techniques for inducing faults in systems to measure their response to those faults. • Fault Injection, Carnegie Mellon University, 1998 https://users.ece.cmu.edu/~koopman/des_s99/fault_injection/ • Technique broadly used in software engineering as way of improving a system reliability (fault-tolerance). • Can be used to inject faults on sensors of simulators. 5
  6. ROS Fault Injection Toolkit • ROS Node • Primarily focused

    on simulating and injecting camera readings faults. • Subscribes to a set of pre-configured topics and publishes on other set of pre-configured. • CLI toolkit. 6
  7. ROS Fault Injection Toolkit: Features usage: ros-inj-tool.py [-h] -f FAULTTYPE

    ROS queue fault-injection toolkit optional arguments: -h, --help show this help message and exit -f FAULTTYPE, --faulttype FAULTTYPE FAULTTYPE: RANDOM, SLOW, FREEZE, INJECTPAYLOAD, CAMERASTORE, PARTIALLOSS, MESSAGEHOOK RANDOM: Shuffles the camera feed images bytes SLOW: Introduces a slowness in the camara image stream FREEZE: Freezes a camara feed for n interations INJECTPAYLOAD: Injects personalized images into the queue CAMERASTORE: Stores all images in camera feeds PARTIALLOSS: Loss of part of the image MESSAGEHOOK: Subscribe to messages of a topic and publish to a pre-defined ones -- Additional configuration in config.ini file. 7
  8. ROS Fault Injection Toolkit DEMO VIDEO 8

  9. ROS Fault Injection Toolkit: Video Demo 9

  10. Experiments: Sanity Checks $ python ros-inj-tool.py -f RANDOM $ python

    ros-inj-tool.py -f PARTIALLOSS $ python ros-inj-tool.py -f PARTIALLOSS $ python ros-inj-tool.py -f INJECTPAYLOAD 10
  11. Conclusions • Injection fault is a valid approach for asserting

    a system’s fault- tolerance • The ROS Fault Injection Toolkit covers a set of typical faults in camera readings. • Further, the toolkit enables one to observe and inject messages in any streaming topic. • Need for authentication and encryption on the communication system. • ROS 2 Roadmap covers this functionalities. • Other emergent fields like IoT would benefit of similar tools. 11
  12. Resources • Tool and How-to instructions: https://github.com/jpdias/ros_fault_inj_toolkit • Will be

    released as open-source. 12

    http://jpdias.me 13