章12: 実機で1台を動かす(go_to_place / patrol)
← 前章: 実機へ | 目次 | 次章: 実機で入札と交通調停 →
狙い
- simで最初にやった「1台を1回動かす」を実機で繰り返し、コマンドもログの読み方もsimと変わらないことを体で確かめる
- RMFが見ている位置が
/toioN/toio/pose由来に変わったことを確認する - A4の一方通行ループを実機で一周させ、navグラフの形を手触りで覚える
simとの違い
| sim(章3・4) | 実機(この章) | |
|---|---|---|
| コマンド | --use_sim_time 付き |
外す |
| 頂点 | A3(patrol_A〜patrol_D) |
A4(patrol_A / patrol_B のみ) |
| 位置の出どころ | TF map → toio1/base_link |
/toio1/toio/pose(マットに印刷された位置コード = Position ID) |
| 経路の選び方 | 等長経路が2本あり毎回変わりうる | ループが1本なので常に同じ向きに回る |
動かす
章11の手順で端末1・2を起動し、25秒待ってから端末3で:
# 指名して1台だけ動かす(章3の「特定の1台を指名する」)
ros2 run rmf_demos_tasks dispatch_go_to_place -p patrol_B -F toio -R toio1
--use_sim_time が無いだけで、章3と同じコマンド。投げたら端末2のログに Direct request … queued が出たことを確認する(出なければもう一度)。
続けて巡回。A3の patrol_A patrol_D は、A4では patrol_A patrol_B:
ros2 run rmf_demos_tasks dispatch_patrol -p patrol_A patrol_B -n 3
第1部のsim動画を流用。左のRViz2の見え方は実機でも同じ。右のGazeboは実機には無く、代わりに目の前のマットでキューブが動く。
観察する
1. 位置が /toio1/toio/pose から来ていることを確かめる
章3では tf2_echo map toio1/base_link で位置を見た。実機ではアダプタがTFでなくtoio_ros2のposeトピックを購読している:
ros2 topic echo /toio1/toio/pose
走行中に値が更新され、/fleet_states(章2)のロボット位置と一致する。キューブを手で持ち上げてマットから離すとposeの更新が止まる ── マットのPosition IDを読んで位置を出しているため。これが章16で扱う「マット境界で位置を失う」現象の正体。
2. 一方通行ループを目で追う
patrol_A patrol_B の3周は、A3の往復(章4)と違ってループを同じ向きに回り続ける。patrol_B → patrol_A の復路も、来た道を戻らず approach_1 を経由して回り込む。RVizの緑の帯がループをなぞるのを見ながら、章11のnavグラフ図と照らす。
3. 完了後の帰還と、チャージャーへの最終区間
3周終わると finishing_request でチャージャーへ帰る(章4と同じ)。ただし最後の数cmはNav2でなくキューブ内蔵の走行で停まる。チャージャー頂点に設定されたDockイベントによるもので、実機だけの機能。詳しくは章14で扱うので、ここでは「最後にピタッと止まる」のを見ておく。
4. タスクの一生をログで追う
端末2の rmf_task_dispatcher と toio_fleet_adapter のログに、章3で読んだ「BidNotice → BidResponse → 落札 → NavigateToPose → completed」が同じ順で流れる。ログの読み方はsimと1行も変わらない。
理解する
差し替わったのは③だけで、コマンドもログもsimと同じ。違うのは位置の出どころと、走っている実体だけだ。ただし位置の出どころが変わると、失い方も変わる。TFはGazeboが出し続けるが、実機のposeはマット上にいる間しか出ない。フリート運用で「位置ロスト」が現実の問題になる入口がここで、章16で改めて扱う。
確認課題
-R toio2に変えてgo_to_place patrol_Aを投げ、toio2だけが動くことを確認する。/toio2/toio/poseも同時にechoしておく。- patrol中にキューブを一瞬持ち上げて戻す。
/toio1/toio/poseが止まって再開するのを見る。RMFの/fleet_statesの位置はその間どうなるか。
← 前章: 実機へ | 目次 | 次章: 実機で入札と交通調停 →