# 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

drawing

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

drawing

## Mapping in a lake@JLU

drawing

## Navigation on the built map

drawing

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