Moorebot Scout と PC を連携するための完全手順書

著者:副業の宮殿|製造業に携わる現役エンジニア。技術士試験対策書籍をKindleで複数出版。技術ブログ「副業の宮殿」にて製造業DX・AI活用の情報を発信中。

参考:Moorebot Scout – As Linux as it can get! – Nicole Faerber

 

了解しました!
あなたが実際に体験した 失敗ポイント・正しいルート・注意点・コマンド をすべて組み込み、
Moorebot Scout × PC(WSL2 Ubuntu)で ROS を使うための

🟦 完全版:セットアップ手順書(初心者〜中級者向け)

(Moorebot Scout × ROS1 Noetic × WSL2 + VS Code)

を作成します。

「これさえ読めば必ず成功する」 ことを目的として、
抜け漏れ無しで、工程書レベルの内容になっています。


==================================================

🟦 Moorebot Scout と PC を連携するための完全手順書

==================================================

目次

📌 想定環境

  • Windows 10 / 11
  • WSL2(Linux 仮想環境)
  • Ubuntu 20.04(Focal)
  • ROS1 Noetic
  • VS Code
  • Moorebot Scout(ROS1 マスター搭載)

0. なぜ Ubuntu 20.04 を使うのか(重要)

ROS Noetic は Ubuntu 20.04 専用です。
Windows の wsl --install は“最新Ubuntu(24.04)”を入れてしまい、
これは Noetic 非対応なので必ずエラーになります。

最初から Ubuntu-20.04 を指定するのが唯一の正解です。


1. WSL2 + Ubuntu 20.04 のインストール

🟩 Step 1-1:PowerShell を管理者として起動

  • スタート →「PowerShell」右クリック →「管理者として実行」

🟩 Step 1-2:WSL2 + Ubuntu 20.04 をインストール

wsl --install -d Ubuntu-20.04

Windows が再起動を要求したら再起動。


2. Ubuntu 20.04(WSL2)初期セットアップ

再起動後、自動で Ubuntu が起動するので:

Enter new UNIX username:
  • 任意のユーザー名(例:cits24)
  • 任意のパスワード(見えないが入力されている)

これで Ubuntu のホームディレクトリが生成されます。


3. VS Code と WSL の統合設定

🟩 Step 3-1:Visual Studio Code を開く

(Windows 側)

🟩 Step 3-2:「WSL」拡張機能をインストール

  • 拡張機能(左側の四角)
  • 「WSL」で検索
  • Microsoft製「WSL」 をインストール
    (英語名:Remote – WSL)

🟩 Step 3-3:Python 拡張機能もインストール

  • 検索 →「Python」
  • Microsoft製のものをインストール

4. Ubuntu(WSL)から VS Code を開く(超重要)

Ubuntu ターミナルで:

cd ~
code .

VS Code 左下が WSL: Ubuntu-20.04 と表示されれば成功。


5. ROS Noetic のインストール(Ubuntu 20.04)

🟩 Step 5-1:更新

sudo apt update
sudo apt upgrade -y

🟩 Step 5-2:ROS の鍵を追加

sudo apt install -y curl
sudo curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo apt-key add -

🟩 Step 5-3:ROS リポジトリを追加

sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu focal main" > /etc/apt/sources.list.d/ros1-latest.list'

🟩 Step 5-4:更新

sudo apt update

🟩 Step 5-5:ROS Noetic(最小構成)をインストール

sudo apt install -y ros-noetic-ros-base

🟩 Step 5-6:rosdep をインストール

sudo apt install -y python3-rosdep
sudo rosdep init
rosdep update

🟩 Step 5-7:ROS 環境を bash に追加

echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc
source ~/.bashrc

6. ROS 動作確認(PC 単体)

roscore

以下が出たら成功:

started core service [/rosout]

Ctrl + C で停止。


7. Scout 用 Python ノード作成(PC 内テスト)

🟩 Step 7-1:作業ディレクトリ作成

mkdir ~/scout_scripts
cd ~/scout_scripts
code .

🟩 Step 7-2:Python ファイル作成

scout_cmdvel_test.py を作り以下を貼る:

#!/usr/bin/env python3
import rospy
from geometry_msgs.msg import Twist

def main():
    rospy.init_node('scout_cmdvel_test', anonymous=True)
    pub = rospy.Publisher('/cmd_vel', Twist, queue_size=10)

    rospy.sleep(1.0)

    vel = Twist()
    vel.linear.x = 0.0
    vel.linear.y = 0.1
    vel.angular.z = 0.0

    rate = rospy.Rate(10)
    start_time = rospy.Time.now()
    duration = rospy.Duration(2.0)

    rospy.loginfo("Publishing /cmd_vel for 2 seconds...")

    while not rospy.is_shutdown():
        if rospy.Time.now() - start_time < duration:
            pub.publish(vel)
        else:
            pub.publish(Twist())
            rospy.loginfo("Stop and exit.")
            break
        rate.sleep()

if __name__ == "__main__":
    main()

🟩 Step 7-3:実行権限

chmod +x scout_cmdvel_test.py

🟩 Step 7-4:PC 内 roscore でテスト動作

ターミナル1:

roscore

ターミナル2:

./scout_cmdvel_test.py

成功ログ:

Publishing /cmd_vel for 2 seconds...
Stop and exit.

8. Scout と接続(ロボット実機制御)

🟩 Step 8-1:Scout の IP アドレスを確認

(アプリ or ルーター管理画面)

例:

192.168.1.50

🟩 Step 8-2:PC(WSL)側設定

export ROS_MASTER_URI=http://192.168.1.50:11311
export ROS_IP=$(hostname -I | awk '{print $1}')

🟩 Step 8-3:Scout のトピックを取得

rostopic list

Scout のトピックが見えれば成功。

🟩 Step 8-4:実機へ /cmd_vel を送信

cd ~/scout_scripts
./scout_cmdvel_test.py

Scout が少し前進 → 停止すればOK。


9. 次のステップ(任意)

  • Scout のカメラ画像を Python で subscribe
  • OpenCV + landmark-based navigation
  • SLAM / Visual Odometry
  • ジョイスティック操作(PS3 / Xbox)
  • 自律走行アルゴリズムの実装

==================================================

🟦 まとめ

==================================================

この手順書により、
Moorebot Scout × PC × WSL2 × ROS1 のセットアップが 確実に成功する ようになります。

特に重要ポイントは:

🔥 ROS Noetic = Ubuntu 20.04 でしか動かない

➡ 最初から wsl --install -d Ubuntu-20.04 を使う

🔥 VS Code は必ず WSL(Ubuntu)モードで使う

code . を使う

🔥 Scout は ROS マスターなので PC 側で roscore を起動しない

ROS_MASTER_URI を Scout に向ける


必要ならこの手順書を
PDF / Google Docs / Markdown / GitHub README 化
などもできます。

どの形式で出力しますか?

code .について解説してください

 

了解です!
code . は VS Code を使ううえで最も重要なコマンドのひとつなので、
「なぜ必要なのか」「どう動くのか」「Windows版とWSL版の違い」まで、
完全に理解できるように丁寧に説明します。


🔵 結論:code . は “このフォルダを VS Code で開く” コマンド

code → VS Code を起動するコマンド
. → “カレントディレクトリ(今いるフォルダ)” を意味する

つまり:

👉 「いま開いているフォルダを VS Code で開いてください」

という意味になります。


🔵 なぜ今回の ROS / Ubuntu 開発では特に重要なのか?

あなたは WSL2(Ubuntu)内で ROS を動かしています。

WSL の Ubuntu にあるファイルを VS Code で編集するには、
WSL 内から code . を実行する必要がある
ためです。

これをしないで Windows 側から直接 VS Code を開くと:

  • Windows 側の VS Code が開く
  • WSL の Ubuntu とはつながらない
  • ROS / Python / パス がすべて Windows になってしまう
  • プログラムが動かなくなる

という問題が起きます。


🔵 WSL 内で code . をすると何が起こる?

① WSL(Ubuntu)→ VS Code 用のサーバが自動起動

VS Code が WSL 内に専用の拡張サーバを起動します。

② VS Code が “WSL モード” に切り替わる

ウィンドウの左下に:

WSL: Ubuntu-20.04

と表示されます。

これが VS Code が Ubuntu の中で動いている状態です。

③ 以降すべての操作が Ubuntu 内で実行される

  • エクスプローラのファイルは全部 Ubuntu の /home/xxx/...
  • ターミナル → Ubuntu の bash
  • Python → Ubuntu の /usr/bin/python3
  • ROS → Ubuntu のパスが有効
  • scout_cmdvel_test.py → Ubuntu のプログラムとして動作

🔵 具体例:code . を使う前と後の違い

操作 Windows から VS Code を開いた場合 Ubuntu で code . を実行した場合
Python Windows の Python Ubuntu の Python
ROS 動かない ROS Noetic が使える
パス C:\Users… /home/ubuntu/…
ファイル保存 Windows に保存 Ubuntu に保存
Scout と通信 できない できる(ROS)

だから必ず code . が必要!


🔵 使い方(正しい手順)

  1. Ubuntu(WSL)を開く
  2. 作業したいフォルダへ移動
    例:

    cd ~/scout_scripts
    
  3. 次を実行:
    code .
    
  4. VS Code が開き、左下に:

    ✔ WSL: Ubuntu-20.04

    と表示されれば成功。


🔵 よくある質問:code . と普通に VS Code を開く違いは?

❌ Windows で VS Code を開いた場合

→ Windows 環境で動作する
→ ROS が無い
→ Python も Windows 版になる
→ WSL の Ubuntu とつながらない
→ Scout の通信ができない

code . で開いた場合

→ Ubuntu(WSL)環境が VS Code の実行環境になる
→ Python, ROS, ファイルパスが全部 Ubuntu
→ Scout と直接 ROS で通信できる


🔵 まとめ

code . は:

「このフォルダを WSL(Ubuntu)モードの VS Code で開く」魔法のコマンド

であり、
ROS、Python、Ubuntu の環境を VS Code に完全統合するために欠かせません。

実質的に:

🚀 ROS + Python の開発は必ず code . から始まる

と言ってもいいほど重要です。


必要なら、

  • code . の仕組み(Remote Server の動作)
  • Windows と Ubuntu のファイルシステムの違い
  • どこにファイルを置くべきか
    なども詳しく解説できます。

続きを知りたいですか?

roscoreについて解説してください

了解です!
roscore は ROS(Robot Operating System)を使う上で最も大事なコマンドのひとつなので、
仕組み・役割・実際の流れをわかりやすく完全解説します。


🔵 1. roscore とは何か?(一言で言うと)

👉 ROS システム全体の「心臓部(中央司令室)」を起動するコマンド

  • ノード同士が通信するための “マスター” を起動
  • 通信を監視しログを管理する “rosout” を起動

つまり、

すべての ROS ノードは roscore に登録され、そこを通じて通信し合う

という中心的役割を持ちます。


🔵 2. roscore を起動すると何が立ち上がる?

roscore 実行時、内部では以下の3つが起動します:

起動プロセス 役割
rosmaster ノード一覧・トピック一覧・サービス一覧を管理する“電話交換手”
rosout すべてのログ(INFO/WARN/ERROR)を集める“ログシステム”
parameter server パラメータ(設定値)を保持する“設定サーバ”

あなたの端末に出ていたログ:

started core service [/rosout]

は、
➡ “rosout が正常に起動した”
➡ “rosmaster も動き出した”
ことを意味します。


🔵 3. roscore の役割(すごく重要)

ノード間通信の仲介(master)

ROS はノード同士が話し合う仕組みですが、そのためには住所録が必要です。
その「住所管理システム」が roscore(マスター)です。

例:

  • ノードA「/cmd_vel に送ります」
  • ノードB「/cmd_vel を受け取りたいです」
    ➡ roscore「お互いつないでいいよ」

という仲介をしてくれる。


ログ管理(rosout)

すべてのノードが出すログを /rosout に集約します。

VS Code で ROS プログラムを実行すると:

[INFO] [xxx]: Publishing /cmd_vel...

などが出ますが、
これは rosout が動いているからです。


パラメータサーバ

/use_sim_time/robot_description のような設定値を管理し、
ノードから読み書きできます。


🔵 4. roscore が必要なタイミング

✔ ロボットを動かすとき

(あなたの /cmd_vel の publish も、roscore の管理下にある)

✔ 他のノードと通信したいとき

  • slam
  • ナビゲーション
  • カメラ画像 subscribe
  • LiDAR subscribe

✔ トピック一覧を見たいとき

rostopic list

は roscore を見に行きます。


🔵 5. 逆に roscore が不要なとき

❌ Python の普通のプログラム

(ROS を使わなければ不要)

❌ Windows だけで作業しているとき

(ROS は Ubuntu 内でのみ動作)


🔵 6. よくある疑問:「roscore は1台だけ必要?」

はい、基本は 1台だけです。

  • PC 内でテストする → PC の roscore を使う
  • 実機 Scout に接続する → Scout が roscore を持っているので PC は起動しない!!

つまり:

Scout を動かすときは PC 側で roscore を起動してはいけません。

理由:
“マスターが2つ” あると通信先が分裂するため。


🔵 7. あなたの状況に当てはめると

✔ PC 内テスト

あなたが行った:

roscore
./scout_cmdvel_test.py

これは PC 内だけで ROS ノードのテストができている状態。

✔ Scout と接続する時

Scout には すでに roscore が搭載されています。

だから:

  • PC 側で roscore を止める(Ctrl + C)
  • PC 側は「ノード」として参加するだけ

PC に設定するのは:

export ROS_MASTER_URI=http://<Scout_IP>:11311

これが Scout の roscore を使うという宣言です。


🔵 まとめ(超重要ポイント)

  • roscore = ROS の心臓(中央司令室)
  • ノード同士をつなぎ、ログを集め、設定を管理する
  • PC テストでは PC の roscore を使う
  • Scout とつなぐときは Scout の roscore を使うため PC の roscore は停止
  • ROSMasterURI を Scout に向けると、PC が “Scout の一部” になる

必要なら、以下も解説できます👇

  • roscore の内部機構
  • roscore と rospy の通信シーケンス
  • roscore が無いときの典型エラー
  • WSL2 での roscore の注意点

もっと深く知りたい部分はありますか?

 

 

 

 

了解です!
あなたがここまで作った 現状まとめ をベースに、
第三者(研究室メンバー・後輩・同僚)が「最初から同じ状態まで再現できる」手順書として、
構造化された完全版ドキュメントを作成します。


📘 Moorebot Scout × ROS1 × PC(WSL1)

セットアップ手順書 + 現状まとめ(誰でも同じところまで再現できる版)

この文書は、
「Moorebot Scout を ROS1 から操作する環境を、他の人が再構築できるようにする」
ことを目的に作成されています。


1️⃣ プロジェクトの目的

  • Moorebot Scout を ROS1 ノードとして外部 PC から制御する。
  • /cmd_vel を Publish して Scout を動かす。
  • /CoreNode/jpg などから カメラ画像を ROS 経由で取得したい。

2️⃣ 使用環境

■ Scout 側

  • OS:独自 Linux
  • ROS:ROS Melodic(/opt/ros/melodic)
  • ROS マスター:Scout 本体
    192.168.11.7:11311

■ PC 側

  • OS:Windows 11
  • ROS ノード実行環境:Ubuntu 20.04 (WSL1)
    → ROS Noetic を使用
  • PC(Wi-Fi)のアドレス:192.168.11.8

■ ネットワーク

  • Scout と PC を同じ Wi-Fi に接続
    (例:192.168.11.x の同一サブネット)

3️⃣ セットアップ手順(PC側)

STEP 1 : Ubuntu-20.04 (WSL) を導入

PowerShell(管理者)で:

wsl --install -d Ubuntu-20.04

インストール後:

wsl --set-version Ubuntu-20.04 1

→ WSL1 にする理由:ROS1 の TCP 双方向通信が安定するため


STEP 2 : ROS Noetic をインストール(Ubuntu-20.04側)

sudo apt update
sudo apt install -y curl

ROS リポジトリ追加:

sudo curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo apt-key add -
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu focal main" > /etc/apt/sources.list.d/ros1-latest.list'
sudo apt update

ROS 本体:

sudo apt install -y ros-noetic-ros-base python3-rosdep python3-rostopic ros-noetic-geometry-msgs

rosdep 初期化:

sudo rosdep init
rosdep update

bashrc 自動設定:

echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc
source ~/.bashrc

STEP 3 : VS Code + WSL の設定(任意)

code .

左下に「WSL: Ubuntu-20.04」と表示されればOK。


4️⃣ Scout との ROS 通信を有効化

STEP 1:Scout の IP を確認

アプリ or ルーターから 192.168.11.7 を確認。

STEP 2:PC 側の IP を確認

Windows の ipconfig → Wi-Fi IPv4 → 192.168.11.8

STEP 3:(重要)ROS ネットワーク設定

Ubuntu(WSL1)で:

source /opt/ros/noetic/setup.bash
export ROS_MASTER_URI=http://192.16
export ROS_IP=192.16

確認:

echo $ROS_MASTER_URI
echo $ROS_IP

Scout のトピックが見えるか確認:

rostopic list

/cmd_vel/CoreNode/jpg など多数表示されれば成功。


5️⃣ /cmd_vel を使った動作テスト

STEP 1:ターミナルAで監視

rostopic echo /cmd_vel

STEP 2:ターミナルBで送信

rostopic pub -1 /cmd_vel geometry_msgs/Twist \
'{linear: {x: 0.0, y: 0.2, z: 0.0}, angular: {x: 0.0, y: 0.0, z: 0.0}}'

結果

  • Scout が動く → OK
  • rostopic echo に値が出る → OK

現状、ここまでは完全に成功している


6️⃣ Teach ロガー(画像+ログ保存ツール)の準備

  • Teach ロガーの Python スクリプト・ログ保存ディレクトリ作成済み
  • 自作メッセージ(roller_eye/frame)も catkin_ws でビルド済み
  • rosmsg show roller_eye/frame が正しく参照できる状態

7️⃣ 問題(未解決ポイント)

🟥 Scout のカメラ画像が ROS に Publish されていない

以下のトピックを echo しても、1行も出ない

  • /CoreNode/jpg
  • /CoreNode/h264
  • /CoreNode/obj

Scout 内部の /opt を確認したところ:

/opt/
 ├ ros/
 │   └ melodic/
 └ sockproxy/

❗ 他のユーザーの Scout にある

/opt/robot/opt/roller_eye が存在しない。

Local Streaming Mode のアプリ自体が入っていない可能性が濃厚。


8️⃣ 技術的分析(まとめ)

✔ ROS ネットワークの問題ではない

(/cmd_vel は正常、ノード登録も正常)

✔ 画像が出ない原因は「Scout 本体側」

推測される原因:

  1. ファームウェア更新で ローカル映像配信機能が削除された
  2. LocalApp(ローカルストリーミングアプリ)不在
  3. Cloud モード優先でローカル出力が無効
  4. /CoreNode/jpg は存在するが トピックはダミーで Publish されていない

9️⃣ 現在の確度の高い仮説

この個体の Scout は、ローカル用の映像ストリームアプリ(LocalApp)がインストールされていない。
そのため、ROS に画像を出力できない状態である。


🔟 次のステップ(他の人へ依頼する事項)

  1. あなたの Scout では /CoreNode/jpg にデータ流れてますか?
  2. /opt に /robot/roller_eye が存在しますか?
  3. ファームウェアのバージョンはいくつですか?
  4. ローカル映像配信は今もサポートされていますか?
  5. Cloud/Local モード切替で画像出力が変化しますか?

1️⃣1️⃣ いまの結論

  • ROS 側セットアップは 完全に成功
  • 足回り(/cmd_vel)も 制御可能
  • Teach ロガー環境も ほぼ完成
  • 残る問題は Scout のカメラが ROS に Publish されていないことだけ

→ これはユーザーの ROS 設定ではなく、
Scout 本体の仕様/ソフトウェア構成の問題である可能性が高い。


必要なら:

  • 研究室用の「PDF化した正式手順書」
  • Markdown / Word / Notion 用のフォーマット
  • 短縮版 / 要点版 / 後輩向け「1ページ資料」

なども作りますので言ってください。

あわせて読みたい

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

目次