了解です 👍 **ROS 2 を Python メインで開発**する前提で、 **VS Code のおすすめ拡張・設定・開発スタイル**を整理します。 (URDF / Nav2 / Gazebo と相性の良い構成です)
結論:PythonメインROS2開発の鉄板構成¶
🔥 必須プラグイン(最優先)¶
- Python (ms-python.python)
- ROS (ms-azuretools.vscode-ros)
- Pylance
- YAML (Red Hat)
- 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 型も補完される
おすすめ
③ 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 を使う¶
✔ launch.py で構成管理¶
✔ 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(軽量)設定
どれからやりましょうか?