Skip to content
Snippets Groups Projects

Artifact for the paper "Incremental Causal Connection for Self-Adaptive Systems Based on Relational Reference Attribute Grammars"

Installation and Preparation of the Case Study

To quickly run the graphical example applications, Docker is used. Please note that the setup uses vnc and thus offers limited graphics performance.

  • Install Docker and docker-compose for your system (for Windows and Mac OS, install Docker Desktop)
  • For artifact evaluation:
    • Unpack the provided archive
    • Load the four docker images (they require around 6.7GB in total)
      • docker load models2022_web.tar
      • docker load models2022_mosquitto.tar
      • docker load models2022_rag_place.tar
      • docker load models2022_ros_place.tar
    • Unpack the archive workspace.tar. It contains all (remaining) necessary parts for the docker-compose-build
  • For all others:
    • Clone this repo and its submodules (Important: Use --recurse-submodules):
      • git clone --recurse-submodules https://git-st.inf.tu-dresden.de/ceti/ros/models2022.git models2022
      • Change into the workspace cd models2022
      • Prepare/Build all docker images: docker-compose build (this will take a while)

Running the Case Study

  • Start the following containers (best to use different terminal tabs/windows):
    • docker-compose up web
      • You should see a log output, that connection to MQTT was successful (Connected to mosquitto at <datetime>)
    • docker-compose up rag_place_a
    • docker-compose up rag_place_b
      • There will some log output, and a final Published some bytes to coordinating/rag-a/status (or coordinating/rag-a/status for place B)
    • docker-compose up ros_place_b1
    • docker-compose up ros_place_b2
  • Open the Web-UI for the RAG application
    • http://localhost:8050/
    • This UI offers various controls (only a few are needed to control the case study), a filtered MQTT log, and a second tab to view the runtime model (see below)
    • Start the RAG application for place B, hit "Start" in the (rightmost) section "Commands Place B".
      • It is important, that the RAG application of place B is started before the scripts (run1.sh and run2.sh, see below) that start the two robots (The robotic controllers send their initial scene only once, and without receiving it, the RAG application is missing information about the objects in place B)
    • You should then see a message with "ready" for the topic "coordinating/rag-b/status" (in a line like [<datetime> @ coordinating/rag-b/status ] ready)
  • Open VNC using your browser to start the two robots
    • http://localhost:6081/ (First robot)
    • http://localhost:6082/ (Second robot)
    • You should see a desktop environment with four desktop entries
    • Right-click on "ros_ws" desktop entry -> "Open in terminal". A terminal window should open in directory "~/Desktop"
    • Start the controller using either ./run1.sh (for the first robot) or ./run2.sh (for the second robot)
    • You should see some log output in the terminal and the visualization program (RViz) for the respective robot should open
  • Back in the Web-UI for the RAG application
    • You should see messages for the topics /ceti_cell_placeworld/scene/update and /ceti_cell_placeworld2/scene/update
    • Start the RAG application for place A, hit "Start" in the (middle) section "Commands Place A"
    • Then the case study begins, you should see a "ready" for the topic "coordinating/rag-a/status" and the first commands sent. Also the two robots should start to move executing their command. From then on, observe the mqtt messages sent and/or the robots moving
  • View the RAG runtime model
    • While the case study runs or after it is finished, you can view the runtime state in the tab named "SVG Model B"
    • After starting the RAG application for place B, the initial state is displayed
    • To "request" a new model, hit the button "Model" in section "Commands Place B". This will both print the model (in the lower MQTT log) and create a visualization shown in the tab "SVG Model B"

Experiment with RagConnect

To experiment with a less complex scenario and verify the functionality of the tool RagConnect itself, you can use the minimal example provided in the archive and at https://git-st.inf.tu-dresden.de/jastadd/ragconnect-minimal.

Verifying Results of the Publication

Several important results can be checked for:

Feasability of the Case Study

  • By executing the case study, and seeing the robots move in the correct manner and order, one can verify that the RAG application computes and sends the correct commands, and (indirectly) that the causal connections update the model correctly

Lines of code

  • There is a script using cloc to get LOC numbers.
  • Either start a new container with the image of a RAG place, e.g., docker run --rm -it models2022_rag_place_b /bin/bash
  • Or attach to a running container after starting the case study with docker-compose. To attach, run docker-compose exec rag_place_b /bin/bash.
  • In both cases, you should have a terminal in the directory /ros3rag
  • Change directory to the cloc subdirectory, cd cloc
  • Execute the script to show lines of code, ./run-cloc.sh

Ratio of messages skipped

  • When running the case study, every time the model of place B is requested (by hitting the button "Model" in the rightmost section "Commands Place B"), information about the processing of received and sent messages is shown as "evaluationCounters" in form of a csv file
  • After those information, the ratio is also printed (the ration between the sum of all skipped messages and the sum of all processed messages)