- Prepare/Build all docker images: `docker-compose build` (this will take a while)
## Running the Case Study
## Running the Case Study
- Start the following containers (best to use different terminal tabs/windows):
- Start the following containers (best to use different terminal tabs/windows):
-`docker-compose up web`
-`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_a`
-`docker-compose up rag_place_b`
-`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_b1`
-`docker-compose up ros_place_b2`
-`docker-compose up ros_place_b2`
- Open the Web-UI for the RAG application
- Open the Web-UI for the RAG application
-<http://localhost:8050/>
-<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)
- 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*"
- 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`)
- 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
- Open VNC using your browser to start the two robots
-<http://localhost:6081/> (First robot)
-<http://localhost:6081/> (First robot)
...
@@ -42,6 +54,26 @@ Please note that the setup uses vnc and thus offers limited graphics performance
...
@@ -42,6 +54,26 @@ Please note that the setup uses vnc and thus offers limited graphics performance
## Experiment with RagConnect
## Experiment with RagConnect
-> Still TODO (update ragconnect minimal example)
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>.
To experiment with a less complex scenario and verify the functionality of the tool RagConnect itself, you can use the minimal example provided 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)