diff --git a/docs/how-to-guides/.pages b/docs/how-to-guides/.pages index 13331511649..2fa057c03a4 100644 --- a/docs/how-to-guides/.pages +++ b/docs/how-to-guides/.pages @@ -1,7 +1,7 @@ nav: - index.md - advanced-usage-of-colcon.md - - creating-maps-for-autoware.md + - creating-maps-for-autoware - determining-component-dependencies.md - integrating-autoware-with-your-vehicle.md - integrating-autoware-with-a-diff-drive-vehicle.md diff --git a/docs/how-to-guides/creating-maps-for-autoware/.pages b/docs/how-to-guides/creating-maps-for-autoware/.pages new file mode 100644 index 00000000000..f38a00ca8fc --- /dev/null +++ b/docs/how-to-guides/creating-maps-for-autoware/.pages @@ -0,0 +1,3 @@ +nav: + - index.md + - Open-source SLAM algorithms: open-source-slam diff --git a/docs/how-to-guides/creating-maps-for-autoware/index.md b/docs/how-to-guides/creating-maps-for-autoware/index.md new file mode 100644 index 00000000000..2dd313c55b7 --- /dev/null +++ b/docs/how-to-guides/creating-maps-for-autoware/index.md @@ -0,0 +1,80 @@ +# Creating maps for Autoware + +Autoware relies on high-definition point cloud maps and vector maps of the driving environment to perform various tasks such as localization, route planning, traffic light detection, and predicting the trajectories of pedestrians and other vehicles. + +The specifications for point cloud and vector maps required by Autoware are given below, along with examples of both open-source and proprietary software that you can use to create them. + +## Point cloud maps + +A 3D point cloud map is primarily used for LiDAR-based localization in Autoware. In order to determine the current position and orientation of the vehicle, a live scan captured from one or more LiDAR units is matched against a pre-generated 3D point cloud map. Therefore, an accurate point cloud map is crucial for good localization results. + +### Point cloud map specifications + +- It must cover the entire operational area of the vehicle and should include an additional buffer zone of at least 200 m in all directions. +- It must be saved using the [PCD (Point Cloud Data) file format](https://pointclouds.org/documentation/tutorials/pcd_file_format.html), but can be a single PCD file or divided into multiple PCD files. +- Each point in the map must contain X, Y, and Z coordinates. +- An intensity or RGB value for each point may be optionally included. +- Its file size must be smaller than 1 GB, [as per the current ROS message size limit](https://github.com/ros/ros_comm/issues/902). +- Its resolution should be at least 0.2 m to yield reliable localization results. +- It can be in either local or global coordinates, but must be in global coordinates (georeferenced) to use GNSS data for localization. + +!!! note + + Three global coordinate systems are supported by Autoware, including [Military Grid Reference System (MGRS)](https://en.wikipedia.org/wiki/Military_Grid_Reference_System), [Universal Transverse Mercator (UTM)](https://en.wikipedia.org/wiki/Universal_Transverse_Mercator_coordinate_system), and [Japan Rectangular Coordinate System](https://ja.wikipedia.org/wiki/%E5%B9%B3%E9%9D%A2%E7%9B%B4%E8%A7%92%E5%BA%A7%E6%A8%99%E7%B3%BB). + However, MGRS is a preferred coordinate system for georeferenced maps. + In a map with MGRS coordinate system, the X and Y coordinates of each point represent the point's location within the 100,000-meter square, while the Z coordinate represents the point's elevation. + +### Creating a point cloud map + +Traditionally, a Mobile Mapping System (MMS) is used in order to create highly accurate large-scale point cloud maps. However, since a MMS requires high-end sensors for precise positioning, its operational cost can be very expensive and may not be suitable for a relatively small driving environment. Alternatively, a Simultaneous Localization And Mapping (SLAM) algorithm can be used to create a point cloud map from recorded LiDAR scans. + +Commonly used open-source SLAM implementations are [lidarslam-ros2](https://github.com/rsasaki0109/lidarslam_ros2) (LiDAR, IMU\*) and [LIO-SAM](https://github.com/TixiaoShan/LIO-SAM/tree/ros2) (LiDAR, IMU, GNSS). The required sensor data for each algorithm is specified in the parentheses, where an asterisk (\*) indicates that such sensor data is optional. For supported LiDAR models, please check the Github repository of each algorithm. While these ROS 2-based SLAM implementations can be easily installed and used directly on the same machine that runs Autoware, it is important to note that they may not be as well-tested or as mature as ROS 1-based alternatives. + +The notable open-source SLAM implementations that are based on ROS 1 include [hdl-graph-slam](https://github.com/koide3/hdl_graph_slam) (LiDAR, IMU\*, GNSS\*), [LeGO-LOAM](https://github.com/facontidavide/LeGO-LOAM-BOR) (LiDAR, IMU\*), [LeGO-LOAM-BOR](https://github.com/RobustFieldAutonomyLab/LeGO-LOAM) (LiDAR), and [LIO-SAM](https://github.com/TixiaoShan/LIO-SAM) (LiDAR, IMU, GNSS). +Most of these algorithms already have a built-in loop-closure and pose graph optimization. However, if the built-in, automatic loop-closure fails or does not work correctly, you can use [Interactive SLAM](https://github.com/SMRT-AIST/interactive_slam) to adjust and optimize a pose graph manually. + +Since Autoware is based on ROS 2, it could be problematic if you want to install ROS 1-based SLAM implementations on the same machine. To avoid this problem, you can use [Docker](https://www.docker.com/) or simply install them on a different machine. Another problem is the ROSBAG version; these SLAM implementations require ROSBAG 1 instead of ROSBAG 2 used by Autoware. For the ROSBAG version problem, you may use this [stand-alone converter](https://gitlab.com/MapIV/rosbags) to convert a ROSBAG 2 file to a ROSBAG 1 file and vice versa. + +If you prefer proprietary software that is easy to use, you can try a fully automatic mapping tool from [MAP IV, Inc.](https://www.map4.jp/), [_MapIV Engine_](https://www.map4.jp/map4_engine_en). They currently provide a trial license for Autoware users free of charge. + +## Vector maps + +A vector map contains highly accurate information about a road network, lane geometry, and traffic lights. It is required for route planning, traffic light detection, and predicting the trajectories of other vehicles and pedestrians. + +### Vector map specifications + +- It must cover the entire operational area of the vehicle and should include an additional buffer zone of at least 200 m in all directions. +- It must be in [Lanelet2](https://github.com/fzi-forschungszentrum-informatik/Lanelet2) format, with [additional modifications required by Autoware](https://github.com/autowarefoundation/autoware_common/blob/main/tmp/lanelet2_extension/docs/lanelet2_format_extension.md). +- It must contain the shape and position information of lanes, traffic lights, stop lines, crosswalks, parking spaces, and parking lots. +- Each lanelet in the map must contain information regarding its right of way, speed limit, traffic direction, associated traffic lights, stop lines, and traffic signs. +- Except at the beginning or end of a road, each lanelet in the map must be correctly connected to its predecessor, successors, left neighbor, and right neighbor. + +### Creating a vector map + +The easiest way to create an Autoware-compatible vector map is to use [Vector Map Builder](https://tools.tier4.jp/feature/vector_map_builder_ll2/), a free web-based tool provided by [TIER IV, Inc.](https://www.tier4.jp/). +Vector Map Builder allows you to create lanes and add additional regulatory elements such as stop signs or traffic lights using a point cloud map as a reference. + +For open-source software options, [MapToolbox](https://github.com/autocore-ai/MapToolbox) is a plugin for [Unity](https://unity.com/) specifically designed to create Lanelet2 maps for Autoware. +Although [JOSM](https://josm.openstreetmap.de/) is another open-source tool that can be used to create Lanelet2 maps, be aware that a number of modifications must be done manually to make the map compatible with Autoware. This process can be tedious and time-consuming, so the use of JOSM is not recommended. + +## Autoware-compatible map providers + +If it is not possible to create HD maps yourself, you can use a mapping service from the following Autoware-compatible map providers instead: + +- [MAP IV, Inc.](https://www.map4.jp/) +- [AISAN TECHNOLOGY CO., LTD.](https://www.aisantec.co.jp/) +- [TomTom](https://www.tomtom.com/) + +The table below shows each company's mapping technology and the types of HD maps they support. + +| **Company** | **Mapping technology** | **Available maps** | +| --------------------------------------------------------- | ---------------------- | --------------------------- | +| [MAP IV, Inc.](https://www.map4.jp/) | SLAM | Point cloud and vector maps | +| [AISAN TECHNOLOGY CO., LTD.](https://www.aisantec.co.jp/) | MMS | Point cloud and vector maps | +| [TomTom](https://www.tomtom.com/) | MMS | Vector map\* | + +!!! note + + Maps provided by TomTom use their proprietary AutoStream format, not Lanelet2. + The open-source [AutoStreamForAutoware tool](https://github.com/tomtom-international/AutoStreamForAutoware) can be used to convert an AutoStream map to a Lanelet2 map. + However, the converter is still in its early stages and has some [known limitations](https://github.com/tomtom-international/AutoStreamForAutoware/blob/main/docs/known-issues.md). diff --git a/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/.pages b/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/.pages new file mode 100644 index 00000000000..0303bafdb65 --- /dev/null +++ b/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/.pages @@ -0,0 +1,13 @@ +nav: + - index.md + - FAST-LIO-LC: fast-lio-lc + - FAST_LIO_SLAM: fast-lio-slam + - FD-SLAM: fd-slam + - hdl_graph_slam: hdl-graph-slam + - IA_LIO_SAM: ia-lio-slam + - iscloam: iscloam + - LeGO-LOAM-BOR: lego-loam-bor + - LIO-SAM: lio-sam + - Optimized-SC-F-LOAM: optimized-sc-f-loam + - SC-A-LOAM: sc-a-loam + - SC-LeGO-LOAM: sc-lego-loam diff --git a/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/fast-lio-lc/.pages b/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/fast-lio-lc/.pages new file mode 100644 index 00000000000..35fd5a113be --- /dev/null +++ b/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/fast-lio-lc/.pages @@ -0,0 +1,2 @@ +nav: + - index.md diff --git a/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/fast-lio-lc/images/config_info.png b/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/fast-lio-lc/images/config_info.png new file mode 100644 index 00000000000..ff8858d7889 Binary files /dev/null and b/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/fast-lio-lc/images/config_info.png differ diff --git a/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/fast-lio-lc/images/extrinsic.png b/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/fast-lio-lc/images/extrinsic.png new file mode 100644 index 00000000000..e8d56e11374 Binary files /dev/null and b/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/fast-lio-lc/images/extrinsic.png differ diff --git a/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/fast-lio-lc/images/fast-lio-lc-output.png b/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/fast-lio-lc/images/fast-lio-lc-output.png new file mode 100644 index 00000000000..5099477fde6 Binary files /dev/null and b/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/fast-lio-lc/images/fast-lio-lc-output.png differ diff --git a/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/fast-lio-lc/images/fastlio_lc_example1.png b/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/fast-lio-lc/images/fastlio_lc_example1.png new file mode 100644 index 00000000000..e92c7ff4177 Binary files /dev/null and b/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/fast-lio-lc/images/fastlio_lc_example1.png differ diff --git a/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/fast-lio-lc/images/fastlio_lc_example2.png b/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/fast-lio-lc/images/fastlio_lc_example2.png new file mode 100644 index 00000000000..f1498c62577 Binary files /dev/null and b/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/fast-lio-lc/images/fastlio_lc_example2.png differ diff --git a/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/fast-lio-lc/images/launch.png b/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/fast-lio-lc/images/launch.png new file mode 100644 index 00000000000..c35c1259d8a Binary files /dev/null and b/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/fast-lio-lc/images/launch.png differ diff --git a/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/fast-lio-lc/index.md b/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/fast-lio-lc/index.md new file mode 100644 index 00000000000..ac65e18f6da --- /dev/null +++ b/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/fast-lio-lc/index.md @@ -0,0 +1,103 @@ +# FAST_LIO_LC + +## What is FAST_LIO_LC? + +- A computationally efficient and robust LiDAR-inertial odometry package with loop closure module and graph optimization. + +## Repository Information + +### Original Repository link + +[https://github.com/yanliang-wang/FAST_LIO_LC](https://github.com/yanliang-wang/FAST_LIO_LC) + +### Required Sensors + +- LIDAR [Velodyne, Ouster, Livox] +- IMU [6-AXIS, 9-AXIS] +- GPS [Optional] + +### ROS Compatibility + +- ROS 1 + +### Dependencies + +- Ubunutu 18.04 +- ROS Melodic +- PCL >= 1.8, Follow [PCL Installation](https://pointclouds.org/downloads/#linux). +- Eigen >= 3.3.4, Follow [Eigen Installation](http://eigen.tuxfamily.org/index.php?title=Main_Page). +- GTSAM >= 4.0.0, Follow [GTSAM Installation](https://gtsam.org/get_started). + +```bash + wget -O ~/Downloads/gtsam.zip https://github.com/borglab/gtsam/archive/4.0.0-alpha2.zip + cd ~/Downloads/ && unzip gtsam.zip -d ~/Downloads/ + cd ~/Downloads/gtsam-4.0.0-alpha2/ + mkdir build && cd build + cmake .. + sudo make install +``` + +## Build & Run + +### 1) Build + +```bash + mkdir -p ~/ws_fastlio_lc/src + cd ~/ws_fastlio_lc/src + git clone https://github.com/gisbi-kim/FAST_LIO_SLAM.git + git clone https://github.com/Livox-SDK/livox_ros_driver + cd .. + catkin_make +``` + +### 2) Set parameters + +- After downloading the repository, change topic and sensor settings on the config file (`workspace/src/FAST_LIO_LC/FAST_LIO/config/ouster64_mulran.yaml`) with the lidar topic name in your bag file. + + + +- For imu-lidar compatibility, extrinsic matrices from calibration must be changed. + +

Extrinsic Matrices

+ +- To enable auto-save, `pcd_save_enable` must be `1` from the launch file (`workspace/src/FAST_LIO_LC/FAST_LIO/launch/mapping_ouster64_mulran.launch`). + +### 3) Run + +- For Ouster OS1-64 + + # open new terminal: run FAST-LIO + roslaunch fast_lio mapping_ouster64.launch + + # open the other terminal tab: run SC-PGO + roslaunch aloam_velodyne fastlio_ouster64.launch + + # play bag file in the other terminal + rosbag play RECORDED_BAG.bag --clock + +

launch

+ +## Example Result + +

example_results1

+

example_results2

+ +## Other Examples + +

example_results

+ +## Example dataset + +Check original repository link for example dataset. + +## Contact + +- Maintainer: Yanliang Wang (`wyl410922@qq.com`) + +## Acknowledgements + +- Thanks for [FAST_LIO](https://github.com/hku-mars/FAST_LIO) authors. + + diff --git a/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/fast-lio-slam/.pages b/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/fast-lio-slam/.pages new file mode 100644 index 00000000000..35fd5a113be --- /dev/null +++ b/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/fast-lio-slam/.pages @@ -0,0 +1,2 @@ +nav: + - index.md diff --git a/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/fast-lio-slam/images/fast_lio_slam.png b/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/fast-lio-slam/images/fast_lio_slam.png new file mode 100644 index 00000000000..4819ebb1d74 Binary files /dev/null and b/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/fast-lio-slam/images/fast_lio_slam.png differ diff --git a/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/fast-lio-slam/images/kaist03.png b/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/fast-lio-slam/images/kaist03.png new file mode 100644 index 00000000000..1e121946b71 Binary files /dev/null and b/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/fast-lio-slam/images/kaist03.png differ diff --git a/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/fast-lio-slam/images/riverside02.png b/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/fast-lio-slam/images/riverside02.png new file mode 100644 index 00000000000..2b781cdf579 Binary files /dev/null and b/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/fast-lio-slam/images/riverside02.png differ diff --git a/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/fast-lio-slam/images/topic_name.png b/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/fast-lio-slam/images/topic_name.png new file mode 100644 index 00000000000..79f9c977631 Binary files /dev/null and b/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/fast-lio-slam/images/topic_name.png differ diff --git a/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/fast-lio-slam/images/video.png b/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/fast-lio-slam/images/video.png new file mode 100644 index 00000000000..9ed550d31b2 Binary files /dev/null and b/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/fast-lio-slam/images/video.png differ diff --git a/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/fast-lio-slam/index.md b/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/fast-lio-slam/index.md new file mode 100644 index 00000000000..82488cd4e34 --- /dev/null +++ b/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/fast-lio-slam/index.md @@ -0,0 +1,97 @@ +# FAST_LIO_SLAM + +## What is FAST_LIO_SLAM? + +- FAST_LIO_SLAM is the integration of FAST_LIO and SC-PGO which is scan context based loop detection and GTSAM based pose-graph optimization. + +## Repository Information + +### Original Repository link + +[https://github.com/gisbi-kim/FAST_LIO_SLAM](https://github.com/gisbi-kim/FAST_LIO_SLAM) + +### Required Sensors + +- LIDAR [Livox, Velodyne, Ouster] +- IMU [6-AXIS, 9-AXIS] +- GPS [OPTIONAL] + +### ROS Compatibility + +- ROS 1 + +### Dependencies + +- ROS +- PCL +- Gtsam + +```bash +wget -O ~/Downloads/gtsam.zip https://github.com/borglab/gtsam/archive/4.0.0-alpha2.zip +cd ~/Downloads/ && unzip gtsam.zip -d ~/Downloads/ +cd ~/Downloads/gtsam-4.0.0-alpha2/ +mkdir build && cd build +cmake .. +sudo make install +``` + +- PCL >= 1.8, Follow [PCL Installation](https://pointclouds.org/downloads/#linux). +- Eigen >= 3.3.4, Follow [Eigen Installation](http://eigen.tuxfamily.org/index.php?title=Main_Page). + +## Build & Run + +### 1) Build + +```bash + mkdir -p ~/catkin_fastlio_slam/src + cd ~/catkin_fastlio_slam/src + git clone https://github.com/gisbi-kim/FAST_LIO_SLAM.git + git clone https://github.com/Livox-SDK/livox_ros_driver + cd .. + catkin_make + source devel/setup.bash +``` + +### 2) Set parameters + +- Set imu and lidar topic on `Fast_LIO/config/ouster64.yaml` + +### 3) Run + +```bash + # terminal 1: run FAST-LIO2 + roslaunch fast_lio mapping_ouster64.launch + + # open the other terminal tab: run SC-PGO + cd ~/catkin_fastlio_slam + source devel/setup.bash + roslaunch aloam_velodyne fastlio_ouster64.launch + + # play bag file in the other terminal + rosbag play xxx.bag -- clock --pause +``` + +## Example Result + +

+ +

+ +## Other Examples + +- [Tutorial video 1](https://youtu.be/nu8j4yaBMnw) (using KAIST 03 sequence of [MulRan dataset](https://sites.google.com/view/mulran-pr/dataset)) + + - Example result captures +

+ - [download the KAIST03 pcd map](https://www.dropbox.com/s/w599ozdg7h6215q/KAIST03.pcd?dl=0) made by FAST-LIO-SLAM, 500MB + +- [Example Video 2](https://youtu.be/94mC05PesvQ) (Riverside 02 sequence of [MulRan dataset](https://sites.google.com/view/mulran-pr/dataset)) + - Example result captures +

+ - [download the Riverisde02 pcd map](https://www.dropbox.com/s/1aolth7ry4odxo4/Riverside02.pcd?dl=0) made by FAST-LIO-SLAM, 400MB + +## Acknowledgements + +- Thanks for [FAST_LIO](https://github.com/hku-mars/FAST_LIO) authors. +- You may have an interest in [this version of FAST-LIO + Loop closure](https://github.com/yanliang-wang/FAST_LIO_LC), implemented by [yanliang-wang](https://github.com/yanliang-wang) +- Maintainer: Giseop Kim (`paulgkim@kaist.ac.kr`) diff --git a/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/fd-slam/.pages b/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/fd-slam/.pages new file mode 100644 index 00000000000..35fd5a113be --- /dev/null +++ b/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/fd-slam/.pages @@ -0,0 +1,2 @@ +nav: + - index.md diff --git a/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/fd-slam/index.md b/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/fd-slam/index.md new file mode 100644 index 00000000000..4d3ac4df902 --- /dev/null +++ b/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/fd-slam/index.md @@ -0,0 +1,72 @@ +# FD-SLAM + +## What is FD-SLAM? + +- FD_SLAM is Feature&Distribution-based 3D LiDAR SLAM method based on Surface Representation Refinement. In this algorithm novel feature-based Lidar odometry used for fast scan-matching, and used a proposed UGICP method for keyframe matching. + +## Repository Information + +This is an open source ROS package for real-time 6DOF SLAM using a 3D LIDAR. + +It is based on hdl_graph_slam and the steps to run our system are same with hdl-graph-slam. + +### Original Repository link + +[https://github.com/SLAMWang/FD-SLAM](https://github.com/SLAMWang/FD-SLAM) + +### Required Sensors + +- LIDAR[VLP-16, HDL-32, HDL-64, OS1-64] +- GPS +- IMU [Optional] + +### ROS Compatibility + +- ROS 1 + +### Dependencies + +- [ROS](http://wiki.ros.org/noetic/Installation/Ubuntu) +- [PCL](https://pointclouds.org/downloads/#linux) +- [g2o](http://wiki.ros.org/g2o) +- [Suitesparse](https://github.com/ethz-asl/suitesparse) + +The following ROS packages are required: + +- geodesy +- nmea_msgs +- pcl_ros +- [ndt_omp](https://github.com/koide3/ndt_omp) +- [U_gicp](https://github.com/SLAMWang/UGICP) This is modified based on [fast_gicp](https://github.com/SMRT-AIST/fast_gicp) by us. We use UGICP for keyframe matching. + +## Build & Run + +### 1) Build + +```bash +cd ~/catkin_ws/src +git clone https://github.com/SLAMWang/FD-SLAM.git +cd .. +catkin_make +``` + +### 2) Services + +```bash +/hdl_graph_slam/dump (hdl_graph_slam/DumpGraph) + - save all the internal data (point clouds, floor coeffs, odoms, and pose graph) to a directory. + +/hdl_graph_slam/save_map (hdl_graph_slam/SaveMap) + - save the generated map as a PCD file. +``` + +### 3) Set parameters + +- All the configurable parameters are listed in _launch/\*\*\*\*.launch_ as ros params. + +### 4) Run + +```bash +source devel/setup.bash +roslaunch hdl_graph_slam hdl_graph_slam_400_ours.launch +``` diff --git a/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/hdl-graph-slam/.pages b/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/hdl-graph-slam/.pages new file mode 100644 index 00000000000..35fd5a113be --- /dev/null +++ b/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/hdl-graph-slam/.pages @@ -0,0 +1,2 @@ +nav: + - index.md diff --git a/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/hdl-graph-slam/images/example_1.png b/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/hdl-graph-slam/images/example_1.png new file mode 100644 index 00000000000..5b0f2956466 Binary files /dev/null and b/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/hdl-graph-slam/images/example_1.png differ diff --git a/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/hdl-graph-slam/images/example_2.png b/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/hdl-graph-slam/images/example_2.png new file mode 100644 index 00000000000..e94d37a2fc6 Binary files /dev/null and b/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/hdl-graph-slam/images/example_2.png differ diff --git a/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/hdl-graph-slam/images/hdl_400_graph.png b/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/hdl-graph-slam/images/hdl_400_graph.png new file mode 100644 index 00000000000..14f5840b5c7 Binary files /dev/null and b/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/hdl-graph-slam/images/hdl_400_graph.png differ diff --git a/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/hdl-graph-slam/images/hdl_400_points.png b/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/hdl-graph-slam/images/hdl_400_points.png new file mode 100644 index 00000000000..3d08a199169 Binary files /dev/null and b/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/hdl-graph-slam/images/hdl_400_points.png differ diff --git a/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/hdl-graph-slam/images/hdl_graph_slam.png b/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/hdl-graph-slam/images/hdl_graph_slam.png new file mode 100644 index 00000000000..04c226c9093 Binary files /dev/null and b/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/hdl-graph-slam/images/hdl_graph_slam.png differ diff --git a/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/hdl-graph-slam/images/lidar_topic.png b/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/hdl-graph-slam/images/lidar_topic.png new file mode 100644 index 00000000000..1e462784f26 Binary files /dev/null and b/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/hdl-graph-slam/images/lidar_topic.png differ diff --git a/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/hdl-graph-slam/images/reg_params.png b/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/hdl-graph-slam/images/reg_params.png new file mode 100644 index 00000000000..c7be8176f6f Binary files /dev/null and b/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/hdl-graph-slam/images/reg_params.png differ diff --git a/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/hdl-graph-slam/index.md b/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/hdl-graph-slam/index.md new file mode 100644 index 00000000000..58715ac41e2 --- /dev/null +++ b/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/hdl-graph-slam/index.md @@ -0,0 +1,133 @@ +# hdl_graph_slam + +## What is hdl_graph_slam? + +- An open source ROS package for real-time 6DOF SLAM using a 3D LIDAR. It is based on 3D Graph SLAM with NDT scan matching-based odometry estimation and loop detection. It also supports several graph constraints, such as GPS, IMU acceleration (gravity vector), IMU orientation (magnetic sensor), and floor plane (detected in a point cloud). + +## Repository Information + +### Original Repository link + +[https://github.com/koide3/hdl_graph_slam](https://github.com/koide3/hdl_graph_slam) + +### Required Sensors + +- LIDAR [Velodyne, Ouster, RoboSense] +- IMU [6-AXIS, 9-AXIS] [OPTIONAL] +- GPS [OPTIONAL] + +### ROS Compatibility + +- ROS 1 + +### Dependencies + +- ROS +- PCL +- g2o +- OpenMP + +The following ROS packages are required: + +- geodesy +- nmea_msgs +- pcl_ros +- [ndt_omp](https://github.com/koide3/ndt_omp) +- [fast_gicp](https://github.com/SMRT-AIST/fast_gicp) + +## Build & Run + +### 1) Build + +```bash +# for melodic +sudo apt-get install ros-melodic-geodesy ros-melodic-pcl-ros ros-melodic-nmea-msgs ros-melodic-libg2o +cd catkin_ws/src +git clone https://github.com/koide3/ndt_omp.git -b melodic +git clone https://github.com/SMRT-AIST/fast_gicp.git --recursive +git clone https://github.com/koide3/hdl_graph_slam + +cd .. && catkin_make -DCMAKE_BUILD_TYPE=Release + +# for noetic +sudo apt-get install ros-noetic-geodesy ros-noetic-pcl-ros ros-noetic-nmea-msgs ros-noetic-libg2o + +cd catkin_ws/src +git clone https://github.com/koide3/ndt_omp.git +git clone https://github.com/SMRT-AIST/fast_gicp.git --recursive +git clone https://github.com/koide3/hdl_graph_slam + +cd .. && catkin_make -DCMAKE_BUILD_TYPE=Release +``` + +### 2) Set parameter + +- Set lidar topic on `launch/hdl_graph_slam_400.launch` + + + +- Set registration settings on `launch/hdl_graph_slam_400.launch` + + + +### 3) Run + +```bash +rosparam set use_sim_time true +roslaunch hdl_graph_slam hdl_graph_slam_400.launch +``` + +```bash +roscd hdl_graph_slam/rviz +rviz -d hdl_graph_slam.rviz +``` + +```bash +rosbag play --clock hdl_400.bag +``` + +Save the generated map by: + +```bash +rosservice call /hdl_graph_slam/save_map "resolution: 0.05 +destination: '/full_path_directory/map.pcd'" +``` + +## Example Result + + + +## Example2 (Outdoor) + +Bag file (recorded in an outdoor environment): + +- [hdl_400.bag.tar.gz](http://www.aisl.cs.tut.ac.jp/databases/hdl_graph_slam/hdl_400.bag.tar.gz) (raw data, about 900MB) + +```bash +rosparam set use_sim_time true +roslaunch hdl_graph_slam hdl_graph_slam_400.launch +``` + +```bash +roscd hdl_graph_slam/rviz +rviz -d hdl_graph_slam.rviz +``` + +```bash +rosbag play --clock dataset.bag +``` + + + + + +## Papers + +Kenji Koide, Jun Miura, and Emanuele Menegatti, A Portable 3D LIDAR-based System for Long-term and Wide-area People Behavior Measurement, Advanced Robotic Systems, 2019 [[link]](https://www.researchgate.net/publication/331283709_A_Portable_3D_LIDAR-based_System_for_Long-term_and_Wide-area_People_Behavior_Measurement). + +## Contact + +Kenji Koide, k.koide@aist.go.jp, [https://staff.aist.go.jp/k.koide](https://staff.aist.go.jp/k.koide) + +[[Active Intelligent Systems Laboratory, Toyohashi University of Technology, Japan]](http://www.aisl.cs.tut.ac.jp) +[[Mobile Robotics Research Team, National Institute of Advanced Industrial Science and Technology (AIST), Japan]](https://unit.aist.go.jp/rirc/en/team/smart_mobility.html) diff --git a/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/ia-lio-slam/.pages b/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/ia-lio-slam/.pages new file mode 100644 index 00000000000..35fd5a113be --- /dev/null +++ b/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/ia-lio-slam/.pages @@ -0,0 +1,2 @@ +nav: + - index.md diff --git a/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/ia-lio-slam/images/Sejong_tunnel_data.png b/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/ia-lio-slam/images/Sejong_tunnel_data.png new file mode 100644 index 00000000000..b46e049cb34 Binary files /dev/null and b/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/ia-lio-slam/images/Sejong_tunnel_data.png differ diff --git a/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/ia-lio-slam/images/Sejong_tunnel_data_lio_ai_lio.png b/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/ia-lio-slam/images/Sejong_tunnel_data_lio_ai_lio.png new file mode 100644 index 00000000000..070fdf0187b Binary files /dev/null and b/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/ia-lio-slam/images/Sejong_tunnel_data_lio_ai_lio.png differ diff --git a/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/ia-lio-slam/images/Seq2.png b/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/ia-lio-slam/images/Seq2.png new file mode 100644 index 00000000000..de52927fb37 Binary files /dev/null and b/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/ia-lio-slam/images/Seq2.png differ diff --git a/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/ia-lio-slam/images/config_info.png b/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/ia-lio-slam/images/config_info.png new file mode 100644 index 00000000000..eccb3881dec Binary files /dev/null and b/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/ia-lio-slam/images/config_info.png differ diff --git a/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/ia-lio-slam/images/extrinsic.png b/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/ia-lio-slam/images/extrinsic.png new file mode 100644 index 00000000000..e8d56e11374 Binary files /dev/null and b/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/ia-lio-slam/images/extrinsic.png differ diff --git a/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/ia-lio-slam/images/fastlio_lc_example1.gif b/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/ia-lio-slam/images/fastlio_lc_example1.gif new file mode 100644 index 00000000000..b5adc4fb721 Binary files /dev/null and b/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/ia-lio-slam/images/fastlio_lc_example1.gif differ diff --git a/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/ia-lio-slam/images/fastlio_lc_example2.gif b/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/ia-lio-slam/images/fastlio_lc_example2.gif new file mode 100644 index 00000000000..84fb317629c Binary files /dev/null and b/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/ia-lio-slam/images/fastlio_lc_example2.gif differ diff --git a/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/ia-lio-slam/index.md b/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/ia-lio-slam/index.md new file mode 100644 index 00000000000..6a7b5ea2799 --- /dev/null +++ b/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/ia-lio-slam/index.md @@ -0,0 +1,120 @@ +# IA-LIO-SAM + +## What is IA-LIO-SAM? + +- IA_LIO_SLAM is created for data acquisition in unstructured environment and it is a framework for Intensity and Ambient Enhanced Lidar Inertial Odometry via Smoothing and Mapping that achieves highly accurate robot trajectories and mapping. + +## Repository Information + +### Original Repository link + +[https://github.com/minwoo0611/IA_LIO_SAM](https://github.com/minwoo0611/IA_LIO_SAM) + +### Required Sensors + +- LIDAR [Velodyne, Ouster] +- IMU [9-AXIS] +- GNSS + +### ROS Compatibility + +- ROS 1 + +### Dependencies + +- [ROS](http://wiki.ros.org/ROS/Installation) (tested with Kinetic and Melodic) + + - `for ROS melodic:` + + ```bash + sudo apt-get install -y ros-melodic-navigation + sudo apt-get install -y ros-melodic-robot-localization + sudo apt-get install -y ros-melodic-robot-state-publisher + ``` + + - `for ROS kinetic:` + + ```bash + sudo apt-get install -y ros-kinetic-navigation + sudo apt-get install -y ros-kinetic-robot-localization + sudo apt-get install -y ros-kinetic-robot-state-publisher + ``` + +- [GTSAM](https://github.com/borglab/gtsam/releases) (Georgia Tech Smoothing and Mapping library) + + ```bash + wget -O ~/Downloads/gtsam.zip https://github.com/borglab/gtsam/archive/4.0.2.zip + cd ~/Downloads/ && unzip gtsam.zip -d ~/Downloads/ + cd ~/Downloads/gtsam-4.0.2/ + mkdir build && cd build + cmake -DGTSAM_BUILD_WITH_MARCH_NATIVE=OFF .. + sudo make install -j8 + ``` + +## Build & Run + +### 1) Build + +```bash + mkdir -p ~/catkin_ia_lio/src + cd ~/catkin_ia_lio/src + git clone https://github.com/minwoo0611/IA_LIO_SAM + cd .. + catkin_make +``` + +### 2) Set parameters + +- After downloading the repository, change topic and sensor settings on the config file (`workspace/src/IA_LIO_SAM/config/params.yaml`) + +- For imu-lidar compatibility, extrinsic matrices from calibration must be changed. + +

Extrinsic Matrices

+ +- To enable autosave, `savePCD` must be `true` on the `params.yaml` file (`workspace/src/IA_LIO_SAM/config/params.yaml`). + +### 3) Run + + # open new terminal: run IA_LIO + source devel/setup.bash + roslaunch lio_sam mapping_ouster64.launch + + # play bag file in the other terminal + rosbag play RECORDED_BAG.bag --clock + +## Sample dataset images + +

+ drawing + drawing + drawing +

+ +## Example dataset + +Check original repo link for example dataset. + +## Contact + +- Maintainer: Kevin Jung (`Github: minwoo0611`) + +## Paper + +Thank you for citing IA-LIO-SAM(./config/doc/KRS-2021-17.pdf) if you use any of this code. + +Part of the code is adapted from [LIO-SAM (IROS-2020)](https://github.com/TixiaoShan/LIO-SAM). + +```bash +@inproceedings{legoloam2018shan, + title={LeGO-LOAM: Lightweight and Ground-Optimized Lidar Odometry and Mapping on Variable Terrain}, + author={Shan, Tixiao and Englot, Brendan}, + booktitle={IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS)}, + pages={4758-4765}, + year={2018}, + organization={IEEE} +} +``` + +## Acknowledgements + +- IA-LIO-SAM is based on LIO-SAM (T. Shan, B. Englot, D. Meyers, W. Wang, C. Ratti, and D. Rus. LIO-SAM: Tightly-coupled Lidar Inertial Odometry via Smoothing and Mapping). diff --git a/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/index.md b/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/index.md new file mode 100644 index 00000000000..7f3f3237828 --- /dev/null +++ b/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/index.md @@ -0,0 +1,20 @@ +# Conclusions + +As a conclusion, lidar odometry drifts accumulatively as time goes by and there is solutions to solve that problem such as graph optimization, loop closure and using gps sensor to decrease accumulative drift error. Because of that, a SLAM algorithm should have loop closure feature, graph optimization and should use gps sensor. Additionally, some of the algorithms are using IMU sensor to add another factor to graph for decreasing drift error. While some of the algorithms requires 9-axis IMU sensor strictly, some of them requires only 6-axis IMU sensor or not even using the IMU sensor. Before choosing an algorithm to create maps for Autoware please consider these factors depends on your sensor setup or expected quality of generated map. + +
+
+ +| Package Name | Explanation | Repository Link | Loop Closure | Sensors | ROS Version | Dependencies | +| ------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------: | :----------: | :---------------------------------------: | :----------: | :------------------------------------------------------------: | +| FAST-LIO-LC | A computationally efficient and robust LiDAR-inertial odometry package with loop closure module and graph optimization | [https://github.com/yanliang-wang/FAST_LIO_LC](https://github.com/yanliang-wang/FAST_LIO_LC) | ✓ | Lidar
IMU
GPS [Optional] | ROS1 | ROS Melodic
PCL >= 1.8
Eigen >= 3.3.4
GTSAM >= 4.0.0 | +| FAST_LIO_SLAM | FAST_LIO_SLAM is the integration of FAST_LIO and SC-PGO which is scan context based loop detection and GTSAM based pose-graph optimization | [https://github.com/gisbi-kim/FAST_LIO_SLAM](https://github.com/gisbi-kim/FAST_LIO_SLAM) | ✓ | Lidar
IMU
GPS [Optional] | ROS1 | PCL >= 1.8
Eigen >= 3.3.4 | +| FD-SLAM | FD_SLAM is Feature&Distribution-based 3D LiDAR SLAM method based on Surface Representation Refinement. In this algorithm novel feature-based Lidar odometry used for fast scan-matching, and used a proposed UGICP method for keyframe matching | [https://github.com/SLAMWang/FD-SLAM](https://github.com/SLAMWang/FD-SLAM) | ✓ | Lidar
IMU [Optional]
GPS | ROS1 | PCL
g2o
Suitesparse | +| hdl_graph_slam | An open source ROS package for real-time 6DOF SLAM using a 3D LIDAR. It is based on 3D Graph SLAM with NDT scan matching-based odometry estimation and loop detection. It also supports several graph constraints, such as GPS, IMU acceleration (gravity vector), IMU orientation (magnetic sensor), and floor plane (detected in a point cloud) | [https://github.com/koide3/hdl_graph_slam](https://github.com/koide3/hdl_graph_slam) | ✓ | Lidar
IMU [Optional]
GPS [Optional] | ROS1 | PCL
g2o
OpenMP | +| IA-LIO-SAM | IA_LIO_SLAM is created for data acquisition in unstructured environment and it is a framework for Intensity and Ambient Enhanced Lidar Inertial Odometry via Smoothing and Mapping that achieves highly accurate robot trajectories and mapping | [https://github.com/minwoo0611/IA_LIO_SAM](https://github.com/minwoo0611/IA_LIO_SAM) | ✓ | Lidar
IMU
GPS | ROS1 | GTSAM | +| ISCLOAM | ISCLOAM presents a robust loop closure detection approach by integrating both geometry and intensity information | [https://github.com/wh200720041/iscloam](https://github.com/wh200720041/iscloam) | ✓ | Lidar | ROS1 | Ubuntu 18.04
ROS Melodic
Ceres
PCL
GTSAM
OpenCV | +| LeGO-LOAM-BOR | LeGO-LOAM-BOR is improved version of the LeGO-LOAM by improving quality of the code, making it more readable and consistent. Also, performance is improved by converting processes to multi-threaded approach | [https://github.com/facontidavide/LeGO-LOAM-BOR](https://github.com/facontidavide/LeGO-LOAM-BOR) | ✓ | Lidar
IMU | ROS1 | ROS Melodic
PCL
GTSAM | +| LIO_SAM | A framework that achieves highly accurate, real-time mobile robot trajectory estimation and map-building. It formulates lidar-inertial odometry atop a factor graph, allowing a multitude of relative and absolute measurements, including loop closures, to be incorporated from different sources as factors into the system | [https://github.com/TixiaoShan/LIO-SAM](https://github.com/TixiaoShan/LIO-SAM) | ✓ | Lidar
IMU
GPS [Optional] | ROS1
ROS2 | PCL
GTSAM | +| Optimized-SC-F-LOAM | An improved version of F-LOAM and uses an adaptive threshold to further judge the loop closure detection results and reducing false loop closure detections. Also it uses feature point-based matching to calculate the constraints between a pair of loop closure frame point clouds and decreases time consumption of constructing loop frame constraints | [https://github.com/SlamCabbage/Optimized-SC-F-LOAM](https://github.com/SlamCabbage/Optimized-SC-F-LOAM) | ✓ | Lidar | ROS1 | PCL
GTSAM
Ceres | +| SC-A-LOAM | A real-time LiDAR SLAM package that integrates A-LOAM and ScanContext. | [https://github.com/gisbi-kim/SC-A-LOAM](https://github.com/gisbi-kim/SC-A-LOAM) | ✓ | Lidar | ROS1 | GTSAM >= 4.0 | +| SC-LeGO-LOAM | SC-LeGO-LOAM integrated LeGO-LOAM for lidar odometry and 2 different loop closure methods: ScanContext and Radius search based loop closure. While ScanContext is correcting large drifts, radius search based method is good for fine-stitching | [https://github.com/irapkaist/SC-LeGO-LOAM](https://github.com/irapkaist/SC-LeGO-LOAM) | ✓ | Lidar
IMU | ROS1 | PCL
GTSAM | diff --git a/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/iscloam/.pages b/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/iscloam/.pages new file mode 100644 index 00000000000..35fd5a113be --- /dev/null +++ b/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/iscloam/.pages @@ -0,0 +1,2 @@ +nav: + - index.md diff --git a/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/iscloam/images/00.png b/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/iscloam/images/00.png new file mode 100644 index 00000000000..e7906d3538a Binary files /dev/null and b/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/iscloam/images/00.png differ diff --git a/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/iscloam/images/05.png b/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/iscloam/images/05.png new file mode 100644 index 00000000000..490fe9bf471 Binary files /dev/null and b/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/iscloam/images/05.png differ diff --git a/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/iscloam/images/bag_name.png b/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/iscloam/images/bag_name.png new file mode 100644 index 00000000000..a9af9ec13db Binary files /dev/null and b/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/iscloam/images/bag_name.png differ diff --git a/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/iscloam/index.md b/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/iscloam/index.md new file mode 100644 index 00000000000..6f79c40d248 --- /dev/null +++ b/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/iscloam/index.md @@ -0,0 +1,105 @@ +# ISCLOAM + +## What is ISCLOAM? + +- ISCLOAM presents a robust loop closure detection approach by integrating both geometry and intensity information. + +## Repository Information + +### Original Repository link + +[https://github.com/wh200720041/iscloam](https://github.com/wh200720041/iscloam) + +### Required Sensors + +- LIDAR [Velodyne] + +### ROS Compatibility + +- ROS 1 + +### Dependencies + +- Ubuntu 64-bit 18.04 +- ROS Melodic [ROS Installation](http://wiki.ros.org/ROS/Installation) +- Ceres Solver [Ceres Installation](http://ceres-solver.org/installation.html) +- PCL [PCL Installation](https://pointclouds.org/downloads/) +- Gtsam [GTSAM Installation](https://gtsam.org/get_started/) +- OpenCV [OPENCV Installation](https://opencv.org/releases/) +- Trajectory visualization + +For visualization purpose, this package uses hector trajectory sever, you may install the package by + +```bash +sudo apt-get install ros-melodic-hector-trajectory-server +``` + +## Build and Run + +### 1. Clone repository + +```bash +cd ~/catkin_ws/src +git clone https://github.com/wh200720041/iscloam.git +cd .. +catkin_make -j1 +source ~/catkin_ws/devel/setup.bash +``` + +### 2. Set Parameter + +Change the bag location and sensor parameters on launch files. + +

+ +### 3. Launch + +```bash +roslaunch iscloam iscloam.launch +``` + +if you would like to generate the map of environment at the same time, you can run + +```bash +roslaunch iscloam iscloam_mapping.launch +``` + +Note that the global map can be very large, so it may takes a while to perform global optimization, some lag is expected between trajectory and map since they are running in separate thread. More CPU usage will happen when loop closure is identified. + +## Example Result + +Watch demo video at [Video Link](https://youtu.be/Kfi6CFK4Ke4) + +### Ground Truth Comparison + +Green: ISCLOAM Red: Ground Truth + +

+ + +

+ + KITTI sequence 00 KITTI sequence 05 + +## Citation + +If you use this work for your research, you may want to cite the paper below, your citation will be appreciated + +```bash +@inproceedings{wang2020intensity, + author={H. {Wang} and C. {Wang} and L. {Xie}}, + booktitle={2020 IEEE International Conference on Robotics and Automation (ICRA)}, + title={Intensity Scan Context: Coding Intensity and Geometry Relations for Loop Closure Detection}, + year={2020}, + volume={}, + number={}, + pages={2095-2101}, + doi={10.1109/ICRA40945.2020.9196764} +} +``` + +## Acknowledgements + +Thanks for [A-LOAM](https://github.com/HKUST-Aerial-Robotics/A-LOAM) and LOAM(J. Zhang and S. Singh. LOAM: Lidar Odometry and Mapping in Real-time) and [LOAM_NOTED](https://github.com/cuitaixiang/LOAM_NOTED). + +**Author:** [Wang Han](http://wanghan.pro), Nanyang Technological University, Singapore diff --git a/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/lego-loam-bor/.pages b/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/lego-loam-bor/.pages new file mode 100644 index 00000000000..35fd5a113be --- /dev/null +++ b/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/lego-loam-bor/.pages @@ -0,0 +1,2 @@ +nav: + - index.md diff --git a/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/lego-loam-bor/images/block.png b/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/lego-loam-bor/images/block.png new file mode 100644 index 00000000000..ebefa8aec24 Binary files /dev/null and b/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/lego-loam-bor/images/block.png differ diff --git a/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/lego-loam-bor/images/dataset-demo.png b/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/lego-loam-bor/images/dataset-demo.png new file mode 100644 index 00000000000..9355997d8ab Binary files /dev/null and b/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/lego-loam-bor/images/dataset-demo.png differ diff --git a/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/lego-loam-bor/images/demo.png b/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/lego-loam-bor/images/demo.png new file mode 100644 index 00000000000..542030c85eb Binary files /dev/null and b/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/lego-loam-bor/images/demo.png differ diff --git a/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/lego-loam-bor/images/google-earth.png b/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/lego-loam-bor/images/google-earth.png new file mode 100644 index 00000000000..b0e4b66cd43 Binary files /dev/null and b/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/lego-loam-bor/images/google-earth.png differ diff --git a/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/lego-loam-bor/images/jackal-label.jpg b/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/lego-loam-bor/images/jackal-label.jpg new file mode 100644 index 00000000000..d020b1b15a0 Binary files /dev/null and b/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/lego-loam-bor/images/jackal-label.jpg differ diff --git a/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/lego-loam-bor/images/odometry.jpg b/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/lego-loam-bor/images/odometry.jpg new file mode 100644 index 00000000000..41dd23702fa Binary files /dev/null and b/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/lego-loam-bor/images/odometry.jpg differ diff --git a/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/lego-loam-bor/images/seg-total.jpg b/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/lego-loam-bor/images/seg-total.jpg new file mode 100644 index 00000000000..eb2bb170331 Binary files /dev/null and b/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/lego-loam-bor/images/seg-total.jpg differ diff --git a/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/lego-loam-bor/index.md b/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/lego-loam-bor/index.md new file mode 100644 index 00000000000..e0d51360ab1 --- /dev/null +++ b/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/lego-loam-bor/index.md @@ -0,0 +1,80 @@ +# LeGO-LOAM-BOR + +## What is LeGO-LOAM-BOR? + +- LeGO-LOAM-BOR is improved version of the LeGO-LOAM by improving quality of the code, making it more readable and consistent. Also, performance is improved by converting processes to multi-threaded approach. + +## Repository Information + +### Original Repository link + +[https://github.com/facontidavide/LeGO-LOAM-BOR](https://github.com/facontidavide/LeGO-LOAM-BOR) + +### Required Sensors + +- LIDAR [VLP-16] +- IMU [9-AXIS] + +### ROS Compatibility + +- ROS 1 + +### Dependencies + +- ROS Melodic [ROS Installation](http://wiki.ros.org/ROS/Installation) +- PCL [PCL Installation](https://pointclouds.org/downloads/) +- Gtsam [GTSAM Installation](https://gtsam.org/get_started/) + +```bash +wget -O ~/Downloads/gtsam.zip https://github.com/borglab/gtsam/archive/4.0.0-alpha2.zip +cd ~/Downloads/ && unzip gtsam.zip -d ~/Downloads/ +cd ~/Downloads/gtsam-4.0.0-alpha2/ +mkdir build && cd build +cmake .. +sudo make install +``` + +## Build & Run + +### 1) Build + +```bash +cd ~/catkin_ws/src +git clone https://github.com/facontidavide/LeGO-LOAM-BOR.git +cd .. +catkin_make +``` + +### 2) Set parameters + +- Set parameters on `LeGo-LOAM/loam_config.yaml` + +### 3) Run + +```bash +source devel/setup.bash +roslaunch lego_loam_bor run.launch rosbag:=/path/to/your/rosbag lidar_topic:=/velodyne_points +``` + +## Example Result + +

+ +

+ +

+ +## Cite _LeGO-LOAM_ + +Thank you for citing our _LeGO-LOAM_ paper if you use any of this code: + +```bash +@inproceedings{legoloam2018, + title={LeGO-LOAM: Lightweight and Ground-Optimized Lidar Odometry and Mapping on Variable Terrain}, + author={Tixiao Shan and Brendan Englot}, + booktitle={IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS)}, + pages={4758-4765}, + year={2018}, + organization={IEEE} +} +``` diff --git a/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/lio-sam/.pages b/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/lio-sam/.pages new file mode 100644 index 00000000000..35fd5a113be --- /dev/null +++ b/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/lio-sam/.pages @@ -0,0 +1,2 @@ +nav: + - index.md diff --git a/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/lio-sam/images/pcd-map.png b/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/lio-sam/images/pcd-map.png new file mode 100644 index 00000000000..d134d1dbaa6 Binary files /dev/null and b/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/lio-sam/images/pcd-map.png differ diff --git a/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/lio-sam/images/system.png b/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/lio-sam/images/system.png new file mode 100644 index 00000000000..43d1d997862 Binary files /dev/null and b/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/lio-sam/images/system.png differ diff --git a/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/lio-sam/index.md b/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/lio-sam/index.md new file mode 100644 index 00000000000..535875fc0ce --- /dev/null +++ b/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/lio-sam/index.md @@ -0,0 +1,104 @@ +# LIO_SAM + +## What is LIO_SAM? + +- A framework that achieves highly accurate, real-time mobile robot trajectory estimation and map-building. It formulates lidar-inertial odometry atop a factor graph, allowing a multitude of relative and absolute measurements, including loop closures, to be incorporated from different sources as factors into the system + +## Repository Information + +### Original Repository link + +[https://github.com/TixiaoShan/LIO-SAM](https://github.com/TixiaoShan/LIO-SAM) + +### Required Sensors + +- LIDAR [Livox, Velodyne, Ouster] +- IMU [9-AXIS] +- GPS [OPTIONAL] + +

drawing

+ +### ROS Compatibility + +- ROS 1 +- [For ROS 2](https://github.com/TixiaoShan/LIO-SAM/tree/ros2) + +### Dependencies + +- ROS +- PCL +- [Gtsam](https://gtsam.org/get_started/) (Georgia Tech Smoothing and Mapping library) + + ```bash + sudo add-apt-repository ppa:borglab/gtsam-release-4.0 + sudo apt install libgtsam-dev libgtsam-unstable-dev + ``` + +```bash + sudo apt-get install -y ros-melodic-navigation + sudo apt-get install -y ros-melodic-robot-localization + sudo apt-get install -y ros-melodic-robot-state-publisher +``` + +## Build & Run + +### 1) Build + +```bash + mkdir -p ~/catkin_lio_sam/src + cd ~/catkin_lio_sam/src + git clone https://github.com/TixiaoShan/LIO-SAM.git + cd .. + catkin_make + source devel/setup.bash +``` + +### 2) Set parameters + +- Set topics and sensor settings on `lio_sam/config/params.yaml` + +### 3) Run + +```bash + # Run the Launch File + roslaunch lio_sam run.launch + + # Play bag file in the other terminal + rosbag play xxx.bag --clock +``` + +## Example Result + +

drawing

+ +## Paper + +Thank you for citing LIO-SAM (IROS-2020) if you use any of this code. + +```bash +@inproceedings{liosam2020shan, + title={LIO-SAM: Tightly-coupled Lidar Inertial Odometry via Smoothing and Mapping}, + author={Shan, Tixiao and Englot, Brendan and Meyers, Drew and Wang, Wei and Ratti, Carlo and Rus Daniela}, + booktitle={IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS)}, + pages={5135-5142}, + year={2020}, + organization={IEEE} +} +``` + +Part of the code is adapted from [LeGO-LOAM](https://github.com/RobustFieldAutonomyLab/LeGO-LOAM). + +```bash +@inproceedings{legoloam2018shan, + title={LeGO-LOAM: Lightweight and Ground-Optimized Lidar Odometry and Mapping on Variable Terrain}, + author={Shan, Tixiao and Englot, Brendan}, + booktitle={IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS)}, + pages={4758-4765}, + year={2018}, + organization={IEEE} +} +``` + +## Acknowledgements + +- LIO-SAM is based on LOAM (J. Zhang and S. Singh. LOAM: Lidar Odometry and Mapping in Real-time). diff --git a/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/optimized-sc-f-loam/.pages b/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/optimized-sc-f-loam/.pages new file mode 100644 index 00000000000..35fd5a113be --- /dev/null +++ b/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/optimized-sc-f-loam/.pages @@ -0,0 +1,2 @@ +nav: + - index.md diff --git a/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/optimized-sc-f-loam/index.md b/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/optimized-sc-f-loam/index.md new file mode 100644 index 00000000000..b1e588a418c --- /dev/null +++ b/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/optimized-sc-f-loam/index.md @@ -0,0 +1,112 @@ +# Optimized-SC-F-LOAM + +## What is Optimized-SC-F-LOAM? + +- An improved version of F-LOAM and uses an adaptive threshold to further judge the loop closure detection results and reducing false loop closure detections. Also it uses feature point-based matching to calculate the constraints between a pair of loop closure frame point clouds and decreases time consumption of constructing loop frame constraints. + +## Repository Information + +### Original Repository link + +[https://github.com/SlamCabbage/Optimized-SC-F-LOAM](https://github.com/SlamCabbage/Optimized-SC-F-LOAM) + +### Required Sensors + +- LIDAR [VLP-16, HDL-32, HDL-64] + +### ROS Compatibility + +- ROS 1 + +### Dependencies + +- [ROS](http://wiki.ros.org/noetic/Installation/Ubuntu) +- [PCL](https://pointclouds.org/downloads/#linux) +- [Gtsam](https://gtsam.org/get_started/) +- [Ceres Solver](http://www.ceres-solver.org/installation.html) +- For visualization purpose, this package uses hector trajectory sever, you may install the package by + +```bash +sudo apt-get install ros-noetic-hector-trajectory-server +``` + +## Build & Run + +### 1) Build + +```bash +cd ~/catkin_ws/src +git clone https://github.com/SlamCabbage/Optimized-SC-F-LOAM.git +cd .. +catkin_make +``` + +### 2) Create message file + +In this folder, Ground Truth information, optimized pose information, F-LOAM pose information and time information are stored + +```bash +mkdir -p ~/message/Scans + +Change line 383 in the laserLoopOptimizationNode.cpp to your own "message" folder path +``` + +(Do not forget to rebuild your package) + +### 3) Set parameters + +- Set LIDAR topic and LIDAR properties on 'sc_f_loam_mapping.launch' + +### 4) Run + +```bash +source devel/setup.bash +roslaunch optimized_sc_f_loam optimized_sc_f_loam_mapping.launch +``` + +## Example Result + +![image](https://user-images.githubusercontent.com/95751923/155124889-934ea649-3b03-4e8d-84af-608753f34c93.png) + +### Results on KITTI Sequence 00 and Sequence 05 + +![image](https://user-images.githubusercontent.com/95751923/155125294-980e6a3d-6e76-4a23-9771-493ba278677e.png) + +### Comparison of trajectories on KITTI dataset + +![image](https://user-images.githubusercontent.com/95751923/155125478-a361762f-f18e-4161-b892-6f5080f5681f.png) + +Test on KITTI sequence +You can download the sequence 00 and 05 datasets from the KITTI official website and convert them into bag files using the kitti2bag open source method. + +00: 2011_10_03_drive_0027 000000 004540 + +05: 2011_09_30_drive_0018 000000 002760 + +See the link: [https://github.com/ethz-asl/kitti_to_rosbag](https://github.com/ethz-asl/kitti_to_rosbag) + +## Acknowledgements + +Thanks for SC-A-LOAM(Scan context: Egocentric spatial descriptor for place recognition within 3d point cloud map) and F-LOAM(F-LOAM : Fast LiDAR Odometry and Mapping). + +## Citation + +```bash +@misc{https://doi.org/10.48550/arxiv.2204.04932, + doi = {10.48550/ARXIV.2204.04932}, + + url = {https://arxiv.org/abs/2204.04932}, + + author = {Liao, Lizhou and Fu, Chunyun and Feng, Binbin and Su, Tian}, + + keywords = {Robotics (cs.RO), FOS: Computer and information sciences, FOS: Computer and information sciences}, + + title = {Optimized SC-F-LOAM: Optimized Fast LiDAR Odometry and Mapping Using Scan Context}, + + publisher = {arXiv}, + + year = {2022}, + + copyright = {arXiv.org perpetual, non-exclusive license} +} +``` diff --git a/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/sc-a-loam/.pages b/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/sc-a-loam/.pages new file mode 100644 index 00000000000..35fd5a113be --- /dev/null +++ b/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/sc-a-loam/.pages @@ -0,0 +1,2 @@ +nav: + - index.md diff --git a/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/sc-a-loam/images/kitti05.png b/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/sc-a-loam/images/kitti05.png new file mode 100644 index 00000000000..2585651a6f2 Binary files /dev/null and b/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/sc-a-loam/images/kitti05.png differ diff --git a/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/sc-a-loam/images/loop.png b/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/sc-a-loam/images/loop.png new file mode 100644 index 00000000000..d21fa6a8716 Binary files /dev/null and b/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/sc-a-loam/images/loop.png differ diff --git a/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/sc-a-loam/images/riverside01.png b/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/sc-a-loam/images/riverside01.png new file mode 100644 index 00000000000..9eb8b91e37d Binary files /dev/null and b/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/sc-a-loam/images/riverside01.png differ diff --git a/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/sc-a-loam/images/scancontext.png b/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/sc-a-loam/images/scancontext.png new file mode 100644 index 00000000000..6df3c3ebf35 Binary files /dev/null and b/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/sc-a-loam/images/scancontext.png differ diff --git a/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/sc-a-loam/index.md b/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/sc-a-loam/index.md new file mode 100644 index 00000000000..49449341e1e --- /dev/null +++ b/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/sc-a-loam/index.md @@ -0,0 +1,111 @@ +# SC-A-LOAM + +## What is SC-A-LOAM? + +- A real-time LiDAR SLAM package that integrates A-LOAM and ScanContext. + +## Repository Information + +### Original Repository link + +[https://github.com/gisbi-kim/SC-A-LOAM](https://github.com/gisbi-kim/SC-A-LOAM) + +### Required Sensors + +- LIDAR [VLP-16, HDL-32, HDL-64, Ouster OS1-64] + +### Prerequisites (dependencies) + +- ROS +- GTSAM version 4.x. + +- If GTSAM is not installed, follow the steps below. + + ```bash + wget -O ~/Downloads/gtsam.zip https://github.com/borglab/gtsam/archive/4.0.2.zip + cd ~/Downloads/ && unzip gtsam.zip -d ~/Downloads/ + cd ~/Downloads/gtsam-4.0.2/ + mkdir build && cd build + cmake -DGTSAM_BUILD_WITH_MARCH_NATIVE=OFF .. + sudo make install -j8 + ``` + +### ROS Compatibility + +- ROS 1 + +## Build & Run + +### 1) Build + +- First, install the abovementioned dependencies and follow below lines. + + ```bash + mkdir -p ~/catkin_scaloam_ws/src + cd ~/catkin_scaloam_ws/src + git clone https://github.com/gisbi-kim/SC-A-LOAM.git + cd ../ + catkin_make + source ~/catkin_scaloam_ws/devel/setup.bash + + ``` + +### 2) Set parameters + +- After downloading the repository, change topic and sensor settings on the launch files. + +### Scan Context parameters + +- If encountering ghosting error or loop is not closed, change the scan context parameters. +- Adjust the scan context settings with the parameters in the marked area. + +

+ +### 3) Run + +```bash +roslaunch aloam_velodyne aloam_mulran.launch +``` + +## 4) Saving as PCD file + +```bash + rosrun pcl_ros pointcloud_to_pcd input:=/aft_pgo_map +``` + +## Example Results + +

+ +### Riverside 01, MulRan dataset + +- The MulRan dataset provides lidar scans (Ouster OS1-64, horizontally mounted, 10Hz) and consumer level gps (U-Blox EVK-7P, 4Hz) data. +- About how to use (publishing data) data: see here [https://github.com/irapkaist/file_player_mulran](https://github.com/irapkaist/file_player_mulran) +- example videos on Riverside 01 sequence. + + ```bash + 1. with consumer level GPS-based altitude stabilization: https://youtu.be/FwAVX5TVm04 + 2. without the z stabilization: https://youtu.be/okML_zNadhY + ``` + +- example result: + +

+ +### KITTI 05 + +- For KITTI (HDL-64 sensor), run using the command + + ```bash + roslaunch aloam_velodyne aloam_velodyne_HDL_64.launch # for KITTI dataset setting + ``` + +- To publish KITTI scans, you can use mini-kitti publisher, a simple python script: [https://github.com/gisbi-kim/mini-kitti-publisher](https://github.com/gisbi-kim/mini-kitti-publisher) +- example video (no GPS used here): [https://youtu.be/hk3Xx8SKkv4](https://youtu.be/hk3Xx8SKkv4) +- example result: + +

+ +## Contact + +- Maintainer: paulgkim@kaist.ac.kr diff --git a/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/sc-lego-loam/.pages b/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/sc-lego-loam/.pages new file mode 100644 index 00000000000..35fd5a113be --- /dev/null +++ b/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/sc-lego-loam/.pages @@ -0,0 +1,2 @@ +nav: + - index.md diff --git a/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/sc-lego-loam/images/DCC.png b/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/sc-lego-loam/images/DCC.png new file mode 100644 index 00000000000..32bf89207bb Binary files /dev/null and b/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/sc-lego-loam/images/DCC.png differ diff --git a/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/sc-lego-loam/images/KAIST.png b/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/sc-lego-loam/images/KAIST.png new file mode 100644 index 00000000000..89a25c45351 Binary files /dev/null and b/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/sc-lego-loam/images/KAIST.png differ diff --git a/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/sc-lego-loam/images/Riverside.png b/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/sc-lego-loam/images/Riverside.png new file mode 100644 index 00000000000..0c741fa492b Binary files /dev/null and b/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/sc-lego-loam/images/Riverside.png differ diff --git a/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/sc-lego-loam/images/mulran_merged.png b/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/sc-lego-loam/images/mulran_merged.png new file mode 100644 index 00000000000..f8648bb1bb1 Binary files /dev/null and b/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/sc-lego-loam/images/mulran_merged.png differ diff --git a/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/sc-lego-loam/images/output.png b/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/sc-lego-loam/images/output.png new file mode 100644 index 00000000000..a3e533b546b Binary files /dev/null and b/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/sc-lego-loam/images/output.png differ diff --git a/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/sc-lego-loam/images/pangyo.png b/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/sc-lego-loam/images/pangyo.png new file mode 100644 index 00000000000..831f311842b Binary files /dev/null and b/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/sc-lego-loam/images/pangyo.png differ diff --git a/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/sc-lego-loam/images/pangyo_merged.png b/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/sc-lego-loam/images/pangyo_merged.png new file mode 100644 index 00000000000..316ddb8d590 Binary files /dev/null and b/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/sc-lego-loam/images/pangyo_merged.png differ diff --git a/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/sc-lego-loam/index.md b/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/sc-lego-loam/index.md new file mode 100644 index 00000000000..b250ebeca5e --- /dev/null +++ b/docs/how-to-guides/creating-maps-for-autoware/open-source-slam/sc-lego-loam/index.md @@ -0,0 +1,108 @@ +# SC-LeGO-LOAM + +## What is SC-LeGO-LOAM? + +- SC-LeGO-LOAM integrated LeGO-LOAM for lidar odometry and 2 different loop closure methods: ScanContext and Radius search based loop closure. While ScanContext is correcting large drifts, radius search based method is good for fine-stitching. + +## Repository Information + +### Original Repository link + +[https://github.com/irapkaist/SC-LeGO-LOAM](https://github.com/irapkaist/SC-LeGO-LOAM) + +### Required Sensors + +- LIDAR [VLP-16, HDL-32E, VLS-128, Ouster OS1-16, Ouster OS1-64] +- IMU [9-AXIS] + +### ROS Compatibility + +- ROS 1 + +### Dependencies + +- ROS +- PCL +- Gtsam + +```bash +wget -O ~/Downloads/gtsam.zip https://github.com/borglab/gtsam/archive/4.0.0-alpha2.zip +cd ~/Downloads/ && unzip gtsam.zip -d ~/Downloads/ +cd ~/Downloads/gtsam-4.0.0-alpha2/ +mkdir build && cd build +cmake .. +sudo make install +``` + +## Build & Run + +### 1) Build + +```bash +cd ~/catkin_ws/src +git clone https://github.com/irapkaist/SC-LeGO-LOAM.git +cd .. +catkin_make +``` + +### 2) Set parameters + +- Set imu and lidar topic on `include/utility.h` +- Set lidar properties on `include/utility.h` +- Set scancontex settings on `include/Scancontext.h` + +(Do not forget to rebuild after setting parameters.) + +### 3) Run + +```bash +source devel/setup.bash +roslaunch lego_loam run.launch +``` + +## Example Result + +

+ +## Other Examples + +- Video 1: DCC (MulRan dataset) +- Video 2: Riverside (MulRan dataset) +- Video 3: KAIST (MulRan dataset) + +

+

+ +## MulRan dataset + +- If you want to reproduce the results as the above video, you can download the MulRan dataset and use the ROS topic publishing tool . + +## Cite SC-LeGO-LOAM + +```bash +@INPROCEEDINGS { gkim-2018-iros, + author = {Kim, Giseop and Kim, Ayoung}, + title = { Scan Context: Egocentric Spatial Descriptor for Place Recognition within {3D} Point Cloud Map }, + booktitle = { Proceedings of the IEEE/RSJ International Conference on Intelligent Robots and Systems }, + year = { 2018 }, + month = { Oct. }, + address = { Madrid } +} +``` + +and + +```bash +@inproceedings{legoloam2018, + title={LeGO-LOAM: Lightweight and Ground-Optimized Lidar Odometry and Mapping on Variable Terrain}, + author={Shan, Tixiao and Englot, Brendan}, + booktitle={IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS)}, + pages={4758-4765}, + year={2018}, + organization={IEEE} +} +``` + +## Contact + +- Maintainer: Giseop Kim (`paulgkim@kaist.ac.kr`) diff --git a/docs/how-to-guides/index.md b/docs/how-to-guides/index.md index 5620da6a53b..94b3e6f9402 100644 --- a/docs/how-to-guides/index.md +++ b/docs/how-to-guides/index.md @@ -1,7 +1,7 @@ # How-to guides - [Advanced usage of colcon](advanced-usage-of-colcon.md) -- [Creating maps for Autoware](creating-maps-for-autoware.md) +- [Creating maps for Autoware](creating-maps-for-autoware/index.md) - [Determining component dependencies](determining-component-dependencies.md) - [Integrating Autoware with your vehicle](integrating-autoware-with-your-vehicle.md) - [Integrating Autoware with a differential drive vehicle](integrating-autoware-with-a-diff-drive-vehicle.md)