Stereo: added subpixel kpts processing, added test_stereo_odometry.launch

CoreWrapper: Fixed corrupted image when reextracting features

git-svn-id: http://rtabmap.googlecode.com/svn/trunk/ros-pkg@1847 f169173b-cf89-36c8-b27e-44dbe73f0c83
This commit is contained in:
matlabbe
2014-10-08 00:43:05 +00:00
parent 07f675b3b8
commit fcf92d90e5
9 changed files with 234 additions and 161 deletions
+31 -57
View File
@@ -27,7 +27,7 @@
<node pkg="nodelet" type="nodelet" name="disparity2depth" args="load rtabmap/disparity_to_depth standalone_nodelet"/>
</group>
<!-- Odometry: Choose between viso2_ros, fovis_ros and homemade packages -->
<!-- Odometry: Choose between viso2_ros, fovis_ros and homemade approach (default) -->
<!--
<node pkg="viso2_ros" type="stereo_odometer" name="stereo_odometer" output="screen">
<remap from="stereo" to="/stereo_camera"/>
@@ -37,6 +37,7 @@
<param name="ref_frame_change_method" value="1"/>
</node>
-->
<!--
<node pkg="fovis_ros" type="fovis_stereo_odometer" name="stereo_odometer" >
<remap from="/stereo/left/image" to="/stereo_camera/left/image_rect" />
<remap from="/stereo/right/image" to="/stereo_camera/right/image_rect" />
@@ -44,60 +45,26 @@
<remap from="/stereo/right/camera_info" to="/stereo_camera/right/camera_info" />
<remap from="odometry" to="stereo_odometer/odometry" />
</node>
<!--
<node pkg="rtabmap" type="visual_odometry" name="visual_odometry" output="screen">
<remap from="rgb/image" to="stereo_camera/left/image_rect_color"/>
<remap from="depth/image" to="stereo_camera/depth"/>
<remap from="rgb/camera_info" to="stereo_camera/left/camera_info"/>
<remap from="odom" to="/stereo_odometer/odometry"/>
<param name="frame_id" type="string" value="/base_link"/>
<param name="Odom/Type" type="string" value="6"/>
-->
<node pkg="rtabmap" type="stereo_odometry" name="stereo_odometer" output="screen">
<remap from="left/image_rect" to="/stereo_camera/left/image_rect_color"/>
<remap from="right/image_rect" to="/stereo_camera/right/image_rect_color"/>
<remap from="left/camera_info" to="/stereo_camera/left/camera_info"/>
<remap from="right/camera_info" to="/stereo_camera/right/camera_info"/>
<remap from="odom" to="/stereo_odometer/odometry"/>
<param name="frame_id" type="string" value="base_link"/>
<param name="Odom/Type" type="string" value="6"/>
<param name="Odom/NearestNeighbor" type="string" value="3"/>
<param name="Odom/MinInliers" type="string" value="10"/>
<param name="Odom/LocalHistory" type="string" value="500"/>
<param name="Odom/MaxDepth" type="string" value="3"/>
<param name="Odom/NNDR" type="string" value="0.8"/>
<param name="Odom/WordsRatio" type="string" value="0.5"/>
<param name="Odom/LocalHistory" type="string" value="1000"/>
<param name="Odom/InlierDistance" type="string" value="0.01"/>
<param name="GFTT/MaxCorners" type="string" value="400"/>
<param name="Odom/NNDR" type="string" value="0.6"/>
<param name="GFTT/MaxCorners" type="string" value="1000"/>
<param name="BRIEF/Bytes" type="string" value="16"/>
</node>
-->
<!--
<node pkg="rtabmap" type="stereo_odometry" name="stereo_odometry" output="screen">
<remap from="left/image_rect" to="stereo_camera/left/image_rect_color"/>
<remap from="right/image_rect" to="stereo_camera/right/image_rect_color"/>
<remap from="left/camera_info" to="stereo_camera/left/camera_info"/>
<remap from="right/camera_info" to="stereo_camera/right/camera_info"/>
<remap from="odom" to="/stereo_odometer/odometry"/>
<param name="frame_id" type="string" value="/base_link"/>
<param name="min_disparity" type="int" value="0"/>
<param name="max_disparity" type="int" value="128"/>
<param name="k" type="int" value="10"/>
<param name="Odom/Type" type="string" value="6"/>
<param name="Odom/NearestNeighbor" type="string" value="3"/>
<param name="Odom/MinInliers" type="string" value="10"/>
<param name="Odom/Iterations" type="string" value="200"/>
<param name="Odom/MaxDepth" type="string" value="4"/>
<param name="Odom/NNDR" type="string" value="0.8"/>
<param name="Odom/WordsRatio" type="string" value="0.5"/>
<param name="Odom/LocalHistory" type="string" value="200"/>
<param name="Odom/InlierDistance" type="string" value="0.01"/>
<param name="GFTT/MaxCorners" type="string" value="800"/>
<param name="BRIEF/Bytes" type="string" value="16"/>
<param name="BRISK/Octaves" type="string" value="0"/>
<param name="BRISK/Thresh" type="string" value="10"/>
</node>
-->
<group ns="rtabmap">
</node>
<group ns="rtabmap">
<!-- Visual SLAM (robot side) -->
<!-- args: "delete_db_on_start" and "udebug" -->
<node name="rtabmap" pkg="rtabmap" type="rtabmap" output="screen" args="--delete_db_on_start">
@@ -117,11 +84,18 @@
<param name="Rtabmap/TimeThr" type="string" value="700"/>
<param name="Rtabmap/DetectionRate" type="string" value="1"/>
<param name="SURF/HessianThreshold" type="string" value="600"/>
<param name="LccBow/MaxDepth" type="string" value="0"/>
<param name="RGBD/LocalLoopDetectionSpace" type="string" value="false"/>
<param name="RGBD/LocalLoopDetectionTime" type="string" value="false"/>
<param name="LccBow/MinInliers" type="string" value="10"/>
<param name="LccBow/InlierDistance" type="string" value="0.05"/>
<param name="LccBow/InlierDistance" type="string" value="0.02"/>
<param name="LccBow/MaxDepth" type="string" value="3"/>
<param name="LccReextract/FeatureType" type="string" value="4"/>
<param name="LccReextract/LoopClosureFeatures" type="string" value="true"/>
<param name="LccReextract/MaxDepth" type="string" value="3"/>
<param name="LccReextract/NNDR" type="string" value="0.8"/>
<param name="LccReextract/NNType" type="string" value="3"/>
</node>
<!-- Visualisation (client side) -->
@@ -138,9 +112,9 @@
</node>
</group>
<!-- RVIZ -->
<!--
<node pkg="rviz" type="rviz" name="rviz" args="-d $(find rtabmap)/launch/config/rgbd.rviz"/>
<!-- sync cloud with odometry and voxelize the point cloud (for fast visualization in rviz) -->
<node pkg="nodelet" type="nodelet" name="standalone_nodelet" args="manager" output="screen"/>
<node pkg="nodelet" type="nodelet" name="data_odom_sync" args="load rtabmap/data_odom_sync standalone_nodelet">
<remap from="rgb/image_in" to="camera/rgb/image_rect_color"/>
@@ -164,5 +138,5 @@
<param name="queue_size" type="int" value="10"/>
<param name="voxel_size" type="double" value="0.01"/>
</node>
-->
</launch>
+15
View File
@@ -3,6 +3,17 @@
<!-- RGB-D LOCALIZATION VERSION -->
<!-- ODOMETRY ARGUMENTS: "type", "nn" and "local_map":
-Feature type: 0=SURF 1=SIFT 2=ORB 3=FAST/FREAK 4=FAST/BRIEF 5=GFTT/FREAK 6=GFTT/BRIEF 7=BRISK
-Nearest neighbor strategy : 0=Linear, 1=FLANN_KDTREE, 2=FLANN_LSH, 3=BRUTEFORCE
Set to 1 for float descriptor like SIFT/SURF
Set to 3 for binary descriptor like ORB/FREAK/BRIEF/BRISK
-Local map size: number of unique features to keep track
-->
<arg name="type" default="0" />
<arg name="nn" default="1" />
<arg name="local_map" default="0" />
<!-- TF FRAMES -->
<node pkg="tf" type="static_transform_publisher" name="base_to_camera_tf"
args="0.0 0.0 0.0 0.0 0.0 0.0 /base_link /camera_link 100" />
@@ -16,6 +27,10 @@
<remap from="rgb/camera_info" to="/camera/depth_registered/camera_info"/>
<param name="frame_id" type="string" value="base_link"/>
<param name="Odom/Type" type="string" value="$(arg type)"/>
<param name="Odom/NearestNeighbor" type="string" value="$(arg nn)"/>
<param name="Odom/LocalHistory" type="string" value="$(arg local_map)"/>
</node>
<!-- Visual SLAM (robot side) -->
+19 -3
View File
@@ -5,6 +5,17 @@
<!-- WARNING : Database is automatically deleted on each startup -->
<!-- See "delete_db_on_start" option below... -->
<!-- ODOMETRY ARGUMENTS: "type", "nn" and "local_map":
-Feature type: 0=SURF 1=SIFT 2=ORB 3=FAST/FREAK 4=FAST/BRIEF 5=GFTT/FREAK 6=GFTT/BRIEF 7=BRISK
-Nearest neighbor strategy : 0=Linear, 1=FLANN_KDTREE, 2=FLANN_LSH, 3=BRUTEFORCE
Set to 1 for float descriptor like SIFT/SURF
Set to 3 for binary descriptor like ORB/FREAK/BRIEF/BRISK
-Local map size: number of unique features to keep track
-->
<arg name="type" default="6" />
<arg name="nn" default="3" />
<arg name="local_map" default="2000" />
<!-- TF FRAMES -->
<node pkg="tf" type="static_transform_publisher" name="base_to_camera_tf"
args="0.0 0.0 0.0 0.0 0.0 0.0 /base_link /camera_link 100" />
@@ -16,9 +27,10 @@
<remap from="rgb/image" to="/camera/rgb/image_rect_color"/>
<remap from="depth/image" to="/camera/depth_registered/image_raw"/>
<remap from="rgb/camera_info" to="/camera/depth_registered/camera_info"/>
<param name="Odom/MinInliers" type="string" value="10"/>
<param name="Odom/InlierDistance" type="string" value="0.01"/>
<param name="Odom/Type" type="string" value="$(arg type)"/>
<param name="Odom/NearestNeighbor" type="string" value="$(arg nn)"/>
<param name="Odom/LocalHistory" type="string" value="$(arg local_map)"/>
<param name="frame_id" type="string" value="base_link"/>
</node>
@@ -33,6 +45,10 @@
<remap from="depth/image" to="/camera/depth_registered/image_raw"/>
<remap from="rgb/camera_info" to="/camera/depth_registered/camera_info"/>
<remap from="odom" to="odom"/>
<param name="RGBD/LocalLoopDetectionTime" type="string" value="false"/>
<param name="LccBow/MinInliers" type="string" value="10"/>
<param name="LccBow/InlierDistance" type="string" value="0.02"/>
<param name="queue_size" type="int" value="30"/>
</node>
+21 -4
View File
@@ -4,6 +4,18 @@
<!-- RGB-D MAPPING VERSION -->
<!-- WARNING : Database is automatically deleted on each startup -->
<!-- See "delete_db_on_start" option below... -->
<!-- ODOMETRY ARGUMENTS: "type", "nn" and "local_map":
-Feature type: 0=SURF 1=SIFT 2=ORB 3=FAST/FREAK 4=FAST/BRIEF 5=GFTT/FREAK 6=GFTT/BRIEF 7=BRISK
-Nearest neighbor strategy : 0=Linear, 1=FLANN_KDTREE, 2=FLANN_LSH, 3=BRUTEFORCE
Set to 1 for float descriptor like SIFT/SURF
Set to 3 for binary descriptor like ORB/FREAK/BRIEF/BRISK
-Local map size: number of unique features to keep track
-->
<arg name="type" default="6" />
<arg name="nn" default="3" />
<arg name="local_map" default="2000" />
<!-- TF FRAMES -->
<node pkg="tf" type="static_transform_publisher" name="base_to_camera_tf"
@@ -16,9 +28,10 @@
<remap from="rgb/image" to="/camera/rgb/image_rect_color"/>
<remap from="depth/image" to="/camera/depth_registered/image_raw"/>
<remap from="rgb/camera_info" to="/camera/depth_registered/camera_info"/>
<param name="Odom/MinInliers" type="string" value="10"/>
<param name="Odom/InlierDistance" type="string" value="0.01"/>
<param name="Odom/Type" type="string" value="$(arg type)"/>
<param name="Odom/NearestNeighbor" type="string" value="$(arg nn)"/>
<param name="Odom/LocalHistory" type="string" value="$(arg local_map)"/>
<param name="frame_id" type="string" value="base_link"/>
</node>
@@ -33,7 +46,11 @@
<remap from="depth/image" to="/camera/depth_registered/image_raw"/>
<remap from="rgb/camera_info" to="/camera/depth_registered/camera_info"/>
<remap from="odom" to="odom"/>
<param name="RGBD/LocalLoopDetectionTime" type="string" value="false"/>
<param name="LccBow/MinInliers" type="string" value="10"/>
<param name="LccBow/InlierDistance" type="string" value="0.02"/>
<param name="queue_size" type="int" value="30"/>
</node>
+10 -12
View File
@@ -1,18 +1,16 @@
<launch>
<!-- Arguments: "type", "nn" and "local_map" -->
<!-- Feature type: 0=SURF 1=SIFT 2=ORB 3=FAST/FREAK 4=FAST/BRIEF 5=GFTT/FREAK 6=GFTT/BRIEF -->
<arg name="type" default="0" />
<!-- Nearest neighbor strategy : 0=Linear, 1=FLANN_KDTREE, 2=FLANN_LSH -->
<!-- Should be 1 for float descriptor like SIFT/SURF -->
<!-- Should be 2 for binary descriptor like ORB/FREAK/BRIEF -->
<arg name="nn" default="1" />
<!-- local map size: number of unique features to keep track -->
<arg name="local_map" default="0" />
<!-- ODOMETRY ARGUMENTS: "type", "nn" and "local_map":
-Feature type: 0=SURF 1=SIFT 2=ORB 3=FAST/FREAK 4=FAST/BRIEF 5=GFTT/FREAK 6=GFTT/BRIEF 7=BRISK
-Nearest neighbor strategy : 0=Linear, 1=FLANN_KDTREE, 2=FLANN_LSH, 3=BRUTEFORCE
Set to 1 for float descriptor like SIFT/SURF
Set to 3 for binary descriptor like ORB/FREAK/BRIEF/BRISK
-Local map size: number of unique features to keep track
-->
<arg name="type" default="6" />
<arg name="nn" default="3" />
<arg name="local_map" default="2000" />
<!-- TF FRAMES -->
<node pkg="tf" type="static_transform_publisher" name="base_to_camera_tf"
+67
View File
@@ -0,0 +1,67 @@
<launch>
<!-- ODOMETRY ARGUMENTS: "type", "nn" and "local_map":
-Feature type: 0=SURF 1=SIFT 2=ORB 3=FAST/FREAK 4=FAST/BRIEF 5=GFTT/FREAK 6=GFTT/BRIEF 7=BRISK
-Nearest neighbor strategy : 0=Linear, 1=FLANN_KDTREE, 2=FLANN_LSH, 3=BRUTEFORCE
Set to 1 for float descriptor like SIFT/SURF
Set to 3 for binary descriptor like ORB/FREAK/BRIEF/BRISK
-Local map size: number of unique features to keep track
-->
<arg name="type" default="6" />
<arg name="nn" default="3" />
<arg name="local_map" default="5000" />
<node pkg="camera1394stereo" type="camera1394stereo_node" name="camera1394stereo_node" output="screen" >
<param name="video_mode" value="format7_mode3" />
<param name="format7_color_coding" value="raw16" />
<param name="bayer_pattern" value="bggr" />
<param name="bayer_method" value="" />
<param name="stereo_method" value="Interlaced" />
<param name="camera_info_url_left" value="" />
<param name="camera_info_url_right" value="" />
</node>
<arg name="pi/2" value="1.5707963267948966" />
<arg name="optical_rotate" value="0 0 0 -$(arg pi/2) 0 -$(arg pi/2)" />
<node pkg="tf" type="static_transform_publisher" name="camera_base_link"
args="$(arg optical_rotate) base_link stereo_camera 100" />
<!-- Run the ROS package stereo_image_proc -->
<group ns="/stereo_camera" >
<node pkg="stereo_image_proc" type="stereo_image_proc" name="stereo_image_proc"/>
<!-- Odometry -->
<node pkg="rtabmap" type="stereo_odometry" name="stereo_odometry" output="screen">
<remap from="left/image_rect" to="left/image_rect_color"/>
<remap from="right/image_rect" to="right/image_rect_color"/>
<remap from="left/camera_info" to="left/camera_info"/>
<remap from="right/camera_info" to="right/camera_info"/>
<remap from="odom" to="odom_stereo"/>
<remap from="odom_local_map" to="/odom_local_map"/>
<remap from="odom_last_frame" to="/odom_last_frame"/>
<param name="frame_id" type="string" value="base_link"/>
<param name="odom_frame_id" type="string" value="odom"/>
<param name="min_disparity" type="int" value="0"/>
<param name="max_disparity" type="int" value="256"/>
<param name="k" type="int" value="10"/>
<param name="window_size" type="int" value="5"/>
<param name="Odom/Type" type="string" value="$(arg type)"/>
<param name="Odom/NearestNeighbor" type="string" value="$(arg nn)"/>
<param name="Odom/LocalHistory" type="string" value="$(arg local_map)"/>
<param name="Odom/MaxDepth" type="string" value="3"/>
<param name="Odom/NNDR" type="string" value="0.6"/>
<param name="GFTT/MaxCorners" type="string" value="1000"/>
<param name="BRIEF/Bytes" type="string" value="16"/>
</node>
</group>
<node pkg="rviz" type="rviz" name="rviz" args="-d $(find rtabmap)/launch/config/test_odometry.rviz"/>
</launch>