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