Skip to content
This repository was archived by the owner on Oct 8, 2025. It is now read-only.

Commit e65c22e

Browse files
committed
Dynamic map published by Maps manager
1 parent 7e5eba7 commit e65c22e

5 files changed

Lines changed: 33 additions & 41 deletions

File tree

easynav_pointcloud_common/include/easynav_pointcloud_common/PointCloudData.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,7 @@ class PointCloudData
127127
*/
128128
bool load_from_file(const std::string & path);
129129

130-
void show(void) const;
130+
void show(const std::string & comment) const;
131131

132132
private:
133133
std::size_t width_;

easynav_pointcloud_common/src/easynav_pointcloud_common/PointCloudData.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,6 @@ PointCloudData::refresh(
116116
void
117117
PointCloudData::to_point_cloud(sensor_msgs::msg::PointCloud2 & cloud_msg) const
118118
{
119-
std::cerr << "Getting Data from msg\n";
120119
cloud_msg.width = static_cast<uint32_t>(width_);
121120
cloud_msg.height = static_cast<uint32_t>(height_);
122121
cloud_msg.point_step = static_cast<uint32_t>(point_step_);
@@ -185,9 +184,10 @@ PointCloudData::load_from_file(const std::string & path)
185184
}
186185

187186
void
188-
PointCloudData::show(void) const
187+
PointCloudData::show(const std::string & comment) const
189188
{
190189
std::cerr << ":: PointCloudData values :: \n";
190+
std::cerr << "Comment: " << comment << "\n";
191191
std::cerr << "width: " << width_ << "\n";
192192
std::cerr << "height: " << height_ << "\n";
193193
std::cerr << "point step: " << point_step_ << "\n";

easynav_pointcloud_maps_manager/CMakeLists.txt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ set(CMAKE_CXX_EXTENSIONS OFF)
1212
find_package(ament_cmake REQUIRED)
1313
find_package(easynav_common REQUIRED)
1414
find_package(easynav_core REQUIRED)
15+
find_package(tf2_ros REQUIRED)
1516
find_package(pluginlib REQUIRED)
1617
find_package(ament_index_cpp REQUIRED)
1718
find_package(easynav_pointcloud_common REQUIRED)
@@ -23,11 +24,12 @@ add_library(${PROJECT_NAME} SHARED
2324
)
2425
target_include_directories(${PROJECT_NAME} PUBLIC
2526
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
26-
$<INSTALL_INTERFACE:include>
27+
$<INSTALL_INTERFACE:include/${PROJECT_NAME}>
2728
)
2829
target_link_libraries(${PROJECT_NAME} PUBLIC
2930
easynav_common::easynav_common
3031
easynav_core::easynav_core
32+
tf2_ros::tf2_ros
3133
pluginlib::pluginlib
3234
ament_index_cpp::ament_index_cpp
3335
easynav_pointcloud_common::easynav_pointcloud_common

easynav_pointcloud_maps_manager/src/easynav_pointcloud_maps_manager/PointCloudMapsManager.cpp

Lines changed: 25 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -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)
168159
void
169160
PointCloudMapsManager::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_);
Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,9 @@
11
maps_manager_node:
22
ros__parameters:
33
use_sim_time: true
4-
map_types:
5-
- PointCloudData
4+
map_types: [PointCloudData]
65
PointCloudData:
76
plugin: easynav_pointcloud_maps_manager/PointCloudMapsManager
8-
package: easynav_pointcloud_maps_manager
97
map_topic_in: /map_builder/cloud_filtered
8+
map_path_file: /home/juanscelyg/ws/easynav_ws/src/easynav_outdoor_testcase/maps/map.pcd
109

0 commit comments

Comments
 (0)