i2nav-whu / ob_gins Goto Github PK
View Code? Open in Web Editor NEWAn Optimization-Based GNSS/INS Integrated Navigation System
License: GNU General Public License v3.0
An Optimization-Based GNSS/INS Integrated Navigation System
License: GNU General Public License v3.0
请教关于文档中的noise, 与 vins之间的 noise单位上存在等价转换关系吗 , 对于系统有影响吗?
ob_gins:
arw: 0.24 # deg/sqrt(hr)
vrw: 0.24 # m/s/sqrt(hr)
gbstd: 50.0 # deg/hr
abstd: 250.0 # mGal
corrtime: 1.0 # hr
vins:
#imu parameters The more accurate parameters you provide, the better performance
acc_n: 0.1 # accelerometer measurement noise standard deviation.
gyr_n: 0.01 # gyroscope measurement noise standard deviation.
acc_w: 0.001 # accelerometer bias random work noise standard deviation.
gyr_w: 0.0001 # gyroscope bias random work noise standard deviation.
First I build following instruction, while undergoing cmake step, error occurs like :
CMake Error at CMakeLists.txt:41 (find_package):
By not providing "Findabsl.cmake" in CMAKE_MODULE_PATH this project has
asked CMake to find a package configuration file provided by "absl", but
CMake did not find one.
Could not find a package configuration file provided by "absl" with any of
the following names:
abslConfig.cmake
absl-config.cmake
Add the installation prefix of "absl" to CMAKE_PREFIX_PATH or set
And I run ccmake .. to modify the path of absl to '/home/gary/Source/abseil-cpp/build/'
The ccmake .. dorp error as:
include could not find load file:
/home/gary/Source/abseil-cpp/build/abslTargets.cmake
Call Stack (most recent call first):
CMakeLists.txt:38 (find_package)
我照着论文,看了源码,主要是preintegration_earth.cc这个文件。但有不清楚的地方,请问residualJacobianPose0,residualJacobianPose1函数内的雅可比矩阵是怎么得到的?还有residualJacobianMix0及residualJacobianMix1内的矩阵。实在没看明白,冒昧请教,请不吝赐教,拜谢。
想请教下在没有gnss观测的时刻,为什么还要固定时间间隔的添加预积分因子?
在两个gnss观测之间,做一个预积分与做多个预积分有什么不同,有什么依据吗
没有gnss全局约束,单靠多个imu预积分不是有累积误差吗?
I am trying to use the library however I run into this problem when using make, can anybody offer some help? Thank you!
__________$ make -j$(nproc)
[ 1%] Built target absl_civil_time
[ 2%] Built target absl_spinlock_wait
[ 3%] Built target absl_log_severity
[ 4%] Built target absl_raw_logging_internal
[ 5%] Built target absl_throw_delegate
[ 8%] Built target absl_base
[ 9%] Built target absl_int128
[ 11%] Built target absl_strings_internal
[ 18%] Built target absl_strings
[ 23%] Built target absl_time_zone
[ 26%] Built target absl_time
[ 30%] Built target absl_str_format_internal
[ 31%] Building CXX object CMakeFiles/ob_gins.dir/src/factors/pose_manifold.cc.o
In file included from ________/OB_GINS/src/factors/pose_manifold.cc:23:
________/OB_GINS/src/factors/pose_manifold.h:28:45: error: expected class-name before ‘{’ token
class PoseManifold : public ceres::Manifold {
^
________/OB_GINS/src/factors/pose_manifold.h:31:9: error: ‘int PoseManifold::AmbientSize() const’ marked ‘override’, but does not override
int AmbientSize() const override;
^~~~~~~~~~~
________/OB_GINS/src/factors/pose_manifold.h:32:9: error: ‘int PoseManifold::TangentSize() const’ marked ‘override’, but does not override
int TangentSize() const override;
^~~~~~~~~~~
________/OB_GINS/src/factors/pose_manifold.h:34:10: error: ‘bool PoseManifold::Plus(const double*, const double*, double*) const’ marked ‘override’, but does not override
bool Plus(const double x, const double delta, double x_plus_delta) const override;
^~~~
________/OB_GINS/src/factors/pose_manifold.h:35:10: error: ‘bool PoseManifold::PlusJacobian(const double, double) const’ marked ‘override’, but does not override
bool PlusJacobian(const double x, double jacobian) const override;
^~~~~~~~~~~~
________/OB_GINS/src/factors/pose_manifold.h:37:10: error: ‘bool PoseManifold::Minus(const double, const double, double) const’ marked ‘override’, but does not override
bool Minus(const double *y, const double x, double y_minus_x) const override;
^~~~~
________/OB_GINS/src/factors/pose_manifold.h:38:10: error: ‘bool PoseManifold::MinusJacobian(const double, double) const’ marked ‘override’, but does not override
bool MinusJacobian(const double *x, double *jacobian) const override;
^~~~~~~~~~~~~
make[2]: *** [CMakeFiles/ob_gins.dir/build.make:63: CMakeFiles/ob_gins.dir/src/factors/pose_manifold.cc.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:653: CMakeFiles/ob_gins.dir/all] Error 2
make: *** [Makefile:84: all] Error 2
In file included from /home/YOng/Downloads/OB_GINS-main/src/ob_gins.cc:32:
/home/YOng/Downloads/OB_GINS-main/src/factors/pose_parameterization.h:30:44: error: invalid use of incomplete type ‘class ceres::LocalParameterization’
class PoseParameterization : public ceres::LocalParameterization {
^~~~~~~~~~~~~~~~~~~~~
In file included from /usr/local/include/ceres/ceres.h:64,
from /home/YOng/Downloads/OB_GINS-main/src/factors/gnss_factor.h:27,
from /home/YOng/Downloads/OB_GINS-main/src/ob_gins.cc:30:
/usr/local/include/ceres/problem.h:56:7: note: forward declaration of ‘class ceres::LocalParameterization’
class LocalParameterization;
^~~~~~~~~~~~~~~~~~~~~
In file included from /home/YOng/Downloads/OB_GINS-main/src/ob_gins.cc:32:
/home/YOng/Downloads/OB_GINS-main/src/factors/pose_parameterization.h:35:10: error: ‘bool PoseParameterization::Plus(const double*, const double*, double*) const’ marked ‘override’, but does not override
bool Plus(const double x, const double delta, double x_plus_delta) const override {
^~~~
/home/YOng/Downloads/OB_GINS-main/src/factors/pose_parameterization.h:52:10: error: ‘bool PoseParameterization::ComputeJacobian(const double, double) const’ marked ‘override’, but does not override
bool ComputeJacobian(const double x, double jacobian) const override {
^~~~~~~~~~~~~~~
/home/YOng/Downloads/OB_GINS-main/src/factors/pose_parameterization.h:60:9: error: ‘int PoseParameterization::GlobalSize() const’ marked ‘override’, but does not override
int GlobalSize() const override {
^~~~~~~~~~
/home/YOng/Downloads/OB_GINS-main/src/factors/pose_parameterization.h:64:9: error: ‘int PoseParameterization::LocalSize() const’ marked ‘override’, but does not override
int LocalSize() const override {
^~~~~~~~~
/home/YOng/Downloads/OB_GINS-main/src/ob_gins.cc: In function ‘int main(int, char)’:
/home/YOng/Downloads/OB_GINS-main/src/ob_gins.cc:311:95: error: cannot convert ‘PoseParameterization’ to ‘ceres::LocalParameterization*’ in initialization
ceres::LocalParameterization parameterization = new (PoseParameterization);
^
/home/YOng/Downloads/OB_GINS-main/src/ob_gins.cc:313:63: error: no matching function for call to ‘ceres::Problem::AddParameterBlock(double [7], int, ceres::LocalParameterization&)’
parameterization);
^
In file included from /usr/local/include/ceres/ceres.h:64,
from /home/YOng/Downloads/OB_GINS-main/src/factors/gnss_factor.h:27,
from /home/YOng/Downloads/OB_GINS-main/src/ob_gins.cc:30:
/usr/local/include/ceres/problem.h:261:8: note: candidate: ‘void ceres::Problem::AddParameterBlock(double*, int)’
void AddParameterBlock(double* values, int size);
^~~~~~~~~~~~~~~~~
/usr/local/include/ceres/problem.h:261:8: note: candidate expects 2 arguments, 3 provided
/usr/local/include/ceres/problem.h:274:8: note: candidate: ‘void ceres::Problem::AddParameterBlock(double*, int, ceres::Manifold*)’
void AddParameterBlock(double* values, int size, Manifold* manifold);
^~~~~~~~~~~~~~~~~
/usr/local/include/ceres/problem.h:274:8: note: no known conversion for argument 3 from ‘ceres::LocalParameterization*’ to ‘ceres::Manifold*’
make[2]: *** [CMakeFiles/ob_gins.dir/build.make:104:CMakeFiles/ob_gins.dir/src/ob_gins.cc.o] 错误 1
make[1]: *** [CMakeFiles/Makefile2:83:CMakeFiles/ob_gins.dir/all] 错误 2
make: *** [Makefile:91:all] 错误 2
请Dr Tang考虑一下,谢谢。
非常高兴学习这篇代码, 以下有三个问题想请教武大朋友们
exploring the Accuracy Potential of IMU Preintegration in Factor Graph Optimization 关于这篇文章中的比较
以ekf与m2相比, 似乎单纯在gnss-imu融合中, 基于优化的方式没有太多优势?
关于2020这篇文章的差异
https://www.mdpi.com/2072-4292/12/18/3048
这篇似乎推导更以vins为基础去补偿地球自转,柯次力等,
不过结果与exploring the Accuracy Potential of IMU Preintegration in Factor Graph Optimization稍有不同,
请教是定义上有不同,需要做什么样的调整,如旋转顺序,imu定义方向不同等
vins:
#imu parameters The more accurate parameters you provide, the better performance
acc_n: 0.1 # accelerometer measurement noise standard deviation.
gyr_n: 0.01 # gyroscope measurement noise standard deviation.
acc_w: 0.001 # accelerometer bias random work noise standard deviation.
gyr_w: 0.0001 # gyroscope bias random work noise standard deviation.
请问OB_GINS使用的IMU数据采集系统是东北天(ENU)坐标系,但是OB_GINS在实现的时候使用的导航坐标系是NED北东地坐标系,在程序中 我没有看到哪里存在转换 还是IMU数据采集本身就是NED北东地坐标系?
I have seen in many of your papers that icm20602 datasets are in 200hz. I would like to know the raw imu sampling freqency. is imu samples (eg 1000hz) are trapzoidql integrated to achieve dvel and dtheta. Or it is a simple devided by 200 to represent dtheta and devel?
我想将里程计加入优化中,我们的imu是400Hz,里程计是10Hz.请问在组织imu文件时,imu和里程计时间不同步的数据行我是不是输出7列,时间同步的输出8列?
你好,近期使用及学习OB_GINS获益匪浅,然后看到18维状态变量数组包含了IMU比例因子误差及安装偏角误差,但是没有实现。之后是否会开源这一部分的预积分因子内容?
cmake ../ -DCAMKE_BUILD_TYPE=Release
should be DCMAKE
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.