Я публикую сообщение на определенную тему, и мне нужно, чтобы оно прекратилось через определенное время. Процесс публикации состоит из цикла, который непрерывно отправляет информацию в тему.
Это цикл, который мне нужно остановить после определенного времени, указанного пользователем.
while not rospy.is_shutdown():
movement_cmd.linear.x = 0
movement_cmd.linear.y = 0
movement_cmd.linear.z = 0
movement_cmd.angular.x = 0
movement_cmd.angular.y = 0
movement_cmd.angular.z = 0
rospy.logdebug("Publishing")
movement_publisher.publish(movement_cmd)
rate.sleep()
Редактировать:
Этопользовательский ввод
time = float(sys.argv[2])
Например, если time = 2.5 , цикл должен публиковаться в течение 2,5 секунд, после чего он должен остановиться и код завершится.
Мне удалось через некоторое время остановить цикл, установив частоту публикации на 20 Гц.Это означает, что он будет публиковаться каждые 0,05 секунды, поэтому я добавил переменную с именем counter и каждый раз, когда цикл публикует, добавляет +0,05 к переменной counter . Затем counter сравнивается с время и если оба имеют одно и то же значение, я завершаю цикл с помощью:
if counter >= time:
break
Есть ли способ улучшить это с помощью любой другой функции?