# On Managing Knowledge for MAPE-K Loops in Self-Adaptive Robotics Using a Graph-Based Runtime Model
## 6 Experimental Results  
We tested the ability of the CARY robot to move roll containers in a real retail store (Eroski) sited in Casarabonela (Malaga, Spain). The shop is approximately 300 square metres in size, it has narrow corridors (close to 2 metres), and the robot shared the space with shop workers and consumers. Figure 5 provides some snapshots of the robot moving in the store. The store was divided up into picking areas. When a worker asks for the robot to collect a roll container in a picking area, the robot will move to a specific pose within this area, and, from here, it will look for the container. If the search fails, it will move to a second observation pose within the area. If the robot is not able to find the roll container (or if it is not able to determine the pose of the container), it will inform the base station and will return to the starting pose. If the request of the worker is for a roll container, the robot will provide one in the delivery pose set in each picking area. Figure 8 summarizes the distribution of key poses in two picking areas. Figure 7: The main root of the Global Management BT. The nominal branch is the PickDeliverStart one. This branch commands the robot to pick up a roll container and move it to a delivery position within a certain picking area. Then, it returns to the Starting position. The alternative branches force the robot to (1) move the roll container directly to the Delivery position; (2) move the robot to the Starting position; or (3) move the robot to the Charging station. The robot showed its ability for autonomously detecting roll containers and people, being able to work under different lighting conditions with no appreciable change in performance. For detecting people or roll containers, the robot uses the depth image from a D435i camera from Intel. The Vision Processor D4 hardware component inside this camera takes care of lighting adjustments with auto-exposure mode enabled, and the depth estimation was accurately estimated in all cases. On the other hand, for navigating, the robot uses the laser range finders in its frontside, and, for picking up, the laser range finder placed in the front of the fork. The robot also showed its ability to correctly pick up or deliver roll containers. Next, we describe some situations where the DSR was employed for synchronizing the activities of the BT Executors or for self-adapting the robot's behaviour. In this first situation, the robot is initially asked to provide one roll container to a picking area. The command is correctly managed, and, while the human picker is loading the roll container, a new order asks the robot to move the container to a second picking area. This new command is correctly received and the new delivery pose is annotated. The BehaviourTreeAgent maintains as current plan the nominal one (encoded in the first branch of the BT, see Figure 7). However, when the picker ends, s/he uses the tablet interface for setting that the roll container is FULL. This situation makes the FuzzyEngine to give a large weight to the action DefaultDeliver. The AdaptationAgent asks the BehaviourTreeAgent to abort the current course of action, and to chose the second branch in the Global Management BT (see Figure 7). Figure 9 shows some snapshots of the evolution of the DSR during this example. The robot correctly aborts the delivery of the roll container in the second picking area, and delivers the roll container in the general Delivery pose set in the store. Figure 8: Key poses set in two picking areas in the store. The robot can move the roll container through the corridors in the store despite the presence of people. However, for the picking up action, the robot needs to rotate, and it was considered that the presence of people made the situation unsafe. As was shown in Figure 3, the final result is to abort the pickingUp action. Figure 10 shows some snapshots of the detection of a person crossing in front of the roll container.