Code Monkey home page Code Monkey logo

se2lam's Introduction

se2lam

On-SE(2) Localization and Mapping for Ground Vehicles by Fusing Odometry and Vision

Related Publication

  • Fan Zheng, Yun-Hui Liu. "Visual-Odometric Localization and Mapping for Ground Vehicles Using SE(2)-XYZ Constraints". Proc. IEEE International Conference on Robotics and Automation (ICRA), 2019 [pdf] [poster]

    To cite it in bib:

    @inproceedings{fzheng2019icra,
        author    = {Fan Zheng and Yun-Hui Liu},
        title     = "{Visual-Odometric Localization and Mapping for Ground Vehicles Using SE(2)-XYZ Constraints}",
        booktitle = {Proc. IEEE Int. Conf. Robot. Autom (ICRA)},
        year      = {2019},
    }
    

    result in rviz

Dependencies

  • ROS (tested on Kinetic/Melodic)

  • OpenCV 2.4.x / 3.1 above

  • g2o (2016 version)

Installing Dependencies

# Eigen (should install version 3.3.4-4)
sudo apt install libeigen3-dev

# g2o (2016)
git clone [email protected]:RainerKuemmerle/g2o.git
git checkout 20160424_git
cd g2o
mkdir build
cd build
cmake ../
sudo make install  # system-wide installation

When building g2o , the two warnings I got were "note: declared here EIGEN_DEPRECATED const unsigned int AlignedBit = 0x8" and something about "note: forward declaratiof of class ‘class g2o::World’”. se2lam still ran fine but any more warnings might be concerning.

Build

Build this project as a ROS package

Demo

  1. Download DatasetRoom.zip, and extract it. In a terminal, cd into DatasetRoom/.

    We prepare two packages of odometry measurement data, one is more accurate (odo_raw_accu.txt), the other less accurate (odo_raw_roug.txt). To use either one of them, copy it to odo_raw.txt in DatasetRoom/.

  2. Download ORBvoc.bin.

  3. Run rviz:

    roscd se2lam
    rosrun rviz rviz -d rviz.rviz
    
  4. Run se2lam:

    rosrun se2lam test_vn PATH_TO_DatasetRoom PATH_TO_ORBvoc.bin
    

Output

If running test_vn, the output is se2lam_kf_trajectory.txt, which is the final trajectory of keyframes. Each line contains key_frame_id x y z yaw (space deliminated) with units none, mm, mm, mm, rad. I'm pretty sure the keyframe ID is the same as the image number that created that keyframe, so if you know the timestamp of all of your images, you should know the timestamp of each line of the file.

Dataset Format

The Dataset folder has to contain:

  • odo_raw.txt: Odometry data with lines x y yaw (space deliminated) with units mm, mm, rad. Although not included in the file, the timestamp in which the odom data of each line of the txt file was obtained should be the same as the corresponding image in the image directory, i.e. line 0 of odo_raw.txt should be the odom data from the same timestamp in which 0.bmp was captured.
  • image directory: .bmp gray images named by sequential 0-indexed integers, i.e. 0.bmp, 1.bmp, 2.bmp...
  • config directory:
    • CamConfig.yml: calibration information of camera that captured the images in the image directory.
      • camera matrix: K matrix (camera intrinsics)
      • distortion_coefficients: D matrix (camera intrinsics)
      • rvec_b_c: rotation of camera with respect to vehicle expressed in Rodrigues angles (camera extrinsics)
      • tvec_b_c: translation of camera with respect to vehicle in mm (camera extrinsics)
    • Settings.yml: Unclear what most of this is used for, but important params:
      • fps: tracking frequency (I'm assuming this is frequency in which the odom and image data was captured.)
      • img_num: how many images/odom lines you have.
      • write_map_file_path and read_map_file_path: make sure these are paths that exist on your machine.

Related Project

izhengfan/se2clam
izhengfan/ORB_SLAM2

License

MIT

se2lam's People

Contributors

izhengfan avatar susanni avatar

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.