ROS2とMoveIt2で視覚誘導マニピュレーションをゼロから作った話
本文:
物理AIのキャリアを目指す上で「マニピュレーション」は避けて通れない領域だと思い、Franka Pandaアームを使った視覚誘導ピックアンドプレースシステムを個人プロジェクトとしてゼロから作りました。
【背景】
実務ではモバイルロボットのソフトウェア開発をしていますが、マニピュレーション・sim-to-realの領域を深めたいという思いがありました。「動くものを作って初めて理解できる」という考えのもと、シミュレーション環境でフルパイプラインを実装することにしました。
【システム概要】
ROS2・MoveIt2・PyTorch・OpenCVを組み合わせた完全自律型のピックアンドプレースデモです。Gazebo上でFranka Pandaアームが、カラー物体を自律的に認識→把持→色分けして仕分けします。
パイプラインは4層構成:
- 合成カメラ(640×480トップダウン映像)
- Pythonビジョンノード(HSVカラー分離+ArUcoマーカー認識→3D座標変換)
- C++ワークスペースバリデーター(到達可能性の幾何学的チェック)
- Python FSMコントローラー(7ステート)→MoveIt2アクションサーバー
【一番苦労した点】
最も難しかったのは2D画像座標から3Dワールド座標への変換でした。ピンホールカメラモデルで投影変換を実装しましたが、カメラ座標系とロボットのworld座標系のズレでグリッパーが目標物から数センチずれてしまい、tf2のフレーム変換を一つひとつ確認しながらデバッグしました。
【学んだこと】
・C++とPythonの明確な役割分担(リアルタイム処理とML推論の分離)
・FSMによる複雑な行動制御の設計
・MoveIt2のアクションサーバー/クライアントパターン
・ワークスペース制約の幾何学的検証手法
GitHub: https://github.com/AungKaung1928/moveit_pickplace_demo