ロボットSLAMと自律ナビゲーション(4)-ナビゲーション機能パッケージ

ロボットSLAMと自律ナビゲーション(4)-ナビゲーション機能パッケージ

1.ナビゲーションフレームワーク

ナビゲーションの鍵は、ロボットの位置決めと経路計画です。

  • move_base:ロボットナビゲーションで最適な経路計画を実現します
  • amcl:
    2次元マップロボットの測位実現する上記の2つの機能パッケージに基づいて、ROSは一連の完全なナビゲーションフレームワークを提供します。
    ここに画像の説明を挿入

ロボットが必要なセンサー情報とナビゲーションの目標位置を解放し、ROSがナビゲーション機能を完了することができます。このフレームワークでは、move_base関数パッケージがナビゲーション用の主要な操作および対話型インターフェースを提供します。amcl関数パッケージは、パスの正確さを保証し、現在地を正確に特定します。
1)まず、ナビゲーション機能パッケージがロボットのセンサー情報を収集し、リアルタイムの障害物回避効果を実現します。ロボットは、ROSを介してsensor_msgs / LaserScanまたは3Dポイントクラウド情報を公開します。
2)次に、ナビゲーション機能パッケージは走行距離計情報をnav_msgs / Odometry形式で公開し、同時に対応するTF変換を公開します。
3)最後に、ナビゲーション機能パッケージの出力はgeometry_msgs / Twist形式の制御コマンドであり、ロボットはこれらのコマンドを使用してタスクを完了します。
ナビゲーションフレームワークには多くの機能パッケージが含まれており、次のコマンドを使用して直接インストールできます。

sudo apt-get install ros-kinetic-navigation

2、move_base関数パッケージ

パスプランニングは、主に次の2つのプランナーで構成されます。

  • グローバルパスプランニング(global_planner):パスプランニング全体の指定されたターゲットロケーションとグローバルマップに従います。ナビゲーションでは、DitescoまたはA *アルゴリズムを使用して、グローバルパスを計画し、最適なパスを計算します。
  • ローカル実装計画(local_planner):実際の状況では、障害が発生する可能性があるため、グローバルパス計画を完全に実行することは不可能です。ローカル実装計画は、動的ウィンドウアプローチアルゴリズムを使用してlocal_plannerモジュールによって実装され、障害物を回避するための複数のパス、包括的な評価基準(障害物に当たるかどうか、必要な時間)を検索し、最適なパスを選択し、線速度を計算します動的障害物との衝突を回避するための運転サイクルと角速度。

1.トピックとサービス

ここに画像の説明を挿入

2.パラメータ設定

ここに画像の説明を挿入

3、amcl関数パッケージ

自律測位:ロボットは、任意の状態で地図上の位置を計算できます。
ROSは、適応(またはkldサンプリング)モンテカルロローカリゼーションメソッド(amcl)を提供します。これは、粒子フィルターを使用して既存のマップに対するロボットの姿勢を追跡する確率的および統計的メソッドです。

1.トピックとサービス

ここに画像の説明を挿入

2.パラメータ設定

全体的なフィルターパラメーター
ここに画像の説明を挿入
レーザーパラメーターモデル
ここに画像の説明を挿入
走行距離計モデルパラメーター
ここに画像の説明を挿入

3.座標変換

走行距離計はロボットの測位に役立ち、amclもロボットの測位を実現できますが、この2つには違いがあります。
ここに画像の説明を挿入

  • 走行距離計の測位:走行距離計のデータのみを使用して、/ baseと/ odomの間のTF変換を処理します
  • amclポジショニング:マップ座標系/マップ内のロボットのポーズ情報を推定し、/ base、/ odom、および/ map間のTF変換を提供できます。

第四に、コストマップの構成

ナビゲーションマップは、2つのコストマップを使用して、周囲の環境に障害物情報を保存します。

  • グローバルパスプランニング-コストマップ(global_costmap)
  • ローカルパス計画とリアルタイム障害物回避(local_costmap)
    2つのコストマップでは、いくつかの共通または独立した構成ファイルを使用する必要があります。一般構成ファイル、グローバル計画構成ファイル、およびローカル計画構成ファイルです。

1.一般的な設定ファイル

コストマップは、周囲の環境の障害物情報を格納するために使用されます。コストマップは、マップ情報を更新するために、マップが注意を払うロボットセンサーメッセージを宣言する必要があります。2つのコストマップの共通の構成を選択するには、costmap_common_params.yamlという名前の構成ファイルを作成します。これは次のように解析されます。

#这两个参数用来设置代价地图中障碍物的相关阀值
obstacle_range: 2.5#用来设置障碍物的最大范围,若设置为2.5,则表在2.5m范围内检测到的障碍信息才会在地图中更新
raytrace_range: 3.0#用来设置检测自由空间的最大范围,设置为3,.0,表示在3m的范围内机器人将根据传感器的信息清楚范围内的自由空间
 
 
#footprint: [[0.175, 0.175], [0.175, -0.175], [-0.175, -0.175], [-0.175, 0.175]]
#footprint_inflation: 0.01
robot_radius: 0.175
inflation_radius: 0.1#这个是机器人和障碍物保持的最小安全距离为0.1m以上
#这个footprint参数设置机器人在二维地图上的占用的面积,参数以机器人的中心作为坐标原点
#要是机器人外形是圆形,则需要设置机器人的外形半径robot_radius
 
 
max_obstacle_height: 0.6
min_obstacle_height: 0.0
#这两个参数描述障碍物的最大高度和最小高度
 
observation_sources: scan#这里以激光雷达为例
scan: {
    
    data_type: LaserScan, topic: /scan, marking: true, clearing: true, expected_update_rate: 0}
#observation_sources参数列出了代价地图需要关注的所有的传感器信息,每个传感器信息都会在后面列出来
#data_type表示激光数据或者是点云数据使用的消息
#topic:表示传感器发布的话题的名称
#marking和clearing:表示是否需要使用传感器的实时信息来添加或清除代价地图中的障碍物信息

2.グローバル計画構成ファイル

グローバルプランニング構成ファイルは、global_costmap_params.yamlという名前のグローバルコストマップを構成するためのパラメーターを格納するために使用されます。コードは詳細に説明されています。

global_costmap:
   global_frame: map 
#用来表示全局代价地图需要在哪个参考系下运行,这里选择了map参考系
 
   robot_base_frame: base_footprint 
#参数用来表示代价地图可以参考的机器人本体的坐标系
 
   update_frequency: 1.0
#参数用来决定全局地图信息更新的频率,单位是Hz
 
   publish_frequency: 1.0
 
   static_map: true
#参数用来决定代价地图是否需要根据map_server提供的地图信息进行初始化,如果不需要使用已有的地图这最好设置为false
 
   rolling_window: false
   resolution: 0.01#分辨率
   transform_tolerance: 1.0#转换容忍
   map_type: costmap#地图类型

3.ローカル計画構成ファイル

ローカル計画構成ファイルは、local_costmap_params.yamlという名前のコストマップの構成パラメーターを格納するために使用されます。コードは次のように詳細に説明されています。

local_costmap:
    #下面的这几个参数和全局规划配置文件中的参数相同
   global_frame: map
   robot_base_frame: base_footprint
   update_frequency: 3.0
   publish_frequency: 1.0#参数用于设置代价地图发布可视化信息的频率,单位是Hz
   static_map: true
 
   rolling_window: false
#参数是用来设置在机器人移动过程中是否可以需要滚动窗口以保持机器人在中心位置
 
   width: 6.0
   height: 6.0
   resolution: 0.01
#这三个参数分别设置代价地图的长(米)高(米)和分辨率(米/格)虽然分辨率设置和静态地图的不同,但是一般条件下是相同的
 
   transform_tolerance: 1.0

5つのローカルプランナー構成

ローカルプランナーbase_local_plannerの主な機能は、計画されたグローバルパスに従ってロボットに発行される速度制御命令を計算することです。
プランは、ロボットの仕様に従って関連するパラメーターを構成し、次のコードを使用してbase_local_planner_params.yamlという名前の構成ファイルを作成します。

controller_frequency: 3.0#控制频率
recovery_behavior_enabled: false
clearing_rotation_allowed: false
 
TrajectoryPlannerROS:#声明机器人本地规划采用Trajectory Rollout算法
#下面是设置算法需要用到的机器人的速度、加速度阀值等参数
   max_vel_x: 0.5
   min_vel_x: 0.1
   max_vel_y: 0.0  # zero for a differential drive robot(0是为差动机器人设置的)
   min_vel_y: 0.0
   max_vel_theta: 1.0
   min_vel_theta: -1.0
   min_in_place_vel_theta: 0.4
   escape_vel: -0.1
   acc_lim_x: 1.5
   acc_lim_y: 0.0  # zero for a differential drive robot(0是为差动机器人设置的)
   acc_lim_theta: 1.2
 
   holonomic_robot: false
   yaw_goal_tolerance: 0.1 # about 6 degrees(偏航的角度容忍度大约是6°)
   xy_goal_tolerance: 0.05  # 5 cm
   latch_xy_goal_tolerance: false
   pdist_scale: 0.4
   gdist_scale: 0.8
   meter_scoring: true
 
   heading_lookahead: 0.325
   heading_scoring: false
   heading_scoring_timestep: 0.8
   occdist_scale: 0.05
   oscillation_reset_dist: 0.05
   publish_cost_grid_pc: false
   prune_plan: true
 
   sim_time: 1.0
   sim_granularity: 0.05
   angular_sim_granularity: 0.1
   vx_samples: 8
   vy_samples: 0  # zero for a differential drive robot
   vtheta_samples: 20
   dwa: true
   simple_attractor: false

おすすめ

転載: blog.csdn.net/weixin_45661757/article/details/114044963