Службы rospy.wait_for_service с использованием ROS melodic

#ros

#ros

Вопрос:

Я изучаю ROS, сейчас я делаю несколько примеров с использованием сервера и клиента, есть кое-что, чего я не понимаю конкретно, это когда ros блокирует службу, я имею в виду

 rospy.wait_for_service("add_two_ints")
  

согласно документации, он блокируется до тех пор, пока не будет доступна служба с именем add_two_ints.
но тогда необходимо создать дескриптор для вызова службы

 add_two_ints = rospy.ServiceProxy('add_two_ints', AddTwoInts)
  

мой вопрос в том, что rospy.wait_for_service() будет выполняться n раз? пока служба не завершит свою работу?
большое спасибо, я так смущен этим

Ответ №1:

Итак
rospy.wait_for_service("add_two_ints")
проверяет, доступна ли служба, и блокирует до тех пор, пока она не сможет достичь службы. И

 add_two_ints = rospy.ServiceProxy('add_two_ints', AddTwoInts)
  

создает объект, который взаимодействует с сервером.

Если сервер доступен во время вызова rospy.wait_for_service() , функция возвращает и больше не проверяется. Если сервер выходит из строя во время выполнения удаленной функции, блок try catch должен перехватить ошибку.