Eiten, I did some further test about the ground plane removal on our robot. With the zero position of tilt laser calibrated, now I am able to see that before ground removal, cloud points corresponding to the ground are located roughly on the horizontal plane, except a few discrete points still left on the ground plane after filtering. Another strange issue is that if the "planar_refine" value set to "1" in launch file, the ground removal filter will not only remove the ground, but also a large part of points whose z value may be as high as 0.4 meter. I traced back into the source file sac_inc_ground_removal_standalone.cpp and found that it's due to the plane fitting module within subroutine "computePointNormal". The calculation result from this module about the fitted plane seems incorrect. But I can not tell exactly which step inside is wrong since I extracted the code within it into a separate file and calculate some sample points, and the result is matching with the that from matlab. Please see enclosed screenshots for details and your comments are welcome. best regards xiaojun screeshot without planar refinement, the bottom edge of clouds is close to the ground plane: http://ros-users.122217.n3.nabble.com/file/n1777999/Screenshot_noplanarrefine_0.png screeshot without planar refinement, a few discrete points stay on the ground after removal http://ros-users.122217.n3.nabble.com/file/n1777999/Screenshot_noplanarrefine_1.png screenshot with planar refinement, a large part of points on top of ground have been removed: http://ros-users.122217.n3.nabble.com/file/n1777999/Screenshot_planarrefine_1.png -- View this message in context: http://ros-users.122217.n3.nabble.com/Navigation-stack-issue-about-ground-plane-detection-tp1707477p1777999.html Sent from the ROS-Users mailing list archive at Nabble.com.