Go to the documentation of this file.00001 import roslib; roslib.load_manifest('python_msg_conversions')
00002 import sys
00003 import numpy as np
00004 import rospy
00005 from sensor_msgs.msg import PointCloud2
00006
00007 from python_msg_conversions import pointclouds
00008
00009 def cloud_cb(cloud_msg):
00010 rospy.loginfo('Filtering cloud')
00011 cloud_arr = pointclouds.pointcloud2_to_array(cloud_msg, split_rgb=True)
00012
00013
00014 filtered_cloud_arr = cloud_arr[(cloud_arr['r'] < 128) * (cloud_arr['g'] < 50) * (cloud_arr['b'] < 50)]
00015
00016
00017 filtered_cloud_arr = filtered_cloud_arr[filtered_cloud_arr['z'] < 1.5]
00018
00019 filtered_cloud_msg = pointclouds.array_to_pointcloud2(
00020 filtered_cloud_arr, stamp=cloud_msg.header.stamp, frame_id=cloud_msg.header.frame_id, merge_rgb=True)
00021 cloud_pub.publish(filtered_cloud_msg)
00022
00023
00024 sub_topic = sys.argv[1]
00025 pub_topic = sub_topic + '_filtered'
00026
00027
00028 rospy.init_node('cloud_filterer', anonymous=True)
00029 rospy.loginfo('Subscribing to: %s' % sub_topic)
00030 rospy.loginfo('Publishing filtered clouds on: %s' % pub_topic)
00031 cloud_sub = rospy.Subscriber(sub_topic, PointCloud2, cloud_cb)
00032 cloud_pub = rospy.Publisher(pub_topic, PointCloud2)
00033
00034 rospy.spin()
00035