move_baseを使っていると、障害物が無いのにコストマップで障害物判定されてしまうことがあります。そのようなときは、コストマップを一度クリアしましょう。
コマンドから
move_baseノードには、コストマップをクリアする方法があります。このためには、move_baseノードに対してclear_costmapsサービスを送信する必要があります。
下記のコマンドを実行することでコストマップをクリアできます。
$ rosservice call /move_base/clear_costmaps
コード(Python)から
Pythonからもclear_costmapsサービスを呼び出すことができます。
以下は、Pythonスクリプトからclear_costmapsサービスを呼び出す例です。
#!/usr/bin/env python import rospy from std_srvs.srv import Empty rospy.init_node('clear_costmaps_client') # サービスが提供されるまで待機 rospy.wait_for_service('/move_base/clear_costmaps') try: # clear_costmapsサービスを呼び出す clear_costmaps = rospy.ServiceProxy('/move_base/clear_costmaps', Empty) clear_costmaps() rospy.loginfo("Clear costmaps service called successfully.") except rospy.ServiceException as e: rospy.logerr("Failed to call clear costmaps service: %s" % e)
このスクリプトでは、rospyを使用してclear_costmapsサービスを呼び出しています。std_srvsパッケージのEmptyクラスをインポートして、clear_costmapsサービスに対するクライアントを作成し、clear_costmaps関数を実行することでコストマップをクリアしています。