Publishing and reciving at different rate (rospy)
Setup:
Running a python based simulation for multiple robots (Ubuntu 20.04, rosdistro: noetic, rosversion: 1.15.14). The structure of the simulation and publication scheme is shown below.
class sim():
def __init__(self):
rospy.init_node('sim')
rate = rospy.Rate(sim_rate_value)
self.odom_publisher = []
self.odom_publisher.append(rospy.Publisher("odom1", Odometry, queue_size=1, tcp_nodelay=True))
self.odom_publisher.append(rospy.Publisher("odom2", Odometry, queue_size=1, tcp_nodelay=True))
self.odom_publisher.append(rospy.Publisher("odom3", Odometry, queue_size=1, tcp_nodelay=True))
...
while not rospy.is_shutdown():
...
# numerical integration [this section is quite heavy and slow]
...
for index in range(3):
odom_pub = Odometry()
current_time = rospy.get_rostime()
odom_pub.header.stamp = current_time
...
# fill up odom_pub with computed odom from robot index
...
self.odom_publisher[index].publish(odom_pub)
rate.sleep()
Recorded all odom msgs using
rosbag record -a
Issue: Published odom/header/stamp gives me consistent delta t between msgs, but bagfile time index does not give me consistent delta t between msgs.
Published odom/header/stamp shows consistent delta t between msgs, whereas in bagfile delta t varies (delta t is ~0.0 between the first two received msgs and twice the normal delta t between the second and thrid msgs). I do not experience this in other cpp or python publishers. Why is this happening? Is this a publisher issue or a subscriber issue?
Asked by tsoetosaa on 2022-07-21 15:30:03 UTC
Comments