Situational Graphs - Reasoning is a ROS2 package for generating in real-time semantic concepts like Rooms and Walls from Wall Surfaces S-Graphs. For that purpose, Graph Neural Networks (GNNs) are used to estimate the existing relations between the wall surfaces.
Note
Situational Graphs - Reasoning was only tested on Ubuntu 20.04, ROS2 Foxy, Humble Distros. We strongly recommend using cyclone_dds instead of the default fastdds.
Follow the S-Graphs installation instructions
Important
Before proceeding, make sure you have rosdep
installed. You can install it using sudo apt-get install python3-rosdep
In addition, ssh keys are needed to be configured on you GitHub account. If you haven't
yet configured ssh keys, follow this tutorial
- Update Rosdep:
rosdep init && rosdep update --include-eol-distros
- Create a ROS2 workspace for S-Graphs
mkdir -p $HOME/workspaces && cd $HOME/workspaces
- Clone the S-Graphs repository into the created workspace
git clone git@github.com:snt-arg/situational_graphs_reasoning.git -b develop
Important
If you have Nvidia GPU please install CUDA from this link. This code has only been tested with CUDA 11.8. If you dont have CUDA S-Graphs will use CPU only.
- Install required dependencies. Change $ROS_DISTRO to your ros2 version.
cd situational_graphs_reasoning && source /opt/ros/$ROS_DISTRO/setup.sh && pip3 install -r requirements.txt
Note
If you want to compile with debug traces (from backward_cpp) run:
colcon build --symlink-install --cmake-args -DCMAKE_BUILD_TYPE=RelWithDebInfo
Follow the S-Graphs instructions to use this package along with all other functionalities.
Or launch situational_graphs_reasoning.py.
File name | Description |
---|---|
config/same_room_training.json |
Describes the data preprocessing and the GNN hyperparameters for room generation. |
config/same_wall_training.json |
Describes the data preprocessing and the GNN hyperparameters for wall generation. |
Topic name | Message Type | Description |
---|---|---|
/s_graphs/all_map_planes |
s_graphs/PlanesData | Al the plains contained in the map. |
/s_graphs/map_planes |
s_graphs/PlanesData | Only the plains incorporated with the last keypoint. |
Topic name | Message Type | Description |
---|---|---|
/room_segmentation/room_data |
s_graphs/RoomsData | Contains all the necessary information about the rooms on a given floor. |
/room_segmentation/wall_data |
s_graphs/WallsData | Contains all the necessary information about the walls on a given floor. |