参考: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 の注意点
もっと深く知りたい部分はありますか?