@@ -55,36 +55,31 @@ PointCloudMapsManager::on_initialize()
5555 auto node = get_node ();
5656 const auto & plugin_name = get_plugin_name ();
5757
58- std::string package_name, map_path_file, map_topic_in;
59- node->declare_parameter (plugin_name + " .package" , package_name);
58+ std::string map_path_file, map_topic_in;
6059 node->declare_parameter (plugin_name + " .map_path_file" , map_path_file);
6160 node->declare_parameter (plugin_name + " .map_topic_in" , map_topic_in);
6261
63- node->get_parameter (plugin_name + " .package" , package_name);
6462 node->get_parameter (plugin_name + " .map_path_file" , map_path_file);
6563 node->get_parameter (plugin_name + " .map_topic_in" , map_topic_in);
6664
6765 std::cerr << " :: PARAMETERS :: \n " ;
68- std::cerr << " Package name: " << package_name << " \n " ;
6966 std::cerr << " Map path file: " << map_path_file << " \n " ;
7067 std::cerr << " map topic in name: " << map_topic_in << " \n " ;
7168
72- if (package_name != " " && map_path_file != " " ) {
73- std::string pkgpath;
74- try {
75- pkgpath = ament_index_cpp::get_package_share_directory (package_name);
76- map_path_ = pkgpath + " /" + map_path_file;
77- } catch (ament_index_cpp::PackageNotFoundError & ex) {
78- return std::unexpected (" Package " + package_name + " not found. Error: " + ex.what ());
79- }
69+ if (map_path_file != " " ) {
70+ map_path_ = map_path_file;
8071
8172 if (!static_map_.load_from_file (map_path_)) {
8273 return std::unexpected (" File [" + map_path_ + " ] not found" );
8374 } else {
8475 RCLCPP_INFO (get_node ()->get_logger (),
85- " PointCloudMapsManager::File read : Map loaded" );
76+ " PointCloudMapsManager : Map loaded from file " );
8677 dynamic_map_.deep_copy (static_map_);
8778 }
79+ } else {
80+ map_path_ = " map.pcd" ;
81+ RCLCPP_INFO (get_node ()->get_logger (),
82+ " PointCloudMapsManager: Map path file to save: %s" , map_path_.c_str ());
8883 }
8984
9085 std::string topic_name;
@@ -94,13 +89,6 @@ PointCloudMapsManager::on_initialize()
9489 topic_name = node->get_name () + std::string (" /" ) + plugin_name + " /topic_in" ;
9590 }
9691
97- if (map_path_file == " " ) {
98- map_path_ = " map.PointCloudData" ;
99- }
100-
101- RCLCPP_INFO (get_node ()->get_logger (),
102- " PointCloudMapsManager::Map path file: %s" , map_path_.c_str ());
103-
10492 static_map_pub_ = node->create_publisher <sensor_msgs::msg::PointCloud2>(
10593 node->get_name () + std::string (" /" ) + plugin_name + " /static_map" ,
10694 rclcpp::QoS (1 ).transient_local ().reliable ());
@@ -113,9 +101,8 @@ PointCloudMapsManager::on_initialize()
113101 [this ](sensor_msgs::msg::PointCloud2::UniquePtr msg) {
114102
115103 RCLCPP_INFO (get_node ()->get_logger (),
116- " PointCloudMapsManager:: topic_callback: reading map" );
104+ " PointCloudMapsManager: topic_callback: reading map" );
117105 static_map_.from_point_cloud (*msg);
118- dynamic_map_.from_point_cloud (*msg);
119106
120107 static_map_.to_point_cloud (static_map_msg_);
121108 static_map_msg_.header .frame_id = " map" ;
@@ -147,9 +134,13 @@ PointCloudMapsManager::on_initialize()
147134 static_map_.to_point_cloud (static_map_msg_);
148135 static_map_msg_.header .frame_id = " map" ;
149136 static_map_msg_.header .stamp = this ->get_node ()->now ();
150-
151137 static_map_pub_->publish (static_map_msg_);
152138
139+ dynamic_map_.to_point_cloud (dynamic_map_msg_);
140+ dynamic_map_msg_.header .frame_id = " map" ;
141+ dynamic_map_msg_.header .stamp = this ->get_node ()->now ();
142+ dynamic_map_pub_->publish (dynamic_map_msg_);
143+
153144 return {};
154145}
155146
@@ -168,22 +159,22 @@ PointCloudMapsManager::set_dynamic_map(const PointCloudData & new_map)
168159void
169160PointCloudMapsManager::update (NavState & nav_state)
170161{
171- RCLCPP_INFO (get_node ()->get_logger ()," Updating" );
172- dynamic_map_.deep_copy (static_map_);
173162
174- if (!nav_state.has (" points" )) {
175- nav_state.set (" map.static" , static_map_);
176- nav_state.set (" map.dynamic" , dynamic_map_);
177- return ;
178- }
163+ dynamic_map_.deep_copy (static_map_);
179164
180- const auto & perceptions = nav_state.get <PointPerceptions>(" points" );
165+ if (nav_state.has (" points" )) {
166+ const auto & perceptions = nav_state.get <PointPerceptions>(" points" );
181167
182- auto fused = PointPerceptionsOpsView (perceptions)
183- .fuse (" map" )->as_points ();
168+ auto fused = PointPerceptionsOpsView (perceptions)
169+ .fuse (" map" )->as_points ();
184170
185- dynamic_map_.refresh (dynamic_map_msg_, fused);
171+ dynamic_map_.refresh (dynamic_map_msg_, fused);
172+ dynamic_map_.show (" dynamic fused" );
173+ }
174+ nav_state.set (" map.static" , static_map_);
175+ nav_state.set (" map.dynamic" , dynamic_map_);
186176
177+ dynamic_map_.to_point_cloud (dynamic_map_msg_);
187178 dynamic_map_msg_.header .frame_id = " map" ;
188179 dynamic_map_msg_.header .stamp = get_node ()->now ();
189180 dynamic_map_pub_->publish (dynamic_map_msg_);
0 commit comments