Skip to content

Commit

Permalink
feat: subpages added for slam implementations (#252)
Browse files Browse the repository at this point in the history
* ci(deploy-docs): rename documentation label to deploy-docs label (#245)

* fix: rename documentation label to deploy-docs label

Signed-off-by: Shumpei Wakabayashi <shumpei.wakabayashi@tier4.jp>

* fix: image name

Signed-off-by: Shumpei Wakabayashi <shumpei.wakabayashi@tier4.jp>

* fix: image

Signed-off-by: Shumpei Wakabayashi <shumpei.wakabayashi@tier4.jp>

Signed-off-by: Shumpei Wakabayashi <shumpei.wakabayashi@tier4.jp>
Signed-off-by: enesadastec <cingoz@adastec.com>

* docs: add link to autoware.universe document (#250)

Signed-off-by: Takamasa Horibe <horibe.takamasa@gmail.com>

Signed-off-by: Takamasa Horibe <horibe.takamasa@gmail.com>
Signed-off-by: enesadastec <cingoz@adastec.com>

* feat: subpages added for slam implementations

Signed-off-by: enesadastec <cingoz@adastec.com>

* ci(pre-commit): autofix

Signed-off-by: enesadastec <cingoz@adastec.com>

* feat(ad-api): update to latest message (#254)

Signed-off-by: Takagi, Isamu <isamu.takagi@tier4.jp>

Signed-off-by: Takagi, Isamu <isamu.takagi@tier4.jp>
Signed-off-by: enesadastec <cingoz@adastec.com>

* docs: add the manual and tutorial guideline for using morai sim (#232)

* Update MORAI Sim Documentation

Signed-off-by: Hyeongseok_Jeon <hsjeon@morai.ai>

* ci(pre-commit): autofix

Signed-off-by: Hyeongseok_Jeon <hsjeon@morai.ai>
Co-authored-by: Hyeongseok_Jeon <hsjeon@morai.ai>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Wojciech Jaworski <85557834+WJaworskiRobotec@users.noreply.github.com>
Signed-off-by: enesadastec <cingoz@adastec.com>

* docs(docker-install): add CUDA to "Installing dependencies manually" (#239)

Signed-off-by: Maxime CLEMENT <maxime.clement@tier4.jp>

Signed-off-by: Maxime CLEMENT <maxime.clement@tier4.jp>
Signed-off-by: enesadastec <cingoz@adastec.com>

* fix(node-diagram): update autoware.iv link to autoware.universe (#255)

Signed-off-by: Mamoru Sobue <mamoru.sobue@tier4.jp>

Signed-off-by: Mamoru Sobue <mamoru.sobue@tier4.jp>
Signed-off-by: enesadastec <cingoz@adastec.com>

* refactor: use macros for drawio images (#258)

* docs: use macros for drawio images

Signed-off-by: Kenji Miyake <kenji.miyake@tier4.jp>

* Update index.md

* Update index.md

Signed-off-by: Kenji Miyake <kenji.miyake@tier4.jp>
Signed-off-by: enesadastec <cingoz@adastec.com>

* fix(node-diagram): fix toggle for each components (#256)

Signed-off-by: h-ohta <hiroki.ota@tier4.jp>

Signed-off-by: h-ohta <hiroki.ota@tier4.jp>
Co-authored-by: Kenji Miyake <31987104+kenji-miyake@users.noreply.github.com>
Signed-off-by: enesadastec <cingoz@adastec.com>

* docs(node-diagram): fix broken link (#259)

Signed-off-by: Takamasa Horibe <horibe.takamasa@gmail.com>

Signed-off-by: Takamasa Horibe <horibe.takamasa@gmail.com>
Signed-off-by: enesadastec <cingoz@adastec.com>

* docs: subpages added for slam implementations

Signed-off-by: enesadastec <cingoz@adastec.com>

* ci(pre-commit): autofix

Signed-off-by: enesadastec <cingoz@adastec.com>

* docs: slam implementations edited for pre-commit

Signed-off-by: enesadastec <cingoz@adastec.com>

* docs: deleted unnecessary file

Signed-off-by: enesadastec <cingoz@adastec.com>

* docs: directory structure changed

Signed-off-by: enesadastec <cingoz@adastec.com>

* style(pre-commit): autofix

Signed-off-by: enesadastec <cingoz@adastec.com>

* docs: conclusions page added for slam algorithms

Signed-off-by: enesadastec <cingoz@adastec.com>

* style(pre-commit): autofix

Signed-off-by: enesadastec <cingoz@adastec.com>

* docs: signed commit

Signed-off-by: enesadastec <cingoz@adastec.com>

* docs(how-to-guides): table added for open source slam algorithms

Signed-off-by: enesadastec <cingoz@adastec.com>

* style(pre-commit): autofix

* docs(how-to-guides): conclusions added to open source slam algorithms

Signed-off-by: enesadastec <cingoz@adastec.com>

* style(pre-commit): autofix

Signed-off-by: Shumpei Wakabayashi <shumpei.wakabayashi@tier4.jp>
Signed-off-by: enesadastec <cingoz@adastec.com>
Signed-off-by: Takamasa Horibe <horibe.takamasa@gmail.com>
Signed-off-by: Takagi, Isamu <isamu.takagi@tier4.jp>
Signed-off-by: Hyeongseok_Jeon <hsjeon@morai.ai>
Signed-off-by: Maxime CLEMENT <maxime.clement@tier4.jp>
Signed-off-by: Mamoru Sobue <mamoru.sobue@tier4.jp>
Signed-off-by: Kenji Miyake <kenji.miyake@tier4.jp>
Signed-off-by: h-ohta <hiroki.ota@tier4.jp>
Co-authored-by: Shumpei Wakabayashi <42209144+shmpwk@users.noreply.github.com>
Co-authored-by: Takamasa Horibe <horibe.takamasa@gmail.com>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Takagi, Isamu <43976882+isamu-takagi@users.noreply.github.com>
Co-authored-by: Hyeongseok Jeon - MORAI Inc <66467102+Hyeongseok-Jeon@users.noreply.github.com>
Co-authored-by: Hyeongseok_Jeon <hsjeon@morai.ai>
Co-authored-by: Wojciech Jaworski <85557834+WJaworskiRobotec@users.noreply.github.com>
Co-authored-by: Maxime CLEMENT <78338830+maxime-clem@users.noreply.github.com>
Co-authored-by: Mamoru Sobue <mamoru.sobue@tier4.jp>
Co-authored-by: Kenji Miyake <31987104+kenji-miyake@users.noreply.github.com>
Co-authored-by: Hiroki OTA <hiroki.ota@tier4.jp>
  • Loading branch information
12 people authored Jan 3, 2023
1 parent eba9294 commit 2bcac77
Show file tree
Hide file tree
Showing 76 changed files with 1,285 additions and 2 deletions.
2 changes: 1 addition & 1 deletion docs/how-to-guides/.pages
Original file line number Diff line number Diff line change
@@ -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
Expand Down
3 changes: 3 additions & 0 deletions docs/how-to-guides/creating-maps-for-autoware/.pages
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
nav:
- index.md
- Open-source SLAM algorithms: open-source-slam
80 changes: 80 additions & 0 deletions docs/how-to-guides/creating-maps-for-autoware/index.md
Original file line number Diff line number Diff line change
@@ -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).
Original file line number Diff line number Diff line change
@@ -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
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
nav:
- index.md
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Original file line number Diff line number Diff line change
@@ -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.

<img src="images/config_info.png" width="712" >

- For imu-lidar compatibility, extrinsic matrices from calibration must be changed.

<p> <img src="images/extrinsic.png" alt="Extrinsic Matrices"></p>

- 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

<p> <img src="images/launch.png" width="712" alt="launch"></p>

## Example Result

<p> <img src="images/fastlio_lc_example1.png" width="712" alt="example_results1"></p>
<p> <img src="images/fastlio_lc_example2.png" width="712" alt="example_results2"></p>

## Other Examples

<p> <img src="images/fast-lio-lc-output.png" width="712" alt="example_results"></p>

## 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.

<!-- In this project, the LIO module refers to FAST-LIO and the pose graph optimization refers to FAST_LIO_SLAM.
Many thanks for their work. -->
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
nav:
- index.md
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Original file line number Diff line number Diff line change
@@ -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

<p><img src="images/fast_lio_slam.png" width=712pix></p>

<p><img src="images/fast_lio_slam.png" width=712pix></p>

## 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
<p><img src="images/kaist03.png" width=712pix></p>
- [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
<p><img src="images/riverside02.png" width=712pix></p>
- [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`)
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
nav:
- index.md
Original file line number Diff line number Diff line change
@@ -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
```
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
nav:
- index.md
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading

0 comments on commit 2bcac77

Please sign in to comment.