<table cellspacing="0" cellpadding="0" border="0" ><tr><td valign="top" style="font: inherit;">


        
        
        
        <style type="text/css">p { margin-bottom: 0.08in; }a:link {  }</style>



<p style="margin-bottom: 0in;"><font face="Times New Roman, serif">Hi
folks,</font></p>
<p style="margin-bottom: 0in;"><br>
</p>
<p style="margin-bottom: 0in;"><font face="Times New Roman, serif">I
am having some problems receiving messages.</font></p>
<p style="margin-bottom: 0in;"><font face="Times New Roman, serif">The
idea is to implement an EKF using data from odometry, gps, laser scan
and row detection.</font></p>
<p style="margin-bottom: 0in;"><font face="Times New Roman, serif">These
messages are recorded in bags, with frequencies of 45, 95, 75 and 15
Hz, respectively.</font></p>
<p style="margin-bottom: 0in;"><br>
</p>
<p style="margin-bottom: 0in;"><font face="Times New Roman, serif">First
I implemented a code that just receives the messages, with the
callback associated functions printing on screen the time stamp of
each message, and in the end the program prints the received messages
total number.</font></p>
<p style="margin-bottom: 0in;"><br>
</p>
<p style="margin-bottom: 0in;"><font face="Times New Roman, serif">The
first strange thing noticed is that, using subscribers queue size = 1
and spinOnce() with  loop_rate.sleep() of 1 KHz, I am missing about
50% of the messages recorded in the bags. It is strange, because the
total frequency of the messages in the bags is 230 Hz, and the code
is running at 1 KHz.</font></p>
<p style="margin-bottom: 0in;"><font face="Times New Roman, serif">Even
that, to solve this, I changed to subscribers queue size = 50 with
spin(). </font>
</p>
<p style="margin-bottom: 0in;"><br>
</p>
<p style="margin-bottom: 0in;"><font face="Times New Roman, serif">After
it, I started to receive all the messages. But looking to the screen,
it is possible to see that the different type messages are arriving
out of time order.  ROS processes the entire queue of one message
type before starting to process the others. This could be the reason
for receiving messages in wrong order. But even looking to the first
message of each block type, the time stamps are still out of order.</font></p>
<p style="margin-bottom: 0in;"><br>
</p>
<p style="margin-bottom: 0in;"><a name="lw_1304431387_0"></a><font face="Times New Roman, serif">I
tried different things, like spin() with multi threads and the
approximate time message filter, and I am still receiving the
messages out of order. My last try was to store all the messages in a
single bag, and run the code in
</font><a href="http://www.ros.org/wiki/rosbag/Cookbook">http://www.ros.org/wiki/rosbag/Cookbook</a><font face="Times New Roman, serif">
to order the messages in the bag to match the timestamps. The results
got much better, but I am still receiving some messages out of time
order.</font></p>
<p style="margin-bottom: 0in;"><br>
</p>
<p style="margin-bottom: 0in;"> <font face="Times New Roman, serif">Is
ROS supposed to work like this? Do you have any suggestion to solve
these problems?</font></p>
<p style="margin-bottom: 0in;"><br>
</p>
<p style="margin-bottom: 0in;"><font face="Times New Roman, serif">Thanks
a lot,</font></p>
<p style="margin-bottom: 0in;"><br>
</p>
<p style="margin-bottom: 0in;"><font face="Times New Roman, serif">Gustavo
Freitas</font></p>
</td></tr></table>