Skip to content

Commit 5ba6b35

Browse files
authored
Merge pull request #3 from fmrico/load_save
[WIP] Save/Load gridmaps
2 parents a7bb5b9 + 4fcfa42 commit 5ba6b35

19 files changed

Lines changed: 1455 additions & 224 deletions

.github/thirdparty.repos

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@ repositories:
55
version: rolling
66
ThirdParty/grid_map:
77
type: git
8-
url: https://github.com/kiko2r/grid_map.git
9-
version: grid_map_msgs
8+
url: https://github.com/fmrico/grid_map.git
9+
version: rolling_ament_fixed
1010
ThirdParty/navigation2:
1111
type: git
1212
url: https://github.com/kiko2r/navigation2.git

.github/workflows/rolling.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ jobs:
2828
- name: build and test
2929
uses: ros-tooling/action-ros-ci@0.4.3
3030
with:
31-
package-name: easynav_gridmap_maps_builder
31+
package-name: easynav_gridmap_maps_manager
3232
target-ros2-distro: rolling
3333
vcs-repo-file-url: ${GITHUB_WORKSPACE}/.github/thirdparty.repos
3434
skip-test: true

easynav_gridmap_maps_builder/CMakeLists.txt

Lines changed: 0 additions & 79 deletions
This file was deleted.

easynav_gridmap_maps_builder/tests/CMakeLists.txt

Lines changed: 0 additions & 11 deletions
This file was deleted.

easynav_gridmap_maps_builder/tests/gridmap_maps_builder_tests.cpp

Lines changed: 0 additions & 56 deletions
This file was deleted.
Lines changed: 116 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,116 @@
1+
cmake_minimum_required(VERSION 3.20)
2+
project(easynav_gridmap_maps_manager)
3+
4+
if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang")
5+
add_compile_options(-Wall -Wextra -Wpedantic)
6+
endif()
7+
8+
set(CMAKE_CXX_STANDARD 23)
9+
set(CMAKE_CXX_STANDARD_REQUIRED ON)
10+
set(CMAKE_CXX_EXTENSIONS OFF)
11+
12+
# Dependencies
13+
find_package(ament_cmake REQUIRED)
14+
find_package(rclcpp REQUIRED)
15+
find_package(rclcpp_lifecycle REQUIRED)
16+
find_package(sensor_msgs REQUIRED)
17+
find_package(easynav_common REQUIRED)
18+
find_package(easynav_core REQUIRED)
19+
find_package(std_msgs REQUIRED)
20+
find_package(std_srvs REQUIRED)
21+
find_package(geometry_msgs REQUIRED)
22+
find_package(grid_map_ros REQUIRED)
23+
find_package(grid_map_msgs REQUIRED)
24+
find_package(ament_index_cpp REQUIRED)
25+
find_package(yaml_cpp_vendor REQUIRED)
26+
find_package(cv_bridge REQUIRED)
27+
28+
set(dependencies
29+
rclcpp::rclcpp
30+
rclcpp_lifecycle::rclcpp_lifecycle
31+
easynav_common::easynav_common
32+
easynav_core::easynav_core
33+
grid_map_ros::grid_map_ros
34+
ament_index_cpp::ament_index_cpp
35+
cv_bridge::cv_bridge
36+
${sensor_msgs_TARGETS}
37+
${std_msgs_TARGETS}
38+
${std_srvs_TARGETS}
39+
${geometry_msgs_TARGETS}
40+
${grid_map_msgs_TARGETS}
41+
)
42+
43+
# Library
44+
add_library(${PROJECT_NAME} SHARED
45+
src/easynav_gridmap_maps_manager/GridmapMapsManager.cpp
46+
src/easynav_gridmap_maps_manager/GridmapMapsBuilderNode.cpp
47+
src/easynav_gridmap_maps_manager/utils.cpp
48+
)
49+
target_include_directories(${PROJECT_NAME} PUBLIC
50+
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
51+
$<BUILD_INTERFACE:${yaml-cpp_INCLUDE_DIRS}>
52+
$<INSTALL_INTERFACE:include/${PROJECT_NAME}>
53+
)
54+
target_link_libraries(${PROJECT_NAME} PUBLIC ${dependencies})
55+
56+
# Executable
57+
add_executable(gridmap_maps_builder_main src/gridmap_maps_builder_main.cpp)
58+
target_include_directories(${PROJECT_NAME} PUBLIC
59+
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
60+
$<INSTALL_INTERFACE:include/${PROJECT_NAME}>
61+
)
62+
target_link_libraries(gridmap_maps_builder_main ${PROJECT_NAME} ${dependencies})
63+
64+
install(
65+
DIRECTORY include/
66+
DESTINATION include/${PROJECT_NAME}
67+
)
68+
69+
install(TARGETS
70+
gridmap_maps_builder_main
71+
ARCHIVE DESTINATION lib
72+
LIBRARY DESTINATION lib
73+
RUNTIME DESTINATION lib/${PROJECT_NAME}
74+
)
75+
76+
install(TARGETS
77+
${PROJECT_NAME}
78+
EXPORT export_${PROJECT_NAME}
79+
ARCHIVE DESTINATION lib
80+
LIBRARY DESTINATION lib
81+
RUNTIME DESTINATION lib/${PROJECT_NAME}
82+
)
83+
84+
# Tests
85+
if(BUILD_TESTING)
86+
find_package(ament_lint_auto REQUIRED)
87+
set(ament_cmake_copyright_FOUND TRUE)
88+
set(ament_cmake_cpplint_FOUND TRUE)
89+
ament_lint_auto_find_test_dependencies()
90+
91+
find_package(ament_cmake_gtest REQUIRED)
92+
add_subdirectory(tests)
93+
endif()
94+
95+
ament_export_include_directories("include/${PROJECT_NAME}")
96+
ament_export_libraries(${PROJECT_NAME})
97+
ament_export_targets(export_${PROJECT_NAME})
98+
99+
# Register the plugin
100+
pluginlib_export_plugin_description_file(easynav_core easynav_gridmap_maps_manager_plugins.xml)
101+
102+
ament_export_dependencies(
103+
rclcpp
104+
rclcpp_lifecycle
105+
sensor_msgs
106+
std_msgs
107+
std_srvs
108+
geometry_msgs
109+
easynav_common
110+
grid_map_ros
111+
grid_map_msgs
112+
ament_index_cpp
113+
yaml_cpp_vendor
114+
cv_bridge
115+
)
116+
ament_package()
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
<class_libraries>
2+
<library path="easynav_gridmap_maps_manager">
3+
<class name="easynav_gridmap_maps_manager/GridmapMapsManager" type="easynav::GridmapMapsManager" base_class_type="easynav::MapsManagerBase">
4+
<description>
5+
A gridmap implementation for the Maps Manager.
6+
</description>
7+
</class>
8+
</library>
9+
</class_libraries>

easynav_gridmap_maps_builder/include/easynav_gridmap_maps_builder/GridmapMapsBuilderNode.hpp renamed to easynav_gridmap_maps_manager/include/easynav_gridmap_maps_manager/GridmapMapsBuilderNode.hpp

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,15 +20,18 @@
2020
/// \file
2121
/// \brief Definition of the GridmapMapsBuilderNode class.
2222

23-
#ifndef EASYNAV_OUTDOOR_MAPS_BUILDER__GRIDMAPMAPSBUILDERNODE_HPP_
24-
#define EASYNAV_OUTDOOR_MAPS_BUILDER__GRIDMAPMAPSBUILDERNODE_HPP_
23+
#ifndef EASYNAV_GRIDMAP_MAPS_MANAGER__GRIDMAPMAPSBUILDERNODE_HPP_
24+
#define EASYNAV_GRIDMAP_MAPS_MANAGER__GRIDMAPMAPSBUILDERNODE_HPP_
2525

2626
#include "rclcpp/rclcpp.hpp"
2727
#include "rclcpp/macros.hpp"
2828
#include "rclcpp_lifecycle/lifecycle_node.hpp"
2929

3030
#include "sensor_msgs/msg/point_cloud2.hpp"
3131
#include "grid_map_msgs/msg/grid_map.hpp"
32+
#include "std_srvs/srv/trigger.hpp"
33+
34+
#include "grid_map_ros/grid_map_ros.hpp"
3235

3336
#include "easynav_common/types/Perceptions.hpp"
3437

@@ -103,6 +106,9 @@ class GridmapMapsBuilderNode : public rclcpp_lifecycle::LifecycleNode
103106
*/
104107
void register_handler(std::shared_ptr<PerceptionHandler> handler);
105108

109+
const grid_map::GridMap & get_map() const {return map_;}
110+
void set_map(const grid_map::GridMap & map) {map_ = map;}
111+
106112
private:
107113
/// Name of the sensor topic to subscribe to (e.g., point clouds).
108114
std::string sensor_topic_;
@@ -124,8 +130,10 @@ class GridmapMapsBuilderNode : public rclcpp_lifecycle::LifecycleNode
124130

125131
/// Registered perception handlers by sensor name.
126132
std::map<std::string, std::shared_ptr<PerceptionHandler>> handlers_;
133+
134+
grid_map::GridMap map_;
127135
};
128136

129137
} // namespace easynav
130138

131-
#endif // EASYNAV_OUTDOOR_MAPS_BUILDER__GRIDMAPMAPSBUILDERNODE_HPP_
139+
#endif // EASYNAV_GRIDMAP_MAPS_MANAGER__GRIDMAPMAPSBUILDERNODE_HPP_

0 commit comments

Comments
 (0)