ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question

Sick LMS100 small object filters

asked 2012-02-22 13:16:49 -0500

rplankenhorn gravatar image

I am interfacing with a Sick LMS100 laser scanner and I am having problems filtering small objects (such as grass clippings). Are there any tools built into ROS that I could use to filter these objects out easily? If not, what would be the best method for filtering the objects out of the scans?

edit retag flag offensive close merge delete

2 Answers

Sort by ยป oldest newest most voted

answered 2012-02-23 02:51:23 -0500

DimitriProsser gravatar image

updated 2012-02-23 04:12:06 -0500

I've had some success doing this by using PointCloud Library's built-in functions, namely Statistical Outlier Removal. It really depends where the majority of your points lie. If there's a lot of grass, this won't work as well. If the grass is sparse, this method could definitely improve your performance. Radial Outlier Removal might also work.


In order to get a ROS sensor_msgs/PointCloud2 to a pcl cloud, use the following code:

sensor_msgs::PointCloud2 cloud_in;
pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>);
pcl::fromROSMsg(cloud_in, *cloud);

The cloud variable will now contain a pcl cloud that you can use with the PCL built-in functions.

edit flag offensive delete link more


This looks like it could work. How do you suggest I implement it? I looked at the PCL page for ROS and the functions to convert from an ROS PointCloud to a PCL PointCloud and back are deprecated. Am I missing something?

rplankenhorn gravatar image rplankenhorn  ( 2012-02-23 03:58:29 -0500 )edit

Use the fuction pcl::fromROSMsg(). The docs might be misleading. This function is not deprecated. The fuction point_cloud::fromMsg() is, but not pcl::fromROSMsg().

DimitriProsser gravatar image DimitriProsser  ( 2012-02-23 04:10:04 -0500 )edit

Thanks again. If the fromMsg is deprecated, how do I convert the pcl::PointCloud back to a PointCloud2?

rplankenhorn gravatar image rplankenhorn  ( 2012-02-23 08:57:11 -0500 )edit

pcl::toROSMsg() does the opposite of pcl::fromROSMsg()

DimitriProsser gravatar image DimitriProsser  ( 2012-02-23 09:06:35 -0500 )edit

answered 2012-02-22 15:06:37 -0500

joq gravatar image

updated 2012-02-23 04:02:07 -0500

I've never found a solution to that problem.

The grass stops the laser, it gives a return, it looks like a solid object.


Thanks for the clarification. We have used obstacle grids to filter out intermittent noise with fair success.

edit flag offensive delete link more


I know that if the grass isn't cut it will look like a wall. I am talking about if the area has been freshly mowed and also on a windy day, the grass clippings are flying around in front of the laser. They appear as random small objects.

rplankenhorn gravatar image rplankenhorn  ( 2012-02-23 02:23:29 -0500 )edit

Question Tools

1 follower


Asked: 2012-02-22 13:16:49 -0500

Seen: 591 times

Last updated: Feb 23 '12