Ubuntu 20.04 ROS noetic 上安装最强SLAM工具包 Lightning-LM 教程(亲测已通过!)
本文详细说明了目前功能最为强大齐全的建图和定位功能包(Lightning-Speed Lidar Localization and Mapping)在ROS noetic上的编译安装步骤,解决了一些可能存在的编译问题。
本文详细说明了目前功能最为强大齐全的建图和定位功能包(Lightning-Speed Lidar Localization and Mapping)在ROS noetic上的编译安装步骤,解决了一些可能存在的编译问题。
1 项目说明
该项目包含了在线建图、离线建图和在线重定位的节点,其快速建图功能继承自faster-lio,并加入了一些优化内存处理和占用的工程手段,具体见:https://github.com/gaoxiang12/lightning-lm.git。由于原作者的部署平台是基于Ubuntu22.04 ROS2版本的,作为旧时代的新人,笔者实际使用的平台是ROS1,因此需要进行适当的改动,不过已有相关工作进行了ROS1版本的处理,改动量不算特别多,有余力可以自行修改,这里参考:https://github.com/liefengguo/lightning-lm_ROS.git。
2 环境依赖
- Ubuntu 20.04
- ROS noetic
- OpenCV
- Pangolin
- PCL
- PCL_conversions
- Glog
- Gflags
- Yaml-cpp
- Livox ros driver
下面说明这些主要依赖的安装步骤:
2.1 ROS noetic
ROS的安装参考鱼香ROS的一键安装指令:
wget http://fishros.com/install -O fishros && . fishros
后续按照终端提示,操作安装 ROS noetic desktop full 完整版即可。
2.2 工具库
一系列工具库:OpenCV、PCL、Glog、Gflags、Yaml-cpp等,通过apt install 指令安装:
sudo apt install libopencv-dev libpcl-dev pcl-tools libyaml-cpp-dev libgoogle-glog-dev libgflags-dev ros-noetic-pcl-conversions
2.3 Pangolin
Pangolin-0.9.3 是原生项目使用的可视化工具,建议直接使用,避免后续编译问题!
官方仓库:https://github.com/stevenlovegrove/Pangolin.git,下载0.9.3版本如下:
# 使用国内代理加速
git clone http://gh-proxy.com/https://github.com/stevenlovegrove/Pangolin.git
cd Pangolin/
# 切换到0.9.3标签
git checkout v0.9.3
修改.gitmodules文件,这里同样也是改为国内代理加速如下:
[submodule "scripts/vcpkg"]
path = scripts/vcpkg
url = https://gh-proxy.com/https://github.com/microsoft/vcpkg.git
[submodule "components/pango_python/pybind11"]
path = components/pango_python/pybind11
url = https://gh-proxy.com/https://github.com/pybind/pybind11.git
然后补全 Pangolin文件夹中缺少的子模块:
git submodule update --init --recursive
这里,Pangolin安装还缺少一个Catch2的工具包,直接源码下载编译安装:
git clone https://gh-proxy.com/https://github.com/catchorg/Catch2.git
cd Catch2/
# 编译安装
cmake -B build -S . -DBUILD_TESTING=OFF
sudo cmake --build build --target install
Catch2安装完成后,需要继续修改~/Pangolin/scripts/install_prerequisites.sh 的124行,将其修改为:PKGS_RECOMMENDED+=(libjpeg-dev libpng-dev) 如下:

关闭 Pangolin 编译的
-Werror选项修改 ~/Pangolin/CMakeLists.txt 中89行的 add_compile_options(-Wall -Wextra -Werror) 为:add_compile_options(-Wall -Wextra)
最后,编译Pangolin,执行以下指令,完成Pangolin安装!
cd Pangolin/
# 安装pangolin的依赖
./scripts/install_prerequisites.sh recommended
# 编译安装
mkdir build && cd build
cmake ..
make -j8
sudo make install
2.4 Livox ros driver
该项目支持Livox系列雷达,需要编译安装Livox SDK和对应的Livox ros driver:
git clone https://gh-proxy.com/https://github.com/Livox-SDK/Livox-SDK.git
# 编译安装Livox SDK
cd Livox-SDK
cd build && cmake ..
make -j4
sudo make install
创建ROS工作空间,命名为lightnlm_ws:
mkdir -p ~/lightnlm_ws/src
cd ~/lightnlm_ws/src && catkin_init_workspace
# 下载livox ros driver
git clone https://gh-proxy.com/https://github.com/Livox-SDK/livox_ros_driver.git
# 编译 Livox ros driver
catkin_make -DCATKIN_WHITELIST_PACKAGES="livox_ros_driver"
3 Lightning-LM
3.1 编译安装
经过上述的一系列操作,终于进入了编译安装 lightning-lm 的步骤。
cd ~/lightnlm_ws/src
# 下载ROS1版本的lightning-lm
git clone https://gh-proxy.com/https://github.com/liefengguo/lightning-lm_ROS.git
修改~/lightning-lm_ROS/CMakeLists.txt 为如下内容:
cmake_minimum_required(VERSION 3.5)
project(lightning)
# =========================================================
# build type
# =========================================================
set(CMAKE_BUILD_TYPE Release)
if(NOT CMAKE_CXX_STANDARD)
set(CMAKE_CXX_STANDARD 17)
endif()
add_definitions(-DPCL_NO_PRECOMPILE)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC -fopenmp -g")
set(CMAKE_CXX_FLAGS_RELEASE "-O2 -fopenmp -g -ggdb")
set(CMAKE_CXX_FLAGS_DEBUG "-ggdb -g -fopenmp")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC -g")
if (CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang")
add_compile_options(-Wall -Wextra -Wpedantic)
endif()
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/bin)
# =========================================================
# catkin
# =========================================================
find_package(catkin REQUIRED COMPONENTS
roscpp
std_msgs
geometry_msgs
sensor_msgs
nav_msgs
std_srvs
tf2
tf2_ros
message_filters
pcl_ros
pcl_conversions
message_generation
livox_ros_driver
)
# =========================================================
# ROS message / service
# =========================================================
add_service_files(
DIRECTORY srv
FILES
LocCmd.srv
SaveMap.srv
)
generate_messages(
DEPENDENCIES
std_msgs
geometry_msgs
sensor_msgs
nav_msgs
)
catkin_package(
CATKIN_DEPENDS
roscpp
std_msgs
geometry_msgs
sensor_msgs
nav_msgs
std_srvs
tf2
tf2_ros
pcl_conversions
message_filters
livox_ros_driver
message_runtime
)
# =========================================================
# 第三方库
# =========================================================
list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake)
include(cmake/packages.cmake)
# =========================================================
# include dirs
# =========================================================
include_directories(
${catkin_INCLUDE_DIRS}
)
# =========================================================
# install
# =========================================================
install(DIRECTORY config
DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION})
# =========================================================
# source
# =========================================================
add_subdirectory(src)
然后,进行编译安装:
cd ~/lightnlm_ws
# catkin_make
catkin_make -DCATKIN_WHITELIST_PACKAGES="lightning"
3.2 运行测试
这里仅初步测试建图功能,建图模式:
# 启动在线建图节点
roslaunch lightning run_online.launch
# 播放ROS数据包
rosbag play test.bag
运行可视化界面如下:
建图完毕后,保存地图指令:
rosservice call /lightning/save_map "{map_id: 01}"
地图数据保存在系统主目录的.ros/data/01/文件夹,如下所示:
4 小结
Lightning-LM是高性能激光雷达建图定位框架,原生支持ROS2。本文介绍其在ROS Noetic上的适配安装:配置ROS Noetic、Pangolin、Livox等依赖后,使用ROS1分支代码,修改CMakeLists.txt适配catkin构建,编译即可运行在线建图与重定位功能。
长文原创不易,还请点个赞!
更多推荐

所有评论(0)