robot_pose_ekf crash when /odom is published
I am trying to use robot_pose_ekf. I publish the result of my wheel odometry to /odom with a message type nav_msgs/Odometry, I also publish to /imu_data but don't use it for now, to ease the debugging process.
I took the launch file example from the wiki, with few modifications, called robot_pose_ekf.launch
<launch>
<node pkg="robot_pose_ekf" type="robot_pose_ekf" name="robot_pose_ekf">
<param name="output_frame" value="odom"/>
<param name="freq" value="10.0"/>
<param name="sensor_timeout" value="1.0"/>
<param name="odom_used" value="true"/>
<param name="imu_used" value="true"/>
<param name="vo_used" value="false"/>
<param name="debug" value="true"/>
<param name="self_diagnose" value="false"/>
</node>
</launch>
The problem is that if do roslaunch robot_pose_ekf.launch I get an error when /odom is being published. The launch file gives me the following error.
... logging to /home/ctrlworks/.ros/log/108cf85c-34ca-11e5-87a0-7cdd90736c10/roslaunch-ctrlworks-All-Series-26322.log
Checking log directory for disk usage. This may take awhile.
Press Ctrl-C to interrupt
Done checking log file disk usage. Usage is <1GB.
started roslaunch server http://ctrlworks-All-Series:46375/
SUMMARY
========
PARAMETERS
* /robot_pose_ekf/debug: True
* /robot_pose_ekf/freq: 10.0
* /robot_pose_ekf/imu_used: True
* /robot_pose_ekf/odom_used: True
* /robot_pose_ekf/output_frame: odom
* /robot_pose_ekf/self_diagnose: False
* /robot_pose_ekf/sensor_timeout: 1.0
* /robot_pose_ekf/vo_used: False
* /rosdistro: indigo
* /rosversion: 1.11.10
NODES
/
robot_pose_ekf (robot_pose_ekf/robot_pose_ekf)
ROS_MASTER_URI=http://localhost:11311
core service [/rosout] found
process[robot_pose_ekf-1]: started with pid [26340]
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
[robot_pose_ekf-1] process has died [pid 26340, exit code -6, cmd /opt/ros/indigo/lib/robot_pose_ekf/robot_pose_ekf __name:=robot_pose_ekf __log:=/home/ctrlworks/.ros/log/108cf85c-34ca-11e5-87a0-7cdd90736c10/robot_pose_ekf-1.log].
log file: /home/ctrlworks/.ros/log/108cf85c-34ca-11e5-87a0-7cdd90736c10/robot_pose_ekf-1*.log
all processes on machine have died, roslaunch will exit
shutting down processing monitor...
... shutting down processing monitor complete
done
Please note that if I don't publish to /odom robot_pose_ekf won't crash. This error message gives me little information, I checked on google, rosanswers and the github repository. It seems like nobody faced this issue.
robot_pose_ekf publishes /robot_pose_ekf/odom_combined once before crashing
header:
seq: 0
stamp:
secs: 1438050795
nsecs: 25101732
frame_id: odom
pose:
pose:
position:
x: 20.2645301819
y: 9.3069190979
z: 0.0
orientation:
x: 0.0
y: 0.0
z: 0.141884716703
w: 0.989883188647
covariance: [1000000.000001, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1000000.000001, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1000000.000001, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1000000.000001, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1000000.000001, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1000000.000001]
I have the same error when I launch directly the node with rosrun robot_pose_ekf robot_pose_ekf :
[ INFO] [1438051219.856724994]: output frame: odom
[ INFO] [1438051219.856771670]: base frame: base_footprint
[ INFO] [1438051221.616056904]: Initializing Odom sensor
[ INFO] [1438051221.616080206]: Odom sensor activated
[ INFO] [1438051226.152202958]: Kalman filter initialized with odom measurement ...