以下に、**第三者が読んでも一発で原因と対策がわかる「完全版解決手順まとめ」**を作りました。 あなたが実際に行った調査プロセスも反映してあるので、そのまま共有できます。

✅ Moorebot Scout × ROS1 × PC(WSL1)

「カメラ映像が ROS に出てこない問題」完全解決まとめ

Moorebot Scout を ROS1(Melodic)で動かし、PC(ROS Noetic / WSL1)と連携するときに多くの人が遭遇するのが、
「/CoreNode/h264 や /CoreNode/jpg に何も流れてこない」 「rostopic echo が何も返さず固まる」
という問題です。 本ケースでは、 「Scout 本体は正常に映像を publish しているのに、PC 側で受信できない」 という症状でした。 原因は意外にも ネットワーク名解決(hostname 解決) でした。

🎯 結論(最短版)

原因: Scout が自分のホスト名を linaro-alip として ROS マスターに登録するが、 PC(WSL)がこの名前を解決できず、publisher に TCP 接続できないため、 rostopic echo が「何も出ないまま待ち続ける」状態になっていた。 解決策: PC の /etc/hosts へ以下を追加し、 linaro-alip192.168.11.7 の名前解決を可能にする。
192.168.11.7   linaro-alip
これで PC は SCOUT に直接接続できるようになり、映像もセンサも全て受信可能になる。

🔍 詳細まとめ(原因・調査・解決)

■ 1. 症状

  • /cmd_vel などは正常に動く(PC → SCOUT 通信はOK)
  • rostopic list には /CoreNode/h264/SensorNode/... が全部見える
  • しかし PC 側で rostopic echo -n 1 /CoreNode/h264 をしても 一切出てこない
  • /SensorNode/simple_battery_status も同様に 0件のまま
→ つまり PC はトピックの存在は見えるが、実データは受け取れない

■ 2. SCOUT 本体の状態は正常だった

Scout に SSH し、同じコマンドを実行すると…
rostopic echo -n 1 /CoreNode/h264
→ seq: ... data: [0,0,0,1,33,...](正常)
💡 Scout 本体は映像を正しく Publish していた。 → 問題は Scout 側ではなく、PC との接続ルートにあった。

■ 3. 原因:SCOUT のホスト名を PC が解決できていなかった

SCOUT 側の環境変数:
ROS_MASTER_URI=http://localhost:11311
ROS_IP=(空)
ROS_HOSTNAME=(空)
hostname -I → 192.168.11.7
ROS は ROS_IP が空の場合、 ホスト名(この場合 linaro-alip)で自分を名乗る。 結果:
  • SCOUT → master: OK
  • PC → master: OK
  • master → PC に「publisher は http://linaro-alip:xxxx/」と通知
  • PC は linaro-alip を DNS/hosts で解決できない
  • 接続できず、rostopic echo は無言で待ち続ける
という構図。

■ 4. 解決:WSL の /etc/hosts に 1 行追加

WSL の Ubuntu で:
sudo nano /etc/hosts
末尾に以下を追記:
192.168.11.7   linaro-alip
保存して ping テスト:
ping -c 2 linaro-alip
→ 192.168.11.7 に正常に通る
これにより、
  • ROS master が渡す publisher URI(linaro-alip:xxxxx)
  • PC 側の subscriber
の間で TCP コネクションが張れるようになり、映像・センサデータが受信可能へ。

■ 5. 修正後の動作確認

PC(WSL1)で:
rostopic echo -n 1 /SensorNode/simple_battery_status
→ status: [1, 87, 0]

rostopic echo -n 1 /CoreNode/h264
→ seq: ... / data: [0,0,0,1,33,...]
両方正常に1フレーム取得できる!

🟩 完全に解決したポイント

  • ROS ネットワークは正常に接続された
  • Scout 本体のカメラは正しく Publish されている
  • PC 側は /etc/hosts の修正で Publish 元と接続できるようになった
  • Teach & Repeat / VPR に必要な映像も PC で取得可能になった

📦 他の人が同じ問題に遭遇した場合のチェックリスト

1. rostopic list には出るのに、echo が何も出ない

名前解決 / Publisher への TCP 接続問題の可能性大

2. SCOUT 側で echo してみる

→ SCOUT 内で出るなら、PC 側の問題

3. PC 側 /etc/hosts に以下を追加:

192.168.11.7   linaro-alip

4. ping linaro-alip が通るか確認

→ yes なら ROS 通信も通るようになる

📝 最後に

この問題は ネットワーク + ROS の典型的な落とし穴で、 Moorebot Scout 固有ではなく ROS 全般でよく起こります。 「トピックは見えるのに echo が出ない」 という場合、まず「Publisher のホスト名が解決できているか」を疑ってください。
必要であれば、 この問題を英語版(GitHub Issues / Discord 用)にもまとめ直します。 また、次のステップ ▶ H.264 → 画像変換ノード ▶ Teach ロガー構築 ▶ VPR + Teach & Repeat の本編 も一緒に進めますので、いつでも言ってください。