Tôi đang đăng ký chủ đề "/camera/depth/points"
và nhắn PointCloud2
trên rùa (phiên bản học sâu) với máy ảnh ASUS Xtion PRO LIVE.Thuê bao Turtlebot pointcloud2 hiển thị màu trong trình mô phỏng Gazebo nhưng không có trong robot
Tôi đã sử dụng tập lệnh python bên dưới môi trường mô phỏng gazebo và tôi có thể nhận được các giá trị x, y, z và rgb thành công.
Tuy nhiên, khi tôi chạy nó trong rô bốt, giá trị rgb bị thiếu.
Đây có phải là vấn đề của phiên bản rùa, hoặc máy ảnh của tôi hoặc là tôi phải chỉ định một nơi nào đó mà tôi muốn nhận được PointCloud2 type="XYZRGB"
? hoặc là một vấn đề đồng bộ? Bất kỳ manh mối nào xin cảm ơn!
#!/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
Tôi nghĩ rằng tôi đã cố gắng 'sâu-registered' cũng nhưng tôi không thể nhớ bây giờ, tôi sẽ kiểm tra điều này một lần – fartagaintuxedo
này có thể giúp đỡ, tôi đã thử với openni nhưng không thể làm cho nó hoạt động thậm chí không sử dụng độ sâu đăng ký. Nhưng tôi không nghĩ rằng tôi đặt tham số như được chỉ ra trong liên kết của bạn 'depth_registration: = true' vì vậy tôi sẽ cố gắng vào sáng ngày mai. 1 câu hỏi, đang sử dụng openni cho phương pháp này bình thường nhất? – fartagaintuxedo