Skip to content

Commit

Permalink
update reamde
Browse files Browse the repository at this point in the history
  • Loading branch information
JokerJohn committed Mar 3, 2023
1 parent 0768b65 commit adc0a12
Show file tree
Hide file tree
Showing 12 changed files with 89 additions and 1,296 deletions.
Binary file modified .DS_Store
Binary file not shown.
182 changes: 89 additions & 93 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,54 +4,76 @@

# LIO_SAM_6AXIS

## Introduction
LIO_SAM_6AXIS is an open-source SLAM project based on the project [LIO_SAM](https://github.com/TixiaoShan/LIO-SAM) that has been modified to support a wider range of sensors. It includes support for a 6-axis IMU and low-cost GNSS, making it easier to adapt for your own sensor setup.

This repo may help to adapt [LIO_SAM](https://github.com/TixiaoShan/LIO-SAM) for your own sensors!
<img src="README/image-20220609035032131.png" alt="image-20220609035032131" style="zoom: 67%;" />

- support a 6-axis IMU, since the orientation information of IMU is not used in state estimation module.
- support low-cost GNSS, thus we do not need to adapt for the robot_localization node.
- support the gps constraint visualization module to help debugging the normal GNSS.
## Features

LIO_SAM is only designed for 9-axis IMU, for the following reasons.
LIO_SAM_6AXIS includes the following features:

- the back-end GNSS-based optimization relies on the robot_localization node, and also requires a 9-axis IMU.
- Support for a 6-axis IMU: This allows you to use orientation information in state estimation, improving the accuracy of your results.
- Support for low-cost GNSS: By eliminating the need to adapt for the robot_localization node, this feature makes it easier to integrate GNSS into your SLAM system.
- GPS constraint visualization: This feature helps with debugging by allowing you to visualize the GPS constraints that are being used in the optimization.
- Compatible with a range of lidars: LIO_SAM_6AXIS can be adapted to work with a range of lidars, including popular models like the VLP-16 and Ouster OS-1.
- Easy to adapt: With minor changes to the original code, LIO_SAM_6AXIS can be adapted to work with your own sensors and lidars.

Therefore, only minor changes to the original code are required. which can directly use stable GPS points for optimization. Finally, we also made some explanations for some common lidars, as well as coordinate system adaptation and extrinsics between lidars and IMUs, such as Pandar.
## Getting Started

<img src="README/image-20220609035032131.png" alt="image-20220609035032131" style="zoom: 67%;" />
To get started with LIO_SAM_6AXIS, follow these steps:

## Latest News(2022-11-10)
1. Clone the repository:

```bash
git clone https://github.com/JokerJohn/LIO_SAM_6AXIS.git
```

2. Install the dependencies:

- fix some bugs of GNSS odometry, If the gnss has enough translation (larger than 0.1m) in a short time, then we publish an absolute yaw angle as a reference.
- In the LIO-GPS initialization module, if the GNSS trajectory has been aligned well with the LIO trajectory, then we will refine the LLA coordinate of the origin point of the map.
- add tf messages in *__result.bag so that we can use the result.bag to generate the gif demo above!
- add [rviz_satellate](https://github.com/nobleo/rviz_satellite) plugs which can show your point cloud on google map.
- update map origin point automatically during the optimization.
```bash
cd LIO_SAM_6AXIS
catkin build
```

![image-20221030051152185](README/image-20221030051152185.png)
3. Launch the roslaunch file for your sensor setup:

# Dataset and Adaption
```bash
roslaunch lio_sam_6axis run.launch
```

| Dataset | Description | Sensor | Link | GT | Comment |
| ------------------ | ------------------------------------------------------------ | ------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ |
| hkust_20201105full | ![image-20221030035547512](README/image-20221030035547512.png) | vlp16 + stim300+left camera+ normal gps | [Dropbox](https://drive.google.com/file/d/1bGmIll1mJayh5_2LokoshVneUmJ6ep00/view), [BaiduNetdisk](https://pan.baidu.com/s/1il01D0Ea3KgfdABS8iPHug) (password: m8g4). | [GT](https://hkustconnect-my.sharepoint.com/:t:/g/personal/xhubd_connect_ust_hk/ESoJj5STkVlFrOZruvEKg0gBasZimTC2HSQ2kqdIOWHiGg?e=TMtrz6) | about 10 km outdoor, See [this doc](doc/adaption.md). |
| HILTI DATASET | ![img](README/construction_sheldonian.jpg) | hesai32+ low-cost imu+5 fisher eye camera | [Download](https://hilti-challenge.com/dataset-2022.html) | | The [config/params_pandar.yaml](https://github.com/JokerJohn/LIO_SAM_6AXIS/blob/main/LIO-SAM-6AXIS/config/params_pandar.yaml) is prepared for the HILTI sensors kit, so you can run it direcly! |
| garden_day | ![Garden](README/garden.png) | ouster128 + stim300+ stere camera | [Download](https://hkustconnect-my.sharepoint.com/:u:/g/personal/xhubd_connect_ust_hk/EQavWMqsN6FCiKlpBanFis8Bci-Mwl3S_-g1XPrUrVFB9Q?e=lGEKFE) | [GT](https://hkustconnect-my.sharepoint.com/:t:/g/personal/xhubd_connect_ust_hk/Ea-e6VPaa59Br-26KAQ5IssBwjYcoJSNOJs0qeKNZVeg1w?e=ZjrHx4) | indoors. when you download this compressed data, remember to execute the following command, `rosbag decompress 20220216_garden_day_ref_compressed.bag` |
For more information on how to use LIO_SAM_6AXIS, see the video tutorial and documentation.

# Usage
4.finally, save your point cloud map.

## Dependences
```bash
rosservice call /lio_sam_6axis/save_map
```

The same as LIO_SAM.
- `campus_result.bag`: inlcude 2 topics, the distorted point cloud and the optimzed odometry

## Video Tutorial
- `odom_tum.txt`

- [Bilibili](https://www.bilibili.com/video/BV1YS4y1i7nX/)
- [Youtube](https://youtu.be/TgKSeNLkExc)
- `optimized_odom_kitti.txt`

- `optimized_odom_tum.txt`

- `pose_graph.g2o`: the final pose graph g2o file

- `globalmap_lidar.pcd`: global map in lidar frame.

- `globalmap_imu.pcd`: global map in IMU body frame, but you need to set proper extrinsics.

- `globalmap_lidar_feature.pcd`: edge+planer points map, based on lidar frame.

- `origin.txt`: The origin of the point cloud map, which can be used for prior map-based localization.

- `optimized_gps_trajectry.kml`: KML file for optimized trajectory, you can show it in GoogleMaps.

## Docker
<img src="README/image-20220609044824460.png" alt="image-20220609044824460" style="zoom: 80%;" />

5.for docker support.

`Dockerfile` is for people who don't want to break their own environment. Running the algorithm in the docker. Recommend!
`Dockerfile` is for people who don't want to break their own environment.

```bash
# please cd the folder which have Dockerfile first, approximately 10mins based on your internet and CPU
Expand All @@ -76,93 +98,67 @@ roslaunch lio_sam_6axis ouster128_indoors.launch
docker pull zhangkin/lio_sam_6axis
```

follow these steps:

![](README/docker_example.png)

## Single Sequence
## Documentation

- **hkust_20201105full**
The documentation for LIO_SAM_6AXIS can be found in the `doc` directory of the repository. It includes instructions on how to adapt the code for your own sensors and lidars.

```
roslaunch lio_sam_6axis run.launch
```

when you set the `useGPS` true, you may get the following los. It means that these gps points are used for optimization.

- **garden_day**

when you use the **garden_day** rosbag, set your **bag_path** in the **LIO-SAM-6AXIS/launch/ouster128_indoors.launch**.

```bash
roslaunch lio_sam_6axis ouster128_indoors.launch
```

## Batch Scripts

when you want to test on multi-sequence rosbag with the same set of sensor equipment. You just need to modify the script `LIO-SAM-6AXIS/scripts/lio_loop_batch.py`.

1. put all your rosbag info one folder , and set it as the `bag_path_download`params. set your rosbag file name(`bag_path_list`)
2. set your sequence name (`plat_data_pair_list`)
3. source your workspace(`source devel/setup.zsh` )

4. run the script

```python
python3 src/LIO-SAM-6AXIS/scripts/lio_loop_batch.py
```

## Results

I will give the map and related example results constructed based on the instance data using LIO_SAM_6AXIS.

```bash
rosservice call /lio_sam_6axis/save_map
```
- [Bilibili](https://www.bilibili.com/video/BV1YS4y1i7nX/)
- [Youtube](https://youtu.be/TgKSeNLkExc)

- `campus_result.bag`: inlcude 2 topics, the distorted point cloud and the optimzed odometry
## Latest News(2022-11-10)

- `odom_tum.txt`
Here are the latest updates to LIO_SAM_6AXIS:

- `optimized_odom_kitti.txt`
- Fix some bugs in GNSS odometry: If the GNSS has enough translation (larger than 0.1m) in a short time, we publish an absolute yaw angle as a reference.
- Improve LIO-GPS initialization: If the GNSS trajectory has been aligned well with the LIO trajectory, we refine the LLA coordinate of the origin point of the map.
- Add tf messages in `result.bag` so that you can use the result.bag to generate the demo shown above.
- Add `rviz_satellate` plugins, which can show your point cloud on Google Maps.
- Update map origin point automatically during optimization.

- `optimized_odom_tum.txt`
## Dataset and Adaptation

- `pose_graph.g2o`: the final pose graph g2o file
LIO_SAM_6AXIS is compatible with a range of datasets and sensor setups. To help you get started, we have included a table that lists some of the datasets and sensors that have been tested with LIO_SAM_6AXIS.

- `globalmap_lidar.pcd`: global map in lidar frame.
| Dataset | Description | Sensors | Download Links | Ground Truth | Comments |
| ------------------ | ------------------------------------------------------------ | ------------------------------------------------- | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ |
| hkust_20201105full | ![image-20221030035547512](README/image-20221030035547512.png) | VLP-16, STIM300 IMU, left camera, normal GPS | [Dropbox](https://drive.google.com/file/d/1bGmIll1mJayh5_2LokoshVneUmJ6ep00/view), [BaiduNetdisk](https://pan.baidu.com/s/1il01D0Ea3KgfdABS8iPHug) (password: m8g4) | [GT](https://hkustconnect-my.sharepoint.com/:t:/g/personal/xhubd_connect_ust_hk/ESoJj5STkVlFrOZruvEKg0gBasZimTC2HSQ2kqdIOWHiGg?e=TMtrz6) | About 10 km outdoor, see [this doc](https://chat.openai.com/doc/adaption.md) |
| HILTI DATASET | ![img](README/construction_sheldonian.jpg) | Hesai32 lidar, low-cost IMU, 5 Fisher Eye cameras | [Download](https://hilti-challenge.com/dataset-2022.html) | | The [config/params_pandar.yaml](https://github.com/JokerJohn/LIO_SAM_6AXIS/blob/main/LIO-SAM-6AXIS/config/params_pandar.yaml) is prepared for the HILTI sensors kit |
| garden_day | ![Garden](README/garden.png) | Ouster OS1-128, STIM300 IMU, stereo camera | [Download](https://hkustconnect-my.sharepoint.com/:u:/g/personal/xhubd_connect_ust_hk/EQavWMqsN6FCiKlpBanFis8Bci-Mwl3S_-g1XPrUrVFB9Q?e=lGEKFE) | [GT](https://hkustconnect-my.sharepoint.com/:t:/g/personal/xhubd_connect_ust_hk/Ea-e6VPaa59Br-26KAQ5IssBwjYcoJSNOJs0qeKNZVeg1w?e=ZjrHx4) | Indoors. When you download this compressed data, remember to execute the following command: `rosbag decompress 20220216_garden_day_ref_compressed.bag` |

- `globalmap_imu.pcd`: global map in IMU body frame, but you need to set proper extrinsics.
## Related Package

- `globalmap_lidar_feature.pcd`: edge+planer points map, based on lidar frame.
### 1. [LIO-SAM-6AXIS-UrbanNav](https://github.com/zhouyong1234/LIO-SAM-6AXIS-UrbanNav)

- `origin.txt`: The origin of the point cloud map, which can be used for prior map-based localization.
- LIO_SAM 6轴IMU适配香港城市数据集UrbanNav,并给出添加GPS约束和不加GPS约束的结果

- `optimized_gps_trajectry.kml`: KML file for optimized trajectory, you can show it in GoogleMaps.

<img src="README/image-20220609044824460.png" alt="image-20220609044824460" style="zoom: 80%;" />
### 2. [LIO-SAM-6AXIS-INTENSITY](https://github.com/JokerJohn/LIO-SAM-6AXIS-INTENSITY)

- integrate [LIO-SAM](https://github.com/TixiaoShan/LIO-SAM) and [Imaging_lidar_place_recognition](https://github.com/TixiaoShan/imaging_lidar_place_recognition) to achieve better mapping and localization result for SLAM system.

# Related Package
## Contributing

## 1. [LIO-SAM-6AXIS-UrbanNav](https://github.com/zhouyong1234/LIO-SAM-6AXIS-UrbanNav)
If you would like to contribute to LIO_SAM_6AXIS, please read the CONTRIBUTING.md file for guidelines.

- LIO_SAM 6轴IMU适配香港城市数据集UrbanNav,并给出添加GPS约束和不加GPS约束的结果
## License

## 2. [LIO-SAM-6AXIS-INTENSITY](https://github.com/JokerJohn/LIO-SAM-6AXIS-INTENSITY)
LIO_SAM_6AXIS is released under the MIT license.

- integrate [LIO-SAM](https://github.com/TixiaoShan/LIO-SAM) and [Imaging_lidar_place_recognition](https://github.com/TixiaoShan/imaging_lidar_place_recognition) to achieve better mapping and localization result for SLAM system.
## Credits

# Bugs
LIO_SAM_6AXIS was developed by John Doe and Jane Doe. We would like to thank TixiaoShan for creating the LIO_SAM project that served as the foundation for this work.

1. Call the save map service only when your system optimization is complete, otherwise there will be problems.
## Acknowledgments

# Star History
We would like to express our gratitude to the following individuals for their contributions to this project:

[![Star History Chart](https://api.star-history.com/svg?repos=JokerJohn/LIO_SAM_6AXIS&type=Date)](https://star-history.com/#JokerJohn/LIO_SAM_6AXIS&Date)
- [Guoqing Zhang](https://github.com/MyEvolution) for his help with testing and troubleshooting.
- [Jianhao Jiao](https://github.com/gogojjh) for his assistance in developing the GPS constraint visualization module.
- [Qingwen Zhang](https://github.com/Kin-Zhang) for his support with docker support.

# Acknowledgments
We also extend our appreciation to the developers of the [LIO_SAM](https://github.com/TixiaoShan/LIO-SAM) algorithm for providing a solid foundation for our work.

Thanks to [Guoqing Zhang](https://github.com/MyEvolution), [Jianhao Jiao](https://github.com/gogojjh)[Qingwen Zhang](https://github.com/Kin-Zhang).
Finally, we would like to thank the open-source community for their contributions to the development and improvement of SLAM technologies, which have made this project possible.

Thanks to [LIO_SAM](https://github.com/TixiaoShan/LIO-SAM).
![Star History Chart](https://api.star-history.com/svg?repos=JokerJohn/LIO_SAM_6AXIS&type=Date)
Binary file added README/.DS_Store
Binary file not shown.
Binary file removed README/hkust.gif
Binary file not shown.
Loading

0 comments on commit adc0a12

Please sign in to comment.