ロボットソフトウェア

ロボットソフトウェアとは、ロボットとして知られている機械装置および電子システムに、実行すべきタスクを伝えるコード化されたコマンドまたは命令のセットである。 ロボットソフトウェアは、自律的な作業を実行するために使用されます。 プログラミングロボットをより容易にするために、多くのソフトウェアシステムおよびフレームワークが提案されている。

一部のロボットソフトウェアは、インテリジェントな機械装置の開発を目的としています。 一般的なタスクには、フィードバックループ、制御、経路探索、データフィルタリング、データの検索と共有が含まれます。

前書き
それは特定のタイプのソフトウェアですが、それはまだかなり多様です。 各メーカーは独自のロボットソフトウェアを持っています。 ソフトウェアの大部分はデータの操作と結果を画面上で見ることですが、ロボットソフトウェアは現実世界のオブジェクトやツールを操作するためのソフトウェアです。

産業用ロボットソフトウェア
産業用ロボットのソフトウェアは、データオブジェクトと命令のリストで構成され、プログラムフロー(命令リスト)と呼ばれます。 例えば、

Jig1に行く

Jig1という名前の位置データに移動するようにロボットに指示します。 もちろん、プログラムには暗黙的なデータも含めることができます

軸1を30度移動させる。

データとプログラムは、通常、ロボットコントローラメモリの別々のセクションにあります。 プログラムを変更せずにデータを変更することも、その逆も可能です。 たとえば、同じJig1を使用して別のプログラムを書き込むことも、Jig1を使用するプログラムを変更せずにJig1の位置を調整することもできます。

産業用ロボットのプログラミング言語の例
ロボットソフトウェアの独占的な性質のため、ほとんどのロボットハードウェアメーカーも独自のソフトウェアを提供しています。 これは他の自動制御システムでは珍しいことではありませんが、ロボットのプログラミング方法の標準化の欠如は一定の課題を提起します。 たとえば、30種類以上の産業用ロボットメーカーが存在するため、30種類のロボットプログラミング言語が必要になります。 異なるロボット間には十分な類似点があるため、各メーカー固有の言語を習得しなくても、ロボットプログラミングを幅広く理解することが可能です。

複数の製造元からロボットを制御する1つの方法は、ポストプロセッサーとオフラインプログラミング(ロボット)ソフトウェアを使用することです。 この方法では、Python(プログラミング言語)などの汎用プログラミング言語からブランド固有のロボットプログラミング言語を処理することができます。 しかし、固定オフラインコードをコンパイルしてロボットコントローラにアップロードすることは、ロボットシステムが状態を認識することを可能にしないので、環境の変化に応じて動きを適応させて回復することはできない。 現在のところ、Actinではどのロボットでもリアルタイムの適応制御を統一できます。

公開されているロボットプログラミング言語の例を以下に示します。

単純な英語での仕事:
P1に移動する(一般的な安全な位置)
P2への移動(P3へのアプローチ)
P3に移動(オブジェクトを選択する位置)
グリッパを閉じる
P4に移動(P5へのアプローチ)
P5に移動(オブジェクトを配置する位置)
開いたグリッパ
P1に移動して終了する
VALは最初のロボット「言語」の1つであり、Unimateロボットで使用されていました。 VALのバリアントは、Adept Technologyを含む他のメーカーによって使用されています。 Stäubliは現在VAL3を使用しています。
サンプルプログラム:
PROGRAM PICKPLACE
1.移動P1
2. MOVE P2
3. MOVE P3
4. CLOSEI 0.00
5. MOVE P4
6. MOVE P5
OPENI 0.00
8. MOVE P1
。終わり
StäubliVAL3プログラムの例:
ベギン
movej(p1、tGripper、mNomSpeed)
movej(appro(p3、trAppro)、tGripper、mNomSpeed)
movel(p3、tGripper、mNomSpeed)
閉じる(tGripper)
movej(appro(p5、trAppro)、tGripper、mNomSpeed)
movel(p5、tGripper、mNomSpeed)
オープン(tGripper)
movej(p1、tGripper、mNomSpeed)
終わり
trApproはデカルト変換変数です。 approコマンドを使用すると、P2ポイントとP4ポイントを教える必要はありませんが、軌跡生成のためのピックアンドプレイスの位置へのアプローチを動的に変換します。
エプソンRC +(真空ピックアップの例)
機能PickPlace
ジャンプP1
ジャンプP2
ジャンプP3
真空状態
待ってください.1
ジャンプP4
ジャンプP5
真空をオフ
待ってください.1
ジャンプP1
手放す
ROBOFORTH(FORTHに基づく言語)。
:PICKPLACE
P1
P3 GRIP WITHDRAW
P5 UNGRIP紛失
P1
;
(Roboforthでは、場所の接近位置を指定できるため、P2とP4は必要ありません)。

明らかに、グリッパが完全に閉じられるまで、ロボットは次の移動を続けるべきではない。 上記のCLOSEIおよびGRIPの例では、確認または許容時間は暗黙的ですが、On vacuumコマンドでは、十分な吸引を確保するために時間の遅延が必要です。

他のロボットプログラミング言語

ビジュアルプログラミング言語
LEGO Mindstorms EV3プログラミング言語は、ユーザーが対話するための簡単な言語です。 LabVIEWで書かれたグラフィカルユーザインタフェース(GUI)です。 アプローチは、データではなくプログラムで始めることです。 プログラムは、アイコンをプログラム領域にドラッグし、シーケンスに追加または挿入することによって構築されます。 各アイコンについて、パラメータ(データ)を指定します。 たとえば、モーター駆動アイコンの場合、どのモーターをどれだけ動かすかを指定します。 プログラムが書き込まれると、テストのためにLego NXTの「ブリック」(マイクロコントローラ)にダウンロードされます。

スクリプト言語
スクリプト言語は、ソフトウェアアプリケーションを制御するために使用される高度なプログラミング言語であり、事前にコンパイルされる代わりに、リアルタイムで解釈されるか、または「オンザフライで翻訳される」と解釈されます。 スクリプト言語は、汎用プログラミング言語であってもよく、またはアプリケーションまたはシステムプログラムの実行を補強するために使用される特定の機能に限定されてもよい。 RoboLogixなどのスクリプト言語の中には、データオブジェクトがレジスタに存在するものがあり、プログラムフローは、ロボットのプログラミングに使用される命令または命令セットのリストを表します。

産業ロボットにおけるプログラミング言語
ロボットブランド言語名
ABB RAPID
コモーPDL2
ファナックカレル
川崎AS
Kuka KRL
ストーブリVAL3
安川情報
プログラミング言語は、データ構造とアルゴリズムを最初から構築するために設計されていますが、スクリプト言語は、コンポーネントと命令を一緒に接続または接着するためのものです。 したがって、スクリプト言語命令セットは、通常、プログラミングプロセスを単純化し、迅速なアプリケーション開発を提供するために使用されるプログラムコマンドの合理化されたリストである。

パラレル言語
別の興味深いアプローチが言及に値する。 すべてのロボットアプリケーションには、並列処理とイベントベースのプログラミングが必要です。 並列性は、ロボットが同時に2つ以上のことをする場所です。 これには、適切なハードウェアとソフトウェアが必要です。 ほとんどのプログラミング言語は、スレッドや複雑な抽象クラスに依存して、共有リソースへの同時アクセスなど、並列性とそれに伴う複雑さを処理します。 URBIは、言語セマンティクスの中核である並列処理とイベントを統合することにより、より高いレベルの抽象化を提供します。

いつでも(face.visible)
{
headPan.val + = camera.xfov * face.x
&
headTilt.val + = camera.yfov * face.y
}

上記のコードは、headPanとheadTiltの2つのモーターを平行移動させて、カメラが撮影したビデオで人間の顔がロボットの顔に見えるようにします。

ロボットアプリケーションソフトウェア
どの言語が使用されていても、ロボットソフトウェアの最終的な結果は、人を助けたり楽しませるロボットアプリケーションを作成することです。 アプリケーションには、コマンドおよび制御ソフトウェアとタスクソフトウェアが含まれます。 コマンド/制御ソフトウェアには、遠隔操作ロボットのためのロボット制御GUI、自律型ロボットのためのポイント・アンド・クリック・コマンド・ソフトウェア、および工場内の移動ロボットのためのソフトウェアスケジューリングが含まれる。 タスクソフトウェアには、配信ルート、セキュリティパトロール、ビジターツアーを設定するための単純なドラッグアンドドロップインターフェイスが含まれています。 特定のアプリケーションを展開するために作成されたカスタムプログラムも含まれています。 汎用ロボットアプリケーションソフトウェアは、広く分散されたロボットプラットフォームに配備されています。

安全性に関する考慮事項
プログラミングエラーは、特に大型の産業用ロボットでは、安全上の重大な考慮事項になります。 産業用ロボットのパワーとサイズは、誤ってプログラムされたり、安全でない方法で使用されたりすると、重大な傷害を与える可能性があることを意味します。 産業用ロボットの質量および高速度のために、自動運転中に人間がロボットの作業領域に留まることは常に安全ではない。 システムは予期せぬ時間に動作を開始することができ、人間はそうする準備ができていても、多くの状況で十分迅速に反応することができません。 したがって、ソフトウェアにプログラミングエラーがなくても、人間の作業者や人間とのやりとりに安全な産業用ロボットを作るには、部品の出し入れ、部品の詰まりの解消、メンテナンスなどに細心の注意を払う必要があります。 ロボット産業協会のANSI / RIA R15.06-1999米国産業用ロボットとロボットシステムの国家規格 – 安全要件(ANSI / RIA R15.06-1992の改訂版)の本は、ロボットの安全に関する標準として認められています。 これには、産業用ロボットの設計と、工場用床での産業用ロボットの実装または使用の両方に関するガイドラインが含まれます。 安全コントローラ、教示モード中の最大速度、物理的障壁の使用など、数多くの安全概念がカバーされています。

ロボット工学ソフトウェアプロジェクト
以下は、ロボットプロジェクトのためのオープンソースおよびフリーソフトウェアのリストです。

ロボット自律のためのCLARAty – Coupled-Layerアーキテクチャ NASAジェット推進研究所、NASAエイムズ・リサーチ・センター、カーネギー・メロン、ミネソタ大学の4つの機関の共同作業です。
dLife – Robotics、AI、およびVision用のフリー/オープンソースのJavaライブラリ。 Pioneer、Khepera II& II、Hemission、Aibo、Finchロボット、プレイヤー/ステージシミュレーションなどがあります。
Experimental Robotics Framework – 複数のロボットを3Dで実験し、最新の技術をサポートするソフトウェアで、Player / StageとOpen / CVの上に座っています。
MARIE – モバイルと自律ロボティクスの統合環境 – 既存のソフトウェアコンポーネントと新しいソフトウェアコンポーネントを統合してロボットソフトウェアシステムを構築するコンポーネントベースのアプローチを使用するフリーソフトウェアです。
マイクロソフト – Microsoft Robotics Developer Studio
OpenRDK – 疎結合モジュールを開発するためのロボット工学のためのオープンソースソフトウェアフレームワーク。 透過的な並行性管理、プロセス間(ソケット経由)、プロセス内(共有メモリ経由)の黒板ベースの通信、および入出力データポートの概念的なシステム設計を可能にするリンク技術を提供します。 シミュレータと汎用ロボットドライバに接続するためのモジュールが用意されています。
OpenRTM-aist – RTミドルウェア標準に基づいて開発されたソフトウェアプラットフォーム。 独立行政法人産業技術総合研究所により開発されました。
OROCOS – オープンロボット制御ソフトウェアプロジェクトは、リアルタイムのロボットアームおよび工作機械制御のためのフリーソフトウェアツールキットを提供します。
OPRoS – Open Platform Robotic Servicesは、ロボット開発のためのオープンソースプロジェクトです。 ロボットプラットフォームコンポーネントとGUI開発ツールを含むソリューションを、ロボットデバイスコンポーネントのソースコードとともに提供します。
RoboDK – 産業用ロボットをシミュレートするロボット開発キットプラットフォーム。 RoboDKでは、Pythonを使用して任意のロボットをプログラミングすることができ、ロボットコントローラに応じてブランド固有の構文を処理します。
Robotics Libraryは、いくつかのロボットのための運動学、計画、可視化、およびハードウェアドライバを扱うオープンソースのC ++ライブラリです。
Robotics Toolbox for MATLAB – これは、姿勢(同次変換、オイラーとRPY角度、四元数)、腕ロボット(前進/逆運動学および動力学)および移動ロボット(制御、ローカリゼーションおよび計画)を表現するための機能を提供するフリーソフトウェアです。
Rossum Project、GW Lucas、オープンソースロボットプロジェクト。
Player / Stage Project – 世界中でロボット研究と教育に使用されている非常に普及しているフリーソフトウェアのロボットインタフェースとシミュレーションシステムです。
Pyro、Python Robotics – ポピュラーロボティクス大学やカレッジで使用されるフリーソフトウェア。
RoboMind – ロボットとプログラミングの基礎を学ぶための教育用ソフトウェア。
ロボットオペレーティングシステム – ロボットオペレーティングシステムは、PythonとC ++を使用したロボットプログラミングのオープンソースプラットフォームです。 Java、Lisp、Lua、Pharoはサポートされていますが、まだ実験段階です。
ロボットインテリジェンスカーネル

オフラインプログラミング
ビジュアルコンポーネントは、1つのプラットフォーム上でマテリアルフローとロボットシミュレーションを可能にする市販の3D離散事象シミュレーションソフトウェアです。 この機能は、オフラインプログラミング機能とPLC接続で拡張できます。
“基本 – ロボットソフトウェア”。 シアトルロボティクス協会。
“移動自律ロボットソフトウェア(MARS)”。 ジョージアテックリサーチコーポレーション。
“技術データベース”。 robot.spawar.navy.mil。
アイダホ国立研究所のアダプティブロボティクスソフトウェア

オンライン制御
Energid Technologiesは、C ++で書かれたロボットツールキット、最適化エンジン、および制約管理システムであるアクチンSDKを開発し、販売しています。このシステムでは、Jacobianベースのキネマティクスを使用してあらゆるタイプのロボットで性能を最適化します。 ActinはSDKとして販売されているため、白いラベルを付けたり、他のロボット制御ソフトウェアパッケージにOEMで組み込むことができます。 このアプローチにより、ユーザーはGUIを介してオフラインモードで既知のシステムの制御を開発し、アクチンはハイレベルのオンライン制御を処理してリアルタイムでロボット/コントローラに更新された関節レベルのコマンドをリアルタイムでストリーミングし、感知された環境変化に