Skip to content

ROS-Node Bridge zwischen RISE und Comp. Model

Vorbereitungen

  • Docker Login, falls nicht von früher noch bekannt. Laden des aktuellen Docker Images: docker pull hub.mas-ci.techfak.de/trr318-a05-hri:latest
  • Git clonen: git clone https://gitlab.ub.uni-bielefeld.de/mas/projects/ci-jenkins/documentation.git
  • Anpassen der IP-Adresse im "start_docker.sh" Skript auf deine eigene IP vom Laptop Starten vom Docker: ./start_docker.sh
  • Starten von: "roscore" und "scaffxrosgen"
  • In Vdemo-Terminal, Beispiel zum Testen des Service Requests: rosservice call /state_action_service "data: '{\"task_name\": \"task_1\", \"task_discourse\": \"w_1\"}'"

Aufgabe 1

  • Implementiere ein kleines Pythonskript, welches in einem angegebenen Intervall (alle 30 Sekunden z.B.) einen Wert in den WorkingMemory von RISE schreibt.
  • Hierfür ziehst du dir über einen ROS-Service von meinem Adaptive Scaffolding Model per Request ein Ergebnis. Das Model liefert dir einen json String zurück im Format:
    • Request: request = {"task_name": task, "task_discourse": discourse}
    • Response Strategy: strategy = json.loads(state_action_service(str(json.dumps(request))).data)["selected_action"]
  • Für den Request des Services benötigst du "task_name" und "task_discourse", das sind ebenfalls zwei WorkingMemory innerhalb von RISE, die du dir vorher holen musst.
  • Schreibe strategy in den WorkingMemory von RISE unter dem Entry: "Current_Adaptive_Strategy"
  • (Wenn alles Sonstige fertig ist) Erweitere das Skript dahingehend, dass es nicht in einem Intervall updated, sondern nur updated, wenn eine Topic namens "Update_Scaffolding_Strategy_by_Task_Context" getriggert wird.

Hilfe zu RISE: https://rise-projects.pages.ub.uni-bielefeld.de/rise-documentation/tutorials/tutorialNewComponents.html#getting-a-value-by-key-from-the-working-memory

Hilfe zum Model Service: https://gitlab.ub.uni-bielefeld.de/mas/projects/sfb-trr318/a05/adaptive-scaffolding-generation

Aufgabe 2

Strategy Text
Affirmation Zerstampfe die Tablette
Negation+Affirmation Zerteile die Tablette nicht, sondern zerstampfe sie
Negation Zerteile die Tablette nicht
Affirmation & Hesitation Hm.. zerstampfe die Tablette
Negation+Affirmation & Hesitation Hm.. zerteile die Tablette nicht, sondern zerstampfe sie
Negation & Hesitation Hm.. zerteile die Tablette nicht
  • Erstelle eine IR mit dem Namen "Explanation_Task_1_Tool_0"
  • Die IR prüft, welcher Wert im WorkingMemory Entry: "Current_Adaptive_Strategy" steht:
    • If WM Entry = "Affirmation", dann starte CRA "Explanation_Task_1_Tool_0_Affirmation"
    • If WM Entry = "Negation+Affirmation", dann starte CRA "Explanation_Task_1_Tool_0_Negation+Affirmation"
    • .. für alle Strategien aus Tabelle 1 ..
  • Erstelle für jeden Task (5 Stück) für jedes mögliche Tool (0 oder 1) eine eigene IR, die gestartet werden kann (insgesamt also 10 IRs) und wiederhole den Aufbau vom Beispiel.
  • Idee: Im RISE WM existieren "task_name" und "task_discourse". Nutze die beiden Entries um 1 IR zu designen statt 10.
Edited by Andre Groß