VIOLA(Vision-Imu-Odometry LibrAry) is a versatile C++ library for vision/robotics system. We try to build it as a common basic library for vision/robotics packages.
VIOLA(Vision-Imu-Odometry LibrAry) is a versatile C++ library for vision/robotics system. We try to build it as a common basic library for vision/robotics packages. Someone can easily add part of source files into their project if they only want to use several functions and don't want to import the whole library.
It contains:
This repo is a treasure chest for SLAM/AR/VIO/Robotics researchers.
exists, mkdir, listdir, join, splitext
. Similar usage to os in python.cv::viz::Viz3D
.Filename | Need Eigen | Need OpenCV | Details |
---|---|---|---|
vs_align.h | √ | pixel align using direct method in VSLAM | |
vs_argparse.h | A modified version of https://github.com/tanakh/cmdline | ||
vs_basic.h | macros, numerics utils, vector utils, string utils | ||
vs_calib.h | √ | √ | mono/stereo calibration data structure, camera-odometry hand-eye calibration. |
vs_cam_cap.h | √ | camera capture using opencv, capture image with rolling buffer in real-time, auto save video. | |
vs_color_adjust.h | √ | Adjust image color style to reference image style, such as: histogram matching, color statistic matching. | |
vs_color_filter.h | √ | label image to mask with specific color such as:red, yellow, white. | |
viola.h | √ | √ | |
vs_cv_convert.h | √ | data convertion between Eigen and opencv. | |
vs_cv_io.h | √ | file I/O for OpenCV mat | |
vs_data.h | useful data structure(FIFO, FILO, max heap, circular queue), atom/locked data buffer, sychronized time buffer, median/mean/exponetial filter, asynchronized data saver. | ||
vs_data_recorder.h | √ | general data recorder for image (into video or file) and string content (into file), asynchronized. | |
vs_debug_draw.h | √ | draw keypoints, feature tracking, mask, camera pose in 2D image with OpenCV. image hstack/vstack/gridstack. | |
vs_eigen_io.h | √ | file I/O for Eigen dense/sparse matrix. | |
vs_encrypt.h | string content encrypting/decrypting. | ||
vs_fbx.h | √ | wrapper of fbxsdk for fbx reading/writing. | |
vs_feature.h | √ | detect and track 2D point feature between consecutive frames. | |
vs_feature_line.h | √ | detect and track 2D line feature between consecutive frames | |
vs_g2o_solver.h | √ | √ | g2o wrapper for PnP, Graph-SLAM. |
vs_geometry2d.h | √ | geometry for 2D point, line, rect. | |
vs_geometry3d.h | √ | geometry for 3D transformation and 6 DoF pose. | |
vs_gridmap.h | 2D/3D grid map buffer | ||
vs_improc.h | √ | color conversion, region filter, alpha blending, histogram matching | |
vs_imsaver.h | √ | save image file in an asynchronous manner | |
vs_imtrans.h | √ | universal image transformation for image processing | |
vs_imu.h | √ | √ | IMU numerical integration, pre-integration, ZUPT trigger. |
vs_json.h | wrapper for json11 | ||
vs_kdtree.h | implemention of KD-tree and nereast search. | ||
vs_lane_detect.h | √ | detect lane with specific color. | |
vs_line_match.h | √ | √ | 2D line segment matching and alignment |
vs_logger.h | a lightweight logger which output message to screen, file as well as user callbacks. | ||
vs_mapping.h | 2D/3D grid mapping using rolling buffer, local map is used for obstacle avoidance | ||
vs_mesh.h | √ | 3D mesh data | |
vs_os.h | cpu handle, file utils, path utils which is similar to os.path in python. | ||
vs_panorama.h | √ | convert equirectangular panorama image to perspective local view with camera intrinsic and extrinsic. | |
vs_perf.h | performance evaluation for algorithms time cost. | ||
vs_pf.h | a template particle filter with importance/weighted resampling. | ||
vs_plot.h | √ | s simple 2D plot lib implemented by OpenCV, Similar usage to Matlab or matplotlib.pyplot in python. | |
vs_pnp.h | √ | perspective-n-points algorithms, closed form for translation-only pnp, pnl, as well as 4-Dof pnp, pnl. | |
vs_random.h | random generator and sampling. Similar to numpy.random in python | ||
vs_raycast.h | 2D/3D line voxel tracersal using Bresenham's algorithm | ||
vs_rot.h | conversion between quaternion(w, x, y, z), eular(yaw, pitch, roll) and rotation matrix | ||
vs_sfm.h | √ | √ | Structure-from-motion in vision initialization |
vs_stb_image.h | √ | Image reading/writing using stb_image api, same use as cv::imread/cv::imwrite. | |
vs_tag.h | √ | detect 2D tags in image, support chessboard, apriltag, ARUCO. | |
vs_tictoc.h | evaluate the time cost. | ||
vs_tracking.h | √ | 2D boundingbox tracking based on point features. | |
vs_triangulate.h | √ | two-view/multi-view triangulation | |
vs_video_saver.h | √ | save video in an asynchronous manner. | |
vs_vio_data_loader.h | √ | √ | VIO dataset loader for EuROC, KITTI, TUM-VIO, UZH-VIO as well as inner format. |
vs_vio_data_saver.h | √ | Recorder VIO data in inner format. | |
vs_vio_type.h | √ | common data structure in VIO | |
vs_viz3d.h | √ | 3D visulization based on cv::Viz in an asynchronous manner. | |
vs_yaml_parser.h | √ | param reader and writer of file in Yaml format, based on opencv. |
2D Plot | Debug Draw |
---|---|
Feature Detection and Tracking | Tag Detection |
---|---|
Panorama | Color Adjustment |
---|---|
2D grid mapping | 3D grid mapping |
---|---|
mkdir build
cd build
cmake ..
make -j
sudo make install
The source code is released under GPLv3 license.
This library is not full tested. Please send any feedback or bugreports to Shuyuan Mao <[email protected]>.
For commercial inquiries, please contact Shuyuan Mao <[email protected]>.