SLAM 算法复现记录:Swarm-LIO2
Swarm-LIO2:多机框架
1. 项目基本信息
- 系统:Ubuntu 20.04
- ROS 版本:Noetic
- 项目地址:https://github.com/hku-mars/Swarm-LIO2
- 这是我的复现过程记录,并非教程,因此会有一些不必要的操作
2. 算法复现
catkin_make时报错:

缺这个库rosfmt,安装网址:https://github.com/xqms/rosfmt
mkdir -p rosfmt/src
cd src
git clone https://github.com/xqms/rosfmt.git
cd ..
catkin_make
继续编译,报错,缺少两个头文件

mavros_msgs,这个包没有安装。 安装:
sudo apt update
sudo apt install ros-noetic-mavros ros-noetic-mavros-msgs
# 缺失libfmt-dev,安装
sudo apt install libfmt-dev
继续编译,报错

可能是gtsam的原因,我没有下载作者提供的gtsam,使用的自己之前下载的,
倒是可以运行了,但不确定是否会有什么弊端, 修改代码 src/Swarm-LIO2/swarm_lio/src/ExtrinsicInfection.hpp 大概150 行左右,为:
//注意,我想试试如果不换gtsam 能不能行
//原版
// void PrintGraph(const int &index, gtsam::NonlinearFactorGraph &graph){
// string root_dir = ROOT_DIR;
// graph.saveGraph(string(root_dir + "/Log/Graph" + SetString(drone_id)) + "_" + SetString(index) + string(".dot"));
// }
//修改版
void PrintGraph(const int &index, gtsam::NonlinearFactorGraph &graph) {
std::string root_dir = ROOT_DIR;
std::string filename = root_dir + "/Log/Graph" + SetString(drone_id) + "_" + SetString(index) + ".dot";
std::ofstream ofs(filename);
if (!ofs.is_open()) {
std::cerr << "Failed to open file: " << filename << std::endl;
return;
}
graph.saveGraph(ofs); // ✅ 正确地传递 ostream
ofs.close();
}
3. 可视化
