play rgbd dataset freiburg2

classic Classic list List threaded Threaded
11 messages Options
Reply | Threaded
Open this post in threaded view
|

play rgbd dataset freiburg2

tobi
hey guys,
im trying to run the rgbd dataset freiburg2 (both with loop and without), but the output is
odometry:Could not get transform from camera_link to /openni_rgb_optical_frame [...]

this is my launch file:
<launch>


    <include file="$(find rtabmap_ros)/launch/rtabmap.launch">
        <arg name="frame_id"   		    value="camera_link" />
        <arg name="rgb_topic"               default="/camera/rgb/image_color" />
        <arg name="depth_topic"             default="/camera/depth/image" />
        <arg name="camera_info_topic"       default="/camera/rgb/camera_info" />
        <arg name="visual_odometry"         default="true"/>          <!-- Launch rtabmap visual odometry node -->
        <arg name="odom_topic"              default="/odom"/>         <!-- Odometry topic used if visual_odometry is false -->
        <arg name="odom_args"               default="--delete_db_on_start"/>
        <arg name="subscribe_scan"          default="false"/>
	<arg name="cfg"                     default="$(find rtabmap_ros)/launch/config/config.ini" />
    </include>

    <node name="rtabmap_relay" type="relay" pkg="topic_tools" args="/rtabmap/proj_map /map" />
	
   <node pkg="nodelet" type="nodelet" name="pcl_manager" args="manager" output="screen" />

  <!-- Run a VoxelGrid filter to clean NaNs and downsample the data -->
  <node pkg="nodelet" type="nodelet" name="voxel_grid" args="load pcl/VoxelGrid pcl_manager" output="screen">
    <remap from="~input" to="/xtion/depth/points" />
    <rosparam>
      filter_field_name: z
      filter_limit_min: -10
      filter_limit_max: 10
      filter_limit_negative: False
      leaf_size: 0.05
    </rosparam>
  </node>

    <node pkg="nodelet" type="nodelet" name="obstacles_detection" args="load rtabmap_ros/obstacles_detection pcl_manager" output="screen">
      <remap from="cloud"     to="/voxel_grid/output"/>
      <remap from="obstacles" to="/obstacles_cloud"/>
      <remap from="ground"    to="/ground_cloud"/>

      <param name="frame_id"             type="string" value="base_link"/>		
      <param name="map_frame_id"         type="string" value="map"/>
      <param name="wait_for_transform"   type="bool" value="true"/>
      <param name="min_cluster_size"     type="int" value="20"/>
      <param name="max_obstacles_height" type="double" value="0.4"/>
  </node>  

</launch>

I'm launching it with this param:
roslaunch rtabmap_ros launch.launch
with use_sim_time enabled.
And I'm playing the bag with:
rosbag play --clock ros.bag

greets
Tobias
Reply | Threaded
Open this post in threaded view
|

Re: play rgbd dataset freiburg2

matlabbe
Administrator
Hi,

with rgbd datasets, I don't think the frame on the kinect is called /camera_link, but /kinect. Launch the rosbag alone and call "$ rosrun tf view_frames" to see the frames in the bag.

You can also look at the launch file rgbdslam_datasets.launch. There is an hack to avoid removing /world -> /kinect TF from the bag, because you cannot have /odom -> /kinect and /world->/kinect at the same time (two parents for the same frame). If you want to remove /world frame from the bag, take a look at this script: filterBagTF.py.

cheers
Reply | Threaded
Open this post in threaded view
|

Re: play rgbd dataset freiburg2

tobi
Hey,

playing back the dataset with the rgbdslam_dataset.launch is working, but the problem is, when I export the data (export poses => RGBD-SLAM format) and try to evaluate it with the online tool (http://vision.in.tum.de/data/datasets/rgbd-dataset/online_evaluation), it haves very bad values.
compared_pose_pairs 72 pairs
absolute_translational_error.rmse 428337.945816 m
absolute_translational_error.mean 398677.004400 m
absolute_translational_error.median 425686.234756 m
absolute_translational_error.std 156620.694636 m
absolute_translational_error.min 83678.944986 m
absolute_translational_error.max 699703.705033 m

Sometimes while running rtabmap_ros i got this errors:
 TF of received depth image 0 at time 1311878199.398346s is not set, aborting rtabmap update.

and this kind of warnings:
tabmapviz: Could not get transform from kinect to /openni_rgb_optical_frame after 0,200000 seconds (for stamp=1311878199,998073)

odometry: Could not get transform from kinect to /openni_rgb_optical_frame


Running the filterBagTF.py makes it only worse :/

greets Tobias
Reply | Threaded
Open this post in threaded view
|

Re: play rgbd dataset freiburg2

matlabbe
Administrator
Hi,

Make sure you are comparing the same datasets with the evaluation tool. Is the 3D map looks okay visually? The error should be under 10 cm.

This could be a problem with the exportation format too. Which dataset are you testing?

Make sure you decompressed the rosbag before playing it:
$ rosbag decompress rgbd_dataset_freiburg2_XXXXXX.bag

cheers
Reply | Threaded
Open this post in threaded view
|

Re: play rgbd dataset freiburg2

tobi
matlabbe wrote
Hi,

Make sure you are comparing the same datasets with the evaluation tool. Is the 3D map looks okay visually? The error should be under 10 cm.
in rtabmapviz it looks good, but rviz just visualize crap :/


matlabbe wrote
This could be a problem with the exportation format too. Which dataset are you testing?
I test different datasets. The screenshot is from the dataset freiburg1/360, but I tested some freiburg2 datasets and there was the problem too.
matlabbe wrote
Make sure you decompressed the rosbag before playing it:
$ rosbag decompress rgbd_dataset_freiburg2_XXXXXX.bag
yes its decompressed.

greets tobi
Reply | Threaded
Open this post in threaded view
|

Re: play rgbd dataset freiburg2

matlabbe
Administrator
This post was updated on .
The freiburg1/360 dataset is one of the most challenging, the camera moves very fast. With the rosbag, it is difficult to have a good synchronization between RGB and depth images. If you want to do more exhaustive tests, I recommend to use pre-synchronized images (from the tgz archives) with the standalone (see How to process RGBD-SLAM datasets with RTAB-Map?).

I ran the same rosbag multiple times, and each time the results are quite different because of the synchronization and which images are processed. Here is an example of bad synchronization between two consecutive frames used for odometry:

Note how the second one has a very bad rgb/depth synchronization, this can make odometry shifts about 10/20 cm.

However, I can have a map correctly displayed in rtabmapviz and rviz:
$ rosbag decompress rgbd_dataset_freiburg1_360.bag
$ roslaunch rtabmap_ros rgbdslam_datasets.launch rtabmapviz:=true
$ rosbag play --clock rgbd_dataset_freiburg1_360.bag


The poses exported from rtabmapviz (File->Export poses... -> RGBD-SLAM format):
1305031790.645155 -0.343754 -0.364465 1.520876 -0.152806 0.746242 -0.435483 -0.479716
1305031791.681062 -0.489066 -0.429993 1.731693 0.277468 0.715050 -0.444804 -0.462454
1305031792.781106 -0.547994 -0.338703 1.746497 0.366295 0.687000 -0.395597 -0.487197
1305031793.813185 -0.624488 -0.515565 1.436496 -0.227049 -0.777891 -0.001652 0.585945
1305031794.813463 -0.689133 -0.486064 1.590621 -0.469149 -0.615728 0.061101 0.630116
1305031795.913138 -0.664798 -0.258711 1.744098 -0.726552 -0.273406 0.034423 0.629433
1305031797.013555 -0.780664 -0.314836 1.412518 0.614433 0.522508 0.365098 -0.464931
1305031798.081417 -0.791858 -0.166777 1.494092 0.708265 0.326164 0.381841 -0.496160
1305031799.116275 -0.672839 -0.324445 1.689322 -0.738972 0.179924 -0.305905 0.572686
1305031800.117205 -0.579520 -0.211797 1.529653 0.774450 0.008478 0.499419 -0.388248
1305031801.118492 -0.642472 -0.084841 1.395963 0.754323 -0.032479 0.621447 -0.209155
1305031802.184646 -0.548433 -0.195836 1.755300 0.602313 -0.439215 0.485341 -0.456897
1305031803.289513 -0.486772 -0.116576 1.440019 0.635023 -0.355196 0.684253 -0.048779
1305031804.322186 -0.398425 -0.144230 1.257772 0.701626 -0.230764 0.634481 0.227820
1305031805.349450 -0.508673 -0.065775 1.654372 0.363012 -0.592048 0.715658 -0.074401
1305031806.428086 -0.381247 -0.229966 1.471137 0.418412 -0.576510 0.677969 0.181455
1305031807.525569 -0.312786 -0.285302 1.338971 -0.338869 0.628510 -0.572237 -0.403346
1305031808.624717 -0.545290 -0.132775 1.621892 0.124374 0.706355 -0.691035 -0.089803
1305031809.631035 -0.507893 -0.255180 1.606622 0.066572 0.743997 -0.531508 -0.399420
1305031810.729616 -0.541461 -0.325086 1.431674 0.072475 -0.745308 0.283653 0.599002
1305031811.733435 -0.614307 -0.160498 1.697273 -0.403533 -0.634539 0.401909 0.522485
1305031812.734013 -0.634263 0.063414 1.966631 -0.542523 -0.541832 0.363119 0.529369
1305031813.833945 -0.782118 -0.067796 1.582316 -0.254703 -0.740278 -0.007043 0.622145
1305031814.934189 -0.758911 0.041827 1.724696 -0.552167 -0.525063 -0.098601 0.640077

Then with the online evaluation tool:
compared_pose_pairs 24 pairs
absolute_translational_error.rmse 0.128259 m
absolute_translational_error.mean 0.112524 m
absolute_translational_error.median 0.097172 m
absolute_translational_error.std 0.061553 m
absolute_translational_error.min 0.032262 m
absolute_translational_error.max 0.311338 m

Note that if you want more pairs to compare, you can activate "Rtabmap/CreateIntermediateNodes" (Preferences (advanced)->RTAB-Map settings->"Create intermediate nodes...") before processing and call "Edit->Download Graph-only" in rtabmapviz before exporting the poses. You can set the parameter in the launch file as well:
<node name="rtabmap" pkg="rtabmap_ros" type="rtabmap" output="screen" args="--delete_db_on_start">
      [...]
      <param name="Rtabmap/CreateIntermediateNodes" type="string" value="true"/>
</node>

Resulting poses.txt and evaluation:
compared_pose_pairs 213 pairs
absolute_translational_error.rmse 0.126808 m
absolute_translational_error.mean 0.112584 m
absolute_translational_error.median 0.102012 m
absolute_translational_error.std 0.058354 m
absolute_translational_error.min 0.013106 m
absolute_translational_error.max 0.263355 m


cheers,
Mathieu
Reply | Threaded
Open this post in threaded view
|

Re: play rgbd dataset freiburg2

tobi
This post was updated on .
matlabbe wrote
The freiburg1/360 dataset is one of the most challenging, the camera moves very fast. With the rosbag, it is difficult to have a good synchronization between RGB and depth images. If you want to do more exhaustive tests, I recommend to use pre-synchronized images (from the tgz archives) with the standalone (see How to process RGBD-SLAM datasets with RTAB-Map?).
thanks. I tested it, but still the same error :/


Now the visualization in rviz looks okay, but if I want to test it with the online benchmark the result is still very bad.
compared_pose_pairs 20 pairs
absolute_translational_error.rmse 302476.900904 m
absolute_translational_error.mean 275122.521301 m
absolute_translational_error.median 240601.753608 m
absolute_translational_error.std 125697.549113 m
absolute_translational_error.min 136725.546756 m
absolute_translational_error.max 539335.074042 m
with this.poses.xml:
1305031790,640468 -0,412797 -0,602280 1,521039 0,243428 -0,693553 0,442304 0,513901
1305031791,677621 -0,523372 -0,512569 1,673850 0,239670 0,678641 -0,482061 -0,499622
1305031792,677662 -0,520415 -0,328600 1,797385 -0,362610 -0,638198 0,447750 0,510624
1305031793,677435 -0,651312 -0,499135 1,504836 -0,234307 -0,726256 0,076476 0,641719
1305031794,776816 -0,698768 -0,507391 1,614438 -0,441412 -0,592918 0,089916 0,667472
1305031795,781187 -0,582204 -0,274142 1,766570 -0,723450 -0,197357 0,140016 0,646581
1305031796,877643 -0,801406 -0,340654 1,447000 -0,664301 -0,451439 -0,281122 0,525241
1305031797,981971 -0,797451 -0,213649 1,446352 -0,717800 -0,343501 -0,333899 0,505255
1305031799,016423 -0,650931 -0,316169 1,695823 -0,775911 0,199702 -0,244677 0,546090
1305031800,085033 -0,555946 -0,202153 1,545614 0,811850 -0,030274 0,433086 -0,390409
1305031801,085709 -0,633980 -0,036753 1,400057 0,805592 -0,013321 0,561191 -0,189493
1305031802,219780 -0,527873 -0,134743 1,750655 0,635314 -0,477948 0,449380 -0,407431
1305031803,317616 -0,499800 -0,010848 1,468707 0,683243 -0,340023 0,646011 0,015269
1305031804,388583 -0,427831 -0,039057 1,296027 0,731536 -0,220946 0,591935 0,256224
1305031805,426082 -0,515662 0,083551 1,720226 0,375520 -0,594135 0,711096 -0,018213
1305031806,428086 -0,438794 -0,043483 1,636025 0,439813 -0,543120 0,661166 0,272846
1305031811,698740 -0,634946 -0,243488 1,722393 -0,348482 -0,617905 0,410412 0,572988
1305031812,698746 -0,540168 -0,068528 1,829159 -0,532964 -0,495606 0,410345 0,549492
1305031813,799441 -0,745697 -0,158945 1,427679 -0,283872 -0,693969 0,033625 0,660827
1305031814,801939 -0,740433 -0,062214 1,507082 -0,551537 -0,519021 -0,062080 0,650053

and i will upload the rtabmap.db : http://www.file-upload.net/download-11883366/rtabmap.db.html

greets
tobi
Reply | Threaded
Open this post in threaded view
|

Re: play rgbd dataset freiburg2

matlabbe
Administrator
Hi,

What is the language on your machine? The poses are exported with "commas" instead of "dots". Replace "commas" by "dots" and you have:
1305031790.640468 -0.412909 -0.602373 1.521413 0.243055 -0.692999 0.442828 0.514373
1305031791.677621 -0.523375 -0.512368 1.674131 0.240016 0.678025 -0.482727 -0.499649
1305031792.677662 -0.520315 -0.328174 1.797327 -0.362974 -0.637602 0.448418 0.510523
1305031793.677435 -0.651511 -0.499550 1.504319 -0.234935 -0.725963 0.077215 0.641733
1305031794.776816 -0.698897 -0.507591 1.613967 -0.442052 -0.592593 0.090592 0.667245
1305031795.781187 -0.582211 -0.274063 1.765576 -0.724033 -0.196977 0.140406 0.645958
1305031796.877643 -0.801626 -0.341164 1.446277 -0.664917 -0.451504 -0.280502 0.524736
1305031797.981971 -0.797659 -0.214161 1.445382 -0.718409 -0.343620 -0.333364 0.504661
1305031799.016423 -0.650987 -0.316219 1.694954 -0.776502 0.199684 -0.244646 0.545269
1305031800.085033 -0.556088 -0.202501 1.544466 0.812362 -0.030027 0.432873 -0.389599
1305031801.085709 -0.634199 -0.037371 1.398643 0.805954 -0.012886 0.560954 -0.188688
1305031802.219780 -0.527876 -0.134700 1.749360 0.635824 -0.477682 0.449653 -0.406645
1305031803.317616 -0.499972 -0.011349 1.467156 0.683420 -0.339434 0.646115 0.016066
1305031804.388583 -0.428118 -0.039896 1.294485 0.731470 -0.220334 0.591897 0.257026
1305031805.426082 -0.515662 0.083534 1.718504 0.375737 -0.593478 0.711544 -0.017625
1305031806.428086 -0.438861 -0.043669 1.634497 0.439737 -0.542421 0.661530 0.273477
1305031811.698740 -0.634030 -0.242022 1.729032 -0.348477 -0.617809 0.410483 0.573045
1305031812.698746 -0.539380 -0.066773 1.835493 -0.533040 -0.495335 0.410433 0.549596
1305031813.799441 -0.745720 -0.158841 1.428336 -0.284399 -0.693723 0.034137 0.660833
1305031814.801939 -0.740390 -0.061998 1.507599 -0.552067 -0.518820 -0.061613 0.649809

compared_pose_pairs 20 pairs
absolute_translational_error.rmse 0.118638 m
absolute_translational_error.mean 0.112165 m
absolute_translational_error.median 0.114454 m
absolute_translational_error.std 0.038652 m
absolute_translational_error.min 0.021304 m
absolute_translational_error.max 0.177531 m

Not sure if your problems with RVIZ were still related, some number conversions may fail. You may try to change locale before starting the nodes:
$ export LANG="en_US.UTF-8"

I opened an issue to see if there is something that can be done on rtabmap side.

cheers
Reply | Threaded
Open this post in threaded view
|

Re: play rgbd dataset freiburg2

tobi
thanks this was the problem.

greets
tobi
Reply | Threaded
Open this post in threaded view
|

Re: play rgbd dataset freiburg2

dhagash
In reply to this post by matlabbe

I am one time using kinect as frame_id and another time base_link but both are getting tf errors what to do? I am not following your script part as I have /world-->/kinect and /odom-->/base_link as two different frames and I am using subscribe_scan as true.
Reply | Threaded
Open this post in threaded view
|

Re: play rgbd dataset freiburg2

matlabbe
Administrator
/world->/kinect is the groundtruth, and it is okay that it is in a different tf free. The other tf tree would be /map->/odom->/base_link. What are your tf errors?