Pulls out RViz support into a separate package. (#66)
							parent
							
								
									534f0119c4
								
							
						
					
					
						commit
						1525dbdbc7
					
				|  | @ -21,11 +21,11 @@ set(PACKAGE_DEPENDENCIES | |||
|   geometry_msgs | ||||
|   cartographer_ros_msgs | ||||
|   roscpp | ||||
|   rviz | ||||
|   sensor_msgs | ||||
|   nav_msgs | ||||
|   tf2 | ||||
|   tf2_eigen | ||||
|   tf2_ros | ||||
| ) | ||||
| 
 | ||||
| set(CMAKE_CXX_FLAGS "-pthread -std=c++11 -Wreorder") | ||||
|  | @ -70,18 +70,6 @@ link_directories(${CARTOGRAPHER_LIBRARY_DIRS}) | |||
| find_package(ZLIB REQUIRED) | ||||
| include_directories(${ZLIB_INCLUDE_DIRS}) | ||||
| 
 | ||||
| set(CMAKE_AUTOMOC ON) | ||||
| if(rviz_QT_VERSION VERSION_LESS "5") | ||||
|   message(STATUS "Using Qt4 based on the rviz_QT_VERSION: ${rviz_QT_VERSION}") | ||||
|   find_package(Qt4 ${rviz_QT_VERSION} EXACT REQUIRED QtCore QtGui) | ||||
|   include(${QT_USE_FILE}) | ||||
| else() | ||||
|   message(STATUS "Using Qt5 based on the rviz_QT_VERSION: ${rviz_QT_VERSION}") | ||||
|   find_package(Qt5 ${rviz_QT_VERSION} EXACT REQUIRED Core Widgets) | ||||
|   set(QT_LIBRARIES Qt5::Widgets) | ||||
| endif() | ||||
| add_definitions(-DQT_NO_KEYWORDS) | ||||
| 
 | ||||
| find_package(Boost REQUIRED | ||||
|  COMPONENTS | ||||
|  system | ||||
|  | @ -95,7 +83,6 @@ add_executable(cartographer_node | |||
|   src/cartographer_node_main.cc | ||||
|   src/msg_conversion.cc | ||||
|   src/msg_conversion.h | ||||
|   src/node_constants.h | ||||
|   src/sensor_data.cc | ||||
|   src/sensor_data.h | ||||
|   src/sensor_data_producer.cc | ||||
|  | @ -105,45 +92,24 @@ add_executable(cartographer_node | |||
| ) | ||||
| target_link_libraries(cartographer_node | ||||
|   ${CARTOGRAPHER_LIBRARIES} | ||||
|   ${catkin_LIBRARIES} | ||||
|   ${PCL_LIBRARIES} | ||||
|   gflags  # TODO(whess): Use or remove gflags_catkin. | ||||
|   ${catkin_LIBRARIES} | ||||
|   gflags  # TODO(whess): CMake-ify? | ||||
| ) | ||||
| add_dependencies(cartographer_node | ||||
|   ${catkin_EXPORTED_TARGETS} | ||||
| ) | ||||
| 
 | ||||
| add_library(cartographer_rviz_submaps_visualization | ||||
|   src/drawable_submap.cc | ||||
|   src/drawable_submap.h | ||||
|   src/node_constants.h | ||||
|   src/submaps_display.cc | ||||
|   src/submaps_display.h | ||||
| ) | ||||
| target_link_libraries(cartographer_rviz_submaps_visualization | ||||
|   ${Boost_LIBRARIES} | ||||
|   ${CARTOGRAPHER_LIBRARIES} | ||||
|   ${catkin_LIBRARIES} | ||||
|   ${QT_LIBRARIES} | ||||
|   ${ZLIB_LIBRARIES} | ||||
| ) | ||||
| 
 | ||||
| add_dependencies(cartographer_rviz_submaps_visualization | ||||
|   ${catkin_EXPORTED_TARGETS} | ||||
| ) | ||||
| 
 | ||||
| catkin_add_gtest(time_conversion_test | ||||
|   src/time_conversion_test.cc | ||||
|   src/time_conversion.h | ||||
|   src/time_conversion.cc | ||||
| ) | ||||
| 
 | ||||
| target_link_libraries(time_conversion_test | ||||
|   ${GTEST_BOTH_LIBRARIES} | ||||
|   ${CARTOGRAPHER_LIBRARIES} | ||||
|   ${GTEST_BOTH_LIBRARIES} | ||||
|   ${catkin_LIBRARIES} | ||||
| ) | ||||
| 
 | ||||
| add_dependencies(time_conversion_test | ||||
|   ${catkin_EXPORTED_TARGETS} | ||||
| ) | ||||
|  | @ -160,18 +126,8 @@ install(DIRECTORY configuration_files/ | |||
|   DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION}/configuration_files/ | ||||
| ) | ||||
| 
 | ||||
| install(TARGETS | ||||
|   cartographer_rviz_submaps_visualization cartographer_node | ||||
| install(TARGETS cartographer_node | ||||
|   ARCHIVE DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION} | ||||
|   LIBRARY DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION} | ||||
|   RUNTIME DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION} | ||||
| ) | ||||
| 
 | ||||
| install(FILES | ||||
|   rviz_plugin_description.xml | ||||
|   DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION} | ||||
| ) | ||||
| 
 | ||||
| install(DIRECTORY ogre_media/ | ||||
|   DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION}/ogre_media | ||||
| ) | ||||
|  |  | |||
|  | @ -45,22 +45,17 @@ | |||
|   <depend>rosbag</depend> | ||||
|   <depend>roscpp</depend> | ||||
|   <depend>roslib</depend> | ||||
|   <depend>rviz</depend> | ||||
|   <depend>sensor_msgs</depend> | ||||
|   <depend>std_msgs</depend> | ||||
|   <depend>tf2</depend> | ||||
|   <depend>tf2_eigen</depend> | ||||
|   <depend>visualization_msgs</depend> | ||||
|   <depend>tf2_ros</depend> | ||||
|   <depend>geometry_msgs</depend> | ||||
|   <depend>nav_msgs</depend> | ||||
|   <depend>libpcl-all-dev</depend> | ||||
|   <depend>pcl_conversions</depend> | ||||
|   <depend>eigen_conversions</depend> | ||||
|   <depend>message_runtime</depend> | ||||
|   <depend>qtbase5-dev</depend> | ||||
|   <depend>libqt5-core</depend> | ||||
|   <depend>libqt5-gui</depend> | ||||
|   <depend>libqt5-widgets</depend> | ||||
| 
 | ||||
|   <test_depend>rosunit</test_depend> | ||||
| 
 | ||||
|  |  | |||
|  | @ -64,7 +64,6 @@ | |||
| #include "tf2_ros/transform_listener.h" | ||||
| 
 | ||||
| #include "msg_conversion.h" | ||||
| #include "node_constants.h" | ||||
| #include "sensor_data.h" | ||||
| #include "sensor_data_producer.h" | ||||
| #include "time_conversion.h" | ||||
|  | @ -99,6 +98,8 @@ constexpr char kImuTopic[] = "imu"; | |||
| constexpr char kOdometryTopic[] = "odom"; | ||||
| constexpr char kOccupancyGridTopic[] = "map"; | ||||
| constexpr char kScanMatchedPointCloudTopic[] = "scan_matched_points2"; | ||||
| constexpr char kSubmapListTopic[] = "submap_list"; | ||||
| constexpr char kSubmapQueryServiceName[] = "submap_query"; | ||||
| 
 | ||||
| struct NodeOptions { | ||||
|   carto::mapping::proto::MapBuilderOptions map_builder_options; | ||||
|  |  | |||
|  | @ -1,31 +0,0 @@ | |||
| /*
 | ||||
|  * Copyright 2016 The Cartographer Authors | ||||
|  * | ||||
|  * Licensed under the Apache License, Version 2.0 (the "License"); | ||||
|  * you may not use this file except in compliance with the License. | ||||
|  * You may obtain a copy of the License at | ||||
|  * | ||||
|  *      http://www.apache.org/licenses/LICENSE-2.0
 | ||||
|  * | ||||
|  * Unless required by applicable law or agreed to in writing, software | ||||
|  * distributed under the License is distributed on an "AS IS" BASIS, | ||||
|  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||||
|  * See the License for the specific language governing permissions and | ||||
|  * limitations under the License. | ||||
|  */ | ||||
| 
 | ||||
| #ifndef CARTOGRAPHER_ROS_GOOGLE_CARTOGRAPHER_SRC_NODE_CONSTANTS_H_ | ||||
| #define CARTOGRAPHER_ROS_GOOGLE_CARTOGRAPHER_SRC_NODE_CONSTANTS_H_ | ||||
| 
 | ||||
| namespace cartographer_ros { | ||||
| 
 | ||||
| // The topic that the node will subscribe to.
 | ||||
| constexpr char kSubmapListTopic[] = "submap_list"; | ||||
| 
 | ||||
| // The service we serve in the Node and query in the RViz plugin for submap
 | ||||
| // which are used for visualization.
 | ||||
| constexpr char kSubmapQueryServiceName[] = "submap_query"; | ||||
| 
 | ||||
| }  // namespace cartographer_ros
 | ||||
| 
 | ||||
| #endif  // CARTOGRAPHER_ROS_GOOGLE_CARTOGRAPHER_SRC_NODE_CONSTANTS_H_
 | ||||
|  | @ -0,0 +1,110 @@ | |||
| # Copyright 2016 The Cartographer Authors | ||||
| # | ||||
| # Licensed under the Apache License, Version 2.0 (the "License"); | ||||
| # you may not use this file except in compliance with the License. | ||||
| # You may obtain a copy of the License at | ||||
| # | ||||
| #      http://www.apache.org/licenses/LICENSE-2.0 | ||||
| # | ||||
| # Unless required by applicable law or agreed to in writing, software | ||||
| # distributed under the License is distributed on an "AS IS" BASIS, | ||||
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||||
| # See the License for the specific language governing permissions and | ||||
| # limitations under the License. | ||||
| 
 | ||||
| cmake_minimum_required(VERSION 2.8) | ||||
| 
 | ||||
| project(cartographer_rviz) | ||||
| 
 | ||||
| set(PACKAGE_DEPENDENCIES | ||||
|   cartographer_ros_msgs | ||||
|   eigen_conversions | ||||
|   roscpp | ||||
|   rviz | ||||
| ) | ||||
| 
 | ||||
| set(CMAKE_CXX_FLAGS "-pthread -std=c++11 -Wreorder") | ||||
| 
 | ||||
| if(NOT CMAKE_BUILD_TYPE OR CMAKE_BUILD_TYPE STREQUAL "") | ||||
|   set(CMAKE_BUILD_TYPE Release) | ||||
| endif() | ||||
| 
 | ||||
| if(CMAKE_BUILD_TYPE STREQUAL "Release") | ||||
|   set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O3 -DNDEBUG") | ||||
| elseif(CMAKE_BUILD_TYPE STREQUAL "RelWithDebInfo") | ||||
|   set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O3 -g -DNDEBUG") | ||||
| elseif(CMAKE_BUILD_TYPE STREQUAL "Debug") | ||||
|   message(FATAL_ERROR "Cartographer is too slow to be useful in debug mode.") | ||||
| else() | ||||
|   message(FATAL_ERROR "Unknown CMAKE_BUILD_TYPE: ${CMAKE_BUILD_TYPE}") | ||||
| endif() | ||||
| 
 | ||||
| message(STATUS "Build type: ${CMAKE_BUILD_TYPE}") | ||||
| 
 | ||||
| find_package(catkin REQUIRED COMPONENTS ${PACKAGE_DEPENDENCIES}) | ||||
| include_directories(${catkin_INCLUDE_DIRS}) | ||||
| 
 | ||||
| catkin_package( | ||||
|   CATKIN_DEPENDS | ||||
|     message_runtime | ||||
|     ${PACKAGE_DEPENDENCIES} | ||||
| ) | ||||
| 
 | ||||
| find_package(cartographer REQUIRED) | ||||
| include_directories(${CARTOGRAPHER_INCLUDE_DIRS}) | ||||
| link_directories(${CARTOGRAPHER_LIBRARY_DIRS}) | ||||
| 
 | ||||
| find_package(ZLIB REQUIRED) | ||||
| include_directories(${ZLIB_INCLUDE_DIRS}) | ||||
| 
 | ||||
| set(CMAKE_AUTOMOC ON) | ||||
| if(rviz_QT_VERSION VERSION_LESS "5") | ||||
|   message(STATUS "Using Qt4 based on the rviz_QT_VERSION: ${rviz_QT_VERSION}") | ||||
|   find_package(Qt4 ${rviz_QT_VERSION} EXACT REQUIRED QtCore QtGui) | ||||
|   include(${QT_USE_FILE}) | ||||
| else() | ||||
|   message(STATUS "Using Qt5 based on the rviz_QT_VERSION: ${rviz_QT_VERSION}") | ||||
|   find_package(Qt5 ${rviz_QT_VERSION} EXACT REQUIRED Core Widgets) | ||||
|   set(QT_LIBRARIES Qt5::Widgets) | ||||
| endif() | ||||
| add_definitions(-DQT_NO_KEYWORDS) | ||||
| 
 | ||||
| find_package(Boost REQUIRED | ||||
|  COMPONENTS | ||||
|  system | ||||
|  iostreams | ||||
| ) | ||||
| add_definitions(${BOOST_DEFINITIONS}) | ||||
| include_directories(${Boost_INCLUDE_DIRS}) | ||||
| link_directories(${Boost_LIBRARY_DIRS}) | ||||
| 
 | ||||
| add_library(cartographer_rviz_submaps_visualization | ||||
|   src/drawable_submap.cc | ||||
|   src/drawable_submap.h | ||||
|   src/submaps_display.cc | ||||
|   src/submaps_display.h | ||||
| ) | ||||
| target_link_libraries(cartographer_rviz_submaps_visualization | ||||
|   ${Boost_LIBRARIES} | ||||
|   ${CARTOGRAPHER_LIBRARIES} | ||||
|   ${QT_LIBRARIES} | ||||
|   ${ZLIB_LIBRARIES} | ||||
|   ${catkin_LIBRARIES} | ||||
| ) | ||||
| add_dependencies(cartographer_rviz_submaps_visualization | ||||
|   ${catkin_EXPORTED_TARGETS} | ||||
| ) | ||||
| 
 | ||||
| install(TARGETS cartographer_rviz_submaps_visualization | ||||
|   ARCHIVE DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION} | ||||
|   LIBRARY DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION} | ||||
|   RUNTIME DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION} | ||||
| ) | ||||
| 
 | ||||
| install(FILES rviz_plugin_description.xml | ||||
|   DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION} | ||||
| ) | ||||
| 
 | ||||
| install(DIRECTORY ogre_media/ | ||||
|   DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION}/ogre_media | ||||
| ) | ||||
|  | @ -0,0 +1,53 @@ | |||
| <?xml version="1.0"?> | ||||
| <!-- | ||||
|   Copyright 2016 The Cartographer Authors | ||||
| 
 | ||||
|   Licensed under the Apache License, Version 2.0 (the "License"); | ||||
|   you may not use this file except in compliance with the License. | ||||
|   You may obtain a copy of the License at | ||||
| 
 | ||||
|        http://www.apache.org/licenses/LICENSE-2.0 | ||||
| 
 | ||||
|   Unless required by applicable law or agreed to in writing, software | ||||
|   distributed under the License is distributed on an "AS IS" BASIS, | ||||
|   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||||
|   See the License for the specific language governing permissions and | ||||
|   limitations under the License. | ||||
| --> | ||||
| 
 | ||||
| <package format="2"> | ||||
|   <name>cartographer_rviz</name> | ||||
|   <version>1.0.0</version> | ||||
|   <description> | ||||
|     Cartographer is a system that provides real-time simultaneous localization | ||||
|     and mapping SLAM across multiple platforms and sensor configurations. This | ||||
|     package provides Cartographer's RViz integration. | ||||
|   </description> | ||||
|   <maintainer email="google-cartographer@googlegroups.com"> | ||||
|     The Cartographer Authors | ||||
|   </maintainer> | ||||
|   <license>Apache 2.0</license> | ||||
| 
 | ||||
|   <url>https://github.com/googlecartographer/cartographer_ros</url> | ||||
| 
 | ||||
|   <buildtool_depend>catkin</buildtool_depend> | ||||
| 
 | ||||
|   <build_depend>g++-static</build_depend> | ||||
| 
 | ||||
|   <depend>cartographer</depend> | ||||
|   <depend>cartographer_ros_msgs</depend> | ||||
| 
 | ||||
|   <depend>eigen_conversions</depend> | ||||
|   <depend>libqt5-core</depend> | ||||
|   <depend>libqt5-gui</depend> | ||||
|   <depend>libqt5-widgets</depend> | ||||
|   <depend>message_runtime</depend> | ||||
|   <depend>qtbase5-dev</depend> | ||||
|   <depend>roscpp</depend> | ||||
|   <depend>roslib</depend> | ||||
|   <depend>rviz</depend> | ||||
| 
 | ||||
|   <export> | ||||
|       <rviz plugin="${prefix}/rviz_plugin_description.xml" /> | ||||
|   </export> | ||||
| </package> | ||||
|  | @ -16,7 +16,7 @@ | |||
| 
 | ||||
| <library path="lib/libcartographer_rviz_submaps_visualization"> | ||||
|   <class name="Submaps" | ||||
|          type="cartographer_ros::rviz::SubmapsDisplay" | ||||
|          type="cartographer_rviz::SubmapsDisplay" | ||||
|          base_class_type="rviz::Display"> | ||||
|     <description> | ||||
|       Displays submaps as a unified map in RViz. | ||||
|  | @ -30,8 +30,7 @@ | |||
| #include <sstream> | ||||
| #include <string> | ||||
| 
 | ||||
| namespace cartographer_ros { | ||||
| namespace rviz { | ||||
| namespace cartographer_rviz { | ||||
| 
 | ||||
| namespace { | ||||
| 
 | ||||
|  | @ -237,5 +236,4 @@ float DrawableSubmap::UpdateAlpha(const float target_alpha) { | |||
|   return current_alpha_; | ||||
| } | ||||
| 
 | ||||
| }  // namespace rviz
 | ||||
| }  // namespace cartographer_ros
 | ||||
| }  // namespace cartographer_rviz
 | ||||
|  | @ -14,8 +14,8 @@ | |||
|  * limitations under the License. | ||||
|  */ | ||||
| 
 | ||||
| #ifndef CARTOGRAPHER_ROS_GOOGLE_CARTOGRAPHER_SRC_DRAWABLE_SUBMAP_H_ | ||||
| #define CARTOGRAPHER_ROS_GOOGLE_CARTOGRAPHER_SRC_DRAWABLE_SUBMAP_H_ | ||||
| #ifndef CARTOGRAPHER_RVIZ_SRC_DRAWABLE_SUBMAP_H_ | ||||
| #define CARTOGRAPHER_RVIZ_SRC_DRAWABLE_SUBMAP_H_ | ||||
| 
 | ||||
| #include <OgreManualObject.h> | ||||
| #include <OgreMaterial.h> | ||||
|  | @ -35,8 +35,7 @@ | |||
| 
 | ||||
| #include <future> | ||||
| 
 | ||||
| namespace cartographer_ros { | ||||
| namespace rviz { | ||||
| namespace cartographer_rviz { | ||||
| 
 | ||||
| // Contains all the information needed to render a submap onto the final
 | ||||
| // texture representing the whole map.
 | ||||
|  | @ -103,7 +102,6 @@ class DrawableSubmap : public QObject { | |||
|   float current_alpha_ = 0.f; | ||||
| }; | ||||
| 
 | ||||
| }  // namespace rviz
 | ||||
| }  // namespace cartographer_ros
 | ||||
| }  // namespace cartographer_rviz
 | ||||
| 
 | ||||
| #endif  // CARTOGRAPHER_ROS_GOOGLE_CARTOGRAPHER_SRC_DRAWABLE_SUBMAP_H_
 | ||||
| #endif  // CARTOGRAPHER_RVIZ_SRC_DRAWABLE_SUBMAP_H_
 | ||||
|  | @ -29,10 +29,7 @@ | |||
| #include <rviz/frame_manager.h> | ||||
| #include <rviz/properties/string_property.h> | ||||
| 
 | ||||
| #include "node_constants.h" | ||||
| 
 | ||||
| namespace cartographer_ros { | ||||
| namespace rviz { | ||||
| namespace cartographer_rviz { | ||||
| 
 | ||||
| namespace { | ||||
| 
 | ||||
|  | @ -42,12 +39,13 @@ constexpr char kGlsl120Directory[] = "/glsl120"; | |||
| constexpr char kScriptsDirectory[] = "/scripts"; | ||||
| constexpr char kDefaultMapFrame[] = "map"; | ||||
| constexpr char kDefaultTrackingFrame[] = "base_link"; | ||||
| constexpr char kDefaultSubmapQueryServiceName[] = "/submap_query"; | ||||
| 
 | ||||
| }  // namespace
 | ||||
| 
 | ||||
| SubmapsDisplay::SubmapsDisplay() : tf_listener_(tf_buffer_) { | ||||
|   submap_query_service_property_ = new ::rviz::StringProperty( | ||||
|       "Submap query service", QString("/") + kSubmapQueryServiceName, | ||||
|       "Submap query service", kDefaultSubmapQueryServiceName, | ||||
|       "Submap query service to connect to.", this, SLOT(Reset())); | ||||
|   map_frame_property_ = new ::rviz::StringProperty( | ||||
|       "Map frame", kDefaultMapFrame, "Map frame, used for fading out submaps.", | ||||
|  | @ -149,7 +147,6 @@ void SubmapsDisplay::update(const float wall_dt, const float ros_dt) { | |||
|   } | ||||
| } | ||||
| 
 | ||||
| }  // namespace rviz
 | ||||
| }  // namespace cartographer_ros
 | ||||
| }  // namespace cartographer_rviz
 | ||||
| 
 | ||||
| PLUGINLIB_EXPORT_CLASS(cartographer_ros::rviz::SubmapsDisplay, ::rviz::Display) | ||||
| PLUGINLIB_EXPORT_CLASS(cartographer_rviz::SubmapsDisplay, ::rviz::Display) | ||||
|  | @ -14,8 +14,8 @@ | |||
|  * limitations under the License. | ||||
|  */ | ||||
| 
 | ||||
| #ifndef CARTOGRAPHER_ROS_GOOGLE_CARTOGRAPHER_SRC_SUBMAPS_DISPLAY_H_ | ||||
| #define CARTOGRAPHER_ROS_GOOGLE_CARTOGRAPHER_SRC_SUBMAPS_DISPLAY_H_ | ||||
| #ifndef CARTOGRAPHER_RVIZ_SRC_SUBMAPS_DISPLAY_H_ | ||||
| #define CARTOGRAPHER_RVIZ_SRC_SUBMAPS_DISPLAY_H_ | ||||
| 
 | ||||
| #include <cartographer/common/mutex.h> | ||||
| #include <cartographer/common/port.h> | ||||
|  | @ -29,8 +29,7 @@ | |||
| 
 | ||||
| #include "drawable_submap.h" | ||||
| 
 | ||||
| namespace cartographer_ros { | ||||
| namespace rviz { | ||||
| namespace cartographer_rviz { | ||||
| 
 | ||||
| // RViz plugin used for displaying maps which are represented by a collection of
 | ||||
| // submaps.
 | ||||
|  | @ -72,7 +71,6 @@ class SubmapsDisplay | |||
|   ::cartographer::common::Mutex mutex_; | ||||
| }; | ||||
| 
 | ||||
| }  // namespace rviz
 | ||||
| }  // namespace cartographer_ros
 | ||||
| }  // namespace cartographer_rviz
 | ||||
| 
 | ||||
| #endif  // CARTOGRAPHER_ROS_GOOGLE_CARTOGRAPHER_SRC_SUBMAPS_DISPLAY_H_
 | ||||
| #endif  // CARTOGRAPHER_RVIZ_SRC_SUBMAPS_DISPLAY_H_
 | ||||
		Loading…
	
		Reference in New Issue