Quantcast
Channel: ROS Answers: Open Source Q&A Forum - RSS feed
Viewing all articles
Browse latest Browse all 171

kinect2 dont take all point clouds

$
0
0
Hi everyone my kinect 2 does not save the entire point cloud that is displayed in the rviz or in the viewer, ignores surfaces and some elements(walls, objects, ground, etc) the strange thing is that in the viewer the points if there are. for example ![image description](https://imageshack.com/a/img922/2676/3gKQyA.png ) ![image description]( https://imageshack.com/a/img922/9625/p67PAK.png) ![image description]( https://imageshack.com/a/img922/3682/LmWCtD.png) I use this code to capture the XYZ RGB data. import rospy from std_msgs.msg import String from sensor_msgs.msg import PointCloud2 import sensor_msgs.point_cloud2 as pc2 import struct import ctypes import time, os, sys path_data = os.getcwd() + "/data/raw" flag=0 def saveCloud_txt(fileName): fileName= fileName + "_" + time.strftime("%d-%m-%y")+'-'+time.strftime("%I-%M-%S") completeName = os.path.join(path_data, fileName + '.txt') f = open(completeName,"a") #opens file with name of "[fileName].txt" dataFile= "%" + "X"+"\t"+ "Y"+"\t"+ "Z" +"\t"+ "R" +"\t" + "G"+"\t"+ "B" + "\n" f.write(dataFile) return f def callback(data): global flag rospy.loginfo('Data acquiring') pc = pc2.read_points(data,skip_nans=True) int_data=list(pc) for P in int_data: x=P[0] z=-P[1] y=P[2] s=struct.pack('>f', P[3]) i=struct.unpack('>l',s)[0] pack = ctypes.c_uint32(i).value R=(pack & 0x00FF0000)>> 16 G=(pack & 0x0000FF00)>> 8 B=(pack & 0x000000FF) dataFile = str(x)+"\t"+ str(y)+"\t"+ str(z) +"\t"+ str(R)+"\t" +str(G) +"\t"+ str(B)+ "\n" f.write(dataFile) print "X: "+str(x)+ "; Y: "+str(y)+"; Z: "+str(z) +"; R: "+str(R)+" ; G:"+str(G)+"; B:"+str(B) del x,y,z,R,G,B print "--------------------------------------------------------------------------------------------" flag=1 def ros_listener(): global flag # In ROS, nodes are uniquely named. If two nodes with the same # name are launched, the previous one is kicked off. The # anonymous=True flag means that rospy will choose a unique # name for our 'listener' node so that multiple listeners can # run simultaneously. rospy.init_node('Kinect_Capture', anonymous=True) rospy.Subscriber('/kinect2/sd/points', PointCloud2, callback) while flag==0: nop_op = 0 # spin() simply keeps python from exiting until this node is stopped #rospy.spin() if __name__ == '__main__': fileName = raw_input('File name: ') print "5" time.sleep(1) print "4" time.sleep(1) print "3" time.sleep(1) print "2" time.sleep(1) print "1" time.sleep(1) f = saveCloud_txt(fileName) ros_listener()

Viewing all articles
Browse latest Browse all 171

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>