ロボットプログラミング

ロボット プログラミングとは?

ロボット プログラミングでは、ロボットによる環境の知覚、計画および決定、タスクの実行を有効にするためのコンピューター プログラムの記述が行われます。たとえば、地上用ロボットが建物内を自律的に移動するようプログラミングを行うには、検知と知覚、自己位置推定と環境地図作成、パスプランニングとパス追従、アクチュエータ制御などのタスクが必要です。

ロボット プログラミングには、一般的に以下の内容が含まれます。

  • ロボットによる、コンピューター ビジョンとディープラーニング アルゴリズムを用いたオブジェクト検出、分類と追跡、および動き推定のための環境知覚の実現
  • 自己位置推定と環境地図作成 (SLAM)、衝突回避、動作プランニング用アルゴリズムを介した自律的なロボットの実現
  • モデル予測制御、計算トルク制御、パス追従などの制御システムの設計によるロボットの動作制御
  • CPU、GPU、FPGA、マイクロコントローラーなど、さまざまな組み込みプラットフォームに接続されたセンサーやアクチュエータとの通信およびインターフェイス

ロボット プログラミングを始める際、エンジニアは通常、ロボットの意図する動作のステートマシン図を開発します。また、アルゴリズム開発には C/C++、Python®、Java®、MATLAB® などのプログラミング言語が使用され、ハードウェア抽象化、低水準デバイス制御、プロセス間のメッセージ伝達、およびハードウェア展開には、ロボット オペレーティング システム (ROS) などのミドルウェアが使用されています。

一般的なロボット プログラミングのワークフロー。

一般的なロボット プログラミングのワークフロー。

1 つの手順でのエラーが、ロボット プログラミングのワークフロー全体に影響を与えることはよくあります。ソフトウェアのモデル化とシミュレーションをすることで、プロトタイピング中に問題を特定して、実装エラーが生じるのを回避し、ロボットの生産段階や、さらには実稼働環境での使用中に問題が判明するという事態を避けることができます。また、システムをシミュレーションすることで、エンジニアは、プラットフォーム依存の心配なく、ロボットハードウェアにアクセスせずに制御パラメーターを調整して、システム設計を改良することができます。

MATLAB には、ロボット プログラミング向けの複数の組み込みアルゴリズムと関数が用意されています。たとえば、MATLAB ですぐに使えるディープラーニング アルゴリズムを数行作成するだけで、ロボットが環境内のオブジェクトを識別できるようになります。Simulink® には、ロボット プログラミング向けにモデルベースデザインを用いたモデル化とシミュレーションに使用できる、プリビルドのブロックが用意されています。たとえば、Simulink の ROS ブロックは、ロボットプログラマーがコードを記述しなくてもセンサーデータをサブスクライブ (受信) し、ROS ネットワーク上でロボットコマンドをパブリッシュ (送信) することを可能にします。

ROS ブロックを使用した Simulink におけるメッセージのパブリッシュおよびサブスクライブ。

ROS ブロックを使用した Simulink におけるメッセージのパブリッシュおよびサブスクライブ。例を参照。

ロボットのプログラミングに MATLAB や Simulink を使用することで、スケーラブルなロボット シミュレーションを構築して、プロトタイピング、概念モデルのテスト、低価格でのデバッグを行うことができます。これにより、残りのアルゴリズムを同じシミュレーション環境に保持したまま、高忠実度モデルを妥当性確認に使用することができます。ロボット シミュレーションで望ましい結果が得られたら、一般的なプログラミング言語で Simulink モデルから組み込みシステム用のスタンドアロン実行コードを生成することができます。MATLAB や Simulink から ROS ネットワークへの ROS 接続を使用すると、MATLAB や Simulink から直接 C++ ROS ノードを生成して、ROS 対応ロボットや Gazebo などのロボット シミュレーターでアプリケーションをテストし、検証することができます。

ロボット プログラミングの詳細については、Robotics System Toolbox™Navigation Toolbox™ROS ToolboxMATLAB、および Simulink を参照してください。


例および使用方法

検知と知覚

パスプランニングと決定

制御


ロボット プログラミングのソフトウェア リファレンス

参考: ロボティクスと自律システム, メカトロニクス, Simscape Multibody, Control System Toolbox, Stateflow, Automated Driving Toolbox, Computer Vision Toolbox, Embedded Coder, MATLAB Coder, Simulink Coder, PID 制御, 逆運動学, クラウドロボティクス