ロボットソフトウェアとは、ロボットと呼ばれる機械装置と電子システムに、実行すべきタスクを指示する、コード化されたコマンドまたは命令の集合体です。ロボットソフトウェアは、自律的なタスクを実行するために使用されます。ロボットのプログラミングを容易にするために、多くのソフトウェアシステムやフレームワークが提案されています。
ロボットソフトウェアの中には、知能を持つ機械装置の開発を目的としたものがある。一般的なタスクとしては、フィードバックループ、制御、経路探索、データフィルタリング、位置特定、データ共有などが挙げられる。
ロボットソフトウェアは、多様な実装方法が存在する独自のソフトウェア形態です。各メーカーは独自のソフトウェアバージョンを使用しています。ほとんどのソフトウェアはデータを操作して画面上の結果を表示しますが、ロボットソフトウェアは現実世界の物体やツールを操作します。
産業用ロボットのソフトウェアは、データオブジェクトと命令リスト(プログラムフロー(命令リスト)と呼ばれる)で構成されています。たとえば、
Jig1へ移動
これはロボットにJig1という名前の位置データに移動するように指示するものです。もちろん、プログラムには暗黙的なデータも含まれることがあります。
軸1を30度移動するように指示してください。
データとプログラムは通常、ロボットコントローラのメモリ内の別々の領域に格納されます。プログラムを変更せずにデータを変更したり、その逆も可能です。例えば、同じJig1を使用して別のプログラムを作成したり、Jig1を使用するプログラムを変更せずにJig1の位置を調整したりできます。
ロボットソフトウェアは独自性が非常に高いため、ロボットハードウェアのほとんどのメーカーは独自のソフトウェアも提供しています。これは他の自動制御システムでは珍しいことではありませんが、ロボットのプログラミング方法の標準化が欠如していることは、いくつかの課題をもたらします。たとえば、産業用ロボットのメーカーは30社以上あるため、必要なロボットプログラミング言語も30種類あります。異なるロボット間には十分な類似性があるため、各メーカーの独自言語を学習しなくても、ロボットプログラミングの幅広い理解を得ることが可能です。[ 1 ]
複数のメーカーのロボットを制御する方法の1つは、ポストプロセッサとオフラインプログラミング(ロボット工学)ソフトウェアを使用することです。この方法では、 Python(プログラミング言語)などの汎用プログラミング言語から、ブランド固有のロボットプログラミング言語を扱うことができます。[ 2 ]ただし、固定のオフラインコードをコンパイルしてロボットコントローラにアップロードしても、ロボットシステムは状態を認識できないため、環境の変化に応じて動作を適応させたり、回復したりすることはできません。現在、いくつかの異なるサードパーティツールを使用すれば、あらゆるロボットの統一されたリアルタイム適応制御が可能です。
以下に、公開されているロボットプログラミング言語の例をいくつか示します。
タスクを平易な言葉で説明すると:
P1(一般的に安全な位置)へ移動してください。 P2へ移動(P3へのアプローチ) P3(対象物を選択する位置)へ移動する 密着グリッパー P4へ移行(P5へのアプローチ) P5(オブジェクトを配置する位置)に移動します。 オープングリッパー P1に移動して終了する
VALは最初のロボット「言語」の1つであり、Unimateロボットで使用されていました。[ 3 ] VALの派生版は、Adept Technologyを含む他のメーカーでも使用されています。Stäubliは現在VAL3を使用しています。
プログラム例:
プログラムピックプレイス 1. P1を移動 2. P2を移動 3. P3を動かす 4. CLOSEI 0.00 5. P4を動かす 6. P5を動かす 7. OPENI 0.00 8. P1を動かす 。終わり
Stäubli VAL3プログラムの例:
始める movej(p1,tGripper,mNomSpeed) movej(appro(p3,trAppro),tGripper,mNomSpeed) movel(p3,tGripper,mNomSpeed) close(tGripper) movej(appro(p5,trAppro),tGripper,mNomSpeed) movel(p5,tGripper,mNomSpeed) open(tGripper) movej(p1,tGripper,mNomSpeed) 終わり
trApproは直交座標変換変数です。approコマンドと併用する場合、P2とP4の点をティーチする必要はありませんが、軌道生成のためにアプローチをピックアンドプレースの位置へ動的に変換します。
エプソンRC+(真空ピックアップの例)
機能ピックプレイス ジャンプP1 ジャンプP2 ジャンプP3 真空状態 0.1秒待つ ジャンプP4 ジャンプP5 真空オフ 0.1秒待つ ジャンプP1 フェンダー
ROBOFORTH( FORTHをベースにした言語)。
:ピックプレイスP1 P3グリップウィズドローP5グリップ解除ウィズドローP1 ;(Roboforthでは、場所への進入位置を指定できるため、P2とP4は不要です。)
明らかに、ロボットはグリッパーが完全に閉じるまで次の動作に進んではならない。上記のCLOSEIとGRIPの例では確認または許容時間が暗黙的に含まれているが、On vacuumコマンドでは十分な吸引を確保するために時間遅延が必要となる。
LEGO Mindstorms EV3プログラミング言語は、ユーザーが簡単に操作できるシンプルな言語です。LabVIEW で作成されたグラフィカルユーザーインターフェース (GUI) です。データではなくプログラムから始めるのが基本です。プログラムは、アイコンをプログラム領域にドラッグしてシーケンスに追加または挿入することで作成します。各アイコンに対して、パラメータ (データ) を指定します。たとえば、モーター駆動アイコンの場合は、どのモーターをどれだけ動かすかを指定します。プログラムが作成されると、テストのために Lego NXT の「ブリック」(マイクロコントローラ) にダウンロードされます。
スクリプト言語は、ソフトウェアアプリケーションを制御するために使用される高水準プログラミング言語であり、事前にコンパイルされるのではなく、リアルタイムで解釈、つまり「その場で翻訳」されます。スクリプト言語は汎用プログラミング言語である場合もあれば、アプリケーションやシステムプログラムの実行を拡張するために使用される特定の機能に限定されている場合もあります。RoboLogixなどの一部のスクリプト言語では、データオブジェクトがレジスタに格納され、プログラムフローはロボットのプログラミングに使用される命令のリスト、つまり命令セットを表します。
プログラミング言語は一般的に、データ構造やアルゴリズムをゼロから構築するために設計されているのに対し、スクリプト言語はコンポーネントや命令を連携させる、つまり「つなぎ合わせる」ことを目的としています。そのため、スクリプト言語の命令セットは通常、プログラミングプロセスを簡素化し、迅速なアプリケーション開発を可能にするために用いられる、合理化されたプログラムコマンドのリストとなっています。
もう一つ興味深いアプローチを紹介しよう。ロボットアプリケーションはすべて並列処理とイベントベースのプログラミングを必要とする。並列処理とは、ロボットが同時に2つ以上のタスクを実行することである。これには適切なハードウェアとソフトウェアが必要となる。ほとんどのプログラミング言語は、並列処理とその複雑さ(共有リソースへの同時アクセスなど)を処理するために、スレッドや複雑な抽象化クラスに依存している。URBIは、並列処理とイベントを言語セマンティクスの核に統合することで、より高いレベルの抽象化を提供する。
( face.visible )が真の場合、headPan.valにcamera.xfov * face.xを加算し、headTilt.valにcamera.yfov * face.yを加算する。上記のコードは、ロボットがカメラで撮影したビデオに映っている人間の顔を認識するたびに、ロボットの頭部が人間の顔を追跡するように、モーターheadPanとモーターを並行して動かします。headTilt
使用される言語に関わらず、ロボットソフトウェアの目的は、人々の役に立ったり楽しませたりするロボットアプリケーションを作成することです。アプリケーションには、コマンド&コントロールソフトウェアとタスクソフトウェアが含まれます。コマンド&コントロールソフトウェアには、遠隔操作ロボット用のロボット制御GUI、自律型ロボット用のポイントアンドクリックコマンドソフトウェア、工場内の移動ロボット用のスケジューリングソフトウェアなどがあります。タスクソフトウェアには、配送ルート、警備パトロール、見学ツアーなどを設定するためのシンプルなドラッグアンドドロップインターフェースや、特定のアプリケーションを展開するために作成されたカスタムプログラムなどがあります。汎用ロボットアプリケーションソフトウェアは、広く普及しているロボットプラットフォームに展開されます。
プログラミングエラーは、特に大型産業用ロボットにおいて、重大な安全上の問題となります。産業用ロボットは、そのパワーとサイズゆえに、プログラミングが不適切であったり、安全でない方法で使用されたりすると、深刻な怪我を引き起こす可能性があります。産業用ロボットは質量が大きく高速で動作するため、自動運転中に人間がロボットの作業エリアに留まることは常に危険です。システムは予期せぬタイミングで動作を開始する可能性があり、たとえ準備をしていても、多くの状況で人間は十分な速さで反応することができません。したがって、ソフトウェアにプログラミングエラーがなくても、部品の積み下ろし、部品の詰まりの解消、メンテナンスの実施など、人間の作業員や人間とのやり取りにおいて、産業用ロボットを安全にするために細心の注意を払う必要があります。ロボットの安全性に関する標準規格として認められているのは、ロボット産業協会(RIA)発行のANSI/RIA R15.06-1999「産業用ロボットおよびロボットシステムの安全要件に関する米国国家規格(ANSI/R15.06-1992の改訂版)」です。これには、産業用ロボットの設計、および工場現場における産業用ロボットの導入・統合・使用に関するガイドラインが含まれます。安全コントローラ、ティーチングモード中の最高速度、物理的バリアの使用など、数多くの安全概念が網羅されています。