Code Monkey home page Code Monkey logo

Comments (9)

Portagoras avatar Portagoras commented on July 28, 2024 2

The author was so nice to make their paper publicly available:
https://www.researchgate.net/publication/339904498_Low_computation_in-device_geofencing_algorithm_using_hierarchy-based_searching_for_offline_usage

from trail-sense.

Portagoras avatar Portagoras commented on July 28, 2024 1

I hid my own comment, cause it was suggesting the same feature you suggested :) I basically thought of the same thing when In read it. Might be a nice followup paper actually :)

from trail-sense.

Portagoras avatar Portagoras commented on July 28, 2024

Just cause I sumbled over it, here is a link to a research paper from IEEE about an efficient geofencing algorithm.
Low computation in-device geofencing algorithm using hierarchy-based searching for offline usage

Can probably contact the author via research gate to check if he would provide the paper for free for the project, cause it fits kinda well into the problem.

Edit:
I had a quick fly over the paper (can access IEEE over my student licence). It sounds pretty promising as a concept. It can definetly be improved for the use in Trail Sense to use less computation when checking if you are still outside of a zone. Won't go into detail for now, as the contents of the paper are still protected :) I can hit up the author and ask if he wants to provide the paper for this project.

from trail-sense.

kylecorry31 avatar kylecorry31 commented on July 28, 2024

@Portagoras thank you, that would be great!

from trail-sense.

kylecorry31 avatar kylecorry31 commented on July 28, 2024

@Portagoras thank you for reaching out to the author! That is great news, I will give it a read.

from trail-sense.

kylecorry31 avatar kylecorry31 commented on July 28, 2024

I read through the paper and it is a very interesting topic. The method described seemed to be focused around computational efficiency (time complexity and frequency of recalculation), but it didn't seem to talk about frequency of the trigger (ex. how frequent to wake up and poll the GPS). This approach may be useful to implement if there are a lot of geofences set up, though I'm not sure I'm too concerned about there being a lot yet in Trail Sense. But I am interested in seeing if this will benefit the nearby beacons filtering - currently I'm retrieving all beacons and filtering to those that are nearby, which is pretty inefficient. I could use a tree structure, like this paper describes, to more efficiently filter the beacons.

My main concern is how often the geofencing check will be triggered in the background.

My potential solution to this is that the delay becomes longer the further away from the geofences you are, with a min/max restriction on the frequency. For example, if I won't be able to travel to the nearest geofence within an hour, I shouldn't run the geofence algorithm again for another hour.

When the process is triggered, I could use a version of the algorithm described by the paper to check the geofences without needing to recalculate all distances, but I will need to do some performance tests with the naïve approach before implementing it.

If the paper did talk about this, but I missed it, please let me know.

from trail-sense.

Portagoras avatar Portagoras commented on July 28, 2024

I actually thought about the same issue and also think I found a pretty good solution or solutions.

1. Optimization

When the geofencing first triggers, it checks in what part of the tree you are. For now, let's focus on the root, so you are not in a geofence.
The first time it triggers, it finds the closest first-level region and retrieves the distance. Then we create a virtual geofence with a radius of the closest geofence. Now, whenever it triggers, we only need to check if we left that zone or if the tree changed. So we just eliminated all first-level computations. This should also work on any other level of the tree.

2. Optimization

Estimating speed is essential for this. We can use anything from accelerometers to short-range GPS usage.
When we know the size of our virtual fence, how far away we are from the center of it, and therefore how far away we are from the perimeter, and we know our speed, we can find intervals when we need to check the GPS again.
Example. Our virtual geofence-free zone is 10 km, and we are currently 2 km from the center, so the distance to the perimeter is 8km. When we are on foot, we travel something like 5 km/h, so we can easily wait over an hour for the next GPS check.
This could also be an energy-saving setting.

EDIT: I completly missed the section where you suggested basically the same. Therefore hidden.

from trail-sense.

Z3NOX avatar Z3NOX commented on July 28, 2024

Just a simple first idea about the trigger frequency: Wouldn't it be possible to just use an active backtrack as foundation for this problem? This way the user could decide for itself on which timescale the geofence will be reached and how precise the notification time has to be.

Potential problems/downsides:

  • At long backtrack intervals you potentially miss a relatively small fenced area, or cross it without being noticed.
  • You may want to have a larger backtrack interval than that you need for detecting your geofence entering.
  • What happens if your location cannot be detected at the time a backtrack record fires?

from trail-sense.

kylecorry31 avatar kylecorry31 commented on July 28, 2024

@Z3NOX that could be possible, and maybe a good initial implementation. My only concern is that they serve two different purposes. The geofence would be for navigation and reminders, while backtrack's main purpose it for retracing your steps. I think the two should operate independently, so that you don't need to record a path if you only want to be notified about the proximity to a beacon.

from trail-sense.

Related Issues (20)

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.