Ich abonniere das Thema "/camera/depth/points"
und die Nachricht PointCloud2
auf einem Turtlebot (Deep Learning-Version) mit ASUS Xtion PRO LIVE-Kamera.Turtlebot-Teilnehmer pointcloud2 zeigt Farbe im Gazebo-Simulator, aber nicht im Roboter
Ich habe das Python-Skript unten unter der Gazebo Simulator-Umgebung verwendet und ich kann x, y, z und rgb Werte erfolgreich erhalten.
Wenn ich es jedoch im Roboter laufen lasse, fehlen die rgb-Werte.
Ist das ein Problem meiner Turtlebot-Version oder Kamera oder muss ich irgendwo angeben, dass ich PointCloud2 type="XYZRGB"
erhalten möchte? oder ist es ein Synchronisierungsproblem? Irgendwelche Hinweise bitte danke!
#!/usr/bin/env python
import rospy
import struct
import ctypes
import sensor_msgs.point_cloud2 as pc2
from sensor_msgs.msg import PointCloud2
file = open('workfile.txt', 'w')
def callback(msg):
data_out = pc2.read_points(msg, skip_nans=True)
loop = True
while loop:
try:
int_data = next(data_out)
s = struct.pack('>f' ,int_data[3])
i = struct.unpack('>l',s)[0]
pack = ctypes.c_uint32(i).value
r = (pack & 0x00FF0000)>> 16
g = (pack & 0x0000FF00)>> 8
b = (pack & 0x000000FF)
file.write(str(int_data[0])+","+str(int_data[1])+","+str(int_data[2])+","+str(r)+","+str(g)+","+str(b)+"\n")
except Exception as e:
rospy.loginfo(e.message)
loop = False
file.flush
file.close
def listener():
rospy.init_node('writeCloudsToFile', anonymous=True)
rospy.Subscriber("/camera/depth/points", PointCloud2, callback)
rospy.spin()
if __name__ == '__main__':
listener()
ASUS Xtion PRO LIVE- – fartagaintuxedo
Ich denke, ich versucht habe 'Tiefen registered' als gut, aber ich kann nicht mehr erinnern, ich werde dies überprüfen, sobald – fartagaintuxedo
Dieses könnte helfen, ich habe versucht mit openni aber konnte es nicht zum arbeiten nicht einmal mit der Tiefe registriert. Aber ich denke nicht, dass ich den Parameter wie in Ihrem Link 'depth_registration: = true' angegeben habe, also werde ich das morgen früh versuchen. 1 Frage, verwendet Openni für diese den normalsten Ansatz? – fartagaintuxedo