#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 должен перехватить ошибку.