ROSでパッケージを作成する時に他のサービスが発行するトピックに依存している時など、他のサービスが立ち上がるまで待つ必要がある時があります。

その場合、wait_for_service()関数を使用することで実現できます。この関数は、指定したサービスが提供されるまでPythonスクリプトをブロックし、指定されたタイムアウトが経過すると例外を投げます。

コード例

#!/usr/bin/env python
import rospy
from std_srvs.srv import Empty

rospy.init_node('wait_for_service')

# サービスが提供されるまで待機
rospy.wait_for_service('/my_service')

try:
    # サービスを使用する
    my_service = rospy.ServiceProxy('/my_service', Empty)
    response = my_service()
    rospy.loginfo(response)
except rospy.ServiceException as e:
    rospy.logerr("Service call failed: %s" % e)

この例では、/my_serviceサービスが提供されるまでPythonスクリプトがブロックされます。サービスが提供されると、tryブロック内でmy_service()関数を使用してサービスを呼び出します。もしサービスの呼び出しが失敗した場合は、rospy.logerr()を使用してエラーログを出力します。

Ros

Related Posts

ブレッドボードに5V/3.3Vの電源をMB102で供給する
ブレッドボードに5V/3.3Vの電源をMB102で供給する
概要 ブレッドボードには電源を流すことに主に用いられる、両脇の赤と青のラインがあります。Arduinoなどのマイコンから5Vや3.3Vの電源を供給することもできますが、色々な用途に使っていると電流が足りなくなってしまったりするので、別...
Read More
積載重量2kg / 4輪駆動小型DCモータ メカナムホイールロボット台車・カーシャーシの組み立てマニュアル
積載重量2kg / 4輪駆動小型DCモータ メカナムホイールロボット台車・カーシャーシの組み立てマニュアル
概要 積載重量2kg / 4輪駆動小型DCモータ メカナムホイールロボット台車・カーシャーシの組み立て方について解説をします。 商品リンクは下記になります。 https://rb-station.com/products/%E7%A9...
Read More
温度・湿度センサーDHT11を使ってArduinoで温度と湿度を計測する
温度・湿度センサーDHT11を使ってArduinoで温度と湿度を計測する
概要 温度と湿度を計測することができるDHT11というセンサーを用いて、Arduinoで温度と湿度を計測する方法について解説をします。 DHT11について   DHT11は、温度と湿度を同時に計測することができるセンサーです。上記はモ...
Read More