2016-07-27 10 views
1

Ich habe libfreenect2 und iai_kinect2 für die Arbeit an PCL und ROS auf meiner Kinect installiert. Ich habe daran gearbeitet, wie man Tiefenkartendaten von Kinect 2 bekommt. Ich konnte rostopic list sehen und nachsehen, aber ich bin nicht in der Lage zu verstehen, wie man Tiefendaten in Metern statt in ganzen Zahlen erhält.Hol dir metrische Tiefenkarte von Kinect 2

Wenn rostopic list ausgeführt wird, erhalte ich die folgenden Themen: rostopic

Wenn rosnode list ausgeführt wird, erhalte ich die folgende Ausgabe: rosnode

Welche dieser Themen gibt mir die Tiefe Karteninformationen aus der kinect (kinect v2)? Ich habe alle Themen wiederholt (unter Verwendung rostopic echo <topic name>) und alle Themen veröffentlichen Werte in [0, 255] Bereich. Ich bin nicht in der Lage zu verstehen, wie bekomme ich eine Tiefenkarte, die (idealerweise) im Fließkomma und nicht im diskreten Bereich von 0 bis 255 liegen sollte?

Auch, was sind diese zusätzlichen rosnodes, mit points_xyzrgb_ an ihren Namen angehängt und wie nutze ich sie? Muss ich ein zusätzliches Programm schreiben, um die Tiefenkarte irgendwie zu extrahieren --- wenn ja, wie?

+0

Willkommen bei SO. Bitte machen Sie keine Screenshots von Terminalausgängen, sondern kopieren Sie den Text und fügen Sie ihn direkt in die Frage ein. – luator

+0

In Bezug auf Ihre Frage: Was ist der Typ der Nachricht? Es ist wahrscheinlich pointcloud2, das, soweit ich mich erinnere, intern die Werte immer Byte-weise in einem großen Array speichert, unabhängig von ihrem Typ. Sie müssen es in den richtigen PCL PointCloud Typ in Ihrem Code konvertieren, um darauf zuzugreifen. – luator

+0

Ich habe den Titel Ihrer Frage geändert, was, denke ich, die tatsächliche Frage besser widerspiegelt. Fühlen Sie sich frei, es wieder zu ändern, wenn Sie nicht einverstanden sind. – luator

Antwort

0

Wenn Sie die Tiefenkarte verwenden möchten, müssen Sie das Thema abonnieren: /kinect2/sd/image_depth, dann können Sie das Bild auf die von Ihnen gewünschte Weise verwenden.

Ich weiß nicht, ob Sie Tiefenbild für Ihre Anwendung benötigen, aber die Themen /kinect2/sd/points und /kinect2/hd/points gibt Ihnen eine Nachricht vom Typ sensor_msgs/PointCloud2. Sie können Methoden von PCL verwenden, um die Nachricht in eine PCL-Punktwolke (pcl::fromROSMsg) und dann zurück in eine ROS-Nachricht (pcl::toROSMsg) zu konvertieren. Sie müssen einschließen pcl_conversions

+0

ok ich bin purer anfänger, mit include du meinst ich muss pcl_conversions paket von github einbinden und dann mit meinem paket nochmal machen und mit methoden richtig umwandeln? –

+0

Sie sollten bereits pcl_conversions haben ... fügen Sie es in das Projekt in Ihrem CMakeLists.txt innerhalb find_package wie in diesem Code-Schnipsel: 'find_package (catkin benötigten Komponenten roscpp rospy roslib std_msgs pcl_conversions )' Sie dann müssen erstellen und ausführen Abhängigkeiten in Ihrem package.xml ' pcl_ros pcl_conversions' schließlich in Ihrem Code hinzufügen: '# include ' – Fabiobreo

+0

können wir benutze pcl_ros p ackage pointcloud_to_pcd wie kinectv2 liefert eine Nachricht vom Typ sensor_msgs/PointCloud2? –

Verwandte Themen