有料のMATLABライセンスなしでPythonで行うロボティクスとコンピュータビジョン
なぜロボティクスエンジニアは長い間MATLABを使い続けてきたのか
5~10年前にロボティクスを勉強していたり、業務としていた方なら、きっとMATLAB용 Robotics Toolboxを思い出すでしょう。Peter Corkeが1990年代に作成したこのライブラリは、長い間、学術界とエンジニアリングラボの標準的な存在でした。空間変換行列を構築したい、マニピュレータの軌道をプロットしたい、あるいは逆運動학을計算したい——そんな時は、すぐにMATLABを開いていたのです。
しかし、大きな欠点はすぐにわかります:ライセンス費用です。また、MATLABコードをモダンな本番環境に統合することも大きな課題です。数年前、著者はツール群を完全にPythonで書き直し、2023年に書籍『Robotics, Vision & Control』の第3版と、オープンソースのRVC3-pythonリポジトリを公開しました。
含まれる内容
このリポジトリには、4つの専門ライブラリを統一的にラップしたサンプルコードが含まれています:
- Robotics Toolboxは、運動学、動力学、マニピュレータ軌道を担当します。
- Machine Vision Toolboxは、画像処理、特徴点検出、ステレオビジョンを扱います。
- Spatial Maths Toolboxは、3D変換数学、四元数、Lie群SE(3)/SO(3)を担当します。
- BDSimは、動的システムとブロック線図のシミュレーションを支援します。
すべてのソースコードはMITライセンスで配布されています。手動の依存関係管理を避けるため、制作者はすべてを1つのパッケージにバンドルしています。
インタラクティブコンソールを使ったクイックスタート
開発者は便利なCLIユーティリティを作成しましたrvctool。必要なモジュール、数学関数、一般的なハードウェアの готовыеモデルがすべて事前にインポートされたIPythonセッションを起動します。
インストールは1コマンドで完了します:
pip install rvc3python
次に、ワーク環境を起動します:
rvctool
このコンソールは、MATLABの構文経験にヒントを得ています。行末のセミコロンを省略すると、式の結果が即座にターミナルに出力されます。同時に、Pythonのすべての利便性にも完全にアクセスできます。
数行で書くマニピュレータの運動学
Franka Emika Panda産業用ロボットのモデルを定義し、フレンジポーズを計算して、逆運動学の問題を解いてみましょう。
panda = models.ETS.Panda()
T = panda.fkine(panda.qz)
sol = panda.ikine_LM(SE3.Trans(0.4, 0.5, 0.2) * SE3.Ry(np.pi/2))
メソッドはSE3剛体変換行列を返し、ikine_LMメソッドはLevenberg-Marquardtアルゴリズムを使用して関節角度を求めます。
メソッドを呼び出すと、グラフィカルウィンドウが開き、関節スライダーを動かしてロボットのポーズが変化するのを観察できます。

画像処理とコンピュータビジョン
基本的なコンピュータビジョンのタスクには、重厚な外部フレームワークを接続する必要はありません。たとえば、2フレーム間のSIFT特徴点マッチングは次のようになります:
sf1 = Image.Read("eiffel-1.png", mono=True).SIFT()
sf2 = Image.Read("eiffel-2.png", mono=True).SIFT()
matches = sf1.match(sf2)
matches.subset(100).plot("w")
内部では、実績のあるNumPyとSciPyを使用しています。書籍第11章のディープラーニング例(ニューラルネットワークセグメンテーションなど)が必要な場合は、PyTorchが別のフラグで読み込まれます:
pip install rvc3python[pytorch]
制御システムシミュレーション
パッケージは特筆に値します。これは、重厚な開発環境なしでSimulinkの代替品を作成するための試みです。
ブロック線図は、直接Pythonコードで作成するか、グラフィカルエディタで視覚的にアセンブルできます。データは通常のJSONファイルに保存されます。既に25のチュートリアルモデルが含まれており、から直接実行できます。
実行前に覚えておくべきこと
始める前に、3つのポイントに注意する価値があります:
- 型注釈を積極的に使用しているため、Python 3.8以上が必要です。
- Apple Siliconチップ(M1/M2/M3)では、Open3Dでのレンダリングに不安定さが生じる可能性があります。プロジェクトWikiに対処法の専用ページがあります。
- コードはJupyter NotebookとGoogle Colabで動作しますが、複雑な3DアニメーションはWebインターフェースへのフレーム転送の特性により遅延する可能性があります。
このリポジトリが役立つ人
ロボティクスを教えていたり、論文を書いていたり、ナビゲーションアルゴリズムを研究中だったり、ROS 2のような重量級環境のセットアップなしで仮説を素早くテストしたい場合は、RVC3-pythonが大いに時間を節約してくれます。このプロジェクトは、変換行列用のカスタムラッパーを書く必要性を排除し、プロトタイピングの準備ができた基盤を提供します。
関連プロジェクト