diff --git a/ReadMe.md b/ReadMe.md index ff3794c6b..161689f1a 100644 --- a/ReadMe.md +++ b/ReadMe.md @@ -1,9 +1,68 @@ -## Open VINS +# Open VINS -This is the documentation site for the Open VINS project. +Welcome to the Open VINS project! +The Open VINS project houses some core computer vision code along with a state-of-the art filter-based visual-inertial estimator. +The core filter is an [Extended Kalman filter](https://en.wikipedia.org/wiki/Extended_Kalman_filter) which fuses inertial information with sparse visual feature tracks. +These visual feature tracks are fused leveraging the [Multi-State Constraint Kalman Filter (MSCKF)](https://ieeexplore.ieee.org/document/4209642) sliding window formulation which allows for 3D features to update the state estimate without directly estimating the feature states in the filter. +Inspired by graph-based optimization systems, the included filter has modularity allowing for convenient covariance management with a proper type-based state system. +Please take a look at the feature list below for full details on what the system supports. +* Github project page - https://github.com/rpng/open_vins +* Documentation - TBD +* Publication reference - TBD + + + + +## Project Features + + +* Sliding window visual-inertial MSCKF +* Modular covariance type system +* Comprehensive documentation and derivations +* Five different feature representations + 1. Global XYZ + 2. Global inverse depth + 3. Anchored XYZ + 4. Anchored inverse depth + 5. Anchored MSCKF inverse depth +* Calibration of sensor intrinsics and extrinsics + * Camera to IMU transform + * Camera to IMU time offset + * Camera intrinsics +* Environmental SLAM feature + * OpenCV ARUCO tag SLAM features + * Sparse feature SLAM features +* Visual tracking support + * Monocular camera + * Stereo camera + * KLT or descriptor based +* Static IMU initialization (sfm will be open sourced later) +* Out of the box evaluation on EurocMav and TUM-VI datasets + + + + +## Credit / Licensing + +This code was written by the [Robot Perception and Navigation](https://sites.udel.edu/robot/) at the University of Delaware. +If you have any issues with the code please open an issue on our github page with relevant implementation details and references. +For researchers that have leveraged this work, please cite the following: +```bibtex +@article{TBD, + author = {}, + title = {}, + journal = {}, + volume = {}, + year = {2019}, +} +``` + + +The codebase is licensed under the [GNU General Public License v3 (GPL-3)](https://www.gnu.org/licenses/gpl-3.0.html). + diff --git a/docs/getting-started.dox b/docs/getting-started.dox index bee898d3d..88544e4a8 100644 --- a/docs/getting-started.dox +++ b/docs/getting-started.dox @@ -12,7 +12,7 @@ Please feel free to open an issue if you find any missing or areas that could be @section highlevel High-level overview -From a high level the system is build of a few features. +From a high level the system is build on a few key algorithms. At the core we have the `ov_core` which contains a lot of standard computer vision algorithms and utilities that anybody can use. Specifically it stores the following large components: diff --git a/ov_msckf/launch/display.rviz b/ov_msckf/launch/display.rviz new file mode 100644 index 000000000..ef1be55a7 --- /dev/null +++ b/ov_msckf/launch/display.rviz @@ -0,0 +1,291 @@ +Panels: + - Class: rviz/Displays + Help Height: 0 + Name: Displays + Property Tree Widget: + Expanded: + - /ARUCO Points1 + Splitter Ratio: 0.600000024 + Tree Height: 420 + - Class: rviz/Selection + Name: Selection + - Class: rviz/Tool Properties + Expanded: + - /2D Pose Estimate1 + - /2D Nav Goal1 + - /Publish Point1 + Name: Tool Properties + Splitter Ratio: 0.588679016 + - Class: rviz/Views + Expanded: + - /Current View1 + Name: Views + Splitter Ratio: 0.5 + - Class: rviz/Time + Experimental: false + Name: Time + SyncMode: 0 + SyncSource: Image +Toolbars: + toolButtonStyle: 2 +Visualization Manager: + Class: "" + Displays: + - Alpha: 0.5 + Cell Size: 1 + Class: rviz/Grid + Color: 112; 112; 115 + Enabled: true + Line Style: + Line Width: 0.0299999993 + Value: Lines + Name: Grid + Normal Cell Count: 0 + Offset: + X: 0 + Y: 0 + Z: 0 + Plane: XY + Plane Cell Count: 80 + Reference Frame: + Value: true + - Class: rviz/TF + Enabled: true + Frame Timeout: 60 + Frames: + All Enabled: true + cam0: + Value: true + global: + Value: true + imu: + Value: true + truth: + Value: true + Marker Scale: 0.5 + Name: TF + Show Arrows: false + Show Axes: true + Show Names: true + Tree: + global: + imu: + cam0: + {} + truth: + {} + Update Interval: 0 + Value: true + - Class: rviz/Image + Enabled: true + Image Topic: /ov_msckf/trackhist + Max Value: 1 + Median window: 5 + Min Value: 0 + Name: Image + Normalize Range: true + Queue Size: 2 + Transport Hint: raw + Unreliable: false + Value: true + - Alpha: 1 + Buffer Length: 1 + Class: rviz/Path + Color: 0; 255; 0 + Enabled: true + Head Diameter: 0.300000012 + Head Length: 0.200000003 + Length: 0.300000012 + Line Style: Billboards + Line Width: 0.00999999978 + Name: Path VIO + Offset: + X: 0 + Y: 0 + Z: 0 + Pose Color: 255; 85; 255 + Pose Style: None + Radius: 0.0299999993 + Shaft Diameter: 0.100000001 + Shaft Length: 0.100000001 + Topic: /ov_msckf/pathimu + Unreliable: false + Value: true + - Alpha: 1 + Buffer Length: 1 + Class: rviz/Path + Color: 0; 255; 255 + Enabled: true + Head Diameter: 0.300000012 + Head Length: 0.200000003 + Length: 0.300000012 + Line Style: Billboards + Line Width: 0.00999999978 + Name: Path GT + Offset: + X: 0 + Y: 0 + Z: 0 + Pose Color: 255; 85; 255 + Pose Style: None + Radius: 0.0299999993 + Shaft Diameter: 0.100000001 + Shaft Length: 0.100000001 + Topic: /ov_msckf/pathgt + Unreliable: false + Value: true + - Alpha: 0.5 + Autocompute Intensity Bounds: true + Autocompute Value Bounds: + Max Value: 10 + Min Value: -10 + Value: true + Axis: Z + Channel Name: intensity + Class: rviz/PointCloud2 + Color: 255; 255; 255 + Color Transformer: FlatColor + Decay Time: 10 + Enabled: true + Invert Rainbow: false + Max Color: 255; 255; 255 + Max Intensity: 4096 + Min Color: 0; 0; 0 + Min Intensity: 0 + Name: MSCKF Points + Position Transformer: XYZ + Queue Size: 10 + Selectable: true + Size (Pixels): 3 + Size (m): 0.00999999978 + Style: Points + Topic: /ov_msckf/points_msckf + Unreliable: false + Use Fixed Frame: true + Use rainbow: true + Value: true + - Alpha: 1 + Autocompute Intensity Bounds: true + Autocompute Value Bounds: + Max Value: 10 + Min Value: -10 + Value: true + Axis: Z + Channel Name: intensity + Class: rviz/PointCloud2 + Color: 255; 0; 0 + Color Transformer: FlatColor + Decay Time: 0 + Enabled: true + Invert Rainbow: false + Max Color: 255; 255; 255 + Max Intensity: 4096 + Min Color: 0; 0; 0 + Min Intensity: 0 + Name: SLAM Points + Position Transformer: XYZ + Queue Size: 10 + Selectable: true + Size (Pixels): 10 + Size (m): 0.00999999978 + Style: Points + Topic: /ov_msckf/points_slam + Unreliable: false + Use Fixed Frame: true + Use rainbow: true + Value: true + - Alpha: 1 + Autocompute Intensity Bounds: true + Autocompute Value Bounds: + Max Value: 10 + Min Value: -10 + Value: true + Axis: Z + Channel Name: intensity + Class: rviz/PointCloud2 + Color: 255; 170; 0 + Color Transformer: FlatColor + Decay Time: 0 + Enabled: true + Invert Rainbow: false + Max Color: 255; 255; 255 + Max Intensity: 4096 + Min Color: 0; 0; 0 + Min Intensity: 0 + Name: ARUCO Points + Position Transformer: XYZ + Queue Size: 10 + Selectable: true + Size (Pixels): 15 + Size (m): 0.00999999978 + Style: Points + Topic: /ov_msckf/points_aruco + Unreliable: false + Use Fixed Frame: true + Use rainbow: true + Value: true + Enabled: true + Global Options: + Background Color: 44; 44; 44 + Default Light: true + Fixed Frame: global + Frame Rate: 30 + Name: root + Tools: + - Class: rviz/Interact + Hide Inactive Objects: true + - Class: rviz/MoveCamera + - Class: rviz/Select + - Class: rviz/FocusCamera + - Class: rviz/Measure + - Class: rviz/SetInitialPose + Topic: /initialpose + - Class: rviz/SetGoal + Topic: /move_base_simple/goal + - Class: rviz/PublishPoint + Single click: true + Topic: /clicked_point + Value: true + Views: + Current: + Class: rviz/Orbit + Distance: 13.2469006 + Enable Stereo Rendering: + Stereo Eye Separation: 0.0599999987 + Stereo Focal Distance: 1 + Swap Stereo Eyes: false + Value: false + Focal Point: + X: 0.598126531 + Y: -3.16722274 + Z: 0.927125454 + Focal Shape Fixed Size: false + Focal Shape Size: 0.0500000007 + Invert Z Axis: false + Name: Current View + Near Clip Distance: 0.00999999978 + Pitch: 1.56979632 + Target Frame: + Value: Orbit (rviz) + Yaw: 1.49040389 + Saved: ~ +Window Geometry: + Displays: + collapsed: false + Height: 1056 + Hide Left Dock: false + Hide Right Dock: true + Image: + collapsed: false + QMainWindow State: 000000ff00000000fd00000004000000000000028700000402fc020000000cfb0000001200530065006c0065006300740069006f006e00000001e10000009b0000006100fffffffb0000001e0054006f006f006c002000500072006f007000650072007400690065007302000001ed000001df00000185000000a3fb000000120056006900650077007300200054006f006f02000001df000002110000018500000122fb000000200054006f006f006c002000500072006f0070006500720074006900650073003203000002880000011d000002210000017afb000000100044006900730070006c0061007900730100000000000001e5000000d700fffffffb0000002000730065006c0065006300740069006f006e00200062007500660066006500720200000138000000aa0000023a00000294fb00000014005700690064006500530074006500720065006f02000000e6000000d2000003ee0000030bfb0000000c004b0069006e0065006300740200000186000001060000030c00000261fb0000000a0049006d00610067006501000001eb000002170000001600fffffffb0000000a0049006d0061006700650100000136000001690000000000000000fb0000001a0054007200610063006b00200048006900730074006f0072007901000003ec000000160000000000000000fb0000000a0049006d00610067006501000001370000013e0000000000000000000000010000010f00000261fc0200000003fb0000001e0054006f006f006c002000500072006f00700065007200740069006500730100000041000000780000000000000000fb0000000a00560069006500770073000000000000000261000000ad00fffffffb0000001200530065006c0065006300740069006f006e010000025a000000b20000000000000000000000020000073f00000295fc0100000005fb0000000800430041004d003000000000000000020c0000000000000000fb0000000800430041004d00310000000000000002ef0000000000000000fb0000000800430041004d00320000000000000003850000000000000000fb0000000800430041004d003300000000000000073f0000000000000000fb0000000a00560069006500770073030000004e00000080000002e10000019700000003000005700000003efc0100000002fb0000000800540069006d00650000000000000005700000030000fffffffb0000000800540069006d00650100000000000004500000000000000000000004b20000040200000004000000040000000800000008fc0000000100000002000000010000000a0054006f006f006c00730000000000ffffffff0000000000000000 + Selection: + collapsed: false + Time: + collapsed: false + Tool Properties: + collapsed: false + Views: + collapsed: true + Width: 1855 + X: 65 + Y: 24