WSL2環境でのMoveIt Proインストールガイド

## 概要
Moveit ProをWSL2上にインストールする方法について解説します。
Moveit Proを使用するには有料のライセンスを取得する必要があります（今回は省略）

## MoveIt Proとは

MoveIt Proは、PickNik Roboticsが開発した商用グレードのロボット制御ソフトウェアプラットフォームです。オープンソースのMoveIt 2をベースにしながら、より高度な機能と使いやすさを提供しています。MoveIt Proは、特に非構造化環境でのロボットアプリケーション開発を迅速化するために設計されています。

### MoveIt 2との主な違い

MoveIt Proは、オープンソースのMoveIt 2と比較して以下のような特徴があります：

1. **商用グレードの信頼性**: 産業用途に耐えうる安定性とサポートを提供
2. **視覚的なプログラミング環境**: 直感的なドラッグ＆ドロップインターフェースを通じて、複雑なロボット制御アプリケーションを構築可能
3. **機械学習と高度なアルゴリズム**: リアルタイムの物体認識や動的な経路計画など、AIを活用した高度な機能を提供
4. **豊富な組み込み機能**: 200以上の事前構築された「ビヘイビア」（動作）を提供
5. **デジタルツイン**: 高精度なシミュレーション環境でアプリケーションを開発・テスト可能
6. **ハードウェア非依存**: あらゆるROSベースのロボットハードウェアと互換性がある
7. **プロフェッショナルサポート**: 技術的サポートとトレーニングを提供

## インストール要件

MoveIt ProをWSL2環境にインストールするための要件は以下の通りです:

- WSL2（Windows Subsystem for Linux 2）
- Ubuntu 22.04以降（この記事ではUbuntu 24.04を使用）
- 十分なディスク容量（最低20GB）
- 十分なメモリ（最低8GB、推奨12GB以上）

## インストール手順

以下の手順に従って、WSL2環境にMoveIt Proをインストールします。

### 1. Dockerのインストール

MoveIt ProはDockerを使用して実行環境を構築します。まず、Dockerをインストールします。

```bash
# Dockerがインストールされているか確認
docker run hello-world

# インストールされていない場合は以下のコマンドでインストール
sudo apt-get install curl
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
sudo groupadd docker
sudo usermod -aG docker $USER
sg docker "newgrp $(id -gn)"
```

インストール後、ログアウトして再度ログインするか、以下のコマンドを実行してDockerグループの変更を反映させます：

```bash
newgrp docker
```

以下のコマンドでDockerが正常に動作することを確認します：

```bash
docker run hello-world
```

### 2. NVIDIA GPU対応（オプション）

NVIDIA GPUを使用する場合は、NVIDIA Container Toolkitをインストールする必要があります：

```bash
# GPGキーとリポジトリの追加
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \
&& curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \
sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list

# パッケージリストの更新
sudo apt-get update

# NVIDIA Container Toolkitのインストール
sudo apt-get install -y nvidia-container-toolkit

# DockerでNVIDIA GPUを使用できるように構成
sudo nvidia-ctk runtime configure --runtime=docker

# Dockerデーモンを再起動
sudo service docker restart
```

インストールが成功したかを確認するには：

```bash
docker run --gpus all nvidia/cuda:11.8.0-base-ubuntu22.04 nvidia-smi
```

### 3. MoveIt Proのインストール

**重要**: WSL2環境では、最新バージョン（8.0.x以降）のMoveIt Proをインストールする際に問題が発生することがあります。これは、最新バージョンがWSL2環境で完全にサポートされていない機能（zram-config）に依存しているためです。そのため、バージョン7.7.1を使用することをお勧めします。

```bash
# 7.7.1バージョンをダウンロード
curl -Lo /tmp/moveit-pro-7.7.1-any.deb https://github.com/PickNikRobotics/moveit_pro_deb/raw/main/picknik/moveit-pro-7.7.1-any.deb

# インストール
sudo apt install /tmp/moveit-pro-7.7.1-any.deb
```

注意：リリース候補（RC）バージョン（例：`moveit-pro-7.7.1-rc1-any.deb`）ではなく、正式リリースバージョン（`moveit-pro-7.7.1-any.deb`）を選択してください。

### 4. 設定ディレクトリの権限を修正

インストール後、設定ディレクトリの所有権を修正する必要がある場合があります：

```bash
sudo chown -R $USER:$USER ~/.config/moveit_pro/
```

### 5. MoveIt Proの初回起動

以下のコマンドでMoveIt Proを起動します：

```bash
moveit_pro run
```

ここで毎回ライセンスキーを入力する必要があります。

初回実行時には、必要なDockerイメージのダウンロードと構築が行われ、設定に関するいくつかのプロンプトが表示されます。推奨設定に従って進めてください。

MoveIt Pro Runtimeがバックグラウンドでロードされ、MoveIt Pro開発者プラットフォームのUIが準備されるため、Windows側のブラウザでアクセスします（http://localhost:80 ）。

ブラウザでMoveit Proの画面が起動した後に画面左の「Application - Basic Examples」などを押せばサンプルが動きます。

## WSL2環境での最適化

### メモリ割り当ての調整

WSL2では、MoveIt Proのような計算集約型アプリケーションが快適に動作するよう、適切なリソース割り当てが重要です。Windowsの`%UserProfile%`ディレクトリに`.wslconfig`ファイルを作成または編集し、以下の設定を行いましょう：

```
[wsl2]
memory=12GB  # 利用可能なRAMに合わせて調整
processors=8  # 利用可能なCPUコア数に合わせて調整
```

設定後は、WSL2を再起動してください：

```powershell
# Windowsのコマンドプロンプトまたはパワーシェルで実行
wsl --shutdown
```

## サンプルアプリケーションの実行

MoveIt Proには様々なサンプル「ロボット構成」が付属しています。以下のコマンドで利用可能な構成を確認できます：

```bash
moveit_pro run --list
```

代表的なサンプルの実行例：

```bash
# 研究室環境のシミュレーション
moveit_pro run -c lab_sim

# 飛行機格納庫での貨物箱を移動するモバイルマニピュレータ
moveit_pro run -c hangar_sim

# エンジンブロック加工のシミュレーション
moveit_pro run -c grinding_sim
```

## トラブルシューティング

### DockerDNSの問題

WSL2環境では、Dockerのネットワーク構成が長時間実行されると劣化する既知の問題があります。以下のコマンドでDockerを再起動することで解決できる場合があります：

```bash
sudo service docker restart
```

### GPUが認識されない場合

GPUが正しく認識されない場合は、以下を確認してください：

1. Windowsホスト側でNVIDIAドライバーが最新バージョンであること
2. WSL2のGPUサポートが有効になっていること（`wsl --update`で更新）
3. NVIDIA Container Toolkitが正しく設定されていること

## 参考リンク

- [MoveIt Pro 公式ドキュメント](https://docs.picknik.ai/)
- [MoveIt Pro GitHub リポジトリ](https://github.com/PickNikRobotics/moveit_pro_deb)
- [NVIDIA Container Toolkitのインストールガイド](https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html)
- [WSL2のドキュメント](https://learn.microsoft.com/ja-jp/windows/wsl/)