Подписываюсь на тему "/camera/depth/points"
и сообщение PointCloud2
на turtlebot (глубокая обучающая версия) с камерой ASUS Xtion PRO LIVE.Пользователь Turtlebot pointcloud2 показывает цвет в симуляторе Gazebo, но не в роботе
Я использовал сценарий python ниже в среде симулятора беседки, и я могу успешно получить значения x, y, z и rgb.
Однако, когда я запускаю его в роботе, значения rgb отсутствуют.
Является ли это проблемой моей версии turtlebot, или камеры, или это то, что я должен указать где-нибудь, что я хочу получить PointCloud2 type="XYZRGB"
? или это проблема синхронизации? Любые подсказки, пожалуйста, спасибо!
#!/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 ЖИВОЙ – fartagaintuxedo
Я думаю, что я попробовал 'глубины registered' как хорошо, но я не могу вспомнить сейчас, я буду проверять один раз – fartagaintuxedo
этот может помочь, я пробовал с openni, но не мог заставить его работать, даже не используя глубину регистрации. Но я не думаю, что я установил параметр, как указано в вашей ссылке 'depth_регистрация: = true', поэтому я попробую это завтра утром. 1 вопрос, использует openni для этого самый обычный подход? – fartagaintuxedo