This repository includes a ROS 2 accountability and explainability solution based on the use of its topics. This approach aims to identify the causes that have triggered a set of specific events, providing to the final user a non-expert explanation.
ROS 2 Humble
RB1 simulator for ROS 2
AWS RoboMaker Hospital World ROS package available here.
The following images show the floor plan of the scenario used in the development of this work, including in the second one an obstacle in the route initially calculated to reach the goal destination. This obstacle will force the change of the pre-computed path.
After starting the simulation, black-box recording information service can be started with the command
ros2 launch bag_recorder bag_recorder.launch.py
The previous recording service can be started and stopped by running
ros2 service call /bag_recorder std_srvs/srv/SetBool data:\ true
ros2 service call /bag_recorder std_srvs/srv/SetBool data:\ false
To start the recording process only when it would be an obstacle, it must be run
ros2 run bag_recorder bag_recorder_scan_client
To start the recording process only when a nav2 behavior tree node would be in FAILURE status, it must be run
ros2 run bag_recorder bag_recorder_btstatus_client
The navigation goal pose, can be sent by running
ros2 run goal_sender nav_to_pose_action_client
The reproducibility of the recorded information can be tested with the command
ros2 bag play <path to rosbag file>
A sample of the recorded data can be found here.
After starting the simulation, explainability service can be started with the command
ros2 launch navigation_explainer navigation_explainer_srv.launch.py
Explanations can be obtained by running
ros2 run navigation_explainer navigation_explainer_client "What is the current navigation status?"
ros2 run navigation_explainer navigation_explainer_client "Why have you changed the planned path?"
Next is shown the explanation service's output in the initial navigation state where no goal pose has been sent. A graphical representation of this state in the Rviz2 tool is displayed in the following image.
ros2 run navigation_explainer navigation_explainer_client "What is the current navigation status?"
[INFO] [1679254837.887102801] [navigation_explainer_client]: 'No navigation is running'
ros2 run navigation_explainer navigation_explainer_client "Why have you changed the planned path?"
[INFO] [1679254848.061037165] [navigation_explainer_client]: 'I have not changed the planned path'
Next is shown the explanation service's output when sending a goal pose, and the navigation is in progress. A graphical representation of this state in the Rviz2 tool is displayed in the following image.
ros2 run navigation_explainer navigation_explainer_client "What is the current navigation status?"
[INFO] [1679255510.444170839] [navigation_explainer_client]: 'Navigation to the goal is in progress.'
ros2 run navigation_explainer navigation_explainer_client Why have you changed the planned path?"
[INFO] [1679255502.212077103] [navigation_explainer_client]: 'I have not changed the planned path'
Next is shown the explanation service's output when an obstacle is detected. A graphical representation of this state in the Rviz2 tool is displayed in the following images.
ros2 run navigation_explainer navigation_explainer_client "What is the current navigation status?"
[INFO] [1679255690.249576203] [navigation_explainer_client]: 'Navigation to the goal is in progress.'
ros2 run navigation_explainer navigation_explainer_client "Why have you changed the planned path?"
[INFO] [1679255693.275863200] [navigation_explainer_client]: 'I have changed the planned path because there was an obstacle. Then, I followed a new path to the goal pose.'
Next is shown the explanation service's output when the navigation has successfully ended. A graphical representation of this state in the Rviz2 tool is displayed in the following image.
ros2 run navigation_explainer navigation_explainer_client "What is the current navigation status?"
[INFO] [1679255808.341188660] [navigation_explainer_client]: 'Navigation to the goal has succeeded.'
ros2 run navigation_explainer navigation_explainer_client "Why have you changed the planned path?"
[INFO] [1679255805.321852201] [navigation_explainer_client]: 'I have changed the planned path because there was an obstacle. Then, I followed a new path to the goal pose.'
DMARCE (EDMAR+CASCAR) Project: EDMAR PID2021-126592OB-C21 -- CASCAR PID2021-126592OB-C22 funded by MCIN/AEI/10.13039/501100011033 and by ERDF A way of making Europe