add imu sub
This commit is contained in:
Generated
+8
@@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="ProjectModuleManager">
|
||||
<modules>
|
||||
<module fileurl="file://$PROJECT_DIR$/.idea/svo_ros.iml" filepath="$PROJECT_DIR$/.idea/svo_ros.iml" />
|
||||
</modules>
|
||||
</component>
|
||||
</project>
|
||||
Generated
+8
@@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<module type="CPP_MODULE" version="4">
|
||||
<component name="NewModuleRootManager">
|
||||
<content url="file://$MODULE_DIR$" />
|
||||
<orderEntry type="inheritedJdk" />
|
||||
<orderEntry type="sourceFolder" forTests="false" />
|
||||
</component>
|
||||
</module>
|
||||
Generated
+6
@@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="VcsDirectoryMappings">
|
||||
<mapping directory="$PROJECT_DIR$/.." vcs="Git" />
|
||||
</component>
|
||||
</project>
|
||||
Generated
+627
@@ -0,0 +1,627 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="CMakeRunConfigurationManager" shouldGenerate="true" shouldDeleteObsolete="true">
|
||||
<generated>
|
||||
<config projectName="vio_svo" targetName="actionlib_msgs_generate_messages_lisp" />
|
||||
<config projectName="vio_svo" targetName="nav_msgs_generate_messages_cpp" />
|
||||
<config projectName="vio_svo" targetName="visualization_msgs_generate_messages_eus" />
|
||||
<config projectName="vio_svo" targetName="vo" />
|
||||
<config projectName="vio_svo" targetName="actionlib_generate_messages_py" />
|
||||
<config projectName="vio_svo" targetName="geometry_msgs_generate_messages_eus" />
|
||||
<config projectName="vio_svo" targetName="rosgraph_msgs_generate_messages_cpp" />
|
||||
<config projectName="vio_svo" targetName="roscpp_generate_messages_nodejs" />
|
||||
<config projectName="vio_svo" targetName="rosgraph_msgs_generate_messages_lisp" />
|
||||
<config projectName="vio_svo" targetName="svo_msgs_generate_messages_eus" />
|
||||
<config projectName="vio_svo" targetName="svo_msgs_generate_messages_py" />
|
||||
<config projectName="vio_svo" targetName="std_msgs_generate_messages_py" />
|
||||
<config projectName="vio_svo" targetName="tf_generate_messages_eus" />
|
||||
<config projectName="vio_svo" targetName="tf2_msgs_generate_messages_cpp" />
|
||||
<config projectName="vio_svo" targetName="doxygen" />
|
||||
<config projectName="vio_svo" targetName="nav_msgs_generate_messages_lisp" />
|
||||
<config projectName="vio_svo" targetName="svo_visualizer" />
|
||||
<config projectName="vio_svo" targetName="std_msgs_generate_messages_cpp" />
|
||||
<config projectName="vio_svo" targetName="visualization_msgs_generate_messages_cpp" />
|
||||
<config projectName="vio_svo" targetName="nav_msgs_generate_messages_eus" />
|
||||
<config projectName="vio_svo" targetName="gtest" />
|
||||
<config projectName="vio_svo" targetName="std_msgs_generate_messages_nodejs" />
|
||||
<config projectName="vio_svo" targetName="geometry_msgs_generate_messages_cpp" />
|
||||
<config projectName="vio_svo" targetName="nav_msgs_generate_messages_py" />
|
||||
<config projectName="vio_svo" targetName="tf2_msgs_generate_messages_py" />
|
||||
<config projectName="vio_svo" targetName="actionlib_generate_messages_eus" />
|
||||
<config projectName="vio_svo" targetName="rosgraph_msgs_generate_messages_eus" />
|
||||
<config projectName="vio_svo" targetName="clean_test_results" />
|
||||
<config projectName="vio_svo" targetName="svo_msgs_generate_messages_cpp" />
|
||||
<config projectName="vio_svo" targetName="svo_msgs_generate_messages_nodejs" />
|
||||
<config projectName="vio_svo" targetName="visualization_msgs_generate_messages_nodejs" />
|
||||
<config projectName="vio_svo" targetName="roscpp_generate_messages_py" />
|
||||
<config projectName="vio_svo" targetName="rosgraph_msgs_generate_messages_py" />
|
||||
<config projectName="vio_svo" targetName="tf_generate_messages_cpp" />
|
||||
<config projectName="vio_svo" targetName="tf2_msgs_generate_messages_eus" />
|
||||
<config projectName="vio_svo" targetName="gmock" />
|
||||
<config projectName="vio_svo" targetName="actionlib_generate_messages_nodejs" />
|
||||
<config projectName="vio_svo" targetName="std_msgs_generate_messages_eus" />
|
||||
<config projectName="vio_svo" targetName="svo_msgs_generate_messages_lisp" />
|
||||
<config projectName="vio_svo" targetName="tf2_msgs_generate_messages_lisp" />
|
||||
<config projectName="vio_svo" targetName="std_msgs_generate_messages_lisp" />
|
||||
<config projectName="vio_svo" targetName="tf2_msgs_generate_messages_nodejs" />
|
||||
<config projectName="vio_svo" targetName="sensor_msgs_generate_messages_lisp" />
|
||||
<config projectName="vio_svo" targetName="rosgraph_msgs_generate_messages_nodejs" />
|
||||
<config projectName="vio_svo" targetName="actionlib_generate_messages_cpp" />
|
||||
<config projectName="vio_svo" targetName="tf_generate_messages_py" />
|
||||
<config projectName="vio_svo" targetName="visualization_msgs_generate_messages_py" />
|
||||
<config projectName="vio_svo" targetName="tf_generate_messages_nodejs" />
|
||||
<config projectName="vio_svo" targetName="download_extra_data" />
|
||||
<config projectName="vio_svo" targetName="geometry_msgs_generate_messages_lisp" />
|
||||
<config projectName="vio_svo" targetName="gtest_main" />
|
||||
<config projectName="vio_svo" targetName="run_tests" />
|
||||
<config projectName="vio_svo" targetName="geometry_msgs_generate_messages_nodejs" />
|
||||
<config projectName="vio_svo" targetName="geometry_msgs_generate_messages_py" />
|
||||
<config projectName="vio_svo" targetName="actionlib_generate_messages_lisp" />
|
||||
<config projectName="vio_svo" targetName="actionlib_msgs_generate_messages_eus" />
|
||||
<config projectName="vio_svo" targetName="roscpp_generate_messages_eus" />
|
||||
<config projectName="vio_svo" targetName="nav_msgs_generate_messages_nodejs" />
|
||||
<config projectName="vio_svo" targetName="actionlib_msgs_generate_messages_nodejs" />
|
||||
<config projectName="vio_svo" targetName="tests" />
|
||||
<config projectName="vio_svo" targetName="actionlib_msgs_generate_messages_py" />
|
||||
<config projectName="vio_svo" targetName="sensor_msgs_generate_messages_eus" />
|
||||
<config projectName="vio_svo" targetName="roscpp_generate_messages_lisp" />
|
||||
<config projectName="vio_svo" targetName="visualization_msgs_generate_messages_lisp" />
|
||||
<config projectName="vio_svo" targetName="gmock_main" />
|
||||
<config projectName="vio_svo" targetName="sensor_msgs_generate_messages_py" />
|
||||
<config projectName="vio_svo" targetName="tf_generate_messages_lisp" />
|
||||
<config projectName="vio_svo" targetName="actionlib_msgs_generate_messages_cpp" />
|
||||
<config projectName="vio_svo" targetName="roscpp_generate_messages_cpp" />
|
||||
<config projectName="vio_svo" targetName="sensor_msgs_generate_messages_nodejs" />
|
||||
<config projectName="vio_svo" targetName="sensor_msgs_generate_messages_cpp" />
|
||||
</generated>
|
||||
</component>
|
||||
<component name="CMakeSettings">
|
||||
<configurations>
|
||||
<configuration PROFILE_NAME="Debug" CONFIG_NAME="Debug" GENERATION_DIR="$PROJECT_DIR$/../../../build/vio_svo" ENABLED="true" />
|
||||
</configurations>
|
||||
</component>
|
||||
<component name="ChangeListManager">
|
||||
<list default="true" id="1039b41d-6e4f-44ce-b5bc-8d34c33b3920" name="Default Changelist" comment="optimize the visualizer">
|
||||
<change beforePath="$PROJECT_DIR$/../svo/src/frame_handler_mono.cpp" beforeDir="false" afterPath="$PROJECT_DIR$/../svo/src/frame_handler_mono.cpp" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/CMakeLists.txt" beforeDir="false" afterPath="$PROJECT_DIR$/../vio_svo/CMakeLists.txt" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/include/svo_ros/dataset_img.h" beforeDir="false" afterPath="$PROJECT_DIR$/../vio_svo/include/vio_svo/dataset_img.h" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/include/svo_ros/visualizer.h" beforeDir="false" afterPath="$PROJECT_DIR$/../vio_svo/include/vio_svo/visualizer.h" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/launch/Px30.launch" beforeDir="false" afterPath="$PROJECT_DIR$/../vio_svo/launch/Px30.launch" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/launch/live.launch" beforeDir="false" afterPath="$PROJECT_DIR$/../vio_svo/launch/live.launch" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/launch/test.launch" beforeDir="false" afterPath="$PROJECT_DIR$/../vio_svo/launch/test.launch" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/package.xml" beforeDir="false" afterPath="$PROJECT_DIR$/../vio_svo/package.xml" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/param/camera_atan.yaml" beforeDir="false" afterPath="$PROJECT_DIR$/../vio_svo/param/camera_atan.yaml" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/param/camera_pinhole.yaml" beforeDir="false" afterPath="$PROJECT_DIR$/../vio_svo/param/camera_pinhole.yaml" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/param/px30.yaml" beforeDir="false" afterPath="$PROJECT_DIR$/../vio_svo/param/px30.yaml" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/param/vo_accurate.yaml" beforeDir="false" afterPath="$PROJECT_DIR$/../vio_svo/param/vo_accurate.yaml" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/param/vo_fast.yaml" beforeDir="false" afterPath="$PROJECT_DIR$/../vio_svo/param/vo_fast.yaml" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/rqt.perspective" beforeDir="false" afterPath="$PROJECT_DIR$/../vio_svo/rqt.perspective" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/rviz_config.rviz" beforeDir="false" afterPath="$PROJECT_DIR$/../vio_svo/rviz_config.rviz" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/benchmark_node.cpp" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/visualizer.cpp" beforeDir="false" afterPath="$PROJECT_DIR$/../vio_svo/src/visualizer.cpp" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/vo_node.cpp" beforeDir="false" afterPath="$PROJECT_DIR$/../vio_svo/src/vo_node.cpp" afterDir="false" />
|
||||
</list>
|
||||
<option name="SHOW_DIALOG" value="false" />
|
||||
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
||||
<option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
|
||||
<option name="LAST_RESOLUTION" value="IGNORE" />
|
||||
</component>
|
||||
<component name="ClangdSettings">
|
||||
<option name="formatViaClangd" value="false" />
|
||||
</component>
|
||||
<component name="Git.Settings">
|
||||
<option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$/.." />
|
||||
</component>
|
||||
<component name="ProjectId" id="1psbIlZyJHxcaspyH2BlpVDsNWt" />
|
||||
<component name="ProjectLevelVcsManager" settingsEditedManually="true" />
|
||||
<component name="ProjectViewState">
|
||||
<option name="hideEmptyMiddlePackages" value="true" />
|
||||
<option name="showLibraryContents" value="true" />
|
||||
</component>
|
||||
<component name="PropertiesComponent">
|
||||
<property name="RunOnceActivity.OpenProjectViewOnStart" value="true" />
|
||||
<property name="RunOnceActivity.ShowReadmeOnStart" value="true" />
|
||||
<property name="WebServerToolWindowFactoryState" value="false" />
|
||||
<property name="cf.first.check.clang-format" value="false" />
|
||||
<property name="last_opened_file_path" value="$PROJECT_DIR$/../vio_svo/CMakeLists.txt" />
|
||||
<property name="node.js.detected.package.eslint" value="true" />
|
||||
<property name="node.js.detected.package.tslint" value="true" />
|
||||
<property name="node.js.path.for.package.eslint" value="project" />
|
||||
<property name="node.js.path.for.package.tslint" value="project" />
|
||||
<property name="node.js.selected.package.eslint" value="(autodetect)" />
|
||||
<property name="node.js.selected.package.tslint" value="(autodetect)" />
|
||||
<property name="nodejs_package_manager_path" value="npm" />
|
||||
<property name="settings.editor.selected.configurable" value="CMakeSettings" />
|
||||
</component>
|
||||
<component name="RunManager" selected="CMake Application.vo">
|
||||
<configuration name="actionlib_generate_messages_cpp" type="CMakeRunConfiguration" factoryName="Application" REDIRECT_INPUT="false" ELEVATE="false" PASS_PARENT_ENVS_2="true" PROJECT_NAME="vio_svo" TARGET_NAME="actionlib_generate_messages_cpp" CONFIG_NAME="Debug">
|
||||
<method v="2">
|
||||
<option name="com.jetbrains.cidr.execution.CidrBuildBeforeRunTaskProvider$BuildBeforeRunTask" enabled="true" />
|
||||
</method>
|
||||
</configuration>
|
||||
<configuration name="actionlib_generate_messages_eus" type="CMakeRunConfiguration" factoryName="Application" REDIRECT_INPUT="false" ELEVATE="false" PASS_PARENT_ENVS_2="true" PROJECT_NAME="vio_svo" TARGET_NAME="actionlib_generate_messages_eus" CONFIG_NAME="Debug">
|
||||
<method v="2">
|
||||
<option name="com.jetbrains.cidr.execution.CidrBuildBeforeRunTaskProvider$BuildBeforeRunTask" enabled="true" />
|
||||
</method>
|
||||
</configuration>
|
||||
<configuration name="actionlib_generate_messages_lisp" type="CMakeRunConfiguration" factoryName="Application" REDIRECT_INPUT="false" ELEVATE="false" PASS_PARENT_ENVS_2="true" PROJECT_NAME="vio_svo" TARGET_NAME="actionlib_generate_messages_lisp" CONFIG_NAME="Debug">
|
||||
<method v="2">
|
||||
<option name="com.jetbrains.cidr.execution.CidrBuildBeforeRunTaskProvider$BuildBeforeRunTask" enabled="true" />
|
||||
</method>
|
||||
</configuration>
|
||||
<configuration name="actionlib_generate_messages_nodejs" type="CMakeRunConfiguration" factoryName="Application" REDIRECT_INPUT="false" ELEVATE="false" PASS_PARENT_ENVS_2="true" PROJECT_NAME="vio_svo" TARGET_NAME="actionlib_generate_messages_nodejs" CONFIG_NAME="Debug">
|
||||
<method v="2">
|
||||
<option name="com.jetbrains.cidr.execution.CidrBuildBeforeRunTaskProvider$BuildBeforeRunTask" enabled="true" />
|
||||
</method>
|
||||
</configuration>
|
||||
<configuration name="actionlib_generate_messages_py" type="CMakeRunConfiguration" factoryName="Application" REDIRECT_INPUT="false" ELEVATE="false" PASS_PARENT_ENVS_2="true" PROJECT_NAME="vio_svo" TARGET_NAME="actionlib_generate_messages_py" CONFIG_NAME="Debug">
|
||||
<method v="2">
|
||||
<option name="com.jetbrains.cidr.execution.CidrBuildBeforeRunTaskProvider$BuildBeforeRunTask" enabled="true" />
|
||||
</method>
|
||||
</configuration>
|
||||
<configuration name="actionlib_msgs_generate_messages_cpp" type="CMakeRunConfiguration" factoryName="Application" REDIRECT_INPUT="false" ELEVATE="false" PASS_PARENT_ENVS_2="true" PROJECT_NAME="vio_svo" TARGET_NAME="actionlib_msgs_generate_messages_cpp" CONFIG_NAME="Debug">
|
||||
<method v="2">
|
||||
<option name="com.jetbrains.cidr.execution.CidrBuildBeforeRunTaskProvider$BuildBeforeRunTask" enabled="true" />
|
||||
</method>
|
||||
</configuration>
|
||||
<configuration name="actionlib_msgs_generate_messages_eus" type="CMakeRunConfiguration" factoryName="Application" REDIRECT_INPUT="false" ELEVATE="false" PASS_PARENT_ENVS_2="true" PROJECT_NAME="vio_svo" TARGET_NAME="actionlib_msgs_generate_messages_eus" CONFIG_NAME="Debug">
|
||||
<method v="2">
|
||||
<option name="com.jetbrains.cidr.execution.CidrBuildBeforeRunTaskProvider$BuildBeforeRunTask" enabled="true" />
|
||||
</method>
|
||||
</configuration>
|
||||
<configuration name="actionlib_msgs_generate_messages_lisp" type="CMakeRunConfiguration" factoryName="Application" REDIRECT_INPUT="false" ELEVATE="false" PASS_PARENT_ENVS_2="true" PROJECT_NAME="vio_svo" TARGET_NAME="actionlib_msgs_generate_messages_lisp" CONFIG_NAME="Debug">
|
||||
<method v="2">
|
||||
<option name="com.jetbrains.cidr.execution.CidrBuildBeforeRunTaskProvider$BuildBeforeRunTask" enabled="true" />
|
||||
</method>
|
||||
</configuration>
|
||||
<configuration name="actionlib_msgs_generate_messages_nodejs" type="CMakeRunConfiguration" factoryName="Application" REDIRECT_INPUT="false" ELEVATE="false" PASS_PARENT_ENVS_2="true" PROJECT_NAME="vio_svo" TARGET_NAME="actionlib_msgs_generate_messages_nodejs" CONFIG_NAME="Debug">
|
||||
<method v="2">
|
||||
<option name="com.jetbrains.cidr.execution.CidrBuildBeforeRunTaskProvider$BuildBeforeRunTask" enabled="true" />
|
||||
</method>
|
||||
</configuration>
|
||||
<configuration name="actionlib_msgs_generate_messages_py" type="CMakeRunConfiguration" factoryName="Application" REDIRECT_INPUT="false" ELEVATE="false" PASS_PARENT_ENVS_2="true" PROJECT_NAME="vio_svo" TARGET_NAME="actionlib_msgs_generate_messages_py" CONFIG_NAME="Debug">
|
||||
<method v="2">
|
||||
<option name="com.jetbrains.cidr.execution.CidrBuildBeforeRunTaskProvider$BuildBeforeRunTask" enabled="true" />
|
||||
</method>
|
||||
</configuration>
|
||||
<configuration name="clean_test_results" type="CMakeRunConfiguration" factoryName="Application" REDIRECT_INPUT="false" ELEVATE="false" PASS_PARENT_ENVS_2="true" PROJECT_NAME="vio_svo" TARGET_NAME="clean_test_results" CONFIG_NAME="Debug">
|
||||
<method v="2">
|
||||
<option name="com.jetbrains.cidr.execution.CidrBuildBeforeRunTaskProvider$BuildBeforeRunTask" enabled="true" />
|
||||
</method>
|
||||
</configuration>
|
||||
<configuration name="download_extra_data" type="CMakeRunConfiguration" factoryName="Application" REDIRECT_INPUT="false" ELEVATE="false" PASS_PARENT_ENVS_2="true" PROJECT_NAME="vio_svo" TARGET_NAME="download_extra_data" CONFIG_NAME="Debug">
|
||||
<method v="2">
|
||||
<option name="com.jetbrains.cidr.execution.CidrBuildBeforeRunTaskProvider$BuildBeforeRunTask" enabled="true" />
|
||||
</method>
|
||||
</configuration>
|
||||
<configuration name="doxygen" type="CMakeRunConfiguration" factoryName="Application" REDIRECT_INPUT="false" ELEVATE="false" PASS_PARENT_ENVS_2="true" PROJECT_NAME="vio_svo" TARGET_NAME="doxygen" CONFIG_NAME="Debug">
|
||||
<method v="2">
|
||||
<option name="com.jetbrains.cidr.execution.CidrBuildBeforeRunTaskProvider$BuildBeforeRunTask" enabled="true" />
|
||||
</method>
|
||||
</configuration>
|
||||
<configuration name="geometry_msgs_generate_messages_cpp" type="CMakeRunConfiguration" factoryName="Application" REDIRECT_INPUT="false" ELEVATE="false" PASS_PARENT_ENVS_2="true" PROJECT_NAME="vio_svo" TARGET_NAME="geometry_msgs_generate_messages_cpp" CONFIG_NAME="Debug">
|
||||
<method v="2">
|
||||
<option name="com.jetbrains.cidr.execution.CidrBuildBeforeRunTaskProvider$BuildBeforeRunTask" enabled="true" />
|
||||
</method>
|
||||
</configuration>
|
||||
<configuration name="geometry_msgs_generate_messages_eus" type="CMakeRunConfiguration" factoryName="Application" REDIRECT_INPUT="false" ELEVATE="false" PASS_PARENT_ENVS_2="true" PROJECT_NAME="vio_svo" TARGET_NAME="geometry_msgs_generate_messages_eus" CONFIG_NAME="Debug">
|
||||
<method v="2">
|
||||
<option name="com.jetbrains.cidr.execution.CidrBuildBeforeRunTaskProvider$BuildBeforeRunTask" enabled="true" />
|
||||
</method>
|
||||
</configuration>
|
||||
<configuration name="geometry_msgs_generate_messages_lisp" type="CMakeRunConfiguration" factoryName="Application" REDIRECT_INPUT="false" ELEVATE="false" PASS_PARENT_ENVS_2="true" PROJECT_NAME="vio_svo" TARGET_NAME="geometry_msgs_generate_messages_lisp" CONFIG_NAME="Debug">
|
||||
<method v="2">
|
||||
<option name="com.jetbrains.cidr.execution.CidrBuildBeforeRunTaskProvider$BuildBeforeRunTask" enabled="true" />
|
||||
</method>
|
||||
</configuration>
|
||||
<configuration name="geometry_msgs_generate_messages_nodejs" type="CMakeRunConfiguration" factoryName="Application" REDIRECT_INPUT="false" ELEVATE="false" PASS_PARENT_ENVS_2="true" PROJECT_NAME="vio_svo" TARGET_NAME="geometry_msgs_generate_messages_nodejs" CONFIG_NAME="Debug">
|
||||
<method v="2">
|
||||
<option name="com.jetbrains.cidr.execution.CidrBuildBeforeRunTaskProvider$BuildBeforeRunTask" enabled="true" />
|
||||
</method>
|
||||
</configuration>
|
||||
<configuration name="geometry_msgs_generate_messages_py" type="CMakeRunConfiguration" factoryName="Application" REDIRECT_INPUT="false" ELEVATE="false" PASS_PARENT_ENVS_2="true" PROJECT_NAME="vio_svo" TARGET_NAME="geometry_msgs_generate_messages_py" CONFIG_NAME="Debug">
|
||||
<method v="2">
|
||||
<option name="com.jetbrains.cidr.execution.CidrBuildBeforeRunTaskProvider$BuildBeforeRunTask" enabled="true" />
|
||||
</method>
|
||||
</configuration>
|
||||
<configuration name="gmock" type="CMakeRunConfiguration" factoryName="Application" REDIRECT_INPUT="false" ELEVATE="false" PASS_PARENT_ENVS_2="true" PROJECT_NAME="vio_svo" TARGET_NAME="gmock" CONFIG_NAME="Debug">
|
||||
<method v="2">
|
||||
<option name="com.jetbrains.cidr.execution.CidrBuildBeforeRunTaskProvider$BuildBeforeRunTask" enabled="true" />
|
||||
</method>
|
||||
</configuration>
|
||||
<configuration name="gmock_main" type="CMakeRunConfiguration" factoryName="Application" REDIRECT_INPUT="false" ELEVATE="false" PASS_PARENT_ENVS_2="true" PROJECT_NAME="vio_svo" TARGET_NAME="gmock_main" CONFIG_NAME="Debug">
|
||||
<method v="2">
|
||||
<option name="com.jetbrains.cidr.execution.CidrBuildBeforeRunTaskProvider$BuildBeforeRunTask" enabled="true" />
|
||||
</method>
|
||||
</configuration>
|
||||
<configuration name="gtest" type="CMakeRunConfiguration" factoryName="Application" REDIRECT_INPUT="false" ELEVATE="false" PASS_PARENT_ENVS_2="true" PROJECT_NAME="vio_svo" TARGET_NAME="gtest" CONFIG_NAME="Debug">
|
||||
<method v="2">
|
||||
<option name="com.jetbrains.cidr.execution.CidrBuildBeforeRunTaskProvider$BuildBeforeRunTask" enabled="true" />
|
||||
</method>
|
||||
</configuration>
|
||||
<configuration name="gtest_main" type="CMakeRunConfiguration" factoryName="Application" REDIRECT_INPUT="false" ELEVATE="false" PASS_PARENT_ENVS_2="true" PROJECT_NAME="vio_svo" TARGET_NAME="gtest_main" CONFIG_NAME="Debug">
|
||||
<method v="2">
|
||||
<option name="com.jetbrains.cidr.execution.CidrBuildBeforeRunTaskProvider$BuildBeforeRunTask" enabled="true" />
|
||||
</method>
|
||||
</configuration>
|
||||
<configuration name="nav_msgs_generate_messages_cpp" type="CMakeRunConfiguration" factoryName="Application" REDIRECT_INPUT="false" ELEVATE="false" PASS_PARENT_ENVS_2="true" PROJECT_NAME="vio_svo" TARGET_NAME="nav_msgs_generate_messages_cpp" CONFIG_NAME="Debug">
|
||||
<method v="2">
|
||||
<option name="com.jetbrains.cidr.execution.CidrBuildBeforeRunTaskProvider$BuildBeforeRunTask" enabled="true" />
|
||||
</method>
|
||||
</configuration>
|
||||
<configuration name="nav_msgs_generate_messages_eus" type="CMakeRunConfiguration" factoryName="Application" REDIRECT_INPUT="false" ELEVATE="false" PASS_PARENT_ENVS_2="true" PROJECT_NAME="vio_svo" TARGET_NAME="nav_msgs_generate_messages_eus" CONFIG_NAME="Debug">
|
||||
<method v="2">
|
||||
<option name="com.jetbrains.cidr.execution.CidrBuildBeforeRunTaskProvider$BuildBeforeRunTask" enabled="true" />
|
||||
</method>
|
||||
</configuration>
|
||||
<configuration name="nav_msgs_generate_messages_lisp" type="CMakeRunConfiguration" factoryName="Application" REDIRECT_INPUT="false" ELEVATE="false" PASS_PARENT_ENVS_2="true" PROJECT_NAME="vio_svo" TARGET_NAME="nav_msgs_generate_messages_lisp" CONFIG_NAME="Debug">
|
||||
<method v="2">
|
||||
<option name="com.jetbrains.cidr.execution.CidrBuildBeforeRunTaskProvider$BuildBeforeRunTask" enabled="true" />
|
||||
</method>
|
||||
</configuration>
|
||||
<configuration name="nav_msgs_generate_messages_nodejs" type="CMakeRunConfiguration" factoryName="Application" REDIRECT_INPUT="false" ELEVATE="false" PASS_PARENT_ENVS_2="true" PROJECT_NAME="vio_svo" TARGET_NAME="nav_msgs_generate_messages_nodejs" CONFIG_NAME="Debug">
|
||||
<method v="2">
|
||||
<option name="com.jetbrains.cidr.execution.CidrBuildBeforeRunTaskProvider$BuildBeforeRunTask" enabled="true" />
|
||||
</method>
|
||||
</configuration>
|
||||
<configuration name="nav_msgs_generate_messages_py" type="CMakeRunConfiguration" factoryName="Application" REDIRECT_INPUT="false" ELEVATE="false" PASS_PARENT_ENVS_2="true" PROJECT_NAME="vio_svo" TARGET_NAME="nav_msgs_generate_messages_py" CONFIG_NAME="Debug">
|
||||
<method v="2">
|
||||
<option name="com.jetbrains.cidr.execution.CidrBuildBeforeRunTaskProvider$BuildBeforeRunTask" enabled="true" />
|
||||
</method>
|
||||
</configuration>
|
||||
<configuration name="roscpp_generate_messages_cpp" type="CMakeRunConfiguration" factoryName="Application" REDIRECT_INPUT="false" ELEVATE="false" PASS_PARENT_ENVS_2="true" PROJECT_NAME="vio_svo" TARGET_NAME="roscpp_generate_messages_cpp" CONFIG_NAME="Debug">
|
||||
<method v="2">
|
||||
<option name="com.jetbrains.cidr.execution.CidrBuildBeforeRunTaskProvider$BuildBeforeRunTask" enabled="true" />
|
||||
</method>
|
||||
</configuration>
|
||||
<configuration name="roscpp_generate_messages_eus" type="CMakeRunConfiguration" factoryName="Application" REDIRECT_INPUT="false" ELEVATE="false" PASS_PARENT_ENVS_2="true" PROJECT_NAME="vio_svo" TARGET_NAME="roscpp_generate_messages_eus" CONFIG_NAME="Debug">
|
||||
<method v="2">
|
||||
<option name="com.jetbrains.cidr.execution.CidrBuildBeforeRunTaskProvider$BuildBeforeRunTask" enabled="true" />
|
||||
</method>
|
||||
</configuration>
|
||||
<configuration name="roscpp_generate_messages_lisp" type="CMakeRunConfiguration" factoryName="Application" REDIRECT_INPUT="false" ELEVATE="false" PASS_PARENT_ENVS_2="true" PROJECT_NAME="vio_svo" TARGET_NAME="roscpp_generate_messages_lisp" CONFIG_NAME="Debug">
|
||||
<method v="2">
|
||||
<option name="com.jetbrains.cidr.execution.CidrBuildBeforeRunTaskProvider$BuildBeforeRunTask" enabled="true" />
|
||||
</method>
|
||||
</configuration>
|
||||
<configuration name="roscpp_generate_messages_nodejs" type="CMakeRunConfiguration" factoryName="Application" REDIRECT_INPUT="false" ELEVATE="false" PASS_PARENT_ENVS_2="true" PROJECT_NAME="vio_svo" TARGET_NAME="roscpp_generate_messages_nodejs" CONFIG_NAME="Debug">
|
||||
<method v="2">
|
||||
<option name="com.jetbrains.cidr.execution.CidrBuildBeforeRunTaskProvider$BuildBeforeRunTask" enabled="true" />
|
||||
</method>
|
||||
</configuration>
|
||||
<configuration name="roscpp_generate_messages_py" type="CMakeRunConfiguration" factoryName="Application" REDIRECT_INPUT="false" ELEVATE="false" PASS_PARENT_ENVS_2="true" PROJECT_NAME="vio_svo" TARGET_NAME="roscpp_generate_messages_py" CONFIG_NAME="Debug">
|
||||
<method v="2">
|
||||
<option name="com.jetbrains.cidr.execution.CidrBuildBeforeRunTaskProvider$BuildBeforeRunTask" enabled="true" />
|
||||
</method>
|
||||
</configuration>
|
||||
<configuration name="rosgraph_msgs_generate_messages_cpp" type="CMakeRunConfiguration" factoryName="Application" REDIRECT_INPUT="false" ELEVATE="false" PASS_PARENT_ENVS_2="true" PROJECT_NAME="vio_svo" TARGET_NAME="rosgraph_msgs_generate_messages_cpp" CONFIG_NAME="Debug">
|
||||
<method v="2">
|
||||
<option name="com.jetbrains.cidr.execution.CidrBuildBeforeRunTaskProvider$BuildBeforeRunTask" enabled="true" />
|
||||
</method>
|
||||
</configuration>
|
||||
<configuration name="rosgraph_msgs_generate_messages_eus" type="CMakeRunConfiguration" factoryName="Application" REDIRECT_INPUT="false" ELEVATE="false" PASS_PARENT_ENVS_2="true" PROJECT_NAME="vio_svo" TARGET_NAME="rosgraph_msgs_generate_messages_eus" CONFIG_NAME="Debug">
|
||||
<method v="2">
|
||||
<option name="com.jetbrains.cidr.execution.CidrBuildBeforeRunTaskProvider$BuildBeforeRunTask" enabled="true" />
|
||||
</method>
|
||||
</configuration>
|
||||
<configuration name="rosgraph_msgs_generate_messages_lisp" type="CMakeRunConfiguration" factoryName="Application" REDIRECT_INPUT="false" ELEVATE="false" PASS_PARENT_ENVS_2="true" PROJECT_NAME="vio_svo" TARGET_NAME="rosgraph_msgs_generate_messages_lisp" CONFIG_NAME="Debug">
|
||||
<method v="2">
|
||||
<option name="com.jetbrains.cidr.execution.CidrBuildBeforeRunTaskProvider$BuildBeforeRunTask" enabled="true" />
|
||||
</method>
|
||||
</configuration>
|
||||
<configuration name="rosgraph_msgs_generate_messages_nodejs" type="CMakeRunConfiguration" factoryName="Application" REDIRECT_INPUT="false" ELEVATE="false" PASS_PARENT_ENVS_2="true" PROJECT_NAME="vio_svo" TARGET_NAME="rosgraph_msgs_generate_messages_nodejs" CONFIG_NAME="Debug">
|
||||
<method v="2">
|
||||
<option name="com.jetbrains.cidr.execution.CidrBuildBeforeRunTaskProvider$BuildBeforeRunTask" enabled="true" />
|
||||
</method>
|
||||
</configuration>
|
||||
<configuration name="rosgraph_msgs_generate_messages_py" type="CMakeRunConfiguration" factoryName="Application" REDIRECT_INPUT="false" ELEVATE="false" PASS_PARENT_ENVS_2="true" PROJECT_NAME="vio_svo" TARGET_NAME="rosgraph_msgs_generate_messages_py" CONFIG_NAME="Debug">
|
||||
<method v="2">
|
||||
<option name="com.jetbrains.cidr.execution.CidrBuildBeforeRunTaskProvider$BuildBeforeRunTask" enabled="true" />
|
||||
</method>
|
||||
</configuration>
|
||||
<configuration name="run_tests" type="CMakeRunConfiguration" factoryName="Application" REDIRECT_INPUT="false" ELEVATE="false" PASS_PARENT_ENVS_2="true" PROJECT_NAME="vio_svo" TARGET_NAME="run_tests" CONFIG_NAME="Debug">
|
||||
<method v="2">
|
||||
<option name="com.jetbrains.cidr.execution.CidrBuildBeforeRunTaskProvider$BuildBeforeRunTask" enabled="true" />
|
||||
</method>
|
||||
</configuration>
|
||||
<configuration name="sensor_msgs_generate_messages_cpp" type="CMakeRunConfiguration" factoryName="Application" REDIRECT_INPUT="false" ELEVATE="false" PASS_PARENT_ENVS_2="true" PROJECT_NAME="vio_svo" TARGET_NAME="sensor_msgs_generate_messages_cpp" CONFIG_NAME="Debug">
|
||||
<method v="2">
|
||||
<option name="com.jetbrains.cidr.execution.CidrBuildBeforeRunTaskProvider$BuildBeforeRunTask" enabled="true" />
|
||||
</method>
|
||||
</configuration>
|
||||
<configuration name="sensor_msgs_generate_messages_eus" type="CMakeRunConfiguration" factoryName="Application" REDIRECT_INPUT="false" ELEVATE="false" PASS_PARENT_ENVS_2="true" PROJECT_NAME="vio_svo" TARGET_NAME="sensor_msgs_generate_messages_eus" CONFIG_NAME="Debug">
|
||||
<method v="2">
|
||||
<option name="com.jetbrains.cidr.execution.CidrBuildBeforeRunTaskProvider$BuildBeforeRunTask" enabled="true" />
|
||||
</method>
|
||||
</configuration>
|
||||
<configuration name="sensor_msgs_generate_messages_lisp" type="CMakeRunConfiguration" factoryName="Application" REDIRECT_INPUT="false" ELEVATE="false" PASS_PARENT_ENVS_2="true" PROJECT_NAME="vio_svo" TARGET_NAME="sensor_msgs_generate_messages_lisp" CONFIG_NAME="Debug">
|
||||
<method v="2">
|
||||
<option name="com.jetbrains.cidr.execution.CidrBuildBeforeRunTaskProvider$BuildBeforeRunTask" enabled="true" />
|
||||
</method>
|
||||
</configuration>
|
||||
<configuration name="sensor_msgs_generate_messages_nodejs" type="CMakeRunConfiguration" factoryName="Application" REDIRECT_INPUT="false" ELEVATE="false" PASS_PARENT_ENVS_2="true" PROJECT_NAME="vio_svo" TARGET_NAME="sensor_msgs_generate_messages_nodejs" CONFIG_NAME="Debug">
|
||||
<method v="2">
|
||||
<option name="com.jetbrains.cidr.execution.CidrBuildBeforeRunTaskProvider$BuildBeforeRunTask" enabled="true" />
|
||||
</method>
|
||||
</configuration>
|
||||
<configuration name="sensor_msgs_generate_messages_py" type="CMakeRunConfiguration" factoryName="Application" REDIRECT_INPUT="false" ELEVATE="false" PASS_PARENT_ENVS_2="true" PROJECT_NAME="vio_svo" TARGET_NAME="sensor_msgs_generate_messages_py" CONFIG_NAME="Debug">
|
||||
<method v="2">
|
||||
<option name="com.jetbrains.cidr.execution.CidrBuildBeforeRunTaskProvider$BuildBeforeRunTask" enabled="true" />
|
||||
</method>
|
||||
</configuration>
|
||||
<configuration name="std_msgs_generate_messages_cpp" type="CMakeRunConfiguration" factoryName="Application" REDIRECT_INPUT="false" ELEVATE="false" PASS_PARENT_ENVS_2="true" PROJECT_NAME="vio_svo" TARGET_NAME="std_msgs_generate_messages_cpp" CONFIG_NAME="Debug">
|
||||
<method v="2">
|
||||
<option name="com.jetbrains.cidr.execution.CidrBuildBeforeRunTaskProvider$BuildBeforeRunTask" enabled="true" />
|
||||
</method>
|
||||
</configuration>
|
||||
<configuration name="std_msgs_generate_messages_eus" type="CMakeRunConfiguration" factoryName="Application" REDIRECT_INPUT="false" ELEVATE="false" PASS_PARENT_ENVS_2="true" PROJECT_NAME="vio_svo" TARGET_NAME="std_msgs_generate_messages_eus" CONFIG_NAME="Debug">
|
||||
<method v="2">
|
||||
<option name="com.jetbrains.cidr.execution.CidrBuildBeforeRunTaskProvider$BuildBeforeRunTask" enabled="true" />
|
||||
</method>
|
||||
</configuration>
|
||||
<configuration name="std_msgs_generate_messages_lisp" type="CMakeRunConfiguration" factoryName="Application" REDIRECT_INPUT="false" ELEVATE="false" PASS_PARENT_ENVS_2="true" PROJECT_NAME="vio_svo" TARGET_NAME="std_msgs_generate_messages_lisp" CONFIG_NAME="Debug">
|
||||
<method v="2">
|
||||
<option name="com.jetbrains.cidr.execution.CidrBuildBeforeRunTaskProvider$BuildBeforeRunTask" enabled="true" />
|
||||
</method>
|
||||
</configuration>
|
||||
<configuration name="std_msgs_generate_messages_nodejs" type="CMakeRunConfiguration" factoryName="Application" REDIRECT_INPUT="false" ELEVATE="false" PASS_PARENT_ENVS_2="true" PROJECT_NAME="vio_svo" TARGET_NAME="std_msgs_generate_messages_nodejs" CONFIG_NAME="Debug">
|
||||
<method v="2">
|
||||
<option name="com.jetbrains.cidr.execution.CidrBuildBeforeRunTaskProvider$BuildBeforeRunTask" enabled="true" />
|
||||
</method>
|
||||
</configuration>
|
||||
<configuration name="std_msgs_generate_messages_py" type="CMakeRunConfiguration" factoryName="Application" REDIRECT_INPUT="false" ELEVATE="false" PASS_PARENT_ENVS_2="true" PROJECT_NAME="vio_svo" TARGET_NAME="std_msgs_generate_messages_py" CONFIG_NAME="Debug">
|
||||
<method v="2">
|
||||
<option name="com.jetbrains.cidr.execution.CidrBuildBeforeRunTaskProvider$BuildBeforeRunTask" enabled="true" />
|
||||
</method>
|
||||
</configuration>
|
||||
<configuration name="svo_msgs_generate_messages_cpp" type="CMakeRunConfiguration" factoryName="Application" REDIRECT_INPUT="false" ELEVATE="false" PASS_PARENT_ENVS_2="true" PROJECT_NAME="vio_svo" TARGET_NAME="svo_msgs_generate_messages_cpp" CONFIG_NAME="Debug">
|
||||
<method v="2">
|
||||
<option name="com.jetbrains.cidr.execution.CidrBuildBeforeRunTaskProvider$BuildBeforeRunTask" enabled="true" />
|
||||
</method>
|
||||
</configuration>
|
||||
<configuration name="svo_msgs_generate_messages_eus" type="CMakeRunConfiguration" factoryName="Application" REDIRECT_INPUT="false" ELEVATE="false" PASS_PARENT_ENVS_2="true" PROJECT_NAME="vio_svo" TARGET_NAME="svo_msgs_generate_messages_eus" CONFIG_NAME="Debug">
|
||||
<method v="2">
|
||||
<option name="com.jetbrains.cidr.execution.CidrBuildBeforeRunTaskProvider$BuildBeforeRunTask" enabled="true" />
|
||||
</method>
|
||||
</configuration>
|
||||
<configuration name="svo_msgs_generate_messages_lisp" type="CMakeRunConfiguration" factoryName="Application" REDIRECT_INPUT="false" ELEVATE="false" PASS_PARENT_ENVS_2="true" PROJECT_NAME="vio_svo" TARGET_NAME="svo_msgs_generate_messages_lisp" CONFIG_NAME="Debug">
|
||||
<method v="2">
|
||||
<option name="com.jetbrains.cidr.execution.CidrBuildBeforeRunTaskProvider$BuildBeforeRunTask" enabled="true" />
|
||||
</method>
|
||||
</configuration>
|
||||
<configuration name="svo_msgs_generate_messages_nodejs" type="CMakeRunConfiguration" factoryName="Application" REDIRECT_INPUT="false" ELEVATE="false" PASS_PARENT_ENVS_2="true" PROJECT_NAME="vio_svo" TARGET_NAME="svo_msgs_generate_messages_nodejs" CONFIG_NAME="Debug">
|
||||
<method v="2">
|
||||
<option name="com.jetbrains.cidr.execution.CidrBuildBeforeRunTaskProvider$BuildBeforeRunTask" enabled="true" />
|
||||
</method>
|
||||
</configuration>
|
||||
<configuration name="svo_msgs_generate_messages_py" type="CMakeRunConfiguration" factoryName="Application" REDIRECT_INPUT="false" ELEVATE="false" PASS_PARENT_ENVS_2="true" PROJECT_NAME="vio_svo" TARGET_NAME="svo_msgs_generate_messages_py" CONFIG_NAME="Debug">
|
||||
<method v="2">
|
||||
<option name="com.jetbrains.cidr.execution.CidrBuildBeforeRunTaskProvider$BuildBeforeRunTask" enabled="true" />
|
||||
</method>
|
||||
</configuration>
|
||||
<configuration name="svo_visualizer" type="CMakeRunConfiguration" factoryName="Application" REDIRECT_INPUT="false" ELEVATE="false" PASS_PARENT_ENVS_2="true" PROJECT_NAME="vio_svo" TARGET_NAME="svo_visualizer" CONFIG_NAME="Debug">
|
||||
<method v="2">
|
||||
<option name="com.jetbrains.cidr.execution.CidrBuildBeforeRunTaskProvider$BuildBeforeRunTask" enabled="true" />
|
||||
</method>
|
||||
</configuration>
|
||||
<configuration name="tests" type="CMakeRunConfiguration" factoryName="Application" REDIRECT_INPUT="false" ELEVATE="false" PASS_PARENT_ENVS_2="true" PROJECT_NAME="vio_svo" TARGET_NAME="tests" CONFIG_NAME="Debug">
|
||||
<method v="2">
|
||||
<option name="com.jetbrains.cidr.execution.CidrBuildBeforeRunTaskProvider$BuildBeforeRunTask" enabled="true" />
|
||||
</method>
|
||||
</configuration>
|
||||
<configuration name="tf2_msgs_generate_messages_cpp" type="CMakeRunConfiguration" factoryName="Application" REDIRECT_INPUT="false" ELEVATE="false" PASS_PARENT_ENVS_2="true" PROJECT_NAME="vio_svo" TARGET_NAME="tf2_msgs_generate_messages_cpp" CONFIG_NAME="Debug">
|
||||
<method v="2">
|
||||
<option name="com.jetbrains.cidr.execution.CidrBuildBeforeRunTaskProvider$BuildBeforeRunTask" enabled="true" />
|
||||
</method>
|
||||
</configuration>
|
||||
<configuration name="tf2_msgs_generate_messages_eus" type="CMakeRunConfiguration" factoryName="Application" REDIRECT_INPUT="false" ELEVATE="false" PASS_PARENT_ENVS_2="true" PROJECT_NAME="vio_svo" TARGET_NAME="tf2_msgs_generate_messages_eus" CONFIG_NAME="Debug">
|
||||
<method v="2">
|
||||
<option name="com.jetbrains.cidr.execution.CidrBuildBeforeRunTaskProvider$BuildBeforeRunTask" enabled="true" />
|
||||
</method>
|
||||
</configuration>
|
||||
<configuration name="tf2_msgs_generate_messages_lisp" type="CMakeRunConfiguration" factoryName="Application" REDIRECT_INPUT="false" ELEVATE="false" PASS_PARENT_ENVS_2="true" PROJECT_NAME="vio_svo" TARGET_NAME="tf2_msgs_generate_messages_lisp" CONFIG_NAME="Debug">
|
||||
<method v="2">
|
||||
<option name="com.jetbrains.cidr.execution.CidrBuildBeforeRunTaskProvider$BuildBeforeRunTask" enabled="true" />
|
||||
</method>
|
||||
</configuration>
|
||||
<configuration name="tf2_msgs_generate_messages_nodejs" type="CMakeRunConfiguration" factoryName="Application" REDIRECT_INPUT="false" ELEVATE="false" PASS_PARENT_ENVS_2="true" PROJECT_NAME="vio_svo" TARGET_NAME="tf2_msgs_generate_messages_nodejs" CONFIG_NAME="Debug">
|
||||
<method v="2">
|
||||
<option name="com.jetbrains.cidr.execution.CidrBuildBeforeRunTaskProvider$BuildBeforeRunTask" enabled="true" />
|
||||
</method>
|
||||
</configuration>
|
||||
<configuration name="tf2_msgs_generate_messages_py" type="CMakeRunConfiguration" factoryName="Application" REDIRECT_INPUT="false" ELEVATE="false" PASS_PARENT_ENVS_2="true" PROJECT_NAME="vio_svo" TARGET_NAME="tf2_msgs_generate_messages_py" CONFIG_NAME="Debug">
|
||||
<method v="2">
|
||||
<option name="com.jetbrains.cidr.execution.CidrBuildBeforeRunTaskProvider$BuildBeforeRunTask" enabled="true" />
|
||||
</method>
|
||||
</configuration>
|
||||
<configuration name="tf_generate_messages_cpp" type="CMakeRunConfiguration" factoryName="Application" REDIRECT_INPUT="false" ELEVATE="false" PASS_PARENT_ENVS_2="true" PROJECT_NAME="vio_svo" TARGET_NAME="tf_generate_messages_cpp" CONFIG_NAME="Debug">
|
||||
<method v="2">
|
||||
<option name="com.jetbrains.cidr.execution.CidrBuildBeforeRunTaskProvider$BuildBeforeRunTask" enabled="true" />
|
||||
</method>
|
||||
</configuration>
|
||||
<configuration name="tf_generate_messages_eus" type="CMakeRunConfiguration" factoryName="Application" REDIRECT_INPUT="false" ELEVATE="false" PASS_PARENT_ENVS_2="true" PROJECT_NAME="vio_svo" TARGET_NAME="tf_generate_messages_eus" CONFIG_NAME="Debug">
|
||||
<method v="2">
|
||||
<option name="com.jetbrains.cidr.execution.CidrBuildBeforeRunTaskProvider$BuildBeforeRunTask" enabled="true" />
|
||||
</method>
|
||||
</configuration>
|
||||
<configuration name="tf_generate_messages_lisp" type="CMakeRunConfiguration" factoryName="Application" REDIRECT_INPUT="false" ELEVATE="false" PASS_PARENT_ENVS_2="true" PROJECT_NAME="vio_svo" TARGET_NAME="tf_generate_messages_lisp" CONFIG_NAME="Debug">
|
||||
<method v="2">
|
||||
<option name="com.jetbrains.cidr.execution.CidrBuildBeforeRunTaskProvider$BuildBeforeRunTask" enabled="true" />
|
||||
</method>
|
||||
</configuration>
|
||||
<configuration name="tf_generate_messages_nodejs" type="CMakeRunConfiguration" factoryName="Application" REDIRECT_INPUT="false" ELEVATE="false" PASS_PARENT_ENVS_2="true" PROJECT_NAME="vio_svo" TARGET_NAME="tf_generate_messages_nodejs" CONFIG_NAME="Debug">
|
||||
<method v="2">
|
||||
<option name="com.jetbrains.cidr.execution.CidrBuildBeforeRunTaskProvider$BuildBeforeRunTask" enabled="true" />
|
||||
</method>
|
||||
</configuration>
|
||||
<configuration name="tf_generate_messages_py" type="CMakeRunConfiguration" factoryName="Application" REDIRECT_INPUT="false" ELEVATE="false" PASS_PARENT_ENVS_2="true" PROJECT_NAME="vio_svo" TARGET_NAME="tf_generate_messages_py" CONFIG_NAME="Debug">
|
||||
<method v="2">
|
||||
<option name="com.jetbrains.cidr.execution.CidrBuildBeforeRunTaskProvider$BuildBeforeRunTask" enabled="true" />
|
||||
</method>
|
||||
</configuration>
|
||||
<configuration name="visualization_msgs_generate_messages_cpp" type="CMakeRunConfiguration" factoryName="Application" REDIRECT_INPUT="false" ELEVATE="false" PASS_PARENT_ENVS_2="true" PROJECT_NAME="vio_svo" TARGET_NAME="visualization_msgs_generate_messages_cpp" CONFIG_NAME="Debug">
|
||||
<method v="2">
|
||||
<option name="com.jetbrains.cidr.execution.CidrBuildBeforeRunTaskProvider$BuildBeforeRunTask" enabled="true" />
|
||||
</method>
|
||||
</configuration>
|
||||
<configuration name="visualization_msgs_generate_messages_eus" type="CMakeRunConfiguration" factoryName="Application" REDIRECT_INPUT="false" ELEVATE="false" PASS_PARENT_ENVS_2="true" PROJECT_NAME="vio_svo" TARGET_NAME="visualization_msgs_generate_messages_eus" CONFIG_NAME="Debug">
|
||||
<method v="2">
|
||||
<option name="com.jetbrains.cidr.execution.CidrBuildBeforeRunTaskProvider$BuildBeforeRunTask" enabled="true" />
|
||||
</method>
|
||||
</configuration>
|
||||
<configuration name="visualization_msgs_generate_messages_lisp" type="CMakeRunConfiguration" factoryName="Application" REDIRECT_INPUT="false" ELEVATE="false" PASS_PARENT_ENVS_2="true" PROJECT_NAME="vio_svo" TARGET_NAME="visualization_msgs_generate_messages_lisp" CONFIG_NAME="Debug">
|
||||
<method v="2">
|
||||
<option name="com.jetbrains.cidr.execution.CidrBuildBeforeRunTaskProvider$BuildBeforeRunTask" enabled="true" />
|
||||
</method>
|
||||
</configuration>
|
||||
<configuration name="visualization_msgs_generate_messages_nodejs" type="CMakeRunConfiguration" factoryName="Application" REDIRECT_INPUT="false" ELEVATE="false" PASS_PARENT_ENVS_2="true" PROJECT_NAME="vio_svo" TARGET_NAME="visualization_msgs_generate_messages_nodejs" CONFIG_NAME="Debug">
|
||||
<method v="2">
|
||||
<option name="com.jetbrains.cidr.execution.CidrBuildBeforeRunTaskProvider$BuildBeforeRunTask" enabled="true" />
|
||||
</method>
|
||||
</configuration>
|
||||
<configuration name="visualization_msgs_generate_messages_py" type="CMakeRunConfiguration" factoryName="Application" REDIRECT_INPUT="false" ELEVATE="false" PASS_PARENT_ENVS_2="true" PROJECT_NAME="vio_svo" TARGET_NAME="visualization_msgs_generate_messages_py" CONFIG_NAME="Debug">
|
||||
<method v="2">
|
||||
<option name="com.jetbrains.cidr.execution.CidrBuildBeforeRunTaskProvider$BuildBeforeRunTask" enabled="true" />
|
||||
</method>
|
||||
</configuration>
|
||||
<configuration name="vo" type="CMakeRunConfiguration" factoryName="Application" REDIRECT_INPUT="false" ELEVATE="false" PASS_PARENT_ENVS_2="true" PROJECT_NAME="vio_svo" TARGET_NAME="vo" CONFIG_NAME="Debug" RUN_TARGET_PROJECT_NAME="vio_svo" RUN_TARGET_NAME="vo">
|
||||
<method v="2">
|
||||
<option name="com.jetbrains.cidr.execution.CidrBuildBeforeRunTaskProvider$BuildBeforeRunTask" enabled="true" />
|
||||
</method>
|
||||
</configuration>
|
||||
<configuration default="true" type="GradleAppRunConfiguration" factoryName="Application" REDIRECT_INPUT="false" ELEVATE="false" PASS_PARENT_ENVS_2="true">
|
||||
<method v="2">
|
||||
<option name="com.jetbrains.cidr.cpp.gradle.execution.GradleNativeBuildBeforeRunTaskProvider$BuildBeforeRunTask" enabled="true" />
|
||||
</method>
|
||||
</configuration>
|
||||
<list>
|
||||
<item itemvalue="CMake Application.actionlib_generate_messages_cpp" />
|
||||
<item itemvalue="CMake Application.actionlib_generate_messages_eus" />
|
||||
<item itemvalue="CMake Application.actionlib_generate_messages_lisp" />
|
||||
<item itemvalue="CMake Application.actionlib_generate_messages_nodejs" />
|
||||
<item itemvalue="CMake Application.actionlib_generate_messages_py" />
|
||||
<item itemvalue="CMake Application.actionlib_msgs_generate_messages_cpp" />
|
||||
<item itemvalue="CMake Application.actionlib_msgs_generate_messages_eus" />
|
||||
<item itemvalue="CMake Application.actionlib_msgs_generate_messages_lisp" />
|
||||
<item itemvalue="CMake Application.actionlib_msgs_generate_messages_nodejs" />
|
||||
<item itemvalue="CMake Application.actionlib_msgs_generate_messages_py" />
|
||||
<item itemvalue="CMake Application.clean_test_results" />
|
||||
<item itemvalue="CMake Application.download_extra_data" />
|
||||
<item itemvalue="CMake Application.doxygen" />
|
||||
<item itemvalue="CMake Application.geometry_msgs_generate_messages_cpp" />
|
||||
<item itemvalue="CMake Application.geometry_msgs_generate_messages_eus" />
|
||||
<item itemvalue="CMake Application.geometry_msgs_generate_messages_lisp" />
|
||||
<item itemvalue="CMake Application.geometry_msgs_generate_messages_nodejs" />
|
||||
<item itemvalue="CMake Application.geometry_msgs_generate_messages_py" />
|
||||
<item itemvalue="CMake Application.nav_msgs_generate_messages_cpp" />
|
||||
<item itemvalue="CMake Application.nav_msgs_generate_messages_eus" />
|
||||
<item itemvalue="CMake Application.nav_msgs_generate_messages_lisp" />
|
||||
<item itemvalue="CMake Application.nav_msgs_generate_messages_nodejs" />
|
||||
<item itemvalue="CMake Application.nav_msgs_generate_messages_py" />
|
||||
<item itemvalue="CMake Application.roscpp_generate_messages_cpp" />
|
||||
<item itemvalue="CMake Application.roscpp_generate_messages_eus" />
|
||||
<item itemvalue="CMake Application.roscpp_generate_messages_lisp" />
|
||||
<item itemvalue="CMake Application.roscpp_generate_messages_nodejs" />
|
||||
<item itemvalue="CMake Application.roscpp_generate_messages_py" />
|
||||
<item itemvalue="CMake Application.rosgraph_msgs_generate_messages_cpp" />
|
||||
<item itemvalue="CMake Application.rosgraph_msgs_generate_messages_eus" />
|
||||
<item itemvalue="CMake Application.rosgraph_msgs_generate_messages_lisp" />
|
||||
<item itemvalue="CMake Application.rosgraph_msgs_generate_messages_nodejs" />
|
||||
<item itemvalue="CMake Application.rosgraph_msgs_generate_messages_py" />
|
||||
<item itemvalue="CMake Application.run_tests" />
|
||||
<item itemvalue="CMake Application.sensor_msgs_generate_messages_cpp" />
|
||||
<item itemvalue="CMake Application.sensor_msgs_generate_messages_eus" />
|
||||
<item itemvalue="CMake Application.sensor_msgs_generate_messages_lisp" />
|
||||
<item itemvalue="CMake Application.sensor_msgs_generate_messages_nodejs" />
|
||||
<item itemvalue="CMake Application.sensor_msgs_generate_messages_py" />
|
||||
<item itemvalue="CMake Application.std_msgs_generate_messages_cpp" />
|
||||
<item itemvalue="CMake Application.std_msgs_generate_messages_eus" />
|
||||
<item itemvalue="CMake Application.std_msgs_generate_messages_lisp" />
|
||||
<item itemvalue="CMake Application.std_msgs_generate_messages_nodejs" />
|
||||
<item itemvalue="CMake Application.std_msgs_generate_messages_py" />
|
||||
<item itemvalue="CMake Application.svo_msgs_generate_messages_cpp" />
|
||||
<item itemvalue="CMake Application.svo_msgs_generate_messages_eus" />
|
||||
<item itemvalue="CMake Application.svo_msgs_generate_messages_lisp" />
|
||||
<item itemvalue="CMake Application.svo_msgs_generate_messages_nodejs" />
|
||||
<item itemvalue="CMake Application.svo_msgs_generate_messages_py" />
|
||||
<item itemvalue="CMake Application.svo_visualizer" />
|
||||
<item itemvalue="CMake Application.tests" />
|
||||
<item itemvalue="CMake Application.tf2_msgs_generate_messages_cpp" />
|
||||
<item itemvalue="CMake Application.tf2_msgs_generate_messages_eus" />
|
||||
<item itemvalue="CMake Application.tf2_msgs_generate_messages_lisp" />
|
||||
<item itemvalue="CMake Application.tf2_msgs_generate_messages_nodejs" />
|
||||
<item itemvalue="CMake Application.tf2_msgs_generate_messages_py" />
|
||||
<item itemvalue="CMake Application.tf_generate_messages_cpp" />
|
||||
<item itemvalue="CMake Application.tf_generate_messages_eus" />
|
||||
<item itemvalue="CMake Application.tf_generate_messages_lisp" />
|
||||
<item itemvalue="CMake Application.tf_generate_messages_nodejs" />
|
||||
<item itemvalue="CMake Application.tf_generate_messages_py" />
|
||||
<item itemvalue="CMake Application.visualization_msgs_generate_messages_cpp" />
|
||||
<item itemvalue="CMake Application.visualization_msgs_generate_messages_eus" />
|
||||
<item itemvalue="CMake Application.visualization_msgs_generate_messages_lisp" />
|
||||
<item itemvalue="CMake Application.visualization_msgs_generate_messages_nodejs" />
|
||||
<item itemvalue="CMake Application.visualization_msgs_generate_messages_py" />
|
||||
<item itemvalue="CMake Application.vo" />
|
||||
<item itemvalue="CMake Application.gmock" />
|
||||
<item itemvalue="CMake Application.gmock_main" />
|
||||
<item itemvalue="CMake Application.gtest" />
|
||||
<item itemvalue="CMake Application.gtest_main" />
|
||||
</list>
|
||||
</component>
|
||||
<component name="SpellCheckerSettings" RuntimeDictionaries="0" Folders="0" CustomDictionaries="0" DefaultDictionary="application-level" UseSingleDictionary="true" transferred="true" />
|
||||
<component name="TaskManager">
|
||||
<task active="true" id="Default" summary="Default task">
|
||||
<changelist id="1039b41d-6e4f-44ce-b5bc-8d34c33b3920" name="Default Changelist" comment="" />
|
||||
<created>1615974669888</created>
|
||||
<option name="number" value="Default" />
|
||||
<option name="presentableId" value="Default" />
|
||||
<updated>1615974669888</updated>
|
||||
<workItem from="1615974672234" duration="4403000" />
|
||||
<workItem from="1617031785627" duration="1205000" />
|
||||
<workItem from="1617034041379" duration="939000" />
|
||||
<workItem from="1617180383827" duration="11182000" />
|
||||
<workItem from="1617259776243" duration="13999000" />
|
||||
<workItem from="1617360128932" duration="77000" />
|
||||
<workItem from="1617628276956" duration="5665000" />
|
||||
<workItem from="1617634008721" duration="6021000" />
|
||||
<workItem from="1617703114896" duration="3471000" />
|
||||
<workItem from="1617780607861" duration="29000" />
|
||||
</task>
|
||||
<task id="LOCAL-00001" summary="fix bug 238">
|
||||
<created>1617193017745</created>
|
||||
<option name="number" value="00001" />
|
||||
<option name="presentableId" value="LOCAL-00001" />
|
||||
<option name="project" value="LOCAL" />
|
||||
<updated>1617193017745</updated>
|
||||
</task>
|
||||
<task id="LOCAL-00002" summary="optimize the visualizer">
|
||||
<created>1617640897291</created>
|
||||
<option name="number" value="00002" />
|
||||
<option name="presentableId" value="LOCAL-00002" />
|
||||
<option name="project" value="LOCAL" />
|
||||
<updated>1617640897291</updated>
|
||||
</task>
|
||||
<option name="localTasksCounter" value="3" />
|
||||
<servers />
|
||||
</component>
|
||||
<component name="TypeScriptGeneratedFilesManager">
|
||||
<option name="version" value="3" />
|
||||
</component>
|
||||
<component name="Vcs.Log.Tabs.Properties">
|
||||
<option name="TAB_STATES">
|
||||
<map>
|
||||
<entry key="MAIN">
|
||||
<value>
|
||||
<State />
|
||||
</value>
|
||||
</entry>
|
||||
</map>
|
||||
</option>
|
||||
<option name="oldMeFiltersMigrated" value="true" />
|
||||
</component>
|
||||
<component name="VcsManagerConfiguration">
|
||||
<MESSAGE value="fix bug 238" />
|
||||
<MESSAGE value="optimize the visualizer" />
|
||||
<option name="LAST_COMMIT_MESSAGE" value="optimize the visualizer" />
|
||||
</component>
|
||||
</project>
|
||||
@@ -1,79 +0,0 @@
|
||||
SET(PROJECT_NAME svo_ros)
|
||||
PROJECT(${PROJECT_NAME})
|
||||
CMAKE_MINIMUM_REQUIRED (VERSION 2.8.3)
|
||||
SET(CMAKE_BUILD_TYPE Release) # Release, RelWithDebInfo
|
||||
SET(CMAKE_VERBOSE_MAKEFILE OFF)
|
||||
SET(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${PROJECT_SOURCE_DIR}/CMakeModules/")
|
||||
|
||||
# Set build flags. Set IS_ARM on odroid board as environment variable
|
||||
SET(CMAKE_CXX_FLAGS "-Wall -D_LINUX -D_REENTRANT -march=native -Wno-unused-variable -Wno-unused-but-set-variable -Wno-unknown-pragmas")
|
||||
IF(DEFINED ENV{ARM_ARCHITECTURE})
|
||||
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mfpu=neon -march=armv7-a")
|
||||
ELSE()
|
||||
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mmmx -msse -msse -msse2 -msse3 -mssse3")
|
||||
ENDIF()
|
||||
IF(CMAKE_COMPILER_IS_GNUCC)
|
||||
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x")
|
||||
ELSE()
|
||||
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
|
||||
ENDIF()
|
||||
SET(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS} -O3 -fsee -fomit-frame-pointer -fno-signed-zeros -fno-math-errno -funroll-loops")
|
||||
|
||||
# Add catkin and required ROS packages
|
||||
FIND_PACKAGE(catkin REQUIRED COMPONENTS
|
||||
roscpp
|
||||
cmake_modules
|
||||
nav_msgs
|
||||
std_msgs
|
||||
visualization_msgs
|
||||
sensor_msgs
|
||||
image_transport
|
||||
cv_bridge
|
||||
tf
|
||||
svo
|
||||
svo_msgs
|
||||
vikit_common
|
||||
vikit_ros
|
||||
)
|
||||
|
||||
# Add plain cmake packages
|
||||
FIND_PACKAGE(OpenCV REQUIRED)
|
||||
FIND_PACKAGE(Eigen REQUIRED)
|
||||
FIND_PACKAGE(Sophus REQUIRED)
|
||||
FIND_PACKAGE(Boost REQUIRED COMPONENTS thread)
|
||||
|
||||
# Describe catkin Project
|
||||
catkin_package(
|
||||
DEPENDS Eigen OpenCV Sophus Boost
|
||||
CATKIN_DEPENDS roscpp nav_msgs std_msgs visualization_msgs sensor_msgs image_transport cv_bridge tf svo svo_msgs vikit_common vikit_ros
|
||||
INCLUDE_DIRS include
|
||||
LIBRARIES svo_visualizer
|
||||
)
|
||||
|
||||
# Include dirs
|
||||
INCLUDE_DIRECTORIES(
|
||||
include
|
||||
${Eigen_INCLUDE_DIRS}
|
||||
${OpenCV_INCLUDE_DIRS}
|
||||
${Sophus_INCLUDE_DIRS}
|
||||
${Boost_INCLUDE_DIRS}
|
||||
${catkin_INCLUDE_DIRS}
|
||||
)
|
||||
|
||||
# Set link libraries
|
||||
LIST(APPEND LINK_LIBS
|
||||
${OpenCV_LIBS}
|
||||
${Sophus_LIBRARIES}
|
||||
${Boost_LIBRARIES}
|
||||
${catkin_LIBRARIES}
|
||||
)
|
||||
|
||||
# Create visualizer library
|
||||
ADD_LIBRARY(svo_visualizer src/visualizer.cpp)
|
||||
TARGET_LINK_LIBRARIES(svo_visualizer ${LINK_LIBS})
|
||||
|
||||
# Create Executables
|
||||
ADD_EXECUTABLE(vo src/vo_node.cpp)
|
||||
TARGET_LINK_LIBRARIES(vo svo_visualizer)
|
||||
#ADD_EXECUTABLE(benchmark src/benchmark_node.cpp)
|
||||
#TARGET_LINK_LIBRARIES(benchmark svo_visualizer)
|
||||
@@ -1,62 +0,0 @@
|
||||
// This file is part of SVO - Semi-direct Visual Odometry.
|
||||
//
|
||||
// Copyright (C) 2014 Christian Forster <forster at ifi dot uzh dot ch>
|
||||
// (Robotics and Perception Group, University of Zurich, Switzerland).
|
||||
//
|
||||
// SVO is free software: you can redistribute it and/or modify it under the
|
||||
// terms of the GNU General Public License as published by the Free Software
|
||||
// Foundation, either version 3 of the License, or any later version.
|
||||
//
|
||||
// SVO is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
||||
// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
#ifndef DATASET_IMG_H
|
||||
#define DATASET_IMG_H
|
||||
|
||||
namespace FileType {
|
||||
|
||||
#include <string>
|
||||
#include <Eigen/Core>
|
||||
#include <Eigen/Geometry>
|
||||
|
||||
using ::Eigen::Quaterniond;
|
||||
using ::Eigen::Vector3d;
|
||||
|
||||
/// Specification of Dataset which contains: Camera Image, Gyroscope Rotation
|
||||
class DatasetImg
|
||||
{
|
||||
public:
|
||||
DatasetImg() {}
|
||||
virtual ~DatasetImg() {}
|
||||
|
||||
double timestamp_;
|
||||
std::string image_name_;
|
||||
|
||||
friend std::ostream& operator <<(std::ostream& out, const DatasetImg& pair);
|
||||
friend std::istream& operator >>(std::istream& in, DatasetImg& pair);
|
||||
};
|
||||
|
||||
std::ostream& operator <<(std::ostream& out, const DatasetImg& gt)
|
||||
{
|
||||
out
|
||||
<< gt.timestamp_ << " "
|
||||
<< gt.image_name_ << " "
|
||||
<< std::endl;
|
||||
return out;
|
||||
}
|
||||
|
||||
std::istream& operator >>(std::istream& in, DatasetImg& gt)
|
||||
{
|
||||
in >> gt.timestamp_;
|
||||
in >> gt.image_name_;
|
||||
return in;
|
||||
}
|
||||
|
||||
} // end namespace FileType
|
||||
|
||||
|
||||
#endif /* DATASET_IMG_H */
|
||||
@@ -1,79 +0,0 @@
|
||||
// This file is part of SVO - Semi-direct Visual Odometry.
|
||||
//
|
||||
// Copyright (C) 2014 Christian Forster <forster at ifi dot uzh dot ch>
|
||||
// (Robotics and Perception Group, University of Zurich, Switzerland).
|
||||
//
|
||||
// SVO is free software: you can redistribute it and/or modify it under the
|
||||
// terms of the GNU General Public License as published by the Free Software
|
||||
// Foundation, either version 3 of the License, or any later version.
|
||||
//
|
||||
// SVO is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
||||
// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
#ifndef SVO_VISUALIZER_H_
|
||||
#define SVO_VISUALIZER_H_
|
||||
|
||||
#include <queue>
|
||||
#include <ros/ros.h>
|
||||
#include <svo/global.h>
|
||||
#include <visualization_msgs/Marker.h>
|
||||
#include <visualization_msgs/MarkerArray.h>
|
||||
#include <nav_msgs/Odometry.h>
|
||||
#include <std_msgs/ColorRGBA.h>
|
||||
#include <sensor_msgs/Image.h>
|
||||
#include <sensor_msgs/CameraInfo.h>
|
||||
#include <boost/lexical_cast.hpp>
|
||||
#include <tf/transform_broadcaster.h>
|
||||
#include <image_transport/image_transport.h>
|
||||
#include <boost/thread.hpp>
|
||||
#include <boost/shared_ptr.hpp>
|
||||
#include <iostream>
|
||||
|
||||
namespace svo {
|
||||
|
||||
class Frame;
|
||||
class Point;
|
||||
class Map;
|
||||
class FrameHandlerMono;
|
||||
|
||||
typedef boost::shared_ptr<Frame> FramePtr;
|
||||
|
||||
/// This class bundles all functions to publish visualisation messages.
|
||||
class Visualizer
|
||||
{
|
||||
public:
|
||||
ros::NodeHandle pnh_;
|
||||
size_t trace_id_;
|
||||
ros::Publisher pub_frames_;
|
||||
ros::Publisher pub_points_;
|
||||
ros::Publisher pub_pose_;
|
||||
ros::Publisher pub_info_;
|
||||
tf::TransformBroadcaster br_;
|
||||
SE3 T_world_from_vision_;
|
||||
|
||||
Visualizer();
|
||||
|
||||
~Visualizer() {};
|
||||
|
||||
void publishMinimal(
|
||||
const cv::Mat& img,
|
||||
const FramePtr& frame,
|
||||
const FrameHandlerMono& slam,
|
||||
const double timestamp);
|
||||
|
||||
void visualizeMarkers(
|
||||
const FramePtr& frame,
|
||||
const set<FramePtr>& core_kfs,
|
||||
const Map& map);
|
||||
|
||||
void removeDeletedPts(const Map& map);
|
||||
|
||||
};
|
||||
|
||||
} // end namespace svo
|
||||
|
||||
#endif /* SVO_VISUALIZER_H_ */
|
||||
@@ -1,21 +0,0 @@
|
||||
<launch>
|
||||
|
||||
<node pkg="svo_ros" type="vo" name="svo" clear_params="true" output="screen">
|
||||
|
||||
<!-- Camera topic to subscribe to -->
|
||||
<param name="cam_topic" value="/CoreNode/grey_img" type="str" />
|
||||
|
||||
<!-- Camera calibration file -->
|
||||
<rosparam file="$(find svo_ros)/param/camera_pinhole.yaml" />
|
||||
|
||||
<!-- Default parameter settings: choose between vo_fast and vo_accurate -->
|
||||
<rosparam file="$(find svo_ros)/param/px30.yaml" />
|
||||
|
||||
<!-- Initial camera orientation, make it point downwards -->
|
||||
<param name="init_rx" value="0.00" />
|
||||
<param name="init_ry" value="0.00" />
|
||||
<param name="init_rz" value="0.00" />
|
||||
|
||||
</node>
|
||||
|
||||
</launch>
|
||||
@@ -1,16 +0,0 @@
|
||||
<launch>
|
||||
|
||||
<node pkg="svo_ros" type="vo" name="svo" clear_params="true" output="screen">
|
||||
|
||||
<!-- Camera topic to subscribe to -->
|
||||
<param name="cam_topic" value="/camera/image_raw" type="str" />
|
||||
|
||||
<!-- Camera calibration file -->
|
||||
<rosparam file="$(find svo_ros)/param/camera_atan.yaml" />
|
||||
|
||||
<!-- Default parameter settings: choose between vo_fast and vo_accurate -->
|
||||
<rosparam file="$(find svo_ros)/param/vo_fast.yaml" />
|
||||
|
||||
</node>
|
||||
|
||||
</launch>
|
||||
@@ -1,21 +0,0 @@
|
||||
<launch>
|
||||
|
||||
<node pkg="svo_ros" type="vo" name="svo" clear_params="true" output="screen">
|
||||
|
||||
<!-- Camera topic to subscribe to -->
|
||||
<param name="cam_topic" value="/camera/image_raw" type="str" />
|
||||
|
||||
<!-- Camera calibration file -->
|
||||
<rosparam file="$(find svo_ros)/param/camera_atan.yaml" />
|
||||
|
||||
<!-- Default parameter settings: choose between vo_fast and vo_accurate -->
|
||||
<rosparam file="$(find svo_ros)/param/vo_fast.yaml" />
|
||||
|
||||
<!-- Initial camera orientation, make it point downwards -->
|
||||
<param name="init_rx" value="3.14" />
|
||||
<param name="init_ry" value="0.00" />
|
||||
<param name="init_rz" value="0.00" />
|
||||
|
||||
</node>
|
||||
|
||||
</launch>
|
||||
@@ -1,43 +0,0 @@
|
||||
<?xml version="1.0"?>
|
||||
<package>
|
||||
<name>svo_ros</name>
|
||||
<version>0.1.0</version>
|
||||
<description>
|
||||
Monocular Visual Odometry - ROS Nodes
|
||||
</description>
|
||||
<author>Christian Forster</author>
|
||||
<maintainer email="[email protected]">Christian Forster</maintainer>
|
||||
<license>GPLv3</license>
|
||||
|
||||
<!-- Dependencies which this package needs to build itself. -->
|
||||
<buildtool_depend>catkin</buildtool_depend>
|
||||
|
||||
<!-- Dependencies needed to compile this package. -->
|
||||
<build_depend>roscpp</build_depend>
|
||||
<build_depend>cmake_modules</build_depend> <!-- for FindEigen.cmake module -->
|
||||
<build_depend>nav_msgs</build_depend>
|
||||
<build_depend>std_msgs</build_depend>
|
||||
<build_depend>visualization_msgs</build_depend>
|
||||
<build_depend>sensor_msgs</build_depend>
|
||||
<build_depend>image_transport</build_depend>
|
||||
<build_depend>cv_bridge</build_depend>
|
||||
<build_depend>tf</build_depend>
|
||||
<build_depend>svo</build_depend>
|
||||
<build_depend>svo_msgs</build_depend>
|
||||
<build_depend>vikit_common</build_depend>
|
||||
<build_depend>vikit_ros</build_depend>
|
||||
|
||||
<!-- Dependencies needed after this package is compiled. -->
|
||||
<run_depend>roscpp</run_depend>
|
||||
<run_depend>nav_msgs</run_depend>
|
||||
<run_depend>std_msgs</run_depend>
|
||||
<run_depend>visualization_msgs</run_depend>
|
||||
<run_depend>sensor_msgs</run_depend>
|
||||
<run_depend>image_transport</run_depend>
|
||||
<run_depend>cv_bridge</run_depend>
|
||||
<run_depend>tf</run_depend>
|
||||
<run_depend>svo</run_depend>
|
||||
<run_depend>svo_msgs</run_depend>
|
||||
<run_depend>vikit_common</run_depend>
|
||||
<run_depend>vikit_ros</run_depend>
|
||||
</package>
|
||||
@@ -1,8 +0,0 @@
|
||||
cam_model: ATAN
|
||||
cam_width: 752
|
||||
cam_height: 480
|
||||
cam_fx: 0.509326
|
||||
cam_fy: 0.796651
|
||||
cam_cx: 0.45905
|
||||
cam_cy: 0.510056
|
||||
cam_d0: 0.9320
|
||||
@@ -1,11 +0,0 @@
|
||||
cam_model: Pinhole
|
||||
cam_width: 640
|
||||
cam_height: 480
|
||||
cam_fx: 789.860721
|
||||
cam_fy: 790.097440
|
||||
cam_cx: 305.323524
|
||||
cam_cy: 260.464072
|
||||
cam_d0: 0.027470
|
||||
cam_d1: -0.051518
|
||||
cam_d2: 0.004375
|
||||
cam_d3: -0.004028
|
||||
@@ -1,8 +0,0 @@
|
||||
cam_model: ATAN
|
||||
cam_width: 640
|
||||
cam_height: 480
|
||||
cam_fx: 0.463632
|
||||
cam_fy: 0.823661
|
||||
cam_cx: 0.497465
|
||||
cam_cy: 0.498443
|
||||
cam_d0: 1.01687
|
||||
@@ -1,4 +0,0 @@
|
||||
grid_size: 20
|
||||
max_n_kfs: 50
|
||||
loba_num_iter: 10
|
||||
max_fts: 200
|
||||
@@ -1,3 +0,0 @@
|
||||
grid_size: 30
|
||||
max_n_kfs: 10
|
||||
loba_num_iter: 0
|
||||
@@ -1,293 +0,0 @@
|
||||
{
|
||||
"keys": {},
|
||||
"groups": {
|
||||
"pluginmanager": {
|
||||
"keys": {
|
||||
"running-plugins": {
|
||||
"type": "repr",
|
||||
"repr": "{u'rqt_rviz/RViz': [1], u'rqt_reconfigure/Param': [1], u'rqt_image_view/ImageView': [1], u'svo_rqt/Svo': [1]}"
|
||||
}
|
||||
},
|
||||
"groups": {
|
||||
"plugin__rqt_rviz__RViz__1": {
|
||||
"keys": {},
|
||||
"groups": {
|
||||
"dock_widget__": {
|
||||
"keys": {
|
||||
"dockable": {
|
||||
"type": "repr",
|
||||
"repr": "True"
|
||||
},
|
||||
"parent": {
|
||||
"type": "repr",
|
||||
"repr": "None"
|
||||
}
|
||||
},
|
||||
"groups": {}
|
||||
}
|
||||
}
|
||||
},
|
||||
"plugin__rqt_robot_steering__RobotSteering__1": {
|
||||
"keys": {},
|
||||
"groups": {
|
||||
"dock_widget__RobotSteeringUi": {
|
||||
"keys": {
|
||||
"dockable": {
|
||||
"type": "repr",
|
||||
"repr": "u'true'"
|
||||
},
|
||||
"parent": {
|
||||
"type": "repr",
|
||||
"repr": "None"
|
||||
}
|
||||
},
|
||||
"groups": {}
|
||||
},
|
||||
"plugin": {
|
||||
"keys": {
|
||||
"topic": {
|
||||
"type": "repr",
|
||||
"repr": "u'/cmd_vel'"
|
||||
},
|
||||
"vx_min": {
|
||||
"type": "repr",
|
||||
"repr": "u'-1'"
|
||||
},
|
||||
"vw_min": {
|
||||
"type": "repr",
|
||||
"repr": "u'-3'"
|
||||
},
|
||||
"vw_max": {
|
||||
"type": "repr",
|
||||
"repr": "u'3'"
|
||||
},
|
||||
"vx_max": {
|
||||
"type": "repr",
|
||||
"repr": "u'1'"
|
||||
}
|
||||
},
|
||||
"groups": {}
|
||||
}
|
||||
}
|
||||
},
|
||||
"plugin__rqt_reconfigure__Param__1": {
|
||||
"keys": {},
|
||||
"groups": {
|
||||
"dock_widget___plugincontainer_top_widget": {
|
||||
"keys": {
|
||||
"dockable": {
|
||||
"type": "repr",
|
||||
"repr": "True"
|
||||
},
|
||||
"parent": {
|
||||
"type": "repr",
|
||||
"repr": "None"
|
||||
}
|
||||
},
|
||||
"groups": {}
|
||||
},
|
||||
"plugin": {
|
||||
"keys": {
|
||||
"splitter": {
|
||||
"type": "repr(QByteArray.hex)",
|
||||
"repr(QByteArray.hex)": "QtCore.QByteArray('000000ff0000000000000002000000c00000006401000000060100000001')",
|
||||
"pretty-print": " d "
|
||||
},
|
||||
"_splitter": {
|
||||
"type": "repr(QByteArray.hex)",
|
||||
"repr(QByteArray.hex)": "QtCore.QByteArray('000000ff00000000000000020000013e0000006401000000090100000002')",
|
||||
"pretty-print": " > d "
|
||||
}
|
||||
},
|
||||
"groups": {}
|
||||
}
|
||||
}
|
||||
},
|
||||
"plugin__rqt_image_view__ImageView__1": {
|
||||
"keys": {},
|
||||
"groups": {
|
||||
"dock_widget__ImageViewWidget": {
|
||||
"keys": {
|
||||
"dockable": {
|
||||
"type": "repr",
|
||||
"repr": "True"
|
||||
},
|
||||
"parent": {
|
||||
"type": "repr",
|
||||
"repr": "None"
|
||||
}
|
||||
},
|
||||
"groups": {}
|
||||
},
|
||||
"plugin": {
|
||||
"keys": {
|
||||
"dynamic_range": {
|
||||
"type": "repr",
|
||||
"repr": "False"
|
||||
},
|
||||
"max_range": {
|
||||
"type": "repr",
|
||||
"repr": "10.0"
|
||||
},
|
||||
"topic": {
|
||||
"type": "repr",
|
||||
"repr": "u'/svo/image'"
|
||||
},
|
||||
"zoom1": {
|
||||
"type": "repr",
|
||||
"repr": "False"
|
||||
}
|
||||
},
|
||||
"groups": {}
|
||||
}
|
||||
}
|
||||
},
|
||||
"plugin__svo_rqt__Svo__1": {
|
||||
"keys": {},
|
||||
"groups": {
|
||||
"dock_widget__SvoWidget": {
|
||||
"keys": {
|
||||
"dockable": {
|
||||
"type": "repr",
|
||||
"repr": "True"
|
||||
},
|
||||
"parent": {
|
||||
"type": "repr",
|
||||
"repr": "None"
|
||||
}
|
||||
},
|
||||
"groups": {}
|
||||
},
|
||||
"dock_widget__SvoUi": {
|
||||
"keys": {
|
||||
"dockable": {
|
||||
"type": "repr",
|
||||
"repr": "u'true'"
|
||||
},
|
||||
"parent": {
|
||||
"type": "repr",
|
||||
"repr": "None"
|
||||
}
|
||||
},
|
||||
"groups": {}
|
||||
}
|
||||
}
|
||||
},
|
||||
"plugin__rqt_shell__Shell__1": {
|
||||
"keys": {},
|
||||
"groups": {
|
||||
"plugin": {
|
||||
"keys": {
|
||||
"shell_type": {
|
||||
"type": "repr",
|
||||
"repr": "u'0'"
|
||||
}
|
||||
},
|
||||
"groups": {}
|
||||
}
|
||||
}
|
||||
},
|
||||
"plugin__rqt_console__Console__1": {
|
||||
"keys": {},
|
||||
"groups": {
|
||||
"plugin": {
|
||||
"keys": {
|
||||
"show_highlighted_only": {
|
||||
"type": "repr",
|
||||
"repr": "u'false'"
|
||||
},
|
||||
"message_limit": {
|
||||
"type": "repr",
|
||||
"repr": "u'20000'"
|
||||
},
|
||||
"exclude_filters": {
|
||||
"type": "repr",
|
||||
"repr": "u'severity'"
|
||||
},
|
||||
"table_splitter": {
|
||||
"type": "repr(QByteArray.hex)",
|
||||
"repr(QByteArray.hex)": "QtCore.QByteArray('000000ff00000000000000020000004e000000ed01000000090100000002')",
|
||||
"pretty-print": " N "
|
||||
},
|
||||
"highlight_filters": {
|
||||
"type": "repr",
|
||||
"repr": "u'message'"
|
||||
},
|
||||
"paused": {
|
||||
"type": "repr",
|
||||
"repr": "u'false'"
|
||||
},
|
||||
"settings_exist": {
|
||||
"type": "repr",
|
||||
"repr": "u'true'"
|
||||
},
|
||||
"filter_splitter": {
|
||||
"type": "repr(QByteArray.hex)",
|
||||
"repr(QByteArray.hex)": "QtCore.QByteArray('000000ff0000000000000002000000720000007201000000090100000002')",
|
||||
"pretty-print": " r r "
|
||||
}
|
||||
},
|
||||
"groups": {
|
||||
"exclude_filter_0": {
|
||||
"keys": {
|
||||
"enabled": {
|
||||
"type": "repr",
|
||||
"repr": "u'true'"
|
||||
},
|
||||
"itemlist": {
|
||||
"type": "repr",
|
||||
"repr": "u''"
|
||||
}
|
||||
},
|
||||
"groups": {}
|
||||
},
|
||||
"highlight_filter_0": {
|
||||
"keys": {
|
||||
"regex": {
|
||||
"type": "repr",
|
||||
"repr": "u'false'"
|
||||
},
|
||||
"text": {
|
||||
"type": "repr",
|
||||
"repr": "u''"
|
||||
},
|
||||
"enabled": {
|
||||
"type": "repr",
|
||||
"repr": "u'true'"
|
||||
}
|
||||
},
|
||||
"groups": {}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"mainwindow": {
|
||||
"keys": {
|
||||
"geometry": {
|
||||
"type": "repr(QByteArray.hex)",
|
||||
"repr(QByteArray.hex)": "QtCore.QByteArray('01d9d0cb00010000000007a9fffffffc00001187000005a7000007b1000000180000117f0000059f000000000000')",
|
||||
"pretty-print": " "
|
||||
},
|
||||
"state": {
|
||||
"type": "repr(QByteArray.hex)",
|
||||
"repr(QByteArray.hex)": "QtCore.QByteArray('000000ff00000000fd0000000100000003000009cf00000559fc0100000005fb0000002c00730076006f005f007200710074005f005f00530076006f005f005f0031005f005f00530076006f005500690100000000000003890000000000000000fb0000006a007200710074005f0072006f0062006f0074005f007300740065006500720069006e0067005f005f0052006f0062006f0074005300740065006500720069006e0067005f005f0031005f005f0052006f0062006f0074005300740065006500720069006e00670055006901000000000000020b0000000000000000fc00000000000003530000022e00fffffffc0200000004fb0000003400730076006f005f007200710074005f005f00530076006f005f005f0031005f005f00530076006f0057006900640067006500740100000019000000a30000009900fffffffb0000004c007200710074005f0063006f006e0073006f006c0065005f005f0043006f006e0073006f006c0065005f005f0031005f005f0043006f006e0073006f006c006500570069006400670065007401000000c3000003b50000000000000000fb0000005a007200710074005f0069006d006100670065005f0076006900650077005f005f0049006d0061006700650056006900650077005f005f0031005f005f0049006d006100670065005600690065007700570069006400670065007401000000c2000002700000005100fffffffb0000006c007200710074005f007200650063006f006e006600690067007500720065005f005f0050006100720061006d005f005f0031005f005f005f0070006c007500670069006e0063006f006e007400610069006e00650072005f0074006f0070005f00770069006400670065007401000003380000023a0000010f00fffffffb00000026007200710074005f007200760069007a005f005f005200560069007a005f005f0031005f005f010000035900000676000000a700fffffffb00000040007200710074005f007300680065006c006c005f005f005300680065006c006c005f005f0031005f005f0058005400650072006d005700690064006700650074010000091c000000b30000000000000000000009cf0000000000000004000000040000000800000008fc00000001000000030000000100000036004d0069006e0069006d0069007a006500640044006f0063006b00570069006400670065007400730054006f006f006c0062006100720000000000ffffffff0000000000000000')",
|
||||
"pretty-print": " ,svo_rqt__Svo__1__SvoUi jrqt_robot_steering__RobotSteering__1__RobotSteeringUi S . p Q 8 : Y v "
|
||||
}
|
||||
},
|
||||
"groups": {
|
||||
"toolbar_areas": {
|
||||
"keys": {
|
||||
"MinimizedDockWidgetsToolbar": {
|
||||
"type": "repr",
|
||||
"repr": "8"
|
||||
}
|
||||
},
|
||||
"groups": {}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,153 +0,0 @@
|
||||
Panels:
|
||||
- Class: rviz/Displays
|
||||
Help Height: 108
|
||||
Name: Displays
|
||||
Property Tree Widget:
|
||||
Expanded:
|
||||
- /Global Options1
|
||||
- /Status1
|
||||
- /TF1
|
||||
- /Marker1
|
||||
- /Marker2
|
||||
- /Marker2/Namespaces1
|
||||
- /Image1
|
||||
Splitter Ratio: 0.5
|
||||
Tree Height: 680
|
||||
- Class: rviz/Selection
|
||||
Name: Selection
|
||||
- Class: rviz/Tool Properties
|
||||
Expanded:
|
||||
- /2D Pose Estimate1
|
||||
- /2D Nav Goal1
|
||||
- /Publish Point1
|
||||
Name: Tool Properties
|
||||
Splitter Ratio: 0.588679
|
||||
- Class: rviz/Views
|
||||
Expanded:
|
||||
- /Current View1
|
||||
Name: Views
|
||||
Splitter Ratio: 0.5
|
||||
- Class: rviz/Time
|
||||
Experimental: false
|
||||
Name: Time
|
||||
SyncMode: 0
|
||||
SyncSource: Image
|
||||
Visualization Manager:
|
||||
Class: ""
|
||||
Displays:
|
||||
- Alpha: 0.5
|
||||
Cell Size: 1
|
||||
Class: rviz/Grid
|
||||
Color: 160; 160; 164
|
||||
Enabled: true
|
||||
Line Style:
|
||||
Line Width: 0.03
|
||||
Value: Lines
|
||||
Name: Grid
|
||||
Normal Cell Count: 0
|
||||
Offset:
|
||||
X: 0
|
||||
Y: 0
|
||||
Z: 0
|
||||
Plane: XY
|
||||
Plane Cell Count: 10
|
||||
Reference Frame: <Fixed Frame>
|
||||
Value: true
|
||||
- Class: rviz/TF
|
||||
Enabled: false
|
||||
Frame Timeout: 15
|
||||
Frames:
|
||||
All Enabled: true
|
||||
Marker Scale: 1
|
||||
Name: TF
|
||||
Show Arrows: true
|
||||
Show Axes: true
|
||||
Show Names: true
|
||||
Tree:
|
||||
{}
|
||||
Update Interval: 0
|
||||
Value: false
|
||||
- Class: rviz/Marker
|
||||
Enabled: true
|
||||
Marker Topic: /svo/keyframes
|
||||
Name: Marker
|
||||
Namespaces:
|
||||
cams: true
|
||||
kfs: true
|
||||
Queue Size: 100
|
||||
Value: true
|
||||
- Class: rviz/Marker
|
||||
Enabled: true
|
||||
Marker Topic: /svo/points
|
||||
Name: Marker
|
||||
Namespaces:
|
||||
pts: true
|
||||
trajectory: true
|
||||
Queue Size: 100
|
||||
Value: true
|
||||
- Class: rviz/Image
|
||||
Enabled: true
|
||||
Image Topic: /svo/image
|
||||
Max Value: 1
|
||||
Median window: 5
|
||||
Min Value: 0
|
||||
Name: Image
|
||||
Normalize Range: true
|
||||
Queue Size: 2
|
||||
Transport Hint: raw
|
||||
Value: true
|
||||
Enabled: true
|
||||
Global Options:
|
||||
Background Color: 255; 255; 255
|
||||
Fixed Frame: /world
|
||||
Name: root
|
||||
Tools:
|
||||
- Class: rviz/Interact
|
||||
Hide Inactive Objects: true
|
||||
- Class: rviz/MoveCamera
|
||||
- Class: rviz/Select
|
||||
- Class: rviz/FocusCamera
|
||||
- Class: rviz/Measure
|
||||
- Class: rviz/SetInitialPose
|
||||
Topic: /initialpose
|
||||
- Class: rviz/SetGoal
|
||||
Topic: /move_base_simple/goal
|
||||
- Class: rviz/PublishPoint
|
||||
Single click: true
|
||||
Topic: /clicked_point
|
||||
Value: true
|
||||
Views:
|
||||
Current:
|
||||
Class: rviz/Orbit
|
||||
Distance: 5.48911
|
||||
Focal Point:
|
||||
X: 0.777511
|
||||
Y: 0.689927
|
||||
Z: -0.445833
|
||||
Name: Current View
|
||||
Near Clip Distance: 0.01
|
||||
Pitch: 0.125204
|
||||
Target Frame: <Fixed Frame>
|
||||
Value: Orbit (rviz)
|
||||
Yaw: 4.45215
|
||||
Saved: ~
|
||||
Window Geometry:
|
||||
Displays:
|
||||
collapsed: false
|
||||
Height: 1416
|
||||
Hide Left Dock: false
|
||||
Hide Right Dock: true
|
||||
Image:
|
||||
collapsed: false
|
||||
QMainWindow State: 000000ff00000000fd0000000400000000000002cc00000542fc0200000009fb0000001200530065006c0065006300740069006f006e00000000280000009b0000006400fffffffb0000001e0054006f006f006c002000500072006f007000650072007400690065007302000001ed000001df00000185000000a3fb000000120056006900650077007300200054006f006f02000001df000002110000018500000122fb000000200054006f006f006c002000500072006f0070006500720074006900650073003203000002880000011d000002210000017afb000000100044006900730070006c006100790073010000002800000355000000dd00fffffffb0000002000730065006c0065006300740069006f006e00200062007500660066006500720200000138000000aa0000023a00000294fb00000014005700690064006500530074006500720065006f02000000e6000000d2000003ee0000030bfb0000000c004b0069006e0065006300740200000186000001060000030c00000261fb0000000a0049006d0061006700650100000383000001e70000001600ffffff000000010000010f000003dafc0200000003fb0000001e0054006f006f006c002000500072006f00700065007200740069006500730100000041000000780000000000000000fb0000000a005600690065007700730000000028000003da000000b000fffffffb0000001200530065006c0065006300740069006f006e010000025a000000b200000000000000000000000200000490000000a9fc0100000001fb0000000a00560069006500770073030000004e00000080000002e10000019700000003000003ce0000003efc0100000002fb0000000800540069006d00650000000000000003ce000002f600fffffffb0000000800540069006d00650100000000000004500000000000000000000006fd0000054200000004000000040000000800000008fc0000000100000002000000010000000a0054006f006f006c00730100000000ffffffff0000000000000000
|
||||
Selection:
|
||||
collapsed: false
|
||||
Time:
|
||||
collapsed: false
|
||||
Tool Properties:
|
||||
collapsed: false
|
||||
Views:
|
||||
collapsed: true
|
||||
Width: 2511
|
||||
X: 1962
|
||||
Y: 24
|
||||
@@ -1,272 +0,0 @@
|
||||
// This file is part of SVO - Semi-direct Visual Odometry.
|
||||
//
|
||||
// Copyright (C) 2014 Christian Forster <forster at ifi dot uzh dot ch>
|
||||
// (Robotics and Perception Group, University of Zurich, Switzerland).
|
||||
//
|
||||
// SVO is free software: you can redistribute it and/or modify it under the
|
||||
// terms of the GNU General Public License as published by the Free Software
|
||||
// Foundation, either version 3 of the License, or any later version.
|
||||
//
|
||||
// SVO is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
||||
// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
#include <vector>
|
||||
#include <string>
|
||||
#include <iostream>
|
||||
#include <sophus/se3.h>
|
||||
#include <ros/ros.h>
|
||||
#include <ros/package.h>
|
||||
#include <opencv2/opencv.hpp>
|
||||
#include <vikit/file_reader.h>
|
||||
#include <vikit/params_helper.h>
|
||||
#include <vikit/camera_loader.h>
|
||||
#include <vikit/abstract_camera.h>
|
||||
#include <vikit/blender_utils.h>
|
||||
#include <vikit/sample.h>
|
||||
#include <svo/config.h>
|
||||
#include <svo/frame.h>
|
||||
#include <svo/feature.h>
|
||||
#include <svo/map.h>
|
||||
#include <svo/point.h>
|
||||
#include <svo/frame_handler_mono.h>
|
||||
#include <svo/feature_detection.h>
|
||||
#include <svo_ros/visualizer.h>
|
||||
#include <svo_ros/dataset_img.h>
|
||||
|
||||
namespace svo {
|
||||
|
||||
class BenchmarkNode
|
||||
{
|
||||
svo::FrameHandlerMono* vo_;
|
||||
svo::Visualizer visualizer_;
|
||||
int frame_count_;
|
||||
std::ofstream trace_est_pose_;
|
||||
std::ofstream trace_trans_error_;
|
||||
std::ofstream trace_rot_error_;
|
||||
std::ofstream trace_depth_error_;
|
||||
vk::AbstractCamera* cam_;
|
||||
double img_noise_sigma_;
|
||||
|
||||
public:
|
||||
BenchmarkNode(ros::NodeHandle& nh);
|
||||
~BenchmarkNode();
|
||||
void tracePose(const SE3& T_w_f, const double timestamp);
|
||||
void tracePoseError(const SE3& T_f_gt, const double timestamp);
|
||||
void traceDepthError(const FramePtr& frame, const cv::Mat& depthmap);
|
||||
void addNoiseToImage(cv::Mat& img, double sigma);
|
||||
void runBenchmark(const std::string& dataset_dir);
|
||||
void runBlenderBenchmark(const std::string& dataset_dir);
|
||||
};
|
||||
|
||||
BenchmarkNode::BenchmarkNode(ros::NodeHandle& nh) :
|
||||
vo_(NULL),
|
||||
frame_count_(0),
|
||||
img_noise_sigma_(vk::getParam<double>("svo/dataset_noise_sigma", 0.0))
|
||||
{
|
||||
// Create Camera
|
||||
if(!vk::camera_loader::loadFromRosNs("svo", cam_))
|
||||
throw std::runtime_error("Camera model not correctly specified.");
|
||||
|
||||
// create pose tracefile
|
||||
std::string trace_est_name(Config::traceDir() + "/traj_estimate.txt");
|
||||
trace_est_pose_.open(trace_est_name.c_str());
|
||||
if(trace_est_pose_.fail())
|
||||
throw std::runtime_error("Could not create tracefile. Does folder exist?");
|
||||
|
||||
// Initialize VO
|
||||
vo_ = new svo::FrameHandlerMono(cam_);
|
||||
vo_->start();
|
||||
}
|
||||
|
||||
BenchmarkNode::~BenchmarkNode()
|
||||
{
|
||||
delete vo_;
|
||||
delete cam_;
|
||||
}
|
||||
|
||||
void BenchmarkNode::tracePose(const SE3& T_w_f, const double timestamp)
|
||||
{
|
||||
Quaterniond q(T_w_f.unit_quaternion());
|
||||
Vector3d p(T_w_f.translation());
|
||||
trace_est_pose_.precision(15);
|
||||
trace_est_pose_.setf(std::ios::fixed, std::ios::floatfield );
|
||||
trace_est_pose_ << timestamp << " ";
|
||||
trace_est_pose_.precision(6);
|
||||
trace_est_pose_ << p.x() << " " << p.y() << " " << p.z() << " "
|
||||
<< q.x() << " " << q.y() << " " << q.z() << " " << q.w() << std::endl;
|
||||
}
|
||||
|
||||
void BenchmarkNode::tracePoseError(const SE3& T_f_gt, const double timestamp)
|
||||
{
|
||||
Vector3d et(T_f_gt.translation()); // translation error
|
||||
trace_trans_error_.precision(15);
|
||||
trace_trans_error_.setf(std::ios::fixed, std::ios::floatfield );
|
||||
trace_trans_error_ << timestamp << " ";
|
||||
trace_trans_error_.precision(6);
|
||||
trace_trans_error_ << et.x() << " " << et.y() << " " << et.z() << " " << std::endl;
|
||||
Vector3d er(vk::dcm2rpy(T_f_gt.rotation_matrix())); // rotation error in roll-pitch-yaw
|
||||
trace_rot_error_.precision(15);
|
||||
trace_rot_error_.setf(std::ios::fixed, std::ios::floatfield );
|
||||
trace_rot_error_ << timestamp << " ";
|
||||
trace_rot_error_.precision(6);
|
||||
trace_rot_error_ << er.x() << " " << er.y() << " " << er.z() << " " << std::endl;
|
||||
}
|
||||
|
||||
void BenchmarkNode::traceDepthError(const FramePtr& frame, const cv::Mat& depthmap)
|
||||
{
|
||||
trace_depth_error_.precision(6);
|
||||
std::for_each(frame->fts_.begin(), frame->fts_.end(), [&](Feature* ftr){
|
||||
if(ftr->point != NULL)
|
||||
{
|
||||
double depth_estimated = (ftr->point->pos_-frame->pos()).norm();
|
||||
double depth_true = depthmap.at<float>((int) ftr->px[1], (int) ftr->px[0]);
|
||||
trace_depth_error_ << frame->id_ << " "
|
||||
<< depth_estimated-depth_true << std::endl;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
void BenchmarkNode::runBenchmark(const std::string& dataset_dir)
|
||||
{
|
||||
// create image reader and load dataset
|
||||
std::string filename_benchmark(dataset_dir + "/images.txt");
|
||||
vk::FileReader<FileType::DatasetImg> dataset_reader(filename_benchmark);
|
||||
dataset_reader.skipComments();
|
||||
if(!dataset_reader.next()) {
|
||||
SVO_ERROR_STREAM("Failed opening dataset: "<<filename_benchmark);
|
||||
return;
|
||||
}
|
||||
std::vector<FileType::DatasetImg> dataset;
|
||||
dataset_reader.readAllEntries(dataset);
|
||||
|
||||
// process dataset
|
||||
int first_frame = vk::getParam<int>("svo/dataset_first_frame", 0);
|
||||
for(auto it = dataset.begin(); it != dataset.end() && ros::ok(); ++it, ++frame_count_)
|
||||
{
|
||||
if(frame_count_ < first_frame)
|
||||
continue;
|
||||
std::string img_filename(dataset_dir + "/" + it->image_name_);
|
||||
cv::Mat img(cv::imread(img_filename, 0));
|
||||
if(img.empty()) {
|
||||
SVO_ERROR_STREAM("Reading image "<<img_filename<<" failed.");
|
||||
return;
|
||||
}
|
||||
vo_->addImage(img, it->timestamp_);
|
||||
visualizer_.publishMinimal(img, vo_->lastFrame(), *vo_, it->timestamp_);
|
||||
visualizer_.visualizeMarkers(vo_->lastFrame(), vo_->coreKeyframes(), vo_->map());
|
||||
if(vo_->stage() == svo::FrameHandlerMono::STAGE_DEFAULT_FRAME)
|
||||
tracePose(vo_->lastFrame()->T_f_w_.inverse(), it->timestamp_);
|
||||
}
|
||||
}
|
||||
|
||||
void BenchmarkNode::addNoiseToImage(cv::Mat& img, double sigma)
|
||||
{
|
||||
uint8_t* p = (uint8_t*) img.data;
|
||||
uint8_t* p_end = img.ptr<uint8_t>(img.rows, img.cols);
|
||||
while(p != p_end)
|
||||
{
|
||||
int val = *p + vk::Sample::gaussian(sigma) + 0.5;
|
||||
*p = std::max(std::min(val, 255), 0);
|
||||
++p;
|
||||
}
|
||||
}
|
||||
|
||||
void BenchmarkNode::runBlenderBenchmark(const std::string& dataset_dir)
|
||||
{
|
||||
// create image reader and load dataset
|
||||
std::string filename_benchmark(dataset_dir + "/trajectory.txt");
|
||||
vk::FileReader<vk::blender_utils::file_format::ImageNameAndPose> dataset_reader(filename_benchmark);
|
||||
dataset_reader.skipComments();
|
||||
if(!dataset_reader.next()) {
|
||||
SVO_ERROR_STREAM("Failed opening dataset: "<<filename_benchmark);
|
||||
return;
|
||||
}
|
||||
std::vector<vk::blender_utils::file_format::ImageNameAndPose> dataset;
|
||||
dataset_reader.readAllEntries(dataset);
|
||||
|
||||
// create tracefiles
|
||||
trace_trans_error_.open(Config::traceDir() + "/translation_error.txt");
|
||||
trace_rot_error_.open(Config::traceDir() + "/orientation_error.txt");
|
||||
trace_depth_error_.open(Config::traceDir() + "/depth_error.txt");
|
||||
if(trace_trans_error_.fail() || trace_rot_error_.fail() || trace_depth_error_.fail())
|
||||
throw std::runtime_error("Could not create tracefile. Does folder exist?");
|
||||
|
||||
// process dataset
|
||||
for(auto it = dataset.begin(); it != dataset.end() && ros::ok(); ++it, ++frame_count_)
|
||||
{
|
||||
// Read image, ground-truth depth-map and ground-truth pose
|
||||
std::string img_filename(dataset_dir + "/img/" + it->image_name_ + "_0.png");
|
||||
cv::Mat img(cv::imread(img_filename, 0));
|
||||
if(img.empty()) {
|
||||
SVO_ERROR_STREAM("Reading image "<<img_filename<<" failed.");
|
||||
return;
|
||||
}
|
||||
if(img_noise_sigma_ > 0)
|
||||
addNoiseToImage(img, img_noise_sigma_);
|
||||
cv::Mat depthmap;
|
||||
vk::blender_utils::loadBlenderDepthmap(
|
||||
dataset_dir+"/depth/"+it->image_name_+"_0.depth", *cam_, depthmap);
|
||||
Sophus::SE3 T_w_gt(it->q_, it->t_);
|
||||
|
||||
// Set reference frame with depth
|
||||
if(frame_count_ == 0)
|
||||
{
|
||||
// set reference frame at ground-truth pose
|
||||
FramePtr frame_ref(new Frame(cam_, img, it->timestamp_));
|
||||
frame_ref->T_f_w_ = T_w_gt.inverse();
|
||||
|
||||
// extract features, generate features with 3D points
|
||||
svo::feature_detection::FastDetector detector(
|
||||
cam_->width(), cam_->height(), svo::Config::gridSize(), svo::Config::nPyrLevels());
|
||||
detector.detect(frame_ref.get(), frame_ref->img_pyr_, svo::Config::triangMinCornerScore(), frame_ref->fts_);
|
||||
std::for_each(frame_ref->fts_.begin(), frame_ref->fts_.end(), [&](Feature* ftr) {
|
||||
Eigen::Vector3d pt_pos_cur = ftr->f*depthmap.at<float>(ftr->px[1], ftr->px[0]);
|
||||
Eigen::Vector3d pt_pos_world = frame_ref->T_f_w_.inverse()*pt_pos_cur;
|
||||
svo::Point* point = new svo::Point(pt_pos_world, ftr);
|
||||
ftr->point = point;
|
||||
});
|
||||
SVO_INFO_STREAM("Added "<<frame_ref->nObs()<<" 3d pts to the reference frame.");
|
||||
vo_->setFirstFrame(frame_ref);
|
||||
SVO_INFO_STREAM("Set reference frame.");
|
||||
}
|
||||
else
|
||||
{
|
||||
SVO_DEBUG_STREAM("Processing image "<<it->image_name_<<".");
|
||||
vo_->addImage(img, it->timestamp_);
|
||||
visualizer_.publishMinimal(img, vo_->lastFrame(), *vo_, it->timestamp_);
|
||||
visualizer_.visualizeMarkers(vo_->lastFrame(), vo_->coreKeyframes(), vo_->map());
|
||||
}
|
||||
|
||||
if(vo_->stage() != svo::FrameHandlerMono::STAGE_DEFAULT_FRAME)
|
||||
{
|
||||
SVO_ERROR_STREAM("SVO failed before entire dataset could be processed.");
|
||||
break;
|
||||
}
|
||||
|
||||
// Compute pose error and trace to file
|
||||
Sophus::SE3 T_f_gt(vo_->lastFrame()->T_f_w_*T_w_gt);
|
||||
tracePoseError(T_f_gt, it->timestamp_);
|
||||
tracePose(vo_->lastFrame()->T_f_w_.inverse(), it->timestamp_);
|
||||
traceDepthError(vo_->lastFrame(), depthmap);
|
||||
}
|
||||
}
|
||||
|
||||
} // namespace svo
|
||||
|
||||
int main(int argc, char** argv)
|
||||
{
|
||||
ros::init(argc, argv, "svo");
|
||||
ros::NodeHandle nh;
|
||||
svo::BenchmarkNode benchmark(nh);
|
||||
std::string benchmark_dir(vk::getParam<std::string>("svo/dataset_directory"));
|
||||
if(vk::getParam<bool>("svo/dataset_is_blender", false))
|
||||
benchmark.runBlenderBenchmark(benchmark_dir);
|
||||
else
|
||||
benchmark.runBenchmark(benchmark_dir);
|
||||
printf("BenchmarkNode finished.\n");
|
||||
return 0;
|
||||
}
|
||||
@@ -1,128 +0,0 @@
|
||||
// This file is part of SVO - Semi-direct Visual Odometry.
|
||||
//
|
||||
// Copyright (C) 2014 Christian Forster <forster at ifi dot uzh dot ch>
|
||||
// (Robotics and Perception Group, University of Zurich, Switzerland).
|
||||
//
|
||||
// SVO is free software: you can redistribute it and/or modify it under the
|
||||
// terms of the GNU General Public License as published by the Free Software
|
||||
// Foundation, either version 3 of the License, or any later version.
|
||||
//
|
||||
// SVO is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
||||
// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
#include <svo_ros/visualizer.h>
|
||||
#include <svo/frame_handler_mono.h>
|
||||
#include <svo/frame.h>
|
||||
#include <svo/point.h>
|
||||
#include <svo/map.h>
|
||||
#include <svo/feature.h>
|
||||
#include <svo_msgs/Info.h>
|
||||
#include <geometry_msgs/PoseWithCovarianceStamped.h>
|
||||
#include <vikit/timer.h>
|
||||
#include <vikit/output_helper.h>
|
||||
#include <deque>
|
||||
|
||||
namespace svo {
|
||||
|
||||
Visualizer::
|
||||
Visualizer() :
|
||||
pnh_("~"),
|
||||
trace_id_(0),
|
||||
T_world_from_vision_(Matrix3d::Identity(), Vector3d::Zero())
|
||||
{
|
||||
// Init ROS Marker Publishers
|
||||
pub_frames_ = pnh_.advertise<visualization_msgs::Marker>("keyframes", 10);
|
||||
pub_points_ = pnh_.advertise<visualization_msgs::Marker>("points", 1000);
|
||||
pub_pose_ = pnh_.advertise<geometry_msgs::PoseWithCovarianceStamped>("pose",10);
|
||||
pub_info_ = pnh_.advertise<svo_msgs::Info>("info", 10);
|
||||
}
|
||||
|
||||
void Visualizer::publishMinimal(
|
||||
const cv::Mat& img,
|
||||
const FramePtr& frame,
|
||||
const FrameHandlerMono& slam,
|
||||
const double timestamp)
|
||||
{
|
||||
++trace_id_;
|
||||
std_msgs::Header header_msg;
|
||||
header_msg.frame_id = "/cam";
|
||||
header_msg.seq = trace_id_;
|
||||
header_msg.stamp = ros::Time(timestamp);
|
||||
|
||||
// publish info msg.
|
||||
if(pub_info_.getNumSubscribers() > 0)
|
||||
{
|
||||
svo_msgs::Info msg_info;
|
||||
msg_info.header = header_msg;
|
||||
msg_info.processing_time = slam.lastProcessingTime();
|
||||
msg_info.keyframes.reserve(slam.map().keyframes_.size());
|
||||
for(list<FramePtr>::const_iterator it=slam.map().keyframes_.begin(); it!=slam.map().keyframes_.end(); ++it)
|
||||
msg_info.keyframes.push_back((*it)->id_);
|
||||
msg_info.stage = static_cast<int>(slam.stage());
|
||||
msg_info.tracking_quality = static_cast<int>(slam.trackingQuality());
|
||||
if(frame != NULL)
|
||||
msg_info.num_matches = slam.lastNumObservations();
|
||||
else
|
||||
msg_info.num_matches = 0;
|
||||
pub_info_.publish(msg_info);
|
||||
}
|
||||
if(pub_pose_.getNumSubscribers() > 0 && slam.stage() == FrameHandlerBase::STAGE_DEFAULT_FRAME)
|
||||
{
|
||||
Quaterniond q;
|
||||
Vector3d p;
|
||||
Matrix<double,6,6> Cov;
|
||||
// publish cam in world frame (Estimated odometry in the worls frame)
|
||||
SE3 T_world_from_cam(T_world_from_vision_*frame->T_f_w_.inverse());// do not confused with inverse. the T_f_w_ is the from camera to initial position with reference of camera
|
||||
q = Quaterniond(T_world_from_cam.rotation_matrix()*T_world_from_vision_.rotation_matrix().transpose());
|
||||
p = T_world_from_cam.translation();
|
||||
Cov = T_world_from_cam.Adj()*frame->Cov_*T_world_from_cam.inverse().Adj();
|
||||
geometry_msgs::PoseWithCovarianceStampedPtr msg_pose(new geometry_msgs::PoseWithCovarianceStamped);
|
||||
msg_pose->header = header_msg;
|
||||
msg_pose->pose.pose.position.x = p[0];
|
||||
msg_pose->pose.pose.position.y = p[1];
|
||||
msg_pose->pose.pose.position.z = p[2];
|
||||
msg_pose->pose.pose.orientation.x = q.x();
|
||||
msg_pose->pose.pose.orientation.y = q.y();
|
||||
msg_pose->pose.pose.orientation.z = q.z();
|
||||
msg_pose->pose.pose.orientation.w = q.w();
|
||||
for(size_t i=0; i<36; ++i)
|
||||
msg_pose->pose.covariance[i] = Cov(i%6, i/6);
|
||||
pub_pose_.publish(msg_pose);
|
||||
}
|
||||
}
|
||||
|
||||
void Visualizer::visualizeMarkers(
|
||||
const FramePtr& frame,
|
||||
const set<FramePtr>& core_kfs,
|
||||
const Map& map)
|
||||
{
|
||||
if(frame == NULL)
|
||||
return;
|
||||
|
||||
vk::output_helper::publishTfTransform(
|
||||
frame->T_f_w_*T_world_from_vision_.inverse(),
|
||||
ros::Time(frame->timestamp_), "cam_pos", "world", br_);
|
||||
|
||||
if(pub_frames_.getNumSubscribers() > 0 || pub_points_.getNumSubscribers() > 0)
|
||||
{
|
||||
vk::output_helper::publishPointMarker(
|
||||
pub_points_, T_world_from_vision_*frame->pos(), "trajectory",
|
||||
ros::Time::now(), trace_id_, 0, 0.006, Vector3d(0.,0.,0.5));
|
||||
removeDeletedPts(map);
|
||||
}
|
||||
}
|
||||
|
||||
void Visualizer::removeDeletedPts(const Map& map)
|
||||
{
|
||||
if(pub_points_.getNumSubscribers() > 0)
|
||||
{
|
||||
for(list<Point*>::const_iterator it=map.trash_points_.begin(); it!=map.trash_points_.end(); ++it)
|
||||
vk::output_helper::publishPointMarker(pub_points_, Vector3d(), "pts", ros::Time::now(), (*it)->id_, 2, 0.006, Vector3d());
|
||||
}
|
||||
}
|
||||
|
||||
} // end namespace svo
|
||||
@@ -1,128 +0,0 @@
|
||||
// This file is part of SVO - Semi-direct Visual Odometry.
|
||||
//
|
||||
// Copyright (C) 2014 Christian Forster <forster at ifi dot uzh dot ch>
|
||||
// (Robotics and Perception Group, University of Zurich, Switzerland).
|
||||
//
|
||||
// SVO is free software: you can redistribute it and/or modify it under the
|
||||
// terms of the GNU General Public License as published by the Free Software
|
||||
// Foundation, either version 3 of the License, or any later version.
|
||||
//
|
||||
// SVO is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
||||
// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#include <ros/package.h>
|
||||
#include <string>
|
||||
#include <svo/frame_handler_mono.h>
|
||||
#include <svo/map.h>
|
||||
#include <svo_ros/visualizer.h>
|
||||
#include <vikit/params_helper.h>
|
||||
#include <sensor_msgs/Image.h>
|
||||
#include <sensor_msgs/Imu.h>
|
||||
#include <std_msgs/String.h>
|
||||
#include <message_filters/synchronizer.h>
|
||||
#include <image_transport/image_transport.h>
|
||||
#include <boost/thread.hpp>
|
||||
#include <cv_bridge/cv_bridge.h>
|
||||
#include <Eigen/Core>
|
||||
#include <vikit/abstract_camera.h>
|
||||
#include <vikit/camera_loader.h>
|
||||
#include <vikit/user_input_thread.h>
|
||||
|
||||
|
||||
namespace svo {
|
||||
|
||||
/// SVO Interface
|
||||
class VoNode
|
||||
{
|
||||
public:
|
||||
svo::FrameHandlerMono* vo_;
|
||||
svo::Visualizer visualizer_;
|
||||
bool publish_markers_; //!< publish only the minimal amount of info (choice for embedded devices)
|
||||
vk::AbstractCamera* cam_;
|
||||
FILE* logtime;
|
||||
bool quit_;
|
||||
VoNode();
|
||||
~VoNode();
|
||||
void imgCb(const sensor_msgs::ImageConstPtr& msg);
|
||||
};
|
||||
|
||||
VoNode::VoNode() :
|
||||
vo_(NULL),
|
||||
publish_markers_(vk::getParam<bool>("svo/publish_markers", true)),
|
||||
cam_(NULL),
|
||||
quit_(false)
|
||||
{
|
||||
// Create Camera
|
||||
if(!vk::camera_loader::loadFromRosNs("svo", cam_))
|
||||
throw std::runtime_error("Camera model not correctly specified.");
|
||||
|
||||
// Get initial position and orientation
|
||||
visualizer_.T_world_from_vision_ = Sophus::SE3(
|
||||
vk::rpy2dcm(Vector3d(vk::getParam<double>("svo/init_rx", 0.0),
|
||||
vk::getParam<double>("svo/init_ry", 0.0),
|
||||
vk::getParam<double>("svo/init_rz", 0.0))),
|
||||
Eigen::Vector3d(vk::getParam<double>("svo/init_tx", 0.0),
|
||||
vk::getParam<double>("svo/init_ty", 0.0),
|
||||
vk::getParam<double>("svo/init_tz", 0.0)));
|
||||
|
||||
// Init VO and start
|
||||
vo_ = new svo::FrameHandlerMono(cam_);
|
||||
vo_->start();
|
||||
logtime = fopen((std::string(getenv("HOME"))+"/Project/time.txt").c_str(), "w+");
|
||||
|
||||
}
|
||||
|
||||
VoNode::~VoNode()
|
||||
{
|
||||
fclose(logtime);
|
||||
delete logtime;
|
||||
delete vo_;
|
||||
delete cam_;
|
||||
}
|
||||
|
||||
void VoNode::imgCb(const sensor_msgs::ImageConstPtr& msg)
|
||||
{
|
||||
auto start=std::chrono::steady_clock::now();
|
||||
try {
|
||||
cv::Mat img;
|
||||
img = cv_bridge::toCvShare(msg, "mono8")->image;
|
||||
vo_->addImage(img, msg->header.stamp.toSec());
|
||||
visualizer_.publishMinimal(img, vo_->lastFrame(), *vo_, msg->header.stamp.toSec());
|
||||
|
||||
|
||||
if(publish_markers_ && vo_->stage() != FrameHandlerBase::STAGE_PAUSED)
|
||||
visualizer_.visualizeMarkers(vo_->lastFrame(), vo_->coreKeyframes(), vo_->map());
|
||||
|
||||
if(vo_->stage() == FrameHandlerMono::STAGE_PAUSED)
|
||||
usleep(100000);
|
||||
fprintf(logtime, "%s\n",std::to_string(std::chrono::duration<double>(std::chrono::steady_clock::now()-start).count()).c_str());
|
||||
} catch (cv_bridge::Exception& e) {
|
||||
ROS_ERROR("cv_bridge exception: %s", e.what());
|
||||
}
|
||||
}
|
||||
} // namespace svo
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
ros::init(argc, argv, "svo");
|
||||
ros::NodeHandle nh;
|
||||
std::cout << "create vo_node" << std::endl;
|
||||
svo::VoNode vo_node;
|
||||
|
||||
// subscribe to cam msgs
|
||||
image_transport::ImageTransport it(nh);
|
||||
image_transport::Subscriber it_sub = it.subscribe(vk::getParam<std::string>("svo/cam_topic", "camera/image_raw"), 5, &svo::VoNode::imgCb, &vo_node);
|
||||
|
||||
// start processing callbacks
|
||||
while(ros::ok() && !vo_node.quit_)
|
||||
{
|
||||
ros::spinOnce();
|
||||
// TODO check when last image was processed. when too long ago. publish warning that no msgs are received!
|
||||
}
|
||||
|
||||
printf("SVO terminated.\n");
|
||||
return 0;
|
||||
}
|
||||
Reference in New Issue
Block a user