Skip to content

Commit 928f11a

Browse files
committed
Fixed pointcloud publishing and removed log messages
1 parent ff3d12b commit 928f11a

File tree

1 file changed

+11
-14
lines changed

1 file changed

+11
-14
lines changed

Diff for: industrial_reconstruction/industrial_reconstruction/industrial_reconstruction.py

+11-14
Original file line numberDiff line numberDiff line change
@@ -51,14 +51,20 @@ def filterNormals(mesh, direction, angle):
5151
mesh.remove_triangles_by_mask(dot_prods < np.cos(angle))
5252
return mesh
5353

54-
def to_cloud_msg(frame, points, logger, colors=None, intensities=None, normals=None):
54+
def to_cloud_msg(frame, pointcloud: o3d.geometry.PointCloud, logger=None):
55+
points = np.asarray(pointcloud.points)
56+
colors = np.asarray(pointcloud.colors)
57+
normals = np.asarray(pointcloud.normals)
58+
5559
msg = PointCloud2()
5660
msg.header.frame_id = frame
5761
msg.height = 1
5862
msg.width = points.shape[0]
5963
msg.is_bigendian = False
6064
msg.is_dense = False
6165
data = points
66+
msg.point_step = 0
67+
msg.fields = []
6268

6369
def addField(name):
6470
nonlocal msg
@@ -79,11 +85,7 @@ def addField(name):
7985
colors = np.array([int_to_float_rbg(tuple_to_int_rgb(c)) for c in colors], dtype=np.float32)
8086
data = np.hstack([data, colors])
8187

82-
elif intensities is not None:
83-
addField("intensity")
84-
data = np.hstack([data, intensities])
85-
86-
elif normals is not None:
88+
if normals is not None:
8789
addField("normal_x")
8890
addField("normal_y")
8991
addField("normal_z")
@@ -415,7 +417,6 @@ def cameraCallback(self, depth_image_msg, rgb_image_msg):
415417

416418
def reconstructCallback(self):
417419
if (self.frame_count <= 30 or len(self.sensor_data) == 0): return # TODO: Evaluate necessity of this line
418-
self.get_logger().info("Starting integration")
419420

420421
depth_img, rgb_img, gm_tf_stamped = self.sensor_data.popleft()
421422
rgb_t, rgb_r = transformStampedToVectors(gm_tf_stamped)
@@ -445,21 +446,17 @@ def reconstructCallback(self):
445446
)
446447

447448
self.tsdf_volume.integrate(rgbd, self.intrinsics, np.linalg.inv(rgb_pose)) # TODO: See lookupTransform line
448-
self.get_logger().info("Integration complete")
449449
self.integration_done = True
450450
self.processed_frame_count += 1
451451
if self.processed_frame_count % 50 == 0 and self.record:
452452
self.get_logger().info("Extracting pointcloud for visualization")
453453
cloud = self.tsdf_volume.extract_point_cloud()
454-
if cloud.is_empty():
455-
self.get_logger().warn("It was, indeed, empty")
456454
try:
457-
ros_cloud = to_cloud_msg(frame=self.relative_frame, points=np.asarray(cloud.points), logger=self.get_logger(), colors=np.asarray(cloud.colors))
455+
ros_cloud = to_cloud_msg(frame=self.relative_frame, pointcloud=cloud, logger=self.get_logger())
456+
ros_cloud.header.stamp = self.get_clock().now().to_msg()
457+
self.cloud_pub.publish(ros_cloud)
458458
except Exception as E:
459459
self.get_logger().warn(f"Error creating cloud: {E}")
460-
self.get_logger().info("Made the cloud")
461-
ros_cloud.header.stamp = self.get_clock().now().to_msg()
462-
self.cloud_pub.publish(ros_cloud)
463460
except Exception as e:
464461
self.get_logger().error(f"Error processing images into tsdf: {e}")
465462
self.integration_done = True

0 commit comments

Comments
 (0)