Skip to main content

Automatic conversion from fault trees into behavior trees

Project description

Fault Tree to Behavior Tree Converter

Overview

This repository focuses on the conversion of fault trees, represented in draw.io diagram XML files, into behavior tree XML files compatible with the BehaviorTree.CPP library. It enables users to transform their fault tree diagrams into actionable behavior trees, facilitating integration with systems that utilize the BehaviorTree.CPP framework for managing complex behaviors.

The project is specifically designed for Functional Safety (FuSa) runtime assessment for autonomous vehicles, adhering to the ISO 26262 standard for road vehicles. It allows for the automatic generation of FuSa Supervisors from static safety analysis, ensuring compliance with these safety requirements. These supervisors can be formally verified using the NuSMV 2.6.0 tool.

Installation

Install with PyPI:

pip install ft2bt
echo 'export FT2BT_PATH=$(python3 -c "import ft2bt; import os; print(os.path.dirname(ft2bt.__file__))")' >> ~/.bashrc
source ~/.bashrc

Requirements

This project requires NuSMV version 2.6.0 to be installed, only in the case that the formal verification is required. Follow the steps below to install it:

After downloading, extract the contents of the archive file:

tar -xvzf NuSMV-2.6.0.tar.gz
cd NuSMV-2.6.0
./configure
make
sudo make install
NuSMV -version

You can refer to the NuSMV Documentation for more details.

The repository has been proven in an Ubuntu 20.04 environment.

Usage

The tool is designed to convert fault trees from draw.io diagram XML files into behavior tree XML files compatible with the BehaviorTree.CPP library. Here's how to use it:

Preparing Your Fault Tree Diagram

  1. Create or Open Your Fault Tree Diagram in Draw.io:
    • First, visit draw.io to create or edit your fault tree diagram. You may refer to their documentation for guidance on using the tool.
  2. Diagram Structure & Symbols:
    • Hazards: Represent hazards using rectangles. This is a required element in your diagram.
    • Events: Depict events using circles. These are also required elements.
    • AND/OR Gates: Use the respective symbols for AND/OR gates in your diagram. These are required for depicting logical relationships in the fault tree.
    • Probabilities: Use text below the events to indicate the correspondent probability. Example: p = 0.1. These elements are not required.
  3. Exporting the Diagram as XML:
    • Once your fault tree diagram is ready, you need to export it in XML format. In draw.io, go to File > Export as > XML to save your diagram as an XML file.

Fault Tree Example

Warning!: All fault tree elements, with the exception of text probabilities, should be connected by directional arrows. Ensure that each arrow is physically attached to its corresponding elements to maintain clarity and accuracy in the diagram.

Preparing Your Hazard Analysis and Risk Assessment (Optional)

Create a *.csv file with some required column names:

  1. Item_ID: Identificator of the Item analyzed.
  2. Hazard_ID: Identificator of the possible Hazard. The ID must match with the name of the correspondent Hazard in the Fault Tree.
  3. Operating_Scenario_ID: Identificator of the Operating Scenario.
  4. ASIL: Automotive Safety Integrity Level. Options: A, B, C, D.
  5. Safety_Goal_ID: Identificator of the Safety Goal.
  6. Safety_State_ID: Identificator of the Safety State action.

HARA Example

Running the Conversion Tool

Run the conversion command:

ft2bt -f FTA_FILEPATH [-v] [-c] [-r] [-o OUTPUT_FOLDER] [-p] [-H HARA_FILEPATH] [-os] [-ctl]

Where:

  • -f: (Required, str) Specifies the XML global filepath name of the draw.io diagram.
  • -v: (Optional, bool) Automatically shows and saves the renders. Defaults to False.
  • -c: (Optional, bool) Generate a cpp ROS node template for the behavior tree. Defaults to False.
  • -r: (Optional, bool) Replaces current code if previously generated and -c is set to True.
  • -o: (Optional, str) Specifies the global folder path, where the behavior tree XML diagram is saved.
  • -p: (Optional, bool) Probabilities are considered to sort the behavior tree nodes. Defaults to False.
  • -H: (Optional, str) Specifies the CSV global file name of the Hazard Analysis and Risk Assessment (HARA).
  • -os: (Optional, bool) Generate a FuSa BT that includes events to check the Operating Scenario. Defaults to False
  • -ctl: (Optional, bool) Formally verify the BT FuSa supervisor with CTL formulation. Defaults to False

Output Example: Behavior Tree Diagram

Below is an example of the behavior tree diagrams generated from the fault tree and HARA examples. The command used for the generation is:

ft2bt -os -p -ctl -f $FT2BT_PATH/test/fault_trees/fta_example.xml -H $FT2BT_PATH/test/hara/hara_example.csv -o $FT2BT_PATH/test/behavior_trees

The XML file is loaded using Groot:

The order of the events is sorted by probability of occurrence (-p oprion).

Behavior Tree Conversion Example

Contact Information and Acknowledgement

For further information regarding this project, please feel free to reach out to Carlos Conejo.

This project was developed at the Institut de Robòtica i Informàtica Industrial (IRI), a joint university research center of the Polytechnic University of Catalonia (UPC) and the Spanish National Research Council (CSIC).

Research partially funded by the Spanish State Research Agency (AEI) and the European Regional Development Fund (ERFD) through the SaCoAV project (ref. PID2020-114244RB-I00). Also funded by Renault Group through the Industrial Doctorate "Safety of Autonomous Vehicles" (ref. C12507).

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ft2bt-0.4.5.tar.gz (304.7 kB view details)

Uploaded Source

Built Distribution

ft2bt-0.4.5-py3-none-any.whl (38.8 kB view details)

Uploaded Python 3

File details

Details for the file ft2bt-0.4.5.tar.gz.

File metadata

  • Download URL: ft2bt-0.4.5.tar.gz
  • Upload date:
  • Size: 304.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.8.10

File hashes

Hashes for ft2bt-0.4.5.tar.gz
Algorithm Hash digest
SHA256 8d9e33eace491bf4fa8237fd4c1ebd03095519439670c4818544fed71ac1be59
MD5 4f59f699eef279fddb3a0200ea4942d3
BLAKE2b-256 8db356c570badbfc5c7578064bf5f0996be1e62d58fef11e87b00e7a41c397f1

See more details on using hashes here.

File details

Details for the file ft2bt-0.4.5-py3-none-any.whl.

File metadata

  • Download URL: ft2bt-0.4.5-py3-none-any.whl
  • Upload date:
  • Size: 38.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.8.10

File hashes

Hashes for ft2bt-0.4.5-py3-none-any.whl
Algorithm Hash digest
SHA256 8dd9b8c00b5b095cef265d1d3685761eef40d274500ce0b4ecb8106a5b1f55fa
MD5 f394a6aa6ef538ed4f210b7df56725d1
BLAKE2b-256 28f8d74f7bdf9e607636e6d79aaca82f307044dd1e06176dbccc28f65f33e0c0

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page