Giter Site home page Giter Site logo

festu.navigator's Introduction

FESTU.Navigator

The project, developed for a FESTU university (city Khabarovsk) competition, implements AR navigation through the FESTU university buildings along a pre-created corridor graph. Work with AR is done entirely using the SceneView library

Video demonstration available below

The application builds routes between university classrooms. When launching the application, it is required to scan the number of the nearest classroom in order to set the starting point of the route. Classrooms number recognition performed using Google MLKit.

By default, the recognizable classroom number must be vertical and not contain letters in the name


It is required to confirm the recognized classroom number and its position in 3D space, since an error is possible in determining the planes around the user


Initialization is required to determine the user's current position relative to the saved classrooms graph. After initialization, the user can select both the start and end points of the route


The built route thanks to the SceneView AR library is displayed in 3D space in front of the user. Finding the shortest route is done using the A* algorithm, path smoothing is done using Bezier curves.


The classrooms graph is created manually by the application administrator through a special interface


Video demonstration

user_mode.mp4

Settings

You can change the path rendering distance (increase the number of nodes) and other settings, in festunavigator/presentation/preview/PreviewFragment.kt:

360 companion object {
361        //path rendering distance (number of nodes)
362        const val VIEWABLE_PATH_NODES = 21
363        //tree rendering distance, used only in admin mode
364        const val VIEWABLE_ADMIN_NODES = 5f
365        //how often the check for path and tree redraw will be
366        const val POSITION_DETECT_DELAY = 100L
367        //image crop for recognition
368        val DESIRED_CROP = Pair(8, 72)
369    }

You can change the classroom number template (first char must be a digit by standard) in festunavigator/data/ml/classification/TextAnalyzer.kt:

143    private fun filterFunction(text: Text.TextBlock): Boolean {
144        return text.text[0].isDigit()
145    }

Admin/User mode

To enable the audience graph editing mode, change the build variant to adminDebug or adminRelease:


By default, the application is installed with a pre-installed FESTU university classrooms graph. To run the application without a pre-installed graph, in festunavigator/domain/di/ModuleApp.kt find:

32 return Room.databaseBuilder(this, GraphDatabase::class.java, DATABASE_NAME)
33     .createFromAsset(DATABASE_DIR)
34     .allowMainThreadQueries()
35     .addMigrations()
36     .build()

Remove line - .createFromAsset(DATABASE_DIR):

32 return Room.databaseBuilder(this, GraphDatabase::class.java, DATABASE_NAME)
33     .allowMainThreadQueries()
35     .addMigrations()
34     .build()

Now you can run the app and experience it anywhere

Admin mode video demonstration

An example of setting up navigation in a new space is available here (the video is too long for github): https://drive.google.com/file/d/11a_lTeQmXhMfE2AxJ8mg5ec34yCC1uoH/view?usp=sharing

If you have any questions, you can email me: [email protected]

festu.navigator's People

Contributors

gebort avatar

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.