标定需要以下代码
https://github.com/gaowenliang/imu_utils.git
https://github.com/gaowenliang/code_utils.git
要先将在code_utils下面找到sumpixel_test.cpp,修改#include "backward.hpp"为 #include “code_utils/backward.hpp”,再编译
。
因为imu_utils 依赖code_utils 所以选择只编译单独的包 要先编译code_utils
catkin_make -DCATKIN_WHITELIST_PACKAGES="code_utils" catkin_make -DCATKIN_WHITELIST_PACKAGES="imu_utils"
可能会提示没有ceres
首先需要安装ceres的依赖
sudo apt-get install cmake sudo apt-get install libgoogle-glog-dev sudo apt-get install libatlas-base-dev sudo apt-get install libeigen3-dev sudo apt-get install libsuitesparse-dev sudo add-apt-repository ppa:bzindovic/suitesparse-bugfix-1319687 sudo apt-get update sudo apt-get install libsuitesparse-dev
然后在官网下载ceres包 https://github.com/ceres-solver/ceres-solver
解压缩后
将该包移到home目录下
cd ceres-solver-1.14.0
mkdir build && cd build
cmake ..
make -j4
sudo make install
在编译ceres过程中可能出现没有gflags
git clone https://github.com/gflags/gflags.git cd gflags mkdir build && cd build cmake .. 进入gflags/build中,找到CMakeCache.txt 改为CMAKE_CXX_FLAGS:STRING=-fPIC export CXXFLAGS="-fPIC" && cmake .. && make VERBOSE=1 make -j4 sudo make install
因为gflasg是源码安装可能会遇到如下问题
/usr/bin/ld: /usr/local/lib/libgflags.a(gflags.cc.o): relocation R_AARCH64_ADR_PREL_PG_HI21 against symbol `_ZN22gflags_mutex_namespace5MutexD1Ev' which may bind externally can not be used when making a shared object; recompile with -fPIC /usr/local/lib/l
解决办法
如果已经执行完cmake make make install 则需要先卸载 sudo make unistall gflags
然后在按上面方法进行安装
ceres安装是否成功可以通过以下方式检测
pi@raspberry:~/ceres-solver-1.14.0$ build/bin/simple_bundle_adjuster data/problem-16-22106-pre.txt iter cost cost_change |gradient| |step| tr_ratio tr_radius ls_iter iter_time total_time 0 4.185660e+06 0.00e+00 1.09e+08 0.00e+00 0.00e+00 1.00e+04 0 2.72e-01 7.86e-01 1 1.062590e+05 4.08e+06 8.99e+06 5.36e+02 9.82e-01 3.00e+04 1 6.08e-01 1.39e+00 2 4.992817e+04 5.63e+04 8.32e+06 3.19e+02 6.52e-01 3.09e+04 1 5.71e-01 1.97e+00 3 1.899774e+04 3.09e+04 1.60e+06 1.24e+02 9.77e-01 9.26e+04 1 5.70e-01 2.54e+00 4 1.808729e+04 9.10e+02 3.97e+05 6.39e+01 9.51e-01 2.78e+05 1 5.69e-01 3.11e+00 5 1.803399e+04 5.33e+01 1.48e+04 1.23e+01 9.99e-01 8.33e+05 1 5.67e-01 3.67e+00 6 1.803390e+04 9.02e-02 6.35e+01 8.00e-01 1.00e+00 2.50e+06 1 5.69e-01 4.24e+00 Solver Summary (v 1.14.0-eigen-(3.3.4)-lapack-suitesparse-(5.1.2)-cxsparse-(3.1.9)-eigensparse-openmp-no_tbb) Original Reduced Parameter blocks 22122 22122 Parameters 66462 66462 Residual blocks 83718 83718 Residuals 167436 167436 Minimizer TRUST_REGION Dense linear algebra library EIGEN Trust region strategy LEVENBERG_MARQUARDT Given Used Linear solver DENSE_SCHUR DENSE_SCHUR Threads 1 1 Linear solver ordering AUTOMATIC 22106,16 Schur structure 2,3,9 2,3,9 Cost: Initial 4.185660e+06 Final 1.803390e+04 Change 4.167626e+06 Minimizer iterations 7 Successful steps 7 Unsuccessful steps 0 Time (in seconds): Preprocessor 0.513776 Residual only evaluation 0.252024 (7) Jacobian & residual evaluation 1.538697 (7) Linear solver 1.942833 (7) Minimizer 4.066401 Postprocessor 0.021063 Total 4.601241 Termination: CONVERGENCE (Function tolerance reached. |cost_change|/cost: 1.769760e-09 <= 1.000000e-06)
首先先将imu固定水平保持静止两小时,通过rosbag将数据保存
rosbag record /home/pi/ -a -O imu_raw.bag
录制完成后
重现数据并开始标定
rosbag play -r 200 imu_raw.bag
roslaunch imu_utils imu_test.launch
完成后会在imu_utils/data/中生成.yaml文件具体名字在imu_test.launch中修改
至于得到的.yaml文件如何使用尚不知,如有大神知道望不吝赐教。