FATAL Odometry error when converting bag file using data_recorder

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

FATAL Odometry error when converting bag file using data_recorder

Pi Robot
Hello,

I'm using the Debian packages for RTAB-Map under ROS Indigo and Ubuntu 14.04.  I recorded a bag file from my TurtleBot 2 (Kobuki) using the command:

$ rosbag record -b 512 -O ~/tmp/rtabmap.bag data_throttled_image/compressed data_throttled_image_depth/compressedDepth data_throttled_camera_info tf scan odom

I am now trying to convert the bag file to an rtabmap.db database file using the data_recorder.launch file like this:

$ roslaunch rtabmap_ros data_recorder.launch subscribe_depth:=true subscribe_odometry:=true subscribe_laserScan:=true frame_id:=base_footprint odom_topic:=/odom scan_topic:=/scan rgb_topic:=data_throttled_image rgb_info_topic:=data_throttled_camera_info  depth_topic:=data_throttled_image_depth rgb_image_transport:=compressed depth_image_transport:=compressedDepth

$ rosbag play --clock ~/tmp/rtabmap.bag

But I immediately get the following fatal error in the data_recorder window:

[ INFO] [1448606174.219485493]: rtabmap: Database version = "0.10.10".
[ INFO] [1448606174.407369964]: Registering Depth+LaserScan callback...
[ INFO] [1448606174.409487787]:
/data_recorder subscribed to:
   /data_throttled_image/compressed,
   /data_throttled_image_depth/compressedDepth,
   /data_throttled_camera_info,
   /odom,
   /scan
[ INFO] [1448606174.409542728]: rtabmap 0.10.10 started...
[ WARN] [1448606182.774314821]: rtabmap: Could not get transform from base_footprint to /camera_rgb_optical_frame after 0.100000 second!
[FATAL] (2015-11-26 22:36:23.268) OdometryEvent.h:45::generateCovarianceMatrix() Condition (uIsFinite(transVariance) && transVariance>0) not met!

*******
FATAL message occurred! Application will now exit.

*******
[data_recorder-1] process has died [pid 9563, exit code 1, cmd /opt/ros/indigo/lib/rtabmap_ros/rtabmap --delete_db_on_start rgb/image:=data_throttled_image rgb/camera_info:=data_throttled_camera_info depth/image:=data_throttled_image_depth left/image_rect:=camera/left/image_rect_color left/camera_info:=camera/left/camera_info right/image_rect:=camera/right/image_rect right/camera_info:=camera/right/camera_info scan:=/scan odom:=/odom __name:=data_recorder __log:=/home/patrick/.ros/log/2eae6298-94cf-11e5-a790-64006a04e0e0/data_recorder-1.log].
log file: /home/patrick/.ros/log/2eae6298-94cf-11e5-a790-64006a04e0e0/data_recorder-1*.log
all processes on machine have died, roslaunch will exit
shutting down processing monitor...
... shutting down processing monitor complete
done

What am I doing wrong?

Thanks!
patrick

Reply | Threaded
Open this post in threaded view
|

Re: FATAL Odometry error when converting bag file using data_recorder

g.bartoli
This post was updated on .
Hi Patrick,
I had a similar problem without the bag file, take a look here!

Bye,
Guido
~Guido
Reply | Threaded
Open this post in threaded view
|

Re: FATAL Odometry error when converting bag file using data_recorder

Pi Robot
Thanks Guido--I installed the latest version 0.10.12 from source but I still get the same error...
Reply | Threaded
Open this post in threaded view
|

Re: FATAL Odometry error when converting bag file using data_recorder

matlabbe
Administrator
Hi,

The commit referred in this post should fix the "[FATAL] (2015-11-26 22:36:23.268) OdometryEvent.h:45::generateCovarianceMatrix() Condition (uIsFinite(transVariance) && transVariance>0) not met! " error.

Then you will need also to update rtabmap and rtabmap_ros code to avoid the following error:
[FATAL] (2015-11-27 14:28:25.872) DBDriverSqlite3.cpp:2580::stepNode() Condition (rc == SQLITE_DONE) not met! [DB error: UNIQUE constraint failed: Node.label]

*******
FATAL message occurred! Application will now exit.

*******
terminate called after throwing an instance of 'boost::exception_detail::clone_impl<boost::exception_detail::error_info_injector<boost::lock_error> >'
  what():  boost: mutex lock failed in pthread_mutex_lock: Invalid argument
[data_recorder-2] process has died [pid 28223, exit code -6, cmd /home/mathieu/catkin_ws/devel/lib/rtabmap_ros/rtabmap --delete_db_on_start --udebug rgb/image:=data_throttled_image rgb/camera_info:=data_throttled_camera_info depth/image:=data_throttled_image_depth left/image_rect:=camera/left/image_rect_color left/camera_info:=camera/left/camera_info right/image_rect:=camera/right/image_rect right/camera_info:=camera/right/camera_info scan:=/scan odom:=/odom __name:=data_recorder __log:=/home/mathieu/.ros/log/027b839a-953d-11e5-8970-58b03561ac71/data_recorder-2.log].
log file: /home/mathieu/.ros/log/027b839a-953d-11e5-8970-58b03561ac71/data_recorder-2*.log

For conversion of large ros bags, you may want to add the argument "record_in_RAM=false" so that the database is recorded directly on the hard drive:
roslaunch rtabmap_ros data_recorder.launch subscribe_depth:=true subscribe_odometry:=true subscribe_laserScan:=true frame_id:=base_footprint odom_topic:=/odom scan_topic:=/scan rgb_topic:=data_throttled_image rgb_info_topic:=data_throttled_camera_info  depth_topic:=data_throttled_image_depth rgb_image_transport:=compressed depth_image_transport:=compressedDepth record_in_RAM:=false
Setting "record_in_RAM=true" is useful when doing short recordings at high framerate to not miss frames.

EDIT: For the binaries (version 0.10.10), to avoid the FATAL error above (about  DBDriverSqlite3.cpp), add this under rtabmap node in data_recorder.launch (indigo-devel version):
<param name="RGBD/LinearUpdate"       type="string" value="0"/> 
<param name="RGBD/AngularUpdate"      type="string" value="0"/> 

cheers
Reply | Threaded
Open this post in threaded view
|

Re: FATAL Odometry error when converting bag file using data_recorder

Pi Robot
Thanks Mathieu--that fixed it!  It seems the large covariance values may be deliberately published by the kobuki_node and may be used as "I don't know" values. I see the same values in this other post.

--patrick