Skip to content

Manual Ground Plane

lthursdayl edited this page Oct 13, 2017 · 58 revisions

We have found that in some environments, specifically spaces with reflective or dark-colored floors, the automatic ground plane will not accurately detect the ground. This leads to sparse tracking; the tracks will not be consistent, or there will be no detection or tracks at all. To correct this, the ground plane detection needs to be changed from automatic to manual selection. To do this for each sensor, ground_based_people_detector_kinect2.yaml or ground_based_people_detector_kinect.yaml, change line 5 from:

 ground_estimation_mode: 3

to:

 ground_estimation_mode: 0

Once this change has been saved to the .yaml file, stop the detection process for the sensor, and then restart it. Once the sensor is restarted, the manual ground plane selection window (titled "Pick three points") should appear after a few moments. If you are connecting remotely via SSH and do not see the window, first navitage to open_ptrack/detection/conf/ground_based_people_detector_kinect2.yaml and verify that:

  remote_ground_selection: true

Then, check that you're using the -XC flag to start SSH with X11 GUI forwarding enabled, e.g., ssh -XC 192.168.100.101. If everything is working properly, the following screen should appear:

N.B.: In tracking environments with dark floors, when starting a Kinect v2 camera, we have found it necessary to place a large, flat white object on the floor to create a surface from which the three points can be chosen. This is the white square in the image above.

After the screen appears, we have found it easiest to zoom into the space from where the three points will be selected. This can be done by using the center wheel on the mouse, or by using the f key with the cursor over this space. It should now look like this:

N.B.: We have found that after zooming in on the spot that will be used to select the three points, the image should be articulated in a way that verifies all pixels are in the ground plane.

Now, hold the shift key and use the left mouse button to select the three points. It should look similar to this:

Rotate the rendering in 3D to verify the pixels near your selection are actually on the ground plane, and you did not inadvertently select pixels on another plane.

To save the three points selected, use the right mouse click for the TX or TK1 or q, if using any other computer, to save the manual ground plane. The screen will close, and the ground plane that was selected will be used for the sensor's detection.

After a sensor restart, to reuse the ground plane that was selected, a few changes need to be made to the ground_based_people_detector_kinect2.yaml or ground_based_people_detector_kinect1.yaml, depending on the sensor(s) being used. First change read from ground file to true:

 read_ground_from_file: true

Lastly, change lock ground to true:

 lock_ground: true

If a camera is moved, then the following:

 read_ground_from_file: true

needs to be returned to:

 read_ground_from_file: false

This will allow the ground plane to be reset manually by the user.

Clone this wiki locally