Zapisuję się w temacie "/camera/depth/points"
i wiadomości PointCloud2
na turtlebot (wersja do nauki głębokiego uczenia się) z kamerą ASUS Xtion PRO LIVE.Turtlebot subskrybent pointcloud2 pokazuje kolor w symulatorze Gazebo, ale nie w robocie
Użyłem poniższego skryptu Pythona w środowisku symulatora altan i mogę pomyślnie odbierać wartości x, y, z i rgb.
Jednak po uruchomieniu go w robocie brakuje wartości rgb.
Czy jest to problem z moją wersją turbo lub aparatem fotograficznym, czy też muszę podać gdzieś, że chcę otrzymać PointCloud2 type="XYZRGB"
? lub czy jest to problem z synchronizacją? Wszelkie wskazówki proszę dzięki!
#!/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
myślę Próbowałem 'głębokość-zarejestrowana, jak dobrze, ale ja nie pamiętam teraz, będzie to sprawdzić raz – fartagaintuxedo
ten może pomóc, próbowałem z openni, ale nie mogłem go uruchomić nawet przy użyciu rejestrowania głębokości. Ale nie sądzę, ustawić parametr jak wskazano w twoim linku 'depth_registration: = true', więc spróbuję tego jutro rano. 1 pytanie, używa openni do tego najbardziej normalnego podejścia? – fartagaintuxedo