Giter VIP home page Giter VIP logo

wheel-ins's Introduction

Wheel-INS: A Wheel-mounted MEMS IMU-based Dead Reckoning System

IMU drifts quickly with time! Well...it's true, but what if we mount it on the wheel❓

In Wheel-INS, we proposed a dead reckoning sysytem for the wheeled robots using only one Wheel-mounted IMU. There are two major advantages of mounting IMU to the wheel: 1) The vehicle velocity can be directly obtained by the Wheel-IMU without wheel encoder; 2) The continuous rotation of the wheel can somewhat mitigate the error accumulation of the inertial navigation system because of rotation modulation.

💥News💥

🎉🎉 Oct. 2023 A completely new version of the code supporting both Linux and Windows is released!

🎉🎉 Nov. 2022 Wheel-INS has been extended to a SLAM solution! Check out our paper of Wheel-SLAM accepted to IEEE Robotics and Automation Letters. The source code is also released.

🎉🎉 Nov. 2022 Our paper on multiple IMUs-based wheeled robot localization (Wheel-INS2) has been accepted to IEEE Transactions on Intelligent Transportation Systems. Check it out!

🎉🎉 Aug. 2021 Wheel-INS has been accepted to IEEE Transactions on Vehicular Technology. Check it out!

Run it

1. Linux

We recommend you use the g++ compiler with Ubuntu 20.04. The build-essential libraries should be installed first:

sudo apt-get install cmake
sudo apt-get install build-essential

After preparing the compilation environment, you can clone the repository and run it as follows:

# Clone the repository
git clone [email protected]:i2Nav-WHU/Wheel-INS.git ~/

# Build Wheel-INS
cd ~/Wheel-INS
mkdir build && cd build

cmake ..
make -j10

# Run demo dataset
cd ~/Wheel-INS
./bin/Wheel-INS config/robot.yaml

2. Windows

Here we show how to run the code with Visual Studio Code (VSCode), but you can also use other IDEs, e.g., Visual Studio.

  • Install VSCode and the extensions: C/C++, C/C++ Extension Pack, CMake, and CMake Tools.
  • Install CMake and Microsoft Visual C/C++ Build Tools.
  • Open Wheel-INS with VSCode.
  • Set compiler: open the Command Palette (Ctrl+Shift+P) and type "CMake: Select a Kit", select the correct build tool according to your system.
  • Configure CMake: type and click "CMake: Configure" in the Command Palette.
  • Compile Project: type and click "CMake: Build" in the Command Palette.

Once an executable file Wheel-INS.exe is generated, the compilation is done. Then, you can run it via the terminal in VSCode as follows:

.\bin\Release\Wheel-INS.exe config/robot.yaml

You can then run plot.py in utils to plot the trajectory estimated by Wheel-INS as well as the raw Wheel-IMU data. Here is an example plot for the robot dataset.

Datasets

Two sets of example data with ground truth are provided (see dataset). Please refer to the ReadMe.pdf for details. If git clone is too slow, please try to download the .zip file directly.

Related Papers

Based on the study of Wheel-IMU, we have published three papers. 1) The original Wheel-INS paper where we proposed a wheel-mounted IMU-based dead reckoning system and investigated its characteristics. 2) A thorough and complete comparison on three different measurement models in Wheel-INS with both theoretical analysis and experimental illustration. 3) A multiple IMUs-based localization system for wheeled robots by obtaining different dynamic information of the vehicle and taking advantage of the relative spatial constraints among the inertial sensors.

If you find our studies helpful to your academic research, please consider citing the related papers.

  • X. Niu, Y. Wu and J. Kuang, "Wheel-INS: A Wheel-mounted MEMS IMU-based Dead Reckoning System," IEEE Transactions on Vehicular Technology, doi: 10.1109/TVT.2021.3108008, 2021. (pdf) (IEEE Xplore)
@ARTICLE{niu2021tvt,
  author={Niu, Xiaoji and Wu, Yibin and Kuang, Jian},
  journal={IEEE Transactions on Vehicular Technology}, 
  title={{Wheel-INS}: A Wheel-Mounted {MEMS IMU}-Based Dead Reckoning System}, 
  year={2021},
  volume={70},
  number={10},
  pages={9814-9825},
  doi={10.1109/TVT.2021.3108008}
}
  • Y. Wu, X. Niu and J. Kuang, "A Comparison of Three Measurement Models for the Wheel-mounted MEMS IMU-based Dead Reckoning System," IEEE Transactions on Vehicular Technology, doi: 10.1109/TVT.2021.3102409, 2021. (pdf) (IEEE Xplore)
@ARTICLE{wu2021tvt,
  author={Wu, Yibin and Niu, Xiaoji and Kuang, Jian},
  journal={IEEE Transactions on Vehicular Technology}, 
  title={A Comparison of Three Measurement Models for the Wheel-Mounted {MEMS IMU}-Based Dead Reckoning System}, 
  year={2021},
  volume={70},
  number={11},
  pages={11193-11203},
  doi={10.1109/TVT.2021.3102409}}
  • Y. Wu, J. Kuang and X. Niu, "Wheel-INS2: Multiple MEMS IMU-based Dead Reckoning System for Wheeled Robots with Evaluation of Different IMU Configurations," IEEE Transactions on Intelligent Transportation Systems, 2022. (pdf)(IEEE Xplore)
@ARTICLE{wu2022tits,  
    author={Wu, Yibin and Kuang, Jian and Niu, Xiaoji},  
    journal={IEEE Transactions on Intelligent Transportation Systems},   
    title={{Wheel-INS2}: Multiple {MEMS IMU}-Based Dead Reckoning System With Different Configurations for Wheeled Robots},   
    year={2022}, 
    pages={1-14},  
    doi={10.1109/TITS.2022.3220508}
}

License

The code is released under GPLv3 license.

Acknowledgement

We would like to thank the i2Nav group for sharing KF-GINS.

For any questions, please feel free to contact Mr. Yibin Wu (ybwu at whu.edu.cn) or Dr. Jian Kuang (kuang at whu.edu.cn).

wheel-ins's People

Contributors

benluo avatar i2nav avatar wang-lq avatar yibinwu avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

wheel-ins's Issues

代码报错

void getIMUparas(IMU_ConstPara * IMU, cv::FileStorage fs, cv::FileNode IMU_paras)
{
cv::FileNodeIterator it1 = IMU_paras.begin();
cv::FileNodeIterator it = ++IMU_paras.begin();
cv::FileNodeIterator it2 = --IMU_paras.end();
std::vector leverarm, odo_std;
标粗的代码出现以下问题:一元“--”:“cv::FileNodeIterator”不定义该运算符或到预定义运算符可接收类型的转换
请问是否遇到过同样的问题,如果遇到过,是如何解决的。感谢。

ubuntu实现过程中undefined reference to....

g++ cMatrix.cpp NavFunc.cpp main.cpp -o main /usr/bin/ld: /tmp/ccsZa4uf.o: in function main':
main.cpp:(.text+0x75): undefined reference to cv::FileStorage::FileStorage(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' /usr/bin/ld: main.cpp:(.text+0xae): undefined reference to cv::FileStorage::isOpened() const'
/usr/bin/ld: main.cpp:(.text+0x112): undefined reference to One_Sys_Main(cv::FileStorage)' /usr/bin/ld: main.cpp:(.text+0x11e): undefined reference to cv::FileStorage::~FileStorage()'
/usr/bin/ld: main.cpp:(.text+0x132): undefined reference to cv::FileStorage::~FileStorage()' /usr/bin/ld: main.cpp:(.text+0x1a1): undefined reference to cv::FileStorage::~FileStorage()'
/usr/bin/ld: main.cpp:(.text+0x1b9): undefined reference to cv::FileStorage::~FileStorage()' /usr/bin/ld: /tmp/ccsZa4uf.o: in function cv::FileStorage::FileStorage(cv::FileStorage const&)':
main.cpp:(.text.ZN2cv11FileStorageC2ERKS0[ZN2cv11FileStorageC5ERKS0]+0x17): undefined reference to vtable for cv::FileStorage' collect2: error: ld returned 1 exit status
我没有写cmaklist,而是直接手动编译g++ cMatrix.cpp NavFunc.cpp main.cpp -o main,但还是报错...尝试了很多方法依然不行.
希望可以得到你的帮助 @YibinWu

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.