rotate_recovery

目次

1. 概要

 このパッケージは、ロボットの360度回転を実行してスペースを空にしようとするNavigationスタックのリカバリ動作を提供します。
  • 管理状態:管理済み
  • 管理者:David V. Lu!! <davidvlu AT gmail DOT com>, Michael Ferguson <mfergs7 AT gmail DOT com>, Aaron Hoy <ahoy AT fetchrobotics DOT com>
  • 著者:Eitan Marder-Eppstein, contradict@gmail.com
  • ライセンス:BSD
  • ソース:git https://github.com/ros-planning/navigation.git (branch: melodic-devel)

2. rotate_recovery概要

 rotate_recovery::RotateRecoveryは、ローカルの障害物が許せばロボットを360度回転させることにより、Navigationスタックの コストマップ のスペースを空にしようとする単純なリカバリ動作です。 nav_core パッケージに含まれるnav_core::RecoveryBehaviorインタフェースに準拠しており、 move_base ノードのリカバリ動作 プラグイン として使用できます。

3. RotateRecovery

 rotate_recovery::RotateRecoveryオブジェクトは、その機能を C++ ROSラッパー として公開します。これは、初期化時に指定されたROS名前空間(以降、nameと仮表記)内で動作します。 nav_core パッケージにあるnav_core::RecoveryBehaviorインタフェースに準拠しています。

 rotate_recovery::RotateRecoveryオブジェクトの作成例:
#include <tf/transform_listener.h>
#include <costmap_2d/costmap_2d_ros.h>
#include <rotate_recovery/rotate_recovery.h>

...
tf::TransformListener tf(ros::Duration(10));
costmap_2d::Costmap2DROS global_costmap("global_costmap", tf);
costmap_2d::Costmap2DROS local_costmap("local_costmap", tf);

rotate_recovery::RotateRecovery rr;
rr.initialize("my_rotate_recovery", &tf, &global_costmap, &local_costmap);

rr.runBehavior();

3.1 APIの安定性

  • C++ APIは安定しています。
  • ROS APIは安定しています。

3.2 ROSパラメータ

 rotate_recovery::RotateRecoveryオブジェクトは、 move_base ノードで使用されるローカルプランナーがbase_local_planner::TrajectoryPlannerROSであると想定し、 base_local_planner パッケージに記載されているパラメータをいくつか読み取ります。単独で動作しますが、これには追加のパラメータを指定する必要があります。

3.2.1 RotateRecoveryパラメータ

パラメータ名 内容 単位 デフォルト
~<name>/sim_granularity インプレース回転が安全かどうかをチェックするときの障害物のチェック間の距離(ラジアン単位)。デフォルトは1度です。 double rad 0.017
~<name>/frequency 速度コマンドをモバイルベースに送信する周波数(Hz単位)。 double Hz 20.0

3.2.2 TrajectoryPlannerROSパラメータ

 これらのパラメーターは、base_local_planner::TrajectoryPlannerROSローカルプランナーを使用するときにすでに設定されています。 Navigationスタック で別のローカルプランナーが使用されている場合、rotate_recovery::RotateRecoveryリカバリ動作に対して明示的に設定する必要があります。

パラメータ名 内容 単位 デフォルト
~TrajectoryPlannerROS/yaw_goal_tolerance 目標位置に到達するときのヨー/回転のコントローラーの許容値(ラジアン単位)。 double rad 0.10
~TrajectoryPlannerROS/acc_lim_th ロボットの回転加速度制限(ラジアン/秒^2単位) double rad/sec^2 3.2
~TrajectoryPlannerROS/max_rotational_vel ベースに許容される最大回転速度(ラジアン/秒単位)。 double rad/sec 1.0
~TrajectoryPlannerROS/min_in_place_rotational_vel インプレース回転を実行しながら、ベースに許可される最小回転速度(ラジアン/秒単位)。 double rad/sec 0.4

3.3 C++ API

 C++のrotate_recovery::RotateRecoveryクラスは、 nav_core パッケージにあるnav_core::RecoveryBehaviorインタフェースに準拠しています。 詳細なドキュメントについては、 RotateRecoveryのドキュメント を参照してください。