Giter Site home page Giter Site logo

evelynturri / ar-objects-relocation Goto Github PK

View Code? Open in Web Editor NEW
5.0 1.0 0.0 307.87 MB

Project for objects relocation in an AR environment, through the use of Lenovo ThinkRealityA3 smart glasses, Snapdragon spaces SDK and its spatial anchor feature.

License: MIT License

C# 58.04% ShaderLab 36.08% HLSL 5.88%
augmented-reality smart-glasses snapdragon unity snapdragon-spaces-sdk ar-foundation ar-anchor lenovo-thinkrealitya3 spatial-anchor

ar-objects-relocation's Introduction


AR Objects Relocation

The app aims to relocate objects in an AR environment, created in previous sessions, through the use of ThinkRealityA3 smart glasses and Snapdragon spaces SDK.



About the project ✨

This app is an AR project in which it is possible to see holograms in an AR environment through the use of Lenovo ThinkRealityA3 smart glasses. The aim of the project is to relocate objects in an indoor space, which have already been saved by the user in previous sessions. The relocation of the objects has been implemented through the use of Snapdragon Spaces SDK, which can save and upload AR anchors in an offline mode without using any online dataset tools.

The main point of the project is the use of AR Anchors, thanks to which we save the desired object in a certain point, and at the next use of the glasses, the app is able to track the AR anchors and so relocate the objects.

🔥 If you want to know more about the app, you can read all the details in the project's report 🔥

Requirements ❗

  • Lenovo ThinkRealityA3 Smart Glasses [link]
  • Motorola edge 30 pro or Motorola edge+ phones
  • Snapdragon Spaces SDK 0.11 [link]

⚠️ Any device working with Snapdragon Spaces SDK can be used with this project and application.

Getting started 🚀

  • Install Unity version 2020.3.40 (A different version is not guaranteed to work properly!)
  • Clone the repository
  • Open the project via Unity
  • Set up the Unity project as described in the website of the Snapdragon Spaces SDK documentation

Usage 🔥

For the users, who only want to try the application is sufficient to install the Release app via adb command.

For the users who want to see the code or the Unity project, is sufficient to open the project as described in the Getting started bullet points.

Organization of the app 📝

The application is structured in two modalities: the Admin mode and the Guest mode. As soon as the user enters the application, he/she can see a panel where to choose its modality and so continue the experience in the application:

GlobalMode

Admin

The admin mode is structured for the admin user, who decides how to augment the real world. The admin can:

  • create and save objects
  • completely clear the store and delete all the objects
  • load and see the objects in the store
AdminMode

Guest

In the Guest mode, it is only possible to load all the objects created by the admin and see them in the augmented world.

GuestMode

⚠️ Look around very well in the room, in order to make the glasses map the world and find the features to track the local anchors saved by the user. In this way, only once the smart glasses tracked the points, the holograms can be loaded to the user.

Implementation 💻

The project has been developed in Unity and all the code is written in C#. In the next subsections I will explain some implementation choices, made due to some problems or for better usage of the application.

Scenes structure

The project is structured in different scenes, in particular, there is a global scene where there are all the common tools to use over all the application, and then the other scenes are loaded as Additive scenes to the main one, through the command LoadSceneMode.Additive.

In the following diagram is explained how the scenes are connected.

ScenesDiagram

In the repository all the scenes can be found in Assets/Scenes. For each scene there is a folder with the same name and inside there is the specific scene and a subfolder with the scripts needed only fo that specific scene.

Local spatial anchors

In this project has been used the Local Spatial Anchors feature of the Snapdragon Spaces SDK. To each anchor many AR objects are connected to them and once the app can relocate an anchor, all the objects are loaded.

Holograms organization

If you want to use your personal AR objects you can do it by following the points in Section Hologram's organization of the report.

Problems ‼️

There are still some problems with the app, which are caused especially by the instability of Snapdragon Spaces SDK.

If you interface with one of the following problems, I recommend you to read the Section Problems in the report, where there is written how to handle them:

  • Application crash during usage
  • Difficulty in saving the objects

⚠️ Pay attention to close the application in the right way by triggering the button Quit. Do not remove the glasses until you see the phone’s graphic on the glasses. This step is crucial for saving the data in the right way.

Further works 🚩

  • Keep updated the SDK
  • Add hands in Admin mode
  • Additional features: Hit testing, Image Tracking, ...
  • Add AR marker-based feature, such as a QR Code

Contacts

If you have any doubt or specific requests you can contact me here Evelyn's LinkedIn !

Acknowledgments

Thanks to Lorenzo Orlandi (PhD student at the University of Trento) for having supervised me during the project.

And thanks to Arcoda s.r.l for giving me the opportunity to work with Lenovo ThinkRealityA3 smartglasses.

ar-objects-relocation's People

Contributors

evelynturri avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 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.