前言
GICI-LIB是由上海交通大学池澄博士开源的GNSS/INS/Camera组合导航库
GICI-LIB原文链接:C. Chi, X. Zhang, J. Liu, Y. Sun, Z. Zhang, and X. Zhan, "GICI-LIB: A GNSS/INS/Camera Integrated Navigation Library," arXiv preprint, arXiv:2306.13268.
https://doi.org/10.48550/arXiv.2306.13268.
GICI-LIB有以下几个特点:
- 基于因子图优化(FGO),包含几乎所有的GNSS因子、惯导因子、视觉因子及运动约束;使用可靠的初始化、观测值稀疏化和异常值剔除算法。其中GNSS部分支持四大系统和全频率观测值
- 使用面向对象的C++语言开发,GICI-LIB设计的因子图优化器拓展性较好,易于添加其他传感器,可实例化成为任意一种鲁棒性较好的多传感器融合算法
- 多种算法支持:其中GNSS部分包括SPP、RTD、SDGNSS、RTK及PPP;组合算法包括SPP(RTK)/INS的松、紧组合,SPP(RTK)/INS/Camera的SRR、RRR(S-Solution,R-Raw)组合,其余组合算法如PPP/INS可由用户自行实例化
- 支持各种数据I/O,包括串口、TCP/IP、NTRIP、V4L2、文件和rostopic
- 支持多种格式信息的编、解码,包括RTCM2/3、Ublox、Septentrio、Novatel、Tersus的原始观测数据格式,NMEA, GNSS-DCB(差分码偏差)和ATX(天线校正)文件, image-pack, image-v4l2等相机格式、惯导的IMU-pack
环境安装
Ubuntu
GICI-LIB基于Ubuntu20.04开发,支持Ubuntu18.04、20.04和22.04,下面环境安装均以Ubuntu20.04为例(18.04同样,22.04需要ROS2,没有测试)
最好在新安装ubuntu操作系统后安装以下环境,如果有非源码安装或不同版本环境,建议先卸载干净。
查看gflags/glog/yaml-cpp环境:
locate gflags
locate glog
或者查看/usr/lib或/usr/local/lib路径下有没有对应的lib***.so环境,使用apt或源码make uninstall卸载干净。
Glog 0.6.0及以上版本
一定使用源码安装gflags和glog:
sudo git clone https://github.com/gflags/gflags.git
cd gflags/
mkdir build && cd build
cmake .. -DGFLAGS_NAMESPACE=google -DCMAKE_CXX_FLAGS=-fPIC ..
make -j8
sudo make install
sudo git clone https://github.com/google/glog
cd glog/
mkdir build && cd build
sudo cmake -DGFLAGS_NAMESPACE=google -DCMAKE_CXX_FLAGS=-fPIC -DBUILD_SHARED_LIBS=ON ..
sudo make -j8
sudo make install
Yaml-cpp0.6.0(0.7.0会报错)
下载Yaml-cpp 0.6.0源码:https://github.com/jbeder/yaml-cpp/tree/yaml-cpp-0.6.0
unzip yaml-cpp-yaml-cpp-0.6.0.zip
cd yaml-cpp-yaml-cpp-0.6.0
sudo mkdir build && cd build/
sudo cmake -DYAML_BUILD_SHARED_LIBS=on ..
sudo make -j8
sudo make install
ROS Noetic(可选,GICI可不依赖ROS运行)
建议使用鱼香ROS一键安装ROS:
wget http://fishros.com/install -O fishros && . fishros
安装完成后,再输入一次上面的一键安装命令,选择更新rosdepc。
Eigen 3.3及以上版本(随ROS Noetic安装)
如果不安装ROS:
先查看原版本eigen库的位置
vim /usr/include/eigen3/Eigen/src/Core/util/Macros.h
如果没有,跳到下一步直接安装新版本。
如果版本小于3.3,先卸载eigen3:
sudo rm -rf /usr/include/eigen3 /usr/lib/cmake/eigen3 /usr/share/doc/libeigen3-dev /usr/share/pkgconfig/eigen3.pc /var/lib/dpkg/info/libeigen3-dev.list /var/lib/dpkg/info/libeigen3-dev.md5sums
再安装新版本:
先下载eigen-3.4.0.tar.gz:Releases · libeigen / eigen · GitLab
sudo tar -xzvf eigen-3.4.0.tar.gz
cd eigen-3.4.0
mkdir build
cd build
sudo cmake ..
sudo make install
#安装后,头文件安装在/usr/local/include/eigen3/
# 移动头文件:
sudo cp -r /usr/local/include/eigen3/Eigen /usr/local/include
- - 在很多程序中include时经常使用#include <Eigen/Dense>;否则系统无法默认搜索到,build时会找不到;
- - 或者直接修改CmakeLists.txt中eigen3库的路径,include_directories( "/usr/local/include/eigen3" ),但太麻烦!
OpenCV 4.2.0及以上版本(随ROS Noetic安装)
如果不安装ROS:
先查看原版本OpenCV库的位置:
pkg-config --modversion opencv4
安装OpenCV:
参考:Ubuntu18.04 系统安装 OpenCv_ubuntu18.04安装opencv_街头卖艺小杨的博客-CSDN
Ceres 2.1.0及以上版本
查看Ceres版本:
打开/home或/root下的ceres-solver文件夹,打开package.xml文件,即可看到ceres版本
安装ceres:Installation — Ceres Solver
编译GICI-LIB
下载代码
git clone https://github.com/chichengcn/gici-open.git
编译
cd gici-open/
mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make -j8
出现以下界面,恭喜你,编译成功!
编译(ROS)
cd gici-open/ros_wrapper/
catkin_make -DCMAKE_BUILD_TYPE=Release
source ./devel/setup.bash
编译成功!
使用数据集运行GICI-LIB
下载gici-dataset:GitHub - chichengcn/gici-open-dataset: Land vehicle GNSS/INS/Camera dataset
放入<gici-root-directory>/gici-dataset路径下:
将yaml配置文件中的<data-directory>、<gici-root-directory>和<output-directory>分别换成gici-dataset、gici-open和gici-open/ouput的路径,在gici-open/build路径下使用
./gici_main ../option/pseudo_real_time_estimation_RTK_TC.yaml
即可运行gici-lib!
结果在output路径下,***_solution.txt文件可以直接用rtkplot打开查看结果:
使用ROS运行同理:文章来源:https://www.toymoban.com/news/detail-718210.html
source devel/setup.bash
rosrun gici_ros gici_ros_main ./src/gici/option/ros_real_time_estimation_***.yaml
如何使用GICILIB自带的工具和rviz实时显示结果
待更新。。。文章来源地址https://www.toymoban.com/news/detail-718210.html
到了这里,关于跑通GICI-LIB——上海交通大学开源GNSS/INS/Camera组合导航库的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!