Hriday Bavle
·
Jose Luis Sanchez-Lopez
Muhammad Shaheer
·
Javier Civera
·
Holger Voos
Depricated: Please use this link: https://github.com/snt-arg/lidar_s_graphs/
Table of Contents
-
S-Graphs+: Real-time Localization and Mapping leveraging Hierarchical Representations
- Citation
@misc{bavle2022sgraphs+, title = {S-Graphs+: Real-time Localization and Mapping leveraging Hierarchical Representations}, author={Hriday Bavle and Jose Luis Sanchez-Lopez and Muhammad Shaheer and Javier Civera and Holger Voos}, year={2022}, publisher = {arXiv}, year = {2022}, primaryClass={cs.RO} }
- Citation
-
Situational Graphs for Robot Navigation in Structured Indoor Environments
- Citation
@ARTICLE{9826367, author={Bavle, Hriday and Sanchez-Lopez, Jose Luis and Shaheer, Muhammad and Civera, Javier and Voos, Holger}, journal={IEEE Robotics and Automation Letters}, title={Situational Graphs for Robot Navigation in Structured Indoor Environments}, year={2022}, volume={7}, number={4}, pages={9107-9114}, doi={10.1109/LRA.2022.3189785}}
- Citation
-
Clone this repository
-
Pull the docker image from DockerHub
docker pull sntarg/s_graphs:latest
- Create a container for the s_graphs image.
docker run -dit --net host --name s_graphs_container sntarg/s_graphs
This command also incorporates the flags d
, which makes the container run in the detached mode and net
, which gives the container the access of the host interfaces.
- Execute the container
docker exec -ti s_graphs_container bash
- Source the s_graphs workspace
source devel/setup.bash
Note: For each command below, please execute them in separate terminal windows!
Command to be executed inside the docker container!
roslaunch s_graphs s_graphs.launch env:=real use_free_space_graph:=true 2>/dev/null
cd PATH_TO_THIS_REPO && rviz -d rviz/s_graphs.rviz
rosbag PATH_TO_THIS_REPO/real_dataset --clock
Command to be executed inside the docker container!
roslaunch s_graphs s_graphs.launch env:=virtual compute_odom:=true use_free_space_graph:=true 2>/dev/null
cd PATH_TO_THIS_REPO && rviz -d rviz/s_graphs.rviz
rosbag play PATH_TO_THIS_REPO/virtual_dataset --clock
roscd s_graphs && rviz -d rviz/s_graphs.rviz
roslaunch s_graphs s_graphs.launch use_free_space_graph:=true compute_odom:=true 2>/dev/null
rosbag play PATH_TO_ROSBAG_DATASET --clock
s_graphs is composed of 3 main nodelets.
-
s_graphs_nodelet
-
Subscribed Topics
/odom
(nav_msgs/Odometry)- The odometry from the robot.
/filtered_points
(sensor_msgs/PointCloud2)- The data from the Lidar sensor.
-
Published Topics
-
/s_graphs/markers
(visualization_msgs/MarkerArray)- The markers represents the different s_graphs layers.
-
/s_graphs/odom2map
(geometry_msgs/TransformStamped)- Sets where the robot pose is within the map (world).
-
/s_graphs/odom_pose_corrected
(geometry_msgs/PoseStamped)- The pose of the robot once odom2map is applied.
-
/s_graphs/odom_path_corrected
(nav_msgs/Path)- The path of the robot once the odom2map is applied.
-
/s_graphs/map_points
(sensor_msgs/PointCloud2)- The points that represent the first layer of S-Graphs.
-
/s_graphs/map_planes
(s_graphs/PlanesData)- Current planes seen by the robot.
-
/s_graphs/all_map_planes
(s_graphs/PlanesData)- All the planes that were seen by the robot.
-
-
-
room_segmentation_nodelet
-
Subscribed Topics
/voxblox_skeletonizer/sparse_graph
(visualization_msgs/MarkerArray)- Represents the free space where the robot can go to. This is also knonw as free-space clusters.
/s_graphs/map_planes
(s_graphs/PlanesData)- Current planes seen by the robot.
-
Published Topics
/room_segmentation/room_data
(s_graphs/RoomsData)- Contains all the necessary information about the rooms in a floor.
-
-
floor_plane_nodelet
-
Subscribed Topics
/s_graphs/all_map_planes
(s_graphs/PlanesData)- All the planes that were seen by the robot.
-
Published Topics
/floor_plan/floor_data
(s_graphs/RoomData):- Constains all the necessary information about each floor.
-
-
/s_graphs/dump
(s_graphs/DumpGraph)- save all the internal data (point clouds, floor coeffs, odoms, and pose graph) to a directory.
-
/s_graphs/save_map
(s_graphs/SaveMap)- save the generated map as a PCD file.
All the configurable parameters are listed in launch/s_graphs.launch as ros params.
map2odom
: The transform published between the map frame and the odom frame after the corrections have been applied.
-
Define the transformation between your sensors (LIDAR, IMU, GPS) and base_link of your system using static_transform_publisher (see line #94, s_graphs.launch). All the sensor data will be transformed into the common
base_link
frame, and then fed to the SLAM algorithm. Note:base_link
frame in virtual dataset is set tobase_footprint
and in real dataset is set tobody
-
Remap the point cloud topic of PrefilteringNodelet. Like:
<node pkg="nodelet" type="nodelet" name="hdl_prefilter" args="load s_graphs/PrefilteringNodelet hdl_prefilter_nodelet_manager">
<remap from="/velodyne_points" to="/rslidar_points"/>
...
- If you have an odometry source convert it to base ENU frame, then remove the ScanMatchingNodelet from line #37 to #50 in
s_graphs.launch
and then remap odom topic in SGraphsNodelet like
<node pkg="nodelet" type="nodelet" name="s_graphs" args="load s_graphs/SGraphsNodelet s_graphs_nodelet_manager" output="screen">
<remap if="$(eval arg('env') == 'real')" from="/odom" to="/platform/odometry" />
...
Note: If you want to visualize the tfs correctly then your odom source must provide a tf from the odom
to base_link
frame.
This package is released under the BSD-2-Clause License.
Note that the cholmod solver in g2o is licensed under GPL. You may need to build g2o without cholmod dependency to avoid the GPL.
- Hriday Bavle
- Email: [email protected]
- Website: https://www.hriday.bavle.com/
- Muhammad Shaheer
- Email: [email protected]
- Pedro Soares
- Email: [email protected]
- Maria Zhekova
- Email: [email protected]