Skip to content
閲覧中:
2. vscode

了解です 👍 **ROS 2 を Python メインで開発**する前提で、 **VS Code のおすすめ拡張・設定・開発スタイル**を整理します。 (URDF / Nav2 / Gazebo と相性の良い構成です)


結論:PythonメインROS2開発の鉄板構成

🔥 必須プラグイン(最優先)

  1. Python (ms-python.python)
  2. ROS (ms-azuretools.vscode-ros)
  3. Pylance
  4. YAML (Red Hat)
  5. XML (Red Hat)

① Python(必須)

📦 Python(Microsoft公式)

できること

  • Python補完・型ヒント
  • 仮想環境管理
  • ros2 node / launch / script編集

重要設定

JSON
"python.defaultInterpreterPath": "/usr/bin/python3",
"python.analysis.typeCheckingMode": "basic"

② Pylance(超重要)

📦 Pylance

理由

  • rclpy の補完がちゃんと効く
  • launch.py の補完が強い
  • Nav2 の Action 型も補完される

おすすめ

JSON
"python.analysis.autoImportCompletions": true

③ ROS 拡張(ROS2開発の司令塔)

📦 ROS

できること

  • ワークスペース自動認識
  • ros2 run / launch をGUI実行
  • launch.py デバッグ
  • パッケージテンプレート作成

👉 Pythonメインでも 必須


④ YAML(Nav2 / Params用)

📦 YAML (Red Hat)

用途

  • Nav2 パラメータファイル
  • slam_toolbox 設定
  • controller / planner 設定

特にNav2では必須


⑤ XML(URDF / Xacro)

📦 XML (Red Hat)

URDF / xacro を Pythonで使う場合でも 編集・デバッグのため必須


⑥ あると便利(Python向け)

プラグイン 用途
Path Intellisense launch.py 内のパス補完
Black Formatter Pythonコード整形
isort import整理
Error Lens エラーの可視化

⑦ Python ROS2向け VSCode 設定(重要)

settings.json 推奨設定:

JSON
{
  "python.defaultInterpreterPath": "/usr/bin/python3",
  "python.analysis.extraPaths": [
    "/opt/ros/humble/lib/python3.10/site-packages",
    "${workspaceFolder}/install/**/lib/python3.10/site-packages"
  ],
  "python.analysis.typeCheckingMode": "basic",
  "editor.formatOnSave": true,
  "python.formatting.provider": "black"
}

👉 **これを入れないと rclpy が未定義扱い**されます。


⑧ Pythonで作るROS2パッケージの基本形

Bash
cd ~/ros2_ws/src
ros2 pkg create my_robot \
  --build-type ament_python \
  --dependencies rclpy geometry_msgs nav2_msgs

構成:

Text Only
my_robot/
├── my_robot/
│   ├── __init__.py
│   ├── node.py
│   └── navigation.py
├── launch/
│   └── bringup.launch.py
├── config/
│   └── nav2_params.yaml
├── urdf/
│   └── robot.xacro
├── setup.py
├── setup.cfg
└── package.xml

⑨ Python + Nav2 開発のポイント

✔ Action Client を使う

Python
from nav2_msgs.action import NavigateToPose

✔ launch.py で構成管理

Python
Node(
    package='my_robot',
    executable='node',
    output='screen'
)

✔ YAMLでパラメータ管理

Nav2は**Pythonで直接設定しない**


⑩ よくあるハマりどころ(重要)

問題 対策
rclpy が補完されない python.analysis.extraPaths
launch.py が赤線 Pylance + ROS拡張
Nav2 params 読めない YAMLインデント注意
Gazebo重い センサ数削減

次におすすめのステップ

次はかなり実践的になります👇

1️⃣ Pythonで差動二輪ロボット制御ノードを書く 2️⃣ PythonでNav2 Action Clientを書く 3️⃣ Python launch.py で Gazebo + Robot + Nav2 を起動 4️⃣ 最小構成Nav2(軽量)設定

どれからやりましょうか?