12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- import rospy
- import pcl
- import numpy as np
- def main():
-
- rospy.init_node('transform_pcd_node', anonymous=True)
-
- pcd_path = "/home/tong/renyuan_pointcloud/4/trans/LazerData.pcd"
-
- cloud = pcl.load(pcd_path)
-
- points = cloud.to_array()
- centroid = np.mean(points, axis=0)
- points_centered = points - centroid
-
- theta = np.pi
-
-
- transform_matrix = np.array([[1, 0, 0],
- [0, np.cos(theta), -np.sin(theta)],
- [0, np.sin(theta), np.cos(theta)]], dtype=np.float32)
-
- transformed_points = np.dot(points_centered[:, :3],transform_matrix.T)
- transformed_points += centroid
-
-
-
-
-
- translation_vector = np.array([-1000, 0, 0], dtype=np.float32)
- transformed_points += translation_vector
-
-
-
-
- transformed_cloud = pcl.PointCloud()
- transformed_cloud.from_array(transformed_points.astype(np.float32))
-
- pcl.save(transformed_cloud, "/home/tong/renyuan_pointcloud/4/trans/trans.pcd")
- if __name__ == "__main__":
- main()
|