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関数を実行することでコストマップをクリアしています。

Move_baseRos

Related Posts

roslaunchでrospy.loginfoでの出力が表示されない場合の対応策
roslaunchでrospy.loginfoでの出力が表示されない場合の対応策
roslaunchで起動したときに、rospy.loginfoで出力しても表示されない場合は下記のように--screenオプションをつけましょう。 コマンドラインで実行する場合 roslaunch your_package your_...
Read More
ArduinoのpulseInで割り込み処理ができるようにする
ArduinoのpulseInで割り込み処理ができるようにする
概要 超音波センサーHC-SR04等を用いてArduinoで距離計測を行いたいときに、Trigピンで超音波を発生させた後にEchoピンで、超音波が反射されてくるまでの時間を計測することで距離を計測できます。その際、pulseInという...
Read More
DCモータ制御で配線が複雑になる場合はDCモータコントローラシールドMD04を使うと便利!
DCモータ制御で配線が複雑になる場合はDCモータコントローラシールドMD04を使うと便利!
概要 DCモータを動作させる際は、モータコントローラを用いると便利ですが、それでも複数のモータを動作させようとしたときには配線がごちゃごちゃになってしまいがちです。そのような時は、シールドタイプのDCモータコントローラを使えば、マイコ...
Read More