chgatla-microsoft / QRTracking

MRTK sample app for QRtracking
MIT License
75 stars 69 forks source link

QR-Code positions are cached or saved and reused at restart #29

Closed FelixWeichselgartner closed 3 years ago

FelixWeichselgartner commented 3 years ago

Hi,

I seem to have the behaviour, that on second (or later) execution the data from earlier runs is used. An example: I start the program in a room where 2 QR-Codes are placed. Now I go near them and let them be recognized by the Tracking tool. Now I close the program and remove one of the 2 QR-Codes. I open up the program again and even before any QR-Codes could be recognized by computer vision the positions are already marked (which means the Start() method of the QR-Code object was executed). After the QR-Code was recognized the position is adjusted to fit perfectly. However, the removed QR-Code stays and the pre-loaded/cached/saved position.

Im developing an application where I use QR-Codes to find objects and use the QR-Code data as identification. In the QR-Start method (after the QR-Code was recognized) I connect to the object. Therefore, it's an issue for me that object that are not here anymore still have their Start()-method executed.

Now to my question: Is this expected behaviour? I couldn't find any functions that would save the data. Or am I the only one to exeperience this. If this is expected, how can it be deactivated?

Further Information: Hololens2 Unity 2019 Visual Studio 2019 QRTracking version: I think my version is behind 3 commits of master as of today

Btw. I really like your project and it is an awesome base/foundation for others to build upon. Have a nice day. Kind regards Felix

FelixWeichselgartner commented 3 years ago

I not sure but maybe I figured out the issue.

It seems to me that (on hololens) when you tap on your wrist and open up the menu and then tap the home button the app is not closed and rather minimized. Then a window stays open. If you now open a new instance of the app, it seems to use the data from the other still open app. I think if I close the other window before I start a new instance of the app i think the issue does not occure.

So maybe this is a HoloLens problem?

FelixWeichselgartner commented 3 years ago

Have the problems in other applications too. It is a HoloLens "problem".

MarcLohfink commented 3 years ago

Hey, I have almost the same problem, but also when I close the app. The data of the scanned QR-Codes won't be deleted. So when I restart my app, the QR-Codes once scanned are still there but are displayed at the coordinate origin. They stay there until I scan the corresponding QR code or rebuild my app on the HL2.

My Setup: HoloLens2 Unity 2020.7f1 VS 2019 16.9.4

FelixWeichselgartner commented 3 years ago

@MarcLohfink How do you close the app? Do you also have the problem when you shutdown the HL2 (long push on the power button) and restart it?

DavideTalevi98 commented 3 years ago

Hi, I have the same problem, closing and reopening the app the first scanned qr code remains stored. If I turn the hololens on and off it doesn't stay. When I turn the scanner off and on it always remains the first one scanned previously.

WikkidEdd commented 3 years ago

Check this answer out https://github.com/chgatla-microsoft/QRTracking/issues/41#issuecomment-921562061

camnewnham commented 2 years ago

Old comment:

A negative by-product of this is that if a QR code is moved to a vastly different position it doesn't detect. An example here would be:

  • A user has printed a QR code. They are lying on the desk, so the HoloLens has detected them while the user is using the PC and doing any preliminary configuration.
  • The user then places the QR code in a known world space far away from the desk (say, 5m)
  • The HoloLens no longer appears to detect said QR code (presumably the OS is confused about where it is as the QR "anchor" was quite a long way away

Clearing spaces/nearby Holograms also seems to interact poorly with the QR detection system.

It's frustrating for the user to then be required to restart the entire device due to an accidental detection. Are there any plans to add an API or similar that's capable of performing this action @chgatla-microsoft ? Or alternatively, where would we contact to request such an addition?

Update: The same QR code can be detected more than once (as a new code, Added) by the system if it has been moved. The properties are the same but the SpatialGraphNodeId is different; so the user (developer) must take this into account (with the LastDetectedTime for comparison) if experience issues from QR codes moving.

fmatulic commented 2 years ago

+1 for the request to make this more flexible and manageable. At the very least there should be a way to clear cached QR codes.