Giter Club home page Giter Club logo

ognis1205 / slam-at-home Goto Github PK

View Code? Open in Web Editor NEW
21.0 3.0 2.0 29.38 MB

Real-time SLAM System at Home.

TypeScript 62.05% SCSS 5.72% Makefile 0.78% Python 5.23% Jupyter Notebook 3.36% Swift 20.28% Ruby 0.04% Objective-C 1.44% Metal 0.18% Dockerfile 0.05% CSS 0.24% JavaScript 0.06% GLSL 0.56%
webrtc swift swiftui typescript nextjs react slam wgpu webgl machine-learning python rust tensorflow2 computer-vision kubernetes monocular-depth-estimation

slam-at-home's Introduction

SLAM@HOME

Join the chat at https://gitter.im/slam-at-home/community

An implementation of a real-time SLAM system over a local Wi-Fi network. This project was initially started for my self-learning purpose so the implementation is not production ready and may include performance issues and/or edge cases but I still believe this can be a code example for something like a DIY 3D scanner project or a DIY 3D survelliance system. Hope you will like it.

Architecture

This diagram illustrates the overall architecture of SLAM@HOME.

Implementation Notes

  1. React/Frontend

    All components (except the markdown parser and social buttons) are built upon the vanilla React library. Given that the purpose of this project is self-learning as I mentioned before and this frontend app is meant to be run on a nonmobile device, all these components were not implemented responsively. With that all being said though, these implementations may be replaced with ChakraUI-based ones in the near future.

  2. Express/Signaling

    This is the possibly simplest implementation of a signaling server for WebRTC. It only provides the minimal set of functionalities required to exchange Session Description Protocols for establishing peer connections.

  3. iOS/Camera

    A monocular depth estimater/sampler implementation for iOS. The estimated and/or sampled depth data is streamed via a peer connection to the frontend. The WebRTC SDK is GoogleWebRTC and the depth estimation is based on a machine learning model for now [4/17/2022] but this will be replaced with LiDAR camera due to the incompatible design of the SDK with AVFoundation causing performance issues. App Transport Security restrictions are disabled since the system is supposed to be deployed only on your local network.

  4. MLModels

    A collection of machine learning models which is used for iOS/Camera. This directory may be deprecated someday due to the reasons mentioned above.

  5. Wgpu/Core

    The SLAM core engine for reconstructing 3D models from the video stream. The engine will be implemented in Rust.

TODO

The following is a checklist of features and their progress:

  • Documentation
    • README
    • Wiki
  • DevOps
    • Dockerfile
    • Kubernetes
  • React/Frontend
    • WebRTC
    • SLAM
    • SfM
  • Express/Signaling
    • WebRTC Signaling
    • Device Detection
  • iOS/Camera
    • ML based Depth Sampler
    • CPU Monitor
    • LiDAR Camera over DataChannel
  • MLModels
    • Pydnet
  • Wgpu/Core
    • SLAM engine
  • Android
  • Video Server
    • Recording

slam-at-home's People

Contributors

dependabot[bot] avatar gitter-badger avatar ognis1205 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

slam-at-home's Issues

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.