参考: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ページ資料」
なども作りますので言ってください。