filter_clouds.py
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     # filter points by color
00014     filtered_cloud_arr = cloud_arr[(cloud_arr['r'] < 128) * (cloud_arr['g'] < 50) * (cloud_arr['b'] < 50)]
00015 
00016     # filter out far away points
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 # parse args
00024 sub_topic = sys.argv[1]
00025 pub_topic = sub_topic + '_filtered'
00026 
00027 # create node
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 


python_msg_conversions
Author(s): Jonathan Binney
autogenerated on Thu Jan 2 2014 11:37:16