ロボット プログラミングとは?
ロボット プログラミングでは、ロボットによる環境の知覚、計画および決定、タスクの実行を有効にするためのコンピューター プログラムの記述が行われます。たとえば、地上用ロボットが建物内を自律的に移動するようプログラミングを行うには、検知と知覚、自己位置推定と環境地図作成、パスプランニングとパス追従、アクチュエータ制御などのタスクが必要です。
ロボット プログラミングには、一般的に以下の内容が含まれます。
- ロボットによる、コンピューター ビジョンとディープラーニング アルゴリズムを用いたオブジェクト検出、分類と追跡、および動き推定のための環境知覚の実現
- 自己位置推定と環境地図作成 (SLAM)、衝突回避、動作プランニング用アルゴリズムを介した自律的なロボットの実現
- モデル予測制御、計算トルク制御、パス追従などの制御システムの設計によるロボットの動作制御
- CPU、GPU、FPGA、マイクロコントローラーなど、さまざまな組み込みプラットフォームに接続されたセンサーやアクチュエータとの通信およびインターフェイス
ロボット プログラミングを始める際、エンジニアは通常、ロボットの意図する動作のステートマシン図を開発します。また、アルゴリズム開発には C/C++、Python®、Java®、MATLAB® などのプログラミング言語が使用され、ハードウェア抽象化、低水準デバイス制御、プロセス間のメッセージ伝達、およびハードウェア展開には、ロボット オペレーティング システム (ROS) などのミドルウェアが使用されています。
一般的なロボット プログラミングのワークフロー。
1 つの手順でのエラーが、ロボット プログラミングのワークフロー全体に影響を与えることはよくあります。ソフトウェアのモデル化とシミュレーションをすることで、プロトタイピング中に問題を特定して、実装エラーが生じるのを回避し、ロボットの生産段階や、さらには実稼働環境での使用中に問題が判明するという事態を避けることができます。また、システムをシミュレーションすることで、エンジニアは、プラットフォーム依存の心配なく、ロボットハードウェアにアクセスせずに制御パラメーターを調整して、システム設計を改良することができます。
MATLAB には、ロボット プログラミング向けの複数の組み込みアルゴリズムと関数が用意されています。たとえば、MATLAB ですぐに使えるディープラーニング アルゴリズムを数行作成するだけで、ロボットが環境内のオブジェクトを識別できるようになります。Simulink® には、ロボット プログラミング向けにモデルベースデザインを用いたモデル化とシミュレーションに使用できる、プリビルドのブロックが用意されています。たとえば、Simulink の ROS ブロックは、ロボットプログラマーがコードを記述しなくてもセンサーデータをサブスクライブ (受信) し、ROS ネットワーク上でロボットコマンドをパブリッシュ (送信) することを可能にします。
ROS ブロックを使用した Simulink におけるメッセージのパブリッシュおよびサブスクライブ。例を参照。
ロボットのプログラミングに MATLAB や Simulink を使用することで、スケーラブルなロボット シミュレーションを構築して、プロトタイピング、概念モデルのテスト、低価格でのデバッグを行うことができます。これにより、残りのアルゴリズムを同じシミュレーション環境に保持したまま、高忠実度モデルを妥当性確認に使用することができます。ロボット シミュレーションで望ましい結果が得られたら、一般的なプログラミング言語で Simulink モデルから組み込みシステム用のスタンドアロン実行コードを生成することができます。MATLAB や Simulink から ROS ネットワークへの ROS 接続を使用すると、MATLAB や Simulink から直接 C++ ROS ノードを生成して、ROS 対応ロボットや Gazebo などのロボット シミュレーターでアプリケーションをテストし、検証することができます。
ロボット プログラミングの詳細については、Robotics System Toolbox™、Navigation Toolbox™、ROS Toolbox、MATLAB、および Simulink を参照してください。
例および使用方法
検知と知覚
パスプランニングと決定
制御
ロボット プログラミングのソフトウェア リファレンス
ロボットプログラミングに関するよくある質問
ロボットプログラミングは、ロボットが環境を認識し、計画や意思決定を行い、ナビゲーション、オブジェクト検出、アクチュエータ制御などのタスクを実行できるようにするコンピュータプログラムを書くことを指します。
一般的には C/C++、Python、Java、MATLAB が使用され、ハードウェア抽象化やデバイス制御のために ROS のようなミドルウェアと併用されることが多いです。
MATLAB は知覚、計画、制御のための組み込みアルゴリズムを提供し、Simulink はモデリング、シミュレーション、ROS 統合のための既製ブロックを提供しており、手動でコードを書くことなく開発できます。
シミュレーションは、プロトタイピング中に問題を発見して実装ミスを減らし、制御パラメータを調整してシステム設計を洗練させ、実機のロボットハードウェアにアクセスせずにテストを行えるようにします。
ROS (Robot Operating System) はハードウェア抽象化、低レベルのデバイス制御、プロセス間のメッセージパッシングに用いられるミドルウェアで、センサーやアクチュエータとの通信やハードウェアの展開を容易にします。
一般的には、コンピューター ビジョンやディープラーニング による知覚、SLAM (自己位置推定と環境地図作成) やモーション プランニングによる自律化、制御システムによる動作制御、組み込みプラットフォーム上のセンサーやアクチュエータとのインターフェースが含まれます。
はい。Simulink モデルから組み込みシステム向けの一般的なプログラミング言語によるスタンドアロン実行可能コードを生成でき、C++ ROS ノードを直接生成して、ROS 対応ロボットや Gazebo や Isaac Sim のようなシミュレータに展開できます。
See also: Industrial Automation and Machinery, Robotics and Autonomous Systems, ロボティクスと自律システム, メカトロニクス, Simscape Multibody, Control System Toolbox, Stateflow, Automated Driving Toolbox, Computer Vision Toolbox, Embedded Coder, MATLAB Coder, Simulink Coder, PID 制御, 逆運動学, クラウドロボティクス