Robot software is the set of coded commands or instructions that tell a mechanical device and electronic system, known together as a robot, what tasks to perform. Robot software is used to perform autonomous tasks. Many software systems and frameworks have been proposed to make programming robots easier.
Some robot software aims at developing intelligent mechanical devices. Common tasks include feedback loops, control, pathfinding, data filtering, locating and sharing data.
Robot software is a unique form of software that can be implemented in diverse ways. Each manufacturer uses their own proprietary software versions. While most software manipulates data causing on-screen results, robot software manipulates objects or tools in the real world.
Software for industrial robots consists of data objects and lists of instructions, known as program flow (list of instructions). For example,
Go to Jig1
It is an instruction to the robot to go to positional data named Jig1. Of course, programs can also contain implicit data for example
Tell axis 1 move 30 degrees.
Data and program usually reside in separate sections of the robot controller memory. One can change the data without changing the program and vice versa. For example, one can write a different program using the same Jig1 or one can adjust the position of Jig1 without changing the programs that use it.
Due to the highly proprietary nature of robot software, most manufacturers of robot hardware also provide their own software. While this is not unusual in other automated control systems, the lack of standardization of programming methods for robots does pose certain challenges. For example, there are over 30 different manufacturers of industrial robots, so there are also 30 different robot programming languages required. There are enough similarities between the different robots that it is possible to gain a broad-based understanding of robot programming without having to learn each manufacturer's proprietary language.[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の改訂版)」です。これには、産業用ロボットの設計、および工場現場における産業用ロボットの導入・統合・使用に関するガイドラインが含まれます。安全コントローラ、ティーチングモード中の最高速度、物理的バリアの使用など、数多くの安全概念が網羅されています。