microsoft / psi

Platform for Situated Intelligence
https://github.com/microsoft/psi/wiki
Other
529 stars 93 forks source link

Can't visualize HoloLens2 streams in Psi studio. #233

Closed mrcfschr closed 2 years ago

mrcfschr commented 2 years ago

Thank you for this amazing codebase! I'm completely new to using psi and just tried the HoloLens Capture app/server. It works as expected except I can't visualize the sensor streams( rgb, depth ir etc) in psi studio. I would really appreciate some advise on how to get this to work!

Steps to reproduce the issue

  1. build psi from source https://github.com/microsoft/psi/wiki/Building-the-Codebase System Specs:

    • Processor Intel(R) Core(TM) i7-10700 CPU @ 2.90GHz 2.90 GHz
    • Installed RAM 16.0 GB
    • System type 64-bit operating system, x64-based processor
    • Edition Windows 10 Home
    • Version 21H2
    • OS build 19044.1706
  2. deploy /run HoloLensCapture to HL2 (research mode enabled, give permissions, change capture server ip to pc ip, default settings)

  3. run the server image

  4. open store in psi studio image

  5. no images in psi studio: run HL exporter after stopping app via stop button, this does get images from the same stores? image

What's the expected result?

What's the actual result?

Additional details / screenshot

Test case AddTest: Passed.

Test case AddRangeTest: Passed.

Test case UpdateOrAddTest: System.ArgumentException: An entry with the same key already exists. at System.ThrowHelper.ThrowArgumentException(ExceptionResource resource) at System.Collections.Generic.SortedList`2.Add(TKey key, TValue value) at Test.Psi.Visualization.OberservableSortedCollectionUnitTest.UpdateOrAddTest() in D:\marc\ImmersPsi\psi\Sources\Visualization\Test.Psi.Visualization\OberservableSortedCollectionUnitTest.cs:line 121 Failed.

Test case ClearTest: Passed.

Test case ContainsTest: Microsoft.VisualStudio.TestTools.UnitTesting.AssertFailedException: Assert.IsTrue failed. at Microsoft.VisualStudio.TestTools.UnitTesting.Assert.HandleFail(String assertionName, String message, Object[] parameters) at Microsoft.VisualStudio.TestTools.UnitTesting.Assert.IsTrue(Boolean condition, String message, Object[] parameters) at Test.Psi.Visualization.OberservableSortedCollectionUnitTest.ContainsTest() in D:\marc\ImmersPsi\psi\Sources\Visualization\Test.Psi.Visualization\OberservableSortedCollectionUnitTest.cs:line 153 Failed.

Test case CopyToTest: Microsoft.VisualStudio.TestTools.UnitTesting.AssertFailedException: Assert.Fail failed. Test should have thrown exception System.ArgumentException. at Microsoft.VisualStudio.TestTools.UnitTesting.Assert.HandleFail(String assertionName, String message, Object[] parameters) at Test.Psi.Visualization.UnitTestHelper.TestException(Action action, Type exception) in D:\marc\ImmersPsi\psi\Sources\Visualization\Test.Psi.Visualization\UnitTestHelper.cs:line 66 at Test.Psi.Visualization.OberservableSortedCollectionUnitTest.CopyToTest() in D:\marc\ImmersPsi\psi\Sources\Visualization\Test.Psi.Visualization\OberservableSortedCollectionUnitTest.cs:line 177 Failed.

Test case EmptyTest: Passed.

Test case EnumeratorTest: Passed.

Test case IndexOfTest: Microsoft.VisualStudio.TestTools.UnitTesting.AssertFailedException: Assert.AreEqual failed. Expected:<-1>. Actual:<8>. at Microsoft.VisualStudio.TestTools.UnitTesting.Assert.HandleFail(String assertionName, String message, Object[] parameters) at Microsoft.VisualStudio.TestTools.UnitTesting.Assert.AreEqual[T](T expected, T actual, String message, Object[] parameters) at Test.Psi.Visualization.OberservableSortedCollectionUnitTest.IndexOfTest() in D:\marc\ImmersPsi\psi\Sources\Visualization\Test.Psi.Visualization\OberservableSortedCollectionUnitTest.cs:line 221 Failed.

Test case IndexerTest: System.IndexOutOfRangeException: Index was outside the bounds of the array. at C5.SortedArray`1.get_Item(Int32 i) at Test.Psi.Visualization.OberservableSortedCollectionUnitTest.IndexerTest() in D:\marc\ImmersPsi\psi\Sources\Visualization\Test.Psi.Visualization\OberservableSortedCollectionUnitTest.cs:line 0 Failed.

Test case RemoveTest: System.ArgumentOutOfRangeException: Specified argument was out of the range of valid values. at C5.CollectionBase1.checkRange(Int32 start, Int32 count) at C5.ArrayBase1.get_Item(Int32 start, Int32 count) at Microsoft.Psi.Visualization.ObservableSortedCollection`1.InternalRemove(Int32 index, Int32 count) in D:\marc\ImmersPsi\psi\Sources\Visualization\Microsoft.Psi.Visualization.Windows\Observables\ObservableSortedCollection{T}.cs:line 301 at Test.Psi.Visualization.OberservableSortedCollectionUnitTest.RemoveTest() in D:\marc\ImmersPsi\psi\Sources\Visualization\Test.Psi.Visualization\OberservableSortedCollectionUnitTest.cs:line 252 Failed.

Test case RemoveRangeTest: System.ArgumentOutOfRangeException: Specified argument was out of the range of valid values. at C5.CollectionBase1.checkRange(Int32 start, Int32 count) at C5.ArrayBase1.get_Item(Int32 start, Int32 count) at Microsoft.Psi.Visualization.ObservableSortedCollection`1.InternalRemove(Int32 index, Int32 count) in D:\marc\ImmersPsi\psi\Sources\Visualization\Microsoft.Psi.Visualization.Windows\Observables\ObservableSortedCollection{T}.cs:line 301 at Test.Psi.Visualization.OberservableSortedCollectionUnitTest.RemoveRangeTest() in D:\marc\ImmersPsi\psi\Sources\Visualization\Test.Psi.Visualization\OberservableSortedCollectionUnitTest.cs:line 271 Failed.


Test suite ObservableKeyedCacheUnitTest (17 test cases).

Test case init... Done.

Test case AddTest: Passed.

Test case AddRangeTest: Passed.

Test case UpdateOrAddTest: System.ArgumentException: An entry with the same key already exists. at System.ThrowHelper.ThrowArgumentException(ExceptionResource resource) at System.Collections.Generic.SortedList`2.Add(TKey key, TValue value) at Test.Psi.Visualization.ObservableKeyedCacheUnitTest.UpdateOrAddTest() in D:\marc\ImmersPsi\psi\Sources\Visualization\Test.Psi.Visualization\ObservableKeyedCacheUnitTest.cs:line 118 Failed.

Test case ClearTest: Passed.

Test case ContainsTest: Microsoft.VisualStudio.TestTools.UnitTesting.AssertFailedException: Assert.IsTrue failed. at Microsoft.VisualStudio.TestTools.UnitTesting.Assert.HandleFail(String assertionName, String message, Object[] parameters) at Microsoft.VisualStudio.TestTools.UnitTesting.Assert.IsTrue(Boolean condition, String message, Object[] parameters) at Test.Psi.Visualization.ObservableKeyedCacheUnitTest.ContainsTest() in D:\marc\ImmersPsi\psi\Sources\Visualization\Test.Psi.Visualization\ObservableKeyedCacheUnitTest.cs:line 150 Failed.

Test case CopyToTest: Microsoft.VisualStudio.TestTools.UnitTesting.AssertFailedException: Assert.Fail failed. Test should have thrown exception System.ArgumentException. at Microsoft.VisualStudio.TestTools.UnitTesting.Assert.HandleFail(String assertionName, String message, Object[] parameters) at Test.Psi.Visualization.UnitTestHelper.TestException(Action action, Type exception) in D:\marc\ImmersPsi\psi\Sources\Visualization\Test.Psi.Visualization\UnitTestHelper.cs:line 66 at Test.Psi.Visualization.ObservableKeyedCacheUnitTest.CopyToTest() in D:\marc\ImmersPsi\psi\Sources\Visualization\Test.Psi.Visualization\ObservableKeyedCacheUnitTest.cs:line 174 Failed.

Test case EmptyTest: Passed.

Test case EnumeratorTest: Passed.

Test case GetViewTest: Microsoft.VisualStudio.TestTools.UnitTesting.AssertFailedException: Assert.AreEqual failed. Expected:<0>. Actual:<3>. at Microsoft.VisualStudio.TestTools.UnitTesting.Assert.HandleFail(String assertionName, String message, Object[] parameters) at Microsoft.VisualStudio.TestTools.UnitTesting.Assert.AreEqual[T](T expected, T actual, String message, Object[] parameters) at Test.Psi.Visualization.ObservableKeyedCacheUnitTest.GetViewTest() in D:\marc\ImmersPsi\psi\Sources\Visualization\Test.Psi.Visualization\ObservableKeyedCacheUnitTest.cs:line 222 Failed.

Test case IndexOfTest: Microsoft.VisualStudio.TestTools.UnitTesting.AssertFailedException: Assert.AreEqual failed. Expected:<-1>. Actual:<8>. at Microsoft.VisualStudio.TestTools.UnitTesting.Assert.HandleFail(String assertionName, String message, Object[] parameters) at Microsoft.VisualStudio.TestTools.UnitTesting.Assert.AreEqual[T](T expected, T actual, String message, Object[] parameters) at Test.Psi.Visualization.ObservableKeyedCacheUnitTest.IndexOfTest() in D:\marc\ImmersPsi\psi\Sources\Visualization\Test.Psi.Visualization\ObservableKeyedCacheUnitTest.cs:line 249 Failed.

Test case IndexerTest: System.IndexOutOfRangeException: Index was outside the bounds of the array. at C5.SortedArray`1.get_Item(Int32 i) at Test.Psi.Visualization.ObservableKeyedCacheUnitTest.IndexerTest() in D:\marc\ImmersPsi\psi\Sources\Visualization\Test.Psi.Visualization\ObservableKeyedCacheUnitTest.cs:line 0 Failed.

Test case RemoveTest: System.ArgumentOutOfRangeException: Specified argument was out of the range of valid values. at C5.CollectionBase1.checkRange(Int32 start, Int32 count) at C5.ArrayBase1.get_Item(Int32 start, Int32 count) at Microsoft.Psi.Visualization.ObservableSortedCollection`1.InternalRemove(Int32 index, Int32 count) in D:\marc\ImmersPsi\psi\Sources\Visualization\Microsoft.Psi.Visualization.Windows\Observables\ObservableSortedCollection{T}.cs:line 301 at Test.Psi.Visualization.ObservableKeyedCacheUnitTest.RemoveTest() in D:\marc\ImmersPsi\psi\Sources\Visualization\Test.Psi.Visualization\ObservableKeyedCacheUnitTest.cs:line 280 Failed.

Test case TryGetValueTest: Microsoft.VisualStudio.TestTools.UnitTesting.AssertFailedException: Assert.IsTrue failed. at Microsoft.VisualStudio.TestTools.UnitTesting.Assert.HandleFail(String assertionName, String message, Object[] parameters) at Microsoft.VisualStudio.TestTools.UnitTesting.Assert.IsTrue(Boolean condition, String message, Object[] parameters) at Test.Psi.Visualization.ObservableKeyedCacheUnitTest.TryGetValueTest() in D:\marc\ImmersPsi\psi\Sources\Visualization\Test.Psi.Visualization\ObservableKeyedCacheUnitTest.cs:line 300 Failed.

Test case ViewEmptyTest: Passed.

Test case ViewEnumeratorTest: Microsoft.VisualStudio.TestTools.UnitTesting.AssertFailedException: Assert.IsFalse failed. at Microsoft.VisualStudio.TestTools.UnitTesting.Assert.HandleFail(String assertionName, String message, Object[] parameters) at Microsoft.VisualStudio.TestTools.UnitTesting.Assert.IsFalse(Boolean condition, String message, Object[] parameters) at Test.Psi.Visualization.ObservableKeyedCacheUnitTest.ViewEnumeratorTest() in D:\marc\ImmersPsi\psi\Sources\Visualization\Test.Psi.Visualization\ObservableKeyedCacheUnitTest.cs:line 348 Failed.

Test case ViewIndexOfTest: Microsoft.VisualStudio.TestTools.UnitTesting.AssertFailedException: Assert.AreEqual failed. Expected:<-1>. Actual:<1>. at Microsoft.VisualStudio.TestTools.UnitTesting.Assert.HandleFail(String assertionName, String message, Object[] parameters) at Microsoft.VisualStudio.TestTools.UnitTesting.Assert.AreEqual[T](T expected, T actual, String message, Object[] parameters) at Test.Psi.Visualization.ObservableKeyedCacheUnitTest.ViewIndexOfTest() in D:\marc\ImmersPsi\psi\Sources\Visualization\Test.Psi.Visualization\ObservableKeyedCacheUnitTest.cs:line 363 Failed.

Test case ViewIndexerTest: System.ArgumentOutOfRangeException: Specified argument was out of the range of valid values. Parameter name: index at Microsoft.Psi.Visualization.ObservableKeyedCache`2.ObservableKeyedView.get_Item(Int32 index) in D:\marc\ImmersPsi\psi\Sources\Visualization\Microsoft.Psi.Visualization.Windows\Observables\ObservableKeyedCache{TKey,TItem}.cs:line 448 at Test.Psi.Visualization.ObservableKeyedCacheUnitTest.ViewIndexerTest() in D:\marc\ImmersPsi\psi\Sources\Visualization\Test.Psi.Visualization\ObservableKeyedCacheUnitTest.cs:line 373 Failed.

11 tests passed. 18 tests failed. OberservableSortedCollectionUnitTest.UpdateOrAddTest OberservableSortedCollectionUnitTest.ContainsTest OberservableSortedCollectionUnitTest.CopyToTest OberservableSortedCollectionUnitTest.IndexOfTest OberservableSortedCollectionUnitTest.IndexerTest OberservableSortedCollectionUnitTest.RemoveTest OberservableSortedCollectionUnitTest.RemoveRangeTest ObservableKeyedCacheUnitTest.UpdateOrAddTest ObservableKeyedCacheUnitTest.ContainsTest ObservableKeyedCacheUnitTest.CopyToTest ObservableKeyedCacheUnitTest.GetViewTest ObservableKeyedCacheUnitTest.IndexOfTest ObservableKeyedCacheUnitTest.IndexerTest ObservableKeyedCacheUnitTest.RemoveTest ObservableKeyedCacheUnitTest.TryGetValueTest ObservableKeyedCacheUnitTest.ViewEnumeratorTest ObservableKeyedCacheUnitTest.ViewIndexOfTest ObservableKeyedCacheUnitTest.ViewIndexerTest Done.

sandrist commented 2 years ago

Thanks for the detailed issue. There are a couple different ways to visualize the captured images (and we'll improve our documentation to make these more clear):

  1. Note that the VideoEncodedImageCameraView stream has a data type of EncodedImageCameraView. The visualizer for this type is found in Microsoft.Psi.Spatial.Euclidean.Visualization.Windows. You'll need to build that project, and point PsiStudio to the resulting dll. Make sure to close PsiStudio and re-open it once you've edited the settings file. You should then see an option to visualize that stream as a 3D "image camera view", which draws the image with a frustum at the 3D pose of the camera.

  2. You can also right-click on the stream and select "Expand Members" (or simply double-click on it). This will automatically create three "derived" streams which represent each class member: the CameraIntrinsics, CameraPose, and ViewedObject (in this case the viewed object is an image). You should be able to right-click on ViewedObject and select "Visualize as Image" to see the 2D image, without needing to load any additional 3rd party visualizer DLLs.

image

mrcfschr commented 2 years ago

Thank you so much this works like a charm!! image