保姆级教程:在Ubuntu 22.04上搞定GICI-LIB组合导航库的编译与运行(含ROS2踩坑记录)
2026/5/27 11:36:26 网站建设 项目流程

在Ubuntu 22.04上高效部署GICI-LIB:多传感器融合开发实战指南

随着自动驾驶和机器人技术的快速发展,多传感器融合算法成为实现精确定位与导航的核心。GICI-LIB作为一款开源的GNSS/INS/Camera组合导航库,因其强大的因子图优化框架和丰富的传感器支持,正受到越来越多研究者和工程师的关注。本文将详细介绍在Ubuntu 22.04 LTS系统上,如何克服依赖库版本冲突,配置ROS2 Humble环境,并成功编译运行GICI-LIB的全过程。

1. 环境准备与系统配置

在开始安装GICI-LIB之前,确保您的Ubuntu 22.04系统已经更新到最新状态。打开终端并执行以下命令:

sudo apt update && sudo apt upgrade -y sudo apt install -y build-essential cmake git wget unzip

1.1 关键依赖库安装

GICI-LIB对几个核心库有特定版本要求,这是大多数编译失败的主要原因。我们将采用源码编译方式安装这些依赖:

gflags和glog安装(必须0.6.0版本)

# 安装gflags git clone https://github.com/gflags/gflags.git cd gflags mkdir build && cd build cmake .. -DGFLAGS_NAMESPACE=google -DCMAKE_CXX_FLAGS=-fPIC make -j$(nproc) sudo make install # 安装glog git clone https://github.com/google/glog cd glog mkdir build && cd build cmake -DGFLAGS_NAMESPACE=google -DCMAKE_CXX_FLAGS=-fPIC -DBUILD_SHARED_LIBS=ON .. make -j$(nproc) sudo make install

注意:务必使用源码编译安装,Ubuntu仓库中的预编译包版本可能不兼容。

1.2 Yaml-cpp 0.6.0安装

Yaml-cpp的版本兼容性至关重要,GICI-LIB目前仅支持0.6.0版本:

wget https://github.com/jbeder/yaml-cpp/archive/refs/tags/yaml-cpp-0.6.0.tar.gz tar -xzvf yaml-cpp-0.6.0.tar.gz cd yaml-cpp-yaml-cpp-0.6.0 mkdir build && cd build cmake -DYAML_BUILD_SHARED_LIBS=ON .. make -j$(nproc) sudo make install

2. ROS2 Humble环境配置

与原始文章中的ROS Noetic不同,Ubuntu 22.04推荐使用ROS2 Humble版本。以下是安装步骤:

sudo apt install -y software-properties-common sudo add-apt-repository universe sudo apt update && sudo apt install -y curl sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(. /etc/os-release && echo $UBUNTU_CODENAME) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null sudo apt update sudo apt install -y ros-humble-desktop

安装完成后,设置环境变量:

source /opt/ros/humble/setup.bash echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc

2.1 其他必要依赖安装

安装Eigen3和Ceres Solver:

# Eigen3安装 sudo apt install -y libeigen3-dev # Ceres Solver 2.1.0安装 sudo apt install -y libgoogle-glog-dev libgflags-dev libatlas-base-dev libsuitesparse-dev wget https://github.com/ceres-solver/ceres-solver/archive/refs/tags/2.1.0.tar.gz tar -xzvf 2.1.0.tar.gz cd ceres-solver-2.1.0 mkdir build && cd build cmake .. make -j$(nproc) sudo make install

3. GICI-LIB编译与配置

3.1 源码获取与准备

克隆GICI-LIB仓库并准备编译环境:

git clone https://github.com/chichengcn/gici-open.git cd gici-open mkdir build cd build

3.2 解决常见编译问题

在Ubuntu 22.04上编译时可能会遇到以下问题及解决方案:

  1. yaml-cpp版本冲突

    • 确保系统中没有其他版本的yaml-cpp
    • 使用sudo updatedb && locate yaml-cpp检查
    • 删除所有非0.6.0版本的相关文件
  2. Ceres Solver链接错误

    • 在CMakeLists.txt中添加:
      find_package(Ceres REQUIRED) include_directories(${CERES_INCLUDE_DIRS})
  3. Eigen3路径问题

    • 确保Eigen头文件在标准路径:
      sudo cp -r /usr/include/eigen3/Eigen /usr/local/include

3.3 编译命令

执行以下命令进行编译:

cmake .. -DCMAKE_BUILD_TYPE=Release make -j$(nproc)

编译成功后,您将看到类似以下输出:

[100%] Built target gici_main

4. ROS2封装与运行

4.1 创建ROS2工作空间

mkdir -p ~/gici_ros2_ws/src cd ~/gici_ros2_ws/src cp -r /path/to/gici-open/ros_wrapper/gici_ros . cd ..

4.2 修改ROS2适配文件

需要更新部分CMake配置以适应ROS2环境:

  1. 修改package.xml

    <depend>rclcpp</depend> <depend>sensor_msgs</depend> <depend>nav_msgs</depend>
  2. 更新CMakeLists.txt

    find_package(ament_cmake REQUIRED) find_package(rclcpp REQUIRED) find_package(sensor_msgs REQUIRED)

4.3 编译ROS2节点

cd ~/gici_ros2_ws colcon build --cmake-args -DCMAKE_BUILD_TYPE=Release source install/setup.bash

5. 数据集测试与性能评估

5.1 获取测试数据集

cd ~/gici-open git clone https://github.com/chichengcn/gici-open-dataset.git gici-dataset

5.2 配置文件修改

编辑对应的YAML配置文件,主要修改以下参数:

data_directory: "/home/user/gici-open/gici-dataset" gici_root_directory: "/home/user/gici-open" output_directory: "/home/user/gici-open/output"

5.3 运行测试

非ROS模式运行:

cd ~/gici-open/build ./gici_main ../option/pseudo_real_time_estimation_RTK_TC.yaml

ROS2模式运行:

ros2 run gici_ros gici_ros_main ~/gici-open/option/ros_real_time_estimation_TC.yaml

5.4 结果可视化

安装RTKPLOT工具进行结果分析:

sudo apt install -y gnuplot cd ~/gici-open/output gnuplot -e "plot 'solution.txt' using 1:2 with lines"

6. 高级配置与优化技巧

6.1 多传感器数据同步

GICI-LIB支持多种时间同步模式,在配置文件中可以设置:

time_synchronization: enable: true mode: "hardware" # 可选"hardware"或"software" reference_clock: "gps" # 参考时钟源

6.2 因子图优化参数调整

对于不同的应用场景,可以调整优化器参数:

optimization: max_iterations: 20 linear_solver_type: "sparse_normal_cholesky" trust_region_strategy_type: "levenberg_marquardt" initial_trust_region_radius: 1e4

6.3 实时性能优化

对于资源受限的平台,可以启用以下配置:

performance: enable_schur_complement: true enable_marginalization: true thread_number: 4 # 根据CPU核心数调整

7. 实际应用案例

7.1 自动驾驶车辆定位

在自动驾驶场景中,GICI-LIB可以配置为紧组合模式:

solution: type: "tightly_coupled" sensors: - "gnss" - "ins" - "camera" output_rate: 100 # Hz

7.2 无人机导航系统

针对无人机应用,建议启用运动约束:

motion_constraints: enable: true no_slip: true # 假设无侧滑 zero_vertical_velocity: false # 无人机有垂直运动

7.3 室内外无缝定位

结合UWB等传感器,实现室内外无缝切换:

sensor_fusion: primary: "gnss" # 室外使用GNSS secondary: "uwb" # 室内切换为UWB transition_threshold: 30 # dB-Hz

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询