# octomap_enu_mk
**Repository Path**: yyj6862/octomap_enu_mk
## Basic Information
- **Project Name**: octomap_enu_mk
- **Description**: GNSS+IMU+LIdar ENU系下的建图与导航package
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2023-04-11
- **Last Updated**: 2023-05-05
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# Octomap_enu_mk
**Building occupancy grid map using Lidar & IMU & GNSS in ENU frame and then using the built occupancy grid map for navigation.The more detailed doc is available on [zhihu](https://zhuanlan.zhihu.com/p/615280048)**
## system architecture
## ENU & LIO Frame Calibration
red line is Fast-lio Path , green line is GNSS-IMU Odom Path, blue line is Fast-lio Path with optimized LIO-ENU extrinsics applied,yellow line is Fast-lio Path with IMU Orientation(9-axis imu) when Fast-lio initializing applied.
## Mapping in a lake@JLU
## Navigation on the built map
## Every package's role
- Localization : ENU-LIO calibration & Localization in ENU frame.
- Mapping : mapping in ENU frame.
- Self_localizaation_transform : just a dependency to decode our pre-difined ros msg.
## Dependency
the package is tested on ``UBUNTU 20.04/ros noetic``.Make sure you have ros installed.
```
sudo apt-get install libgeographic-dev
sudo apt-get install libyaml-cpp-dev
sudo apt-get install liboctomap-dev #you also can install it from source code
```
install ``ros-octomap`` packages
```
sudo apt-get install ros-noetic-octomap ros-noetic-octomap-mapping ros-noetic-octomap-msgs ros-noetic-octomap-ros ros-noetic-octomap-rviz-plugins
```
install ``glog`` from source code
```
git clone https://github.com/google/glog
sudo apt-get install autoconf automake libtool
cd glog
mkdir build
cd build
cmake ..
make
sudo make install
```
install ``ceres-solver`` version >= 2.0.0
you can goog le how to install ceres-solver :)
## Sample Dataset
链接: https://pan.baidu.com/s/10KF7veQkBDfQt-rzZ-3csw 提取码: shd1
## How to use the package (IMPORTANT!)
First , cause our package using ``Fast-lio`` for localization,make sure you have [Fast-lio](https://github.com/hku-mars/FAST_LIO) env installed.:)
download the package:
```
cd ~/catkin_ws/src
git clone https://gitee.com/yyj6862/octomap_enu_mk.git
```
compile and launch the package.
```
cd ~/catkin_ws
catkin_make
source ~/catkin_ws/devel/setup.bash # or source ~/catkin_ws/devel/setup.zsh if you use zsh
roslaunch mapping mapping.launch
rosbag play OUR_DATASET #download our rosbag first
```
when you want to save the grid map
```
rosservice call /mapping/save_map
```
then the occupancy grid map is saved in the ``mapping/data`` directory.
if you want to see how to load the map and set path point in rviz.YOU HAVE TO EDIT ``mapping/config/navigation_planner.yaml`` :
```
# edit it according to your path
map_yaml_path: /home/yyj/opensource_ws/src/octomap_enu_mk/mapping/data/grid_map.yaml
map_data_path: /home/yyj/opensource_ws/src/octomap_enu_mk/mapping/data/grid_map.txt
ori_gps_path: /home/yyj/opensource_ws/src/octomap_enu_mk/localization/gnss_imu_lidar_aligen/data/init_align_gnss.yaml
```
Then you can see how navagation planner works:
```
# update the mapping/config/navigation_planner.yaml first!
roslaunch mapping navigation_planner.launch
```
click the ``publish point``button in rviz,and the programe will recieve the point's coordinate in map frame.
## TODO
The calibration of ENU frame and LIO frame is not perfect,I think the better way for the calibration is optimizing the extrinsics during the programe life time not just at the beginning.