3D point cloud
pcl_assembler_client.py
#!/usr/bin/env python
import rospy
from laser_assembler.srv import AssembleScans2
from sensor_msgs.msg import PointCloud2
rospy.init_node("assemble_scans_to_cloud")
rospy.wait_for_service("assemble_scans2")
assemble_scans=rospy.ServiceProxy('assemble_scans2',AssembleScans2)
pub=rospy.Publisher("/point_Cloud",PointCloud2,queue_size=2)
r=rospy.Rate(10)
while True:
try:
resp=assemble_scans(rospy.Time(0,0),rospy.get_rostime())
print "Got cloud with %u points" % len(resp.cloud.data)
pub.publish(resp.cloud)
except rospy.ServiceException, e:
print "service call failed: %s" %e
r.sleep()
scan_to_pcl.py
#!/usr/bin/env python
import rospy
from sensor_msgs.msg import PointCloud2 as pc2
from sensor_msgs.msg import LaserScan
from laser_geometry import LaserProjection
class Laser2PC():
def __init__(self):
self.laserProj=LaserProjection()
self.pcPub=rospy.Publisher("/laserPointCloud",pc2,queue_size=1)
self.laserSub=rospy.Subscriber("/scan",LaserScan,self.laserCallback)
def laserCallback(self,data):
cloud_out=self.laserProj.projectLaser(data)
self.pcPub.publish(cloud_out)
if __name__=='__main__':
rospy.init_node("scan_to_pcl")
l2pc=Laser2PC()
rospy.spin()
my launch file is,
<launch>
<node name="scan_to_pcl" pkg="cloud_data" type="scan_to_pcl.py"/>
<node type="point_cloud2_assembler" pkg="laser_assembler" name="pcl_assembler_server">
<remap from="cloud" to="laserPointCloud"/>
<param name="max_clouds" type="int" value="400" />
<param name="fixed_frame" type="string" value="base_link" />
</node>
<node name="pcl_assembler_client" pkg="cloud_data" type="pcl_assembler_client.py" output="screen"/>
</launch>
These is code i'm using to generate point cloud data using the laser_assembler package but it is not extruded along the third axis i.e it is not 3D. Can someone help me out on how to achieve 3D cloud.
Are you asking someone to translate it from C++ to Python for you?