✅ 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-alip → 192.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件のまま
■ 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
■ 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 の本編 も一緒に進めますので、いつでも言ってください。





