Mi iscrivo all'argomento "/camera/depth/points"
e al messaggio PointCloud2
su un turtlebot (versione deep learning) con videocamera ASUS Xtion PRO LIVE.Sottotitoli Turtlebot pointcloud2 mostra il colore nel simulatore Gazebo ma non nel robot
Ho usato lo script python sotto l'ambiente del simulatore gazebo e posso ricevere correttamente i valori x, y, z e rgb.
Tuttavia, quando lo eseguo nel robot, mancano i valori di rgb.
Si tratta di un problema della versione turtlebot o della fotocamera o devo specificare da qualche parte che desidero ricevere PointCloud2 type="XYZRGB"
? o è un problema di sincronizzazione? Qualsiasi indizio grazie, grazie!
#!/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 DIRETTA – fartagaintuxedo
credo di aver provato 'profondità iscritto il come pure, ma non ricordo ora, controllerò questa volta – fartagaintuxedo
Questo potrebbe essere d'aiuto, ho provato con openni ma non sono riuscito a farlo funzionare nemmeno usando la profondità registrata. Ma non penso di aver impostato il parametro come indicato nel tuo link 'depth_registration: = true' quindi proverò questo domani mattina. 1 domanda, sta usando openni per questo l'approccio più normale? – fartagaintuxedo