Kindect height and rain issues

Home Forums AR Sandbox Forum Kindect height and rain issues

This topic contains 5 replies, has 2 voices, and was last updated by  Oliver Kreylos 4 years, 5 months ago.

Viewing 6 posts - 1 through 6 (of 6 total)
  • Author
  • #100837


    For our latest setup we had to have the kinect about 50 inches away from the base level of the flat sand. When we run the program we get mountains above the max height and depressions below min height. The mountains above max height cause permanent rain. I know all these settings can be tweaked but is there a way to measure the values that we should be using for min/max elevation and rain initiation height? Thanks!


    Oliver Kreylos

    The first thing you want to do is set up an appropriate base plane equation by running calibration step 4. All elevation values used by the AR Sandbox are relative to this base plane. Say your Kinect is 50″ above the flat sand surface, then the offset value of your base plane should be about -127 (cm).

    If you want to adjust elevation ranges (surface min/max and rain layer min/max) based on your local setup, you can use KinectViewer to measure the 3D coordinates of arbitrary points on the surface, just as you did for the box corners in calibration step 5. Those values will be in camera space, i.e., to convert them to base-plane relative elevation space, you need to subtract the base plane offset. Say you measure the top of a high mountain at (30, -20, -86), i.e., at a z position of -86 relative to the camera, then that point’s elevation above the base plane is -86-(-127)=41 (cm). That would then be the number to use for max elevation, and so forth.

    If you download the new Kinect-2.8-001 and SARndbox-1.5-001 packages (see Two minor software updates), you can take these measurements more easily directly inside RawKinectViewer. See the new calibration video linked in the complete installation instructions.



    Should that also fix the rain issues?


    Oliver Kreylos

    Once you have the min/max elevation range for surfaces (which you can pass to SARndbox via the -er <min> <max> command line option), you can then set the rain layer above the valid surface layer, leaving maybe a few cm gap, via the -rer <min> <max> (for “rain elevation range”) command line option.



    Unfortunately that did not work at all. Even using extreme values for with the -er command I still cannot get the sandbox program to read the very bottom and top of our setup even though those areas should be well within the kinects viewing range.

    I have also noticed that the program is reading the edges of the physical box, and maps them as rain causing cliffs on the sides, I’ve redone the steps to create the values for boxlayout.txt several times, being very careful capture only sand but it doesn’t seem to have helped.

    Here are the current values for our boxlayout file:
    (-0.0110874, 0.042134, 0.998579), -1376.53
    (628.781668165, 488.250404082, -1406.88084582)
    (-648.103371171, 501.33161707, -1409.26429573)
    (610.811166741, -547.710713206, -1348.68148671)
    (-650.666998437, -547.798112364, -1350.30495307)

    When I used KinectViewer to remeasure points as you suggested (I don’t have time to update today but will later) I got a min elevation of -1369.75779165 and a max elevation of -1425.53895769. Using the equation above that gave a max and min of 42.10 and 13.68 respectively but when I used these values in -er it actually narrowed the range of mapped areas. Thoughts?

    I would post images but it seems like I have to upload them somewhere else first?


    Oliver Kreylos

    I think I see the problem. Your Kinect uses millimeters as measurement units, and the sandbox by default expects centimeters. In that case the default elevation ranges won’t work, because they’ll translate to only a few dozen millimeters each way.

    The sandbox can be configured to use millimeters, but you’ll have to override a lot of default settings.

    As it so happens, I just uploaded new versions of the Kinect and SARndbox packages (find locations in this thread), and the new Kinect package has a KinectUtil that converts mm-based calibrations to cm-based ones. I suggest re-installing the new versions of the Kinect and SARndbox packages, run “KinectUtil getCalib 0” again, and redo calibration steps 4, 5, and 7.

    The other benefit is that the new Kinect package also has a new tool to simplify measuring 3D surface positions. I think your second problem is that the points you measured in KinectViewer weren’t directly on the surface. It’s counter-intuitive because KinectViewer allows you to measure anywhere in 3D space. Check out the complete installation instructions thread, and look at the instruction video segments for calibration steps 4 (baseplane) and 5 (box extents). You can use the same method as for step 5 to get the true elevation range of your sandbox.

Viewing 6 posts - 1 through 6 (of 6 total)

You must be logged in to reply to this topic.

Comments are closed.