How to publish /gazebo/set_model_states for 100 vehicles in just one time?
Sorry to bother you, but I got some questions in ros publish. I want to set the pose of 100 vehicles in gazebo, but if I publish the msg for 100 times, just 10 of them can refresh smoothly in the gazebo, most of the others will be slower. I guess it might be the restriction of queuesize, so I try to get 100 "gazebo/setmodel_states" msg together so that the msg number will be only one instead of 100. But I do not know how to achieve it. Thank you for your help! Here are my current codes.
num=100 t=60*18
if name=="main":
settings = termios.tcgetattr(sys.stdin)
rospy.init_node('turtlebot3_replay1')
pub= rospy.Publisher('gazebo/set_model_state', ModelState, queue_size=10)
pose_msg = ModelState()
print('Replay')
x=[]
y=[]
angle=[]
with open('x.txt','r') as path_data:
for line in path_data:
x.append(line.split())
with open('y.txt','r') as path_data:
for line in path_data:
y.append(line.split())
with open('angle.txt','r') as path_data:
for line in path_data:
angle.append(line.split())
flag=1
while(flag):
for i in range(t):
for j in range(num):
pose_msg.model_name = 'turtlebot3_'+str(j)
pose_msg.pose.position.x=eval(x[j][i])
pose_msg.pose.position.y=eval(y[j][i])
pose_msg.pose.position.z=0.100854
pub.publish(pose_msg)
time.sleep(0.1)
Asked by tony9811 on 2022-05-05 04:48:40 UTC
Comments