REPOSITORY OVERVIEWLive repository statistics
★ 85Stars
⑂ 13Forks
◯ 0Open issues
◉ 85Watchers
71/100
OPENREPOHUB HEALTH SIGNALHealthy signals
A transparent discovery signal based on current public GitHub metadata.
Recent activity35% weight
100 Community adoption25% weight
36 Maintenance state20% weight
100 License clarity10% weight
0 Project information10% weight
67 This score does not audit code, security, maintainers, documentation quality, or suitability. Verify the repository and its current documentation before adoption.
README preview
VIOLA
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:
- Basic data structure such as: FIFO, fix-length-queue, rater, thread-safe variable, KD-tree, grid-map.
- Basic numeric functions and geometry functions for SLAM.
- Basic 2D SLAM algorithms such as: particle filter, grid mapping, ray casting.
- Basic VSLAM algorithms such as: calibration(mono, stereo, VIO), shape detection(circle, triangle rectangle), lane detection.
- Miscellaneous 'dirty works' for vision/robotics systems such as: file system, yaml, tictoc, data logger, debug draw, profiling. Thus make researcher focus on their algorithms.
This repo is a treasure chest for SLAM/AR/VIO/Robotics researchers.
Prerequisites
- C++ 11
- Eigen3
- OpenCV
- [optional] Boost: required by kd-tree and read-write lock.
- [optional] g2o: required by vs_g2o_solver for PnP and graph-slam.
- [optional] stb: required by vs_stb_image for image reading/writing without OpenCV.
What can we do?
- Basic
- Random Number: generating random number(int/double/array), shuffling, sampling. Similar usage to numpy.random in python.
- Timer/Tictoc: timer, tictoc, fps calculator, rater.
- Data Structure: singleton, 2D array, fixed length queue, circular queue, max/min value queue/stack, priority queue, atom buffer, exponential/median/mean filter, data saver, time buffer.
- Log: a simple logger which can output message to screen, file as well as any user-defined callback.
- File Operation:
exists, mkdir, listdir, join, splitext. Similar usage to os in python.
- 2D Plot: s simple 2D plot lib implemented by OpenCV, Similar usage to Matlab or matplotlib.pyplot in python.
- 3D Visualization: a simple 3D visualization lib implemented by
cv::viz::Viz3D.
- VSLAM/VIO
- VIO dataset loader: support EuROC, KITTI, TUM-VIO, UZH-VIO.
- VIO data recorder: Recorder camera and imu data.
- Feature Detection and Tracking: detect features in frame and tracking in concecutive frames.
- Triangulation: Solve feature 3D position with observations from known camera poses.
- PnPL: Perspective n-Points or Lines to solve camera pose from 3D-2D matches.
- Vision
- Image Processing: color transformation, alpha blending, histogram matching
- Object Tracking: 2D boundingbox tracking based on features.
- Shape Detection: detect special shape such as: circle, triangle, arrow, con-centric shape.
- Panorama: convert equirectangular panorama image to perspective local view with camera intrinsic and extrinsic
- SLAM/Robotics
- Particle Filter: a template particle filter with importance/weighted resampling.
- 2D/3D Grid Mapping: 2D/3D grid mapping with raycasting
- Wapper for exist open-source library
- cmdline: input argument parsing.
- kdtree: K-dimension tree, for nearest searching.
- stb: image reading/writing.
- yaml: Yaml file parser based on
cv::FileStorage.
- json: Json file parser.
- g2o: wrapper of g2o for easily building graph-SLAM or PnP problems
- fbxsdk: fbx file reading/writing.
Headers Summary
| 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 |
Demos
| Feature Detection and Tracking | Tag Detection |
|---|
| |
| 2D grid mapping | 3D grid mapping |
|---|
| |
How to use?
mkdir build
cd build
cmake ..
make -j
sudo make install
License
The source code is released under GPLv3 license.
This library is not full tested. Please send any feedback or bugreports to Shuyuan Mao <maoshuyuan123@gmail.com>.
For commercial inquiries, please contact Shuyuan Mao <maoshuyuan123@gmail.com>.