A、TF
区にランク https://www.guyuehome.com/355を
フォーカス:ラジオTF、サブスクリプション、Cmakelistは、コンパイル時にコンパイラオプションを追加します
1 broadcaster.sendTransform( 2 TF :: StampedTransform( 3 TF ::変換(TF ::クォータニオン(0、0、0、1)、TF ::のVector3(0.1、0.0、0.2 ))、 4つの ROS ::時間: :今()、" base_link "、" base_laser " 5 ) 6 )
1 listener.transformPoint(" base_link "、laser_point、base_point)。
1 add_executable(tf_broadcaster SRC / tf_broadcaster.cpp) 2 add_executable(tf_listener SRC / tf_listener.cpp) 3 ($ {catkin_LIBRARIES} tf_broadcaster)target_link_libraries 4 target_link_libraries(tf_listener $ {catkin_LIBRARIES})
第二に、ナビゲーションを準備
ウィキ公式サイトを参照してください http://wiki.ros.org/navigation/Tutorials/Navigation%20Tuning%20Guide (エンジニアリングの実践のための良い参照)
1ロボット
(1)距離センサ
(2)走行距離計
最初のテストは、回転の合理的な程度の走行距離をチェックします。Iフレームを「オドム」、ロボットによって提供されるレーザ走査ディスプレイに設定され、減衰時間のテーマは、(約20秒)は、非常に高く設定され、その後、所定の位置に回転され、rvizを開きました。それから私は密接に範囲を一致して、その後の回転でのスキャンを見てください。理想的には、スキャンは互いに重複しますが、私だけでスキャンがないずれる以上12度をしていることを確認して、いくつかの回転ドリフトがあるだろうと予想されます。
次のテストは、オドメーターの整合性チェック翻訳したものです。私はセットrvizにロボットの壁からわずか数メートルを使用します。それから私は、直接壁のロボットとは、レポートにまとめrvizレーザー走査の壁の厚さが表示されます。理想的には、壁には、スキャンのようになりますが、私は念のそれは数センチの厚さを超えないようにしたいです。あなたはメーターの壁を見出しているが、スキャン範囲が半分以上メートルに拡張する場合、走行距離計の問題が存在する可能性があります。
(3)位置決め
AMCL、正確として提起する初期化。
2、costmap
ソースは、放出の実際の速度に応じて各観測センサことを確実にするために設定されているExpected_update_rateのパラメータ。ここでは通常、検査時間は、私が期待したものdoubleに設定されていますが、センサーが期待される率を下回った場合、ナビゲーションからの警告が表示されます、特定の許容範囲を与えています。
適切なシステムに設定transform_toleranceのパラメータ。使用してチェックTFをから「base_link」とフレーム「マップ」フレームがある時間の予想変換を待ちます。通常tf_monitor遅延ビューシステム、および保守的に設定したパラメータ。また、場合tf_monitorは報告を遅らせ与えられたロボットで変換を公開するための方法に問題を識別するのに役立ち、遅延の原因を確認するために十分な大きさ、4突くです。
ロボットの遅い処理容量で、減らすことを検討map_update_rateのパラメータを。これは遅延図のコスト入力速度センサデータをもたらすであろうという事実を考慮すると、この操作を実行するときしかし、このように障害物に応答するロボットの速度を遅くします。
publish_frequency パラメータですrviz 可視化costmap 便利です。しかし、特に大規模なグローバルマップのために、このパラメータは物事がゆっくりと実行する可能性があります。生産システムでは、図の放出速度のコストを削減し、非常に大きな視覚的な図を必要とするとき、あなたは率が非常に低く設定されていることを確認してください。
かどうかのvoxel_grid 又はcostmap 大幅にコストを決定するためのモデルは、図ロボットは、センサ一式を有する依存します。本当に未知のスペースを考慮する必要があるため、それはに基づいて必要である3次元図の図のコストがかかり、調整。ロボットは、私は飛行機のレーザーを使用する場合は、その後、私はいつも意志Costmap マップのためのモデルを。
時には、のみ有用オドメーターナビゲーションの枠組みの中で実行します。これを行うには、最も簡単にコピーすることですlocal_costmap_params.yaml ファイルglobal_costmap_params.yamlのファイルを、マップの幅と高さを変更します。あなたが独立してローカライズ・パフォーマンス・ナビゲーションの調整したい場合は、物事が非常に単純な方法を実行させるようにするのが普通です。
また、あなたのサイズや処理能力の解像度に応じてロボットを使用しているマップを選択する傾向があるようにしてください。(このような強力な処理能力や狭いスペースの必要性などのロボットでPR2 、使用きめ細かいマップ上)... セットに解像度0.025 メートルです。等のルンバなどAの事、私は達する可能性が0.1 計算量を削減するために、メートルの解像度を。
Rvizは costmapが正常に動作しているかどうかを確認するための良い方法です。costmapビューの障害物データ、およびロボットを駆動するときにその地図やレーザー走査で、確認しては、ジョイスティックコントロール下に並んでいます。これは、センサデータは、合理的なマナーに入力されている costmapの健全性チェック。あなたが不明なスペースを追跡するためにロボットを使用する場合は、主に使用voxel_grid ロボットを costmapモデル、未知の宇宙を理解するために、未知の宇宙の可視化を表示し、合理的な方法でクリア。良いチェックが正しくからあなたができるかどうかを確認するためにあるん costmapで削除障害ロボットの前を歩くと、それは成功した動的な障害物を確認し、クリアすることができるかどうかを確認するだけです。costmap に投稿されたrviz トピックの詳細については、チェックアウトrvizを当然のナビゲーション。
ナビゲーションスタックでのみ動作しますcostmap システム負荷をチェックすることをお勧めします。リコールすることをこれは意味move_base ノードが、ターゲットを送信するために、負荷をチェックしません。あなたが任意のプログラムを実行する機会が必要な場合は、コンピュータが麻痺し、この時点で、私が思うなら、あなたはいくつかの必要CPUの節約パラメータ調整を。
3、地域計画
ロボットに合理的な加速制限が一般的に用いられ有するdwa_local_planner すべての配備における下限加速度と希望のものが使用される有益ロボットの展開の加速を制限するものと解釈されるため、base_local_planneのR 。調整dwa_local_planner 比調整base_local_planner そのパラメータがされているので、より快適に動的に構成されました。
第三に、ナビゲーションの設定
区にランク https://www.guyuehome.com/281を。
焦点は:ロボットスタートアップコンフィギュレーションファイルには、マップのコストを設定するには、configure経路計画、打ち上げ
四、RVIZ
ウィキ公式サイトを参照してください http://wiki.ros.org/navigation/Tutorials/Using%20rviz%20with%20the%20Navigation%20Stack
キー:RVIZトピック、MSGタイプ
第五に、オドメーター
区にランク https://www.guyuehome.com/332を
第六に、センサー
区にランクhttps://www.guyuehome.com/326を
ソースは、放出の実際の速度に応じて各観測センサことを確実にするために設定されているExpected_update_rateのパラメータ。私は通常、検査時間は、私が期待したもの倍増するように設定され、ここで一定の許容度を与えるが、センサーが期待される率を下回った場合、非常にナビゲーションからのアラートを受信するために喜んで。
为系统适当地设置transform_tolerance参数。很高兴检查使用tf从“ base_link”帧到“ map”帧的转换的预期等待时间是多少。我通常使用tf_monitor查看系统的延迟,并保守地设置该参数。另外,如果tf_monitor报告的延迟足够大,我可能会四处戳一下以查看造成延迟的原因。有时这使我发现有关给定机器人如何发布转换的问题。
在缺乏处理能力的机器人上,我将考虑降低map_update_rate参数。但是,在执行此操作时,我考虑到这样一个事实,即这将导致传感器数据进入成本图的速度出现延迟,从而减慢了机器人对障碍物做出反应的速度。
该publish_frequency参数是在rviz可视化costmap有用。但是,尤其是对于大型全局地图,该参数可能导致事物运行缓慢。在生产系统中,我考虑降低发布成本图的速率,并且当我需要可视化非常大的图时,请确保将速率设置得非常低。
是否将voxel_grid或costmap模型用于成本图的决定很大程度上取决于机器人具有的传感器套件。由于确实需要考虑未知空间,因此需要为基于3D的成本图调整成本图。如果我使用的机器人只有平面激光器,那么我总是将Costmap模型用于地图。
有时,仅在里程表框架中运行导航很有用。要做到这一点,我发现最容易做的事情就是我的复制local_costmap_params.yaml文件在我global_costmap_params.yaml文件并更改了宽度和高度的地图是东西更像是10米。如果要独立于本地化性能来调整导航,这是使事情正常运行的非常简单的方法。
我倾向于根据机器人的大小和处理能力来选择正在使用的地图的分辨率。在具有强大处理能力且需要适合狭窄空间的机器人(如PR2)上,我将使用细粒度的地图...将分辨率设置为0.025米。对于像Roomba这样的东西,我可能会达到0.1米的分辨率,以减少计算量。
Rviz是一种很好的方法来验证成本图是否正常工作。我通常会从成本图中查看障碍物数据,并确保在操纵杆控制下驾驶机器人时,它与地图和激光扫描都对齐。这是对传感器数据是否以合理方式进入成本图的合理性检查。如果我决定使用机器人跟踪未知空间,那么大多数都是使用voxel_grid的机器人在成本图的模型中,我确保查看未知空间的可视化效果,以了解以合理的方式清除了未知空间。我要做的一个很好的检查,就是看是否能正确地从成本图中清除障碍物,就是简单地走在机器人前面,看看它是否能成功看到我并清除我。有关costmap发布到rviz的主题的详细信息,请查看rviz教程的导航。
在导航堆栈仅运行costmap时检查系统负载是一个好主意。这意味着调出move_base节点,但不向其发送目标并查看负载。如果此时计算机陷入瘫痪,我想如果需要任何机会运行计划程序,则需要进行一些CPU节省参数调整。