π± Robust VSLAM Using Mobile Data Streaming (#213)
November 11, 2024 Β· View on GitHub
Submitted by: Hazem Mohsen Abdelaziz
Under Supervision of Prof: Mohamed Ibrahim Awad
[Mechatronics Department - Faculty of Engineering, Ain Shams University]
π οΈ Project Overview
"Robust VSLAM Using Mobile Data Streaming" is a MATLAB-based solution for visual simultaneous localization and mapping (VSLAM) and pose estimation using mobile device data. This project utilizes MATLAB's App Designer tool to create an interactive user interface, allowing users to seamlessly switch between multiple modes designed for both indoor and outdoor VSLAM operations. The application combines camera and IMU data for indoor localization, while GPS data enhances outdoor pose estimation. The project includes three modes:
- π Indoor VSLAM: Fuses camera and IMU data for localization and mapping in indoor environments with relatively low speed of motion to pose estimation modes.
- π Outdoor Pose Estimation Using Streaming: Provides outdoor pose estimation by streaming GPS data from a mobile device and live processing.
- π Outdoor Pose Estimation Using Logged Data: Enables pose estimation using pre-recorded GPS data for outdoor scenarios.
Visit project video to see all modes operating at: https://youtu.be/57rX5jPZ314
βοΈ Application Modes of Operation
π Mode 1: Indoor VSLAM
- Description: Uses visual-inertial fusion for indoor SLAM.
- Data Sources: Mobile camera snaps and IMU data streamed.
- Output: Indoor features map and pose estimation based on fused data.
π Mode 2: Outdoor Pose Estimation Using Logged Data
- Description: Uses logged GPS data for outdoor pose estimation.
- Data Sources: Pre-recorded sensorlog file.
- Output: Playback-based outdoor pose estimation, useful for testing and analysis.
π Mode 3: Outdoor Pose Estimation Using Streaming
- Description: Real-time outdoor pose estimation with live-streamed GPS data.
- Data Sources: Streamed GPS data from a mobile device.
- Output: Real-time outdoor pose estimation using GPS.
πΊοΈ Reference Frames
For the outdoor pose estimation, the first GPS coordinates streamed/logged is the motion reference with ENU axis.
and for VSLAM mode, the reference frame is the first key frame added with reference axis as shown in the figure below.
βοΈ Application Setup
- clone the repository locally.
- open matlab and add path of "<Project_Path>/application" directory.
- to save path permenantly, locate pathdef.m script and enable writing permission.
- savepath to avoid redoing the previous step everytime Matlab opens.
- "Or simply you can avoid steps 2, and 3 and insert addpath line to startup.m script.
- Locate the
.mlappinstall and double click to install the app. - After installation, you can now access the application in the "APPS" panel, under "MY APPS".
π Project Hierarchy
The following is the folder structure of the project, highlighting key files and directories:
Project_Root/
βββ application/ # App Designer files for the user interface
β βββ SLAM_PoseEstimation_Application.mlapp # Main app file developed in MATLAB's App Designer
β βββ SLAM_PoseEstimation_Application.mlappinstall # Generated installation file for the application
β βββ Logo.gif # gif file containing Matlab logo to be displayed in application
β βββ SLAM_PoseEstimation_Application.prj # Generated project file that organizes, manages dependencies, packaging, etc...
βββ calibration/ # Directory for calibration parameters and scripts
β βββ cameraCalib.mlx # Script that is used to calibrate and store mobile camera parameters
β βββ imuCalib.m # Script used to calibrate IMU externally
β βββ imu_params.mat # File that includes personal IMU parameters as an example
β βββ mobile_camera_params.mat # File that includes personal mobile camera parameters as an example
βββ individualScripts/ # Trial scripts for application modes separately
β βββ monoVSlamCapturing.mlx # Trial script for indoor VSLAM operations and features visualization
β βββ GPSUpdate.mlx # Trial Script for outdoor map update using logged GPS data
βββ README.md # Project documentation
π₯οΈ User Interface
The projectβs user interface is built with MATLAB's App Designer, providing an organized and user-friendly experience. Through this interface, users can:
- Switch Between Modes: Easily select the desired mode of operation, with each mode offering specific options and data visualizations.
- View Real-Time Data: Visualize GPS, camera, and IMU data in real-time.
- Control Mode Operations: Adjust settings for each mode and view results directly within the app with availability to save output of each mode locally.
π» System Requirements
-
MATLAB with:
- Computer Vision Toolbox
- Navigation Toolbox
-
Mobile Device with MATLAB Mobile for logging and streaming data
π Project References
This project builds on various tools, libraries, and resources. Below are the key references and resources used in the development:
-
MATLAB App Designer: Used for creating the interactive user interface.
-
MATLAB Mobile: Used for logging and streaming data from mobile devices.
-
Simultaneous Localization and Mapping (SLAM): The core concept used for mapping and localization.
-
Computer Vision Toolbox: Provides functions for image processing and computer vision algorithms used in the project.
-
Navigation Toolbox: Used for GPS-based outdoor localization and pose estimation.
-
Camera Calibration Toolbox: Used for calibrating cameras to obtain accurate measurements and improve vision-based applications.
-
MonoVSLAM Object: Utilized for visual SLAM (Simultaneous Localization and Mapping) using a single camera setup, allowing for real-time mapping and localization in an environment.
Feel free to explore these references for more in-depth understanding and background of the technologies and concepts used.