Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Adding place_recognition to pcl #188

Closed
wants to merge 1 commit into from
Closed

Adding place_recognition to pcl #188

wants to merge 1 commit into from

Conversation

ZhuangYanDLUT
Copy link
Contributor

Active environment perception and autonomous place recognition play a key role for mobile robots to operate within a cluttered indoor environment with dynamic changes.

place_recognition provides a novel 3D-laser-based indoor place recognition method to deal with the random disturbances caused by unexpected movements of people and other objects.

The proposed approach can extract and match the Speeded-Up Robust Features (SURFs) from bearing-angle images generated by a 3D laser scanner. It can cope with the irregular disturbance of moving objects and the problem of observing-location changes of the laser scanner. Both global metric information and local SURF features are extracted from 3D laser point clouds and 2D bearing-angle images, respectively.

A large-scale indoor environment with over 1600 m2 and 30 offices is selected as a testing site, and a mobile robot, i.e., SmartROB2, is deployed for conducting experiments. Experimental results show that the proposed 3-D-laser-based scene measurement technique and place recognition approach are effective and provide robust performance of place recognition in a dynamic indoor environment.

@ZhuangYanDLUT
Copy link
Contributor Author

According to your suggestion, I have seperated them from the GUI and revised them following other algorithms.

After pull request, it taked a long time to build. Unfortunately, there is an overtime error from g++ compiler.

How should I solve it?

@jspricke
Copy link
Member

I'm still not convinced this really belongs into PCL, let's have a look at it one by one.
bearing_angle.h:

  • In which way is this different to pcl/range_image/range_image.h?
  • Could we incorporate this into the range_image.h classes?
    scene_cognition.cpp:
  • This is all OpenCV related stuff, nothing to do with PCL.

If you really want parts of this in PCL, please point out which algorithms are relevant.

@ZhuangYanDLUT
Copy link
Contributor Author

bearing_angle.h:

Q 1: In which way is this different to pcl/range_image/range_image.h?
Response: Range image and reflectance image are two kinds of commonly used image representation model for 3D laser scanning data [1] [2], in which range values and reflectance values are encoded by grey values.
Grey values for a range image are proportional to distance measurement values. However, the scales for grey values is between 0 and 255, while distance measurement values is between 0 and 8m (taking the SICK LMS 200 laser rangefinder for example). Therefore, each scale in grey values is 3.125 cm and local features in the scenes may be neglected. Similarly, grey values for a reflectance image are proportional to the reflected laser light energy, which depends not only on how far away the measured object is from the scanner but also on the surface characteristics of the object.
Compared with reflectance images and depth images, the details of the objects, such as edges, contours and corners, can be depicted more effectively in Bearing Angle images. SIFT descriptors extracted from the range image and the bearing-angle image are shown in Fig. 1 and Fig. 2, respectively. A series of experiments have been conducted to prove that the number of useful SIFT features from bearing-angle images is larger than that from range images.

response

[1] B. Steder, R. Rusu, K. Konolige, and W. Burgard. Point Feature Extraction on 3D Range Scans Taking into Account Object Boundaries. In Proc. of the IEEE International Conference on Robotics and Automation, pp. 2601-2608, Shanghai, China, May 2011.
[2] A. Nuchter, and J. Hertzberg. Towards semantic maps for mobile robots. Robotics and Autonomous Systems, Vol. 56, No. 11, pp. 915-926, 2008.

Q 2: Could we incorporate this into the rang_image.h classes?
Response: According to the response 1, range images and bearing angle images are different image representation model for 3D laser scanning data. Therefore, it is better not to incorporate it into the rang_image.h classes.

scene_cognition.cpp:
Q 3: This is all OpenCV related stuff, nothing to do with PCL.
Response: Yes, this scene recognition approach has some algorithms in OpenCV since a bearing angle image is a kind of 2D image. However, there are exact correspondences between each laser scanning data and each pixel in a bearing angle image, so both global metric information and local features (e.g. SIFT or SURF) can be extracted from 3-D laser point clouds and 2-D bearing-angle images to perform indoor scene recognition, respectively.

@jspricke
Copy link
Member

  • ZhuangYanDLUT [email protected] [2013-07-13 20:25]:

    Q 2: Could we incorporate this into the rang_image.h classes?
    Response: According to the response 1, range images and bearing angle images are different image representation model for 3D laser scanning data. Therefore, it is better not to incorporate it into the rang_image.h classes.

Could you model the bearing_angle.h similar to the range_image.h?

scene_cognition.cpp:
Q 3: This is all OpenCV related stuff, nothing to do with PCL.
Response: Yes, this scene recognition approach has some algorithms in OpenCV since a bearing angle image is a kind of 2D image. However, there are exact correspondences between each laser scanning data and each pixel in a bearing angle image, so both global metric information and local features (e.g. SIFT or SURF) can be extracted from 3-D laser point clouds and 2-D bearing-angle images to perform indoor scene recognition, respectively.

I would vote for keeping this separate from PCL.

Cheers Jochen

@ZhuangYanDLUT
Copy link
Contributor Author

Could you model the bearing_angle.h similar to the range_image.h?

Ok. I will do it according to your suggestion.

I would vote for keeping this separate from PCL.

Ok. I agree with your comment.

Cheers
Yan

@jspricke
Copy link
Member

superseded by #192.

@jspricke jspricke closed this Jul 17, 2013
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants