@@ -84,9 +84,27 @@ CallbackReturn PCLLocalization::on_activate(const rclcpp_lifecycle::State &)
8484
8585 if (use_pcd_map_) {
8686 pcl::PointCloud<pcl::PointXYZI>::Ptr map_cloud_ptr (new pcl::PointCloud<pcl::PointXYZI>);
87- pcl::io::loadPCDFile (map_path_, *map_cloud_ptr);
88- RCLCPP_INFO (get_logger (), " Map Size %ld" , map_cloud_ptr->size ());
87+ // load a pcd or ply file
88+ if (map_path_.rfind (" .pcd" ) != std::string::npos) {
89+ RCLCPP_INFO (get_logger (), " Loading pcd map from: %s" , map_path_.c_str ());
90+ if (pcl::io::loadPCDFile (map_path_, *map_cloud_ptr) == -1 ) {
91+ RCLCPP_ERROR (get_logger (), " Failed to load pcd file: %s" , map_path_.c_str ());
92+ return CallbackReturn::FAILURE ;
93+ }
94+ } else if (map_path_.rfind (" .ply" ) != std::string::npos) {
95+ RCLCPP_INFO (get_logger (), " Loading ply map from: %s" , map_path_.c_str ());
96+ if (pcl::io::loadPLYFile (map_path_, *map_cloud_ptr) == -1 ) {
97+ RCLCPP_ERROR (get_logger (), " Failed to load ply file: %s" , map_path_.c_str ());
98+ return CallbackReturn::FAILURE ;
99+ }
100+ } else {
101+ RCLCPP_ERROR (
102+ get_logger (), " Unsupported map file format. Please use .pcd or .ply: %s" ,
103+ map_path_.c_str ());
104+ return CallbackReturn::FAILURE ;
105+ }
89106
107+ RCLCPP_INFO (get_logger (), " Map Size %ld" , map_cloud_ptr->size ());
90108 sensor_msgs::msg::PointCloud2::SharedPtr map_msg_ptr (new sensor_msgs::msg::PointCloud2);
91109 pcl::toROSMsg (*map_cloud_ptr, *map_msg_ptr);
92110 map_msg_ptr->header .frame_id = global_frame_id_;
0 commit comments