Difference between revisions of "Enhancing ARScale and CloudAnchor support to the MapMint4ME Android Application"

From OSGeo
Jump to navigation Jump to search
(48 intermediate revisions by the same user not shown)
Line 14: Line 14:
  
  
'''Link to Github repository:''' [[[https://github.com/aditis1204/MapMint4ME_shapes/tree/master/MapMint4ME_shapes Link]]]
+
'''Link to Github repository:''' [[https://github.com/aditis1204/MapMint4ME_GSoC Link]]
  
 
== Timeline ==
 
== Timeline ==
  
=== 4th May - 31st May ===
+
 
 +
 
 +
=== 4th May - 24th May ===
 
'''Community bonding period''':
 
'''Community bonding period''':
#'''What I have done during this period?'''
+
'''What I have done during this period?'''
 
* Joined MapMint Slack Workspace created by mentors which we will be used as a mode of communication over the GSoC 2020 period
 
* Joined MapMint Slack Workspace created by mentors which we will be used as a mode of communication over the GSoC 2020 period
 
* Introduced myself over the channel and shared my proposal over mailing list for suggestions
 
* Introduced myself over the channel and shared my proposal over mailing list for suggestions
Line 28: Line 30:
 
* Updated links on the wiki Google_Summer_of_Code_2020_Accepted page [[https://wiki.osgeo.org/wiki/Google_Summer_of_Code_2020_Accepted Link]]
 
* Updated links on the wiki Google_Summer_of_Code_2020_Accepted page [[https://wiki.osgeo.org/wiki/Google_Summer_of_Code_2020_Accepted Link]]
 
* Environment setup of MapMint4ME android application on my personal system on Android Studio.
 
* Environment setup of MapMint4ME android application on my personal system on Android Studio.
 +
* Gone through documentation of MapMint4ME Android Application.
 +
* Gone through documentation for MapMint web application.
 
* Gone through the working of the application user interface and code
 
* Gone through the working of the application user interface and code
 +
* Gone through working and setup which had implemented as part of last GSoC.
 +
* Analyze structure of MapMint4ME app and understand it thoroughly.
 +
* Discussed with the mentors their expectations over the GSoC 2020 project period.
 +
 +
'''What am I going to achieve for next week?'''
 +
* Implement basic Html UI elements in app.
 +
* Try to resolve firebase error which I am getting.
 +
* Try to implement basic  retrieve Location ability within MapMint4ME.
 +
 +
'''Is there any blocking issue?'''
 +
* Currently, I am stuck to connect android studio and firebase.
 +
* Getting constant error from firebase.
 +
 +
=== Week 1 - 5 (25th May - 28th June) === 
 +
'''Coding Phase 1''':
 +
* '''Week 1 (25th May- 31st May) ''' :
 +
'''What I completed this week?'''
 +
* Studied how to add location support in Android Application [https://developer.android.com/reference/android/location/package-summary Link]
 +
* Studied and implemented "Get Current Location in Android"[[https://javapapers.com/android/get-current-location-in-android/ Link]]
 +
* Tested the simple Location support added to Android Application [https://github.com/aditis1204/location/ Link]
 +
* Tested this location application on different android devices
 +
'''What am I going to achieve for next week?'''
 +
* Show number of satellites and their position relatively to the current position
 +
* Add this "Get Current Location" to MapMint4ME application
 +
'''Is there any blocking issue?'''
 +
* MapMint4ME have different language support while combining new part I have to take care of that
 +
 +
* '''Week 2 (1st June- 7th June) ''' :
 +
'''What I completed this week?'''
 +
* Studied more about GpsSatellite class[[https://developer.android.com/reference/android/location/GpsSatellite Link]] and GpsStatus class[[https://developer.android.com/reference/android/location/GpsStatus Link]]
 +
* Implemented module that shows number of satellites relatively to current position[[https://github.com/aditis1204/gps_final_satellite_tracker Link]]
 +
* Display both number of satellites used to fix location and total number of available satellites with respect to current Gps Coordinates
 +
* Tried to show satellites' position with respect to current position
 +
'''What am I going to achieve for next week?'''
 +
* Will complete implementation of satellites' position with respect to current position
 +
* Integrate GPS Coordinate finder and satellite tracking module to MapMint4ME app
 +
* Will test this module on different android devices
 +
'''Is there any blocking issue?'''
 +
* No blocking issue till now
 +
 +
* '''Week 3 (8th June- 14th June) ''' :
 +
'''What I completed this week?'''
 +
* I added the following methods which give more information regarding GPS satellites currently used to fix locations, Satellite information is required because MapMint4ME acquires data without internet
 +
* getPrn()  method returns pseudo random number for satellite
 +
* getAzimuth() method  returns azimuth of the satellite in degrees
 +
* getElevation() method returns  elevation of the satellite in degrees
 +
* getSnr() method returns signal to noise ratio
 +
* usedInFix() method returns Returns true if the satellite was used by the GPS engine when calculating the most recent GPS fix
 +
* Currently all above methods give outputs on the android studio console which can be seen at[[https://github.com/aditis1204/MapMint4ME_GSoC Link]]
 +
* Integrated last week’s work on MapMint4ME app, for this I created some UI elements and modified the edit.html file to integrate the GPS Satellite Information module 
 +
'''What am I going to achieve for next week?'''
 +
* To show output of getPrn(), getAzimuth(), getSnr(), getElevation(), usedInFix() on UI, discussion is going on with mentors about how we can display it on screen
 +
* Will integrate this in MapMint4ME
 +
* Test integration with different devices
 +
'''Is there any blocking issue?'''
 +
* No blocking issue till now
 +
 +
* '''Week 4 (15th June- 21st June) ''' :
 +
'''What I completed this week?'''
 +
* Added output of getPrn(), getAzimuth(), getSnr(), getElevation(), usedInFix() on UI[[https://drive.google.com/file/d/1h1D1-ByEKh6gICbEbXd75sDz5yggawIx/view?usp=sharing Link]]
 +
* Integrated this new module with existing MapMint4ME applicaton[[https://github.com/aditis1204/MapMint4ME_GSoC Link]]
 +
* Resolved all errors and warnings while integrating this new module with existing MapMint4ME
 +
* Tested MapMint4ME with new functionalities on different devices and it runs smoothly without crashing
 +
* Test video link for MapMint4ME with Satellite Information Module[[https://drive.google.com/file/d/1hI9aDYZhXPPDpbO3Qlk123EfDbt6Q0k_/view?usp=sharing Link]]
 +
'''What am I going to achieve for next week?'''
 +
* Will start working on the first objective i.e. storing AR Scene and visualizing it in app, discussion is going on with mentors regarding this. 
 +
'''Is there any blocking issue?'''
 +
* No blocking issue till now
 +
 +
* '''Week 5 (22nd June- 28th June) ''' :
 +
Unfortunately I lost one of my close relatives to Covid-19 this week, so wasn't able to do the coding work this week. I will certainly fill this gap in next week’s work.
 +
 +
'''What I completed this week?'''
 +
* Made pull request to MapMint4ME/gsoc-2020 branch[[https://github.com/mapmint/MapMint4ME/pull/4 Link]]
 +
* Pushed my implementation of Satellite information module on this new branch[[https://github.com/aditis1204/MapMint4ME Link]]
 +
* Discussed with mentors about how we can proceed with Task 1
 +
* After discussion with mentors we got to know, that there is no way we can store cloud anchors locally at present[[https://github.com/google-ar/sceneform-android-sdk/issues/505 Link]],[[https://stackoverflow.com/questions/56000273/is-it-possible-to-save-cloud-anchor-to-local-storage-for-using-it-later Link]]
 +
* ARKit allows to place 3d model accurately with respect to location but this is not possible with ARCore and Sceneform. So finally after discussion with mentors we will follow another approach for task 1
 +
* We will do AR Simulation. For this we will place a 3d object on the plane. Adjust its position, size according to the user's need. Accelerate or Rotate that object in the real world. We decided to follow this approach for task 1
 +
 +
'''What am I going to achieve for next week?'''
 +
* Start working on the plan mentioned above
 +
* Start coding for task 1
 +
'''Is there any blocking issue?'''
 +
* No blocking issue till now
 +
 +
=== Week 6 - 9 (29th June - 25th July) === 
 +
'''Coding Phase 2''':
 +
* '''Week 6 (29th June- 5th July) ''' :
 +
'''What I completed this week?'''
 +
* Studied about Sceneform and ARCore[[https://developers.google.com/sceneform/develop Link]]
 +
* Created a simple AR app in which the user will select which 3d object he/she wants to place on the surface virtually.  When the grid is detected, the user will just tap on the surface and that object will be placed on the surface virtually. More details can be found at[[https://github.com/aditis1204/ARSimulator Link]]
 +
* ARCore is supported by very limited devices[[https://developers.google.com/ar/discover/supported-devices Link]] and have tested on devices available to me
 +
'''What am I going to achieve for next week?'''
 +
* Write a function to accelerate(move/shift) 3d objects in the real world
 +
* Write a function to adjust the size of 3d objects in the real world
 +
* Test app on different ARCore compatible devices
 +
 +
'''Is there any blocking issue?'''
 +
* Currently I am taking 3d objects from [[https://poly.google.com/ Link]], converting that objects to sfa and sfb files using “Import sceneform” in android studio is not giving desired output
  
 
== Student's Biography ==
 
== Student's Biography ==

Revision as of 07:21, 5 July 2020

Introduction

Idea

MapMint4ME (MM4ME) is an android application with the capability to record data on the field without internet connectivity. It gives users the facility to store any kind of alphanumeric data. Users are able to take photos, record their position, and view their current location on a map based on the configuration settings of their MapMint server. When the user returns back to a place with access to the internet, the recorded data can be uploaded back to the MapMint server. In 2019, we added the AR support to the MapMint4ME. The support was to implement ARScale and CloudAnchor support to the MapMint4ME application. The CloudAnchor was used to implement anchors for representing virtual world object. In this project, we aims to Enhance ARScale and CloudAnchor support to MapMint4ME Android Application. MapMint4ME is an android application for MapMint web-service. MapMint is an internet-based Geographic Information System(GIS), designed to facilitate the deployment of Spatial Data Infrastructure(SDI). In an SDI, geographic data, metadata, tools, and the users are connected in an interactive manner in a framework so as to use the spatial information in an efficient and flexible way.

The MapMint is built on top of the ZOO-Project. The ZOO-Project is an SDI manager which gives the users the capability of building their own map and web-applications.

Project proposal

My proposal for GSoC 2020 can be found at: [proposal].

Advantages from this project

While capturing images, sometimes the user wants to add some extra information for more understanding. Current state allows the user to draw shapes and visualize changes in real time. But this AR scene will not be available once the app closes. So the idea is to store Anchors locally and the entire AR scene into some intermediate format which later can be used for visualization at some stage in future by the user hence helping to analyse the data at later stage. Also I am planning to calculate area of selected anchor space and display it to user in real time. Using this feature user will experience changes in real time. Also, planning to extend some UI features for representing GPS details so that we can integrate real world Lat-Long values to Virtual world AR anchors. This will improve process of information gathering.


Link to Github repository: [Link]

Timeline

4th May - 24th May

Community bonding period: What I have done during this period?

  • Joined MapMint Slack Workspace created by mentors which we will be used as a mode of communication over the GSoC 2020 period
  • Introduced myself over the channel and shared my proposal over mailing list for suggestions
  • Mentors setup initial video call for primary discussion and explained me about my tasks during Community Bonding Period.
  • Created a wiki page for the project "Enhancing ARScale and CloudAnchor support to the MapMint4ME Android Application"
  • Updated wiki User page and added my personal information [Link]
  • Updated links on the wiki Google_Summer_of_Code_2020_Accepted page [Link]
  • Environment setup of MapMint4ME android application on my personal system on Android Studio.
  • Gone through documentation of MapMint4ME Android Application.
  • Gone through documentation for MapMint web application.
  • Gone through the working of the application user interface and code
  • Gone through working and setup which had implemented as part of last GSoC.
  • Analyze structure of MapMint4ME app and understand it thoroughly.
  • Discussed with the mentors their expectations over the GSoC 2020 project period.

What am I going to achieve for next week?

  • Implement basic Html UI elements in app.
  • Try to resolve firebase error which I am getting.
  • Try to implement basic retrieve Location ability within MapMint4ME.

Is there any blocking issue?

  • Currently, I am stuck to connect android studio and firebase.
  • Getting constant error from firebase.

Week 1 - 5 (25th May - 28th June)

Coding Phase 1:

  • Week 1 (25th May- 31st May)  :

What I completed this week?

  • Studied how to add location support in Android Application Link
  • Studied and implemented "Get Current Location in Android"[Link]
  • Tested the simple Location support added to Android Application Link
  • Tested this location application on different android devices

What am I going to achieve for next week?

  • Show number of satellites and their position relatively to the current position
  • Add this "Get Current Location" to MapMint4ME application

Is there any blocking issue?

  • MapMint4ME have different language support while combining new part I have to take care of that
  • Week 2 (1st June- 7th June)  :

What I completed this week?

  • Studied more about GpsSatellite class[Link] and GpsStatus class[Link]
  • Implemented module that shows number of satellites relatively to current position[Link]
  • Display both number of satellites used to fix location and total number of available satellites with respect to current Gps Coordinates
  • Tried to show satellites' position with respect to current position

What am I going to achieve for next week?

  • Will complete implementation of satellites' position with respect to current position
  • Integrate GPS Coordinate finder and satellite tracking module to MapMint4ME app
  • Will test this module on different android devices

Is there any blocking issue?

  • No blocking issue till now
  • Week 3 (8th June- 14th June)  :

What I completed this week?

  • I added the following methods which give more information regarding GPS satellites currently used to fix locations, Satellite information is required because MapMint4ME acquires data without internet
  • getPrn() method returns pseudo random number for satellite
  • getAzimuth() method returns azimuth of the satellite in degrees
  • getElevation() method returns elevation of the satellite in degrees
  • getSnr() method returns signal to noise ratio
  • usedInFix() method returns Returns true if the satellite was used by the GPS engine when calculating the most recent GPS fix
  • Currently all above methods give outputs on the android studio console which can be seen at[Link]
  • Integrated last week’s work on MapMint4ME app, for this I created some UI elements and modified the edit.html file to integrate the GPS Satellite Information module

What am I going to achieve for next week?

  • To show output of getPrn(), getAzimuth(), getSnr(), getElevation(), usedInFix() on UI, discussion is going on with mentors about how we can display it on screen
  • Will integrate this in MapMint4ME
  • Test integration with different devices

Is there any blocking issue?

  • No blocking issue till now
  • Week 4 (15th June- 21st June)  :

What I completed this week?

  • Added output of getPrn(), getAzimuth(), getSnr(), getElevation(), usedInFix() on UI[Link]
  • Integrated this new module with existing MapMint4ME applicaton[Link]
  • Resolved all errors and warnings while integrating this new module with existing MapMint4ME
  • Tested MapMint4ME with new functionalities on different devices and it runs smoothly without crashing
  • Test video link for MapMint4ME with Satellite Information Module[Link]

What am I going to achieve for next week?

  • Will start working on the first objective i.e. storing AR Scene and visualizing it in app, discussion is going on with mentors regarding this.

Is there any blocking issue?

  • No blocking issue till now
  • Week 5 (22nd June- 28th June)  :

Unfortunately I lost one of my close relatives to Covid-19 this week, so wasn't able to do the coding work this week. I will certainly fill this gap in next week’s work.

What I completed this week?

  • Made pull request to MapMint4ME/gsoc-2020 branch[Link]
  • Pushed my implementation of Satellite information module on this new branch[Link]
  • Discussed with mentors about how we can proceed with Task 1
  • After discussion with mentors we got to know, that there is no way we can store cloud anchors locally at present[Link],[Link]
  • ARKit allows to place 3d model accurately with respect to location but this is not possible with ARCore and Sceneform. So finally after discussion with mentors we will follow another approach for task 1
  • We will do AR Simulation. For this we will place a 3d object on the plane. Adjust its position, size according to the user's need. Accelerate or Rotate that object in the real world. We decided to follow this approach for task 1

What am I going to achieve for next week?

  • Start working on the plan mentioned above
  • Start coding for task 1

Is there any blocking issue?

  • No blocking issue till now

Week 6 - 9 (29th June - 25th July)

Coding Phase 2:

  • Week 6 (29th June- 5th July)  :

What I completed this week?

  • Studied about Sceneform and ARCore[Link]
  • Created a simple AR app in which the user will select which 3d object he/she wants to place on the surface virtually. When the grid is detected, the user will just tap on the surface and that object will be placed on the surface virtually. More details can be found at[Link]
  • ARCore is supported by very limited devices[Link] and have tested on devices available to me

What am I going to achieve for next week?

  • Write a function to accelerate(move/shift) 3d objects in the real world
  • Write a function to adjust the size of 3d objects in the real world
  • Test app on different ARCore compatible devices

Is there any blocking issue?

  • Currently I am taking 3d objects from [Link], converting that objects to sfa and sfb files using “Import sceneform” in android studio is not giving desired output

Student's Biography

My name is Aditi Mohan Sawant. I am a Computer Science graduate from Mumbai University with CPI 8.81, pursuing my Master's degree in Geoinformatics and Natural Resources Engineering under Centre of Studies in Resources Engineering, Indian Institute of Technology Bombay, Mumbai, India. Some more information about me can be obtained by following the link: [Link]


Mentors