JAKA プログラムスクリプト
JAKA プログラミングスクリプト(以下 JKS と略す)は、JAKA ロボットを制御するための専用プログラミング言語です。
ユーザーは、JKS で定められた構文に従ってプログラミングを行い、ロボットを制御することができます。
プログラミングスクリプトの基礎
基本構文
識別子
JKS では、識別子は大文字と小文字を区別せず、命名には次のルールを満たす必要があります。
- 英字、数字、およびアンダースコアのみを使用できます。
- 最初の文字は数字にしてはいけません。
- キーワードを識別子として使用することはできません。
- 最大で255文字まで対応していますが、30文字以内にすることを推奨します。
例:
_var1 = 1
var2 = 1
VAR3 = 1
_2KDDinKAEld74Zl8WzKP = 1
# 不正
4VAR = 1
if = 1
予約キーワード
以下の表は、JKS における予約語を示しています。
これらの予約語は、定数、変数、またはその他の識別子名として使用することはできません。
| and | exec | not |
|---|---|---|
| assert | finally | or |
| break | for(フォー) | pass(パス) |
| class(クラス) | from(フロム) | print(プリント) |
| continue(コンティニュー) | global(グローバル) | raise(レイズ) |
| def(デフ) | if(イフ) | return(リターン) |
| del(デル) | import(インポート) | try(トライ) |
| elif(エリフ) | in(イン) | while(ホワイル) |
| else | is(イズ) | with(ウィズ) |
| except(エクセプト) | lambda(ラムダ) | yield(イールド) |
スクリプトのコメント
JKS は単一行コメントをサポートしますが、複数行コメントはサポートしていません。
単一行コメントは # で始まります。
例:
# 最初のコメント
str = "こんにちは、世界!"
文
JKS は単一行の文のみをサポートします。
1 行の文を複数行に分割して書くことや、1 行に複数の文を書くことはサポートされていません。
基本型
JKS はスカラー、文字列、および配列の 3 種類の基本データ型をサポートします。
配列を基礎として、ユーザーは事前定義されたシステム変数を使用できます。
スカラー
JKS はブール型、整数型、および浮動小数点型を区別しません。
ブール型では、false は 0、true は 1 に対応します。
例:
var = 1
# または
var = 1.0
# または
var = (expr1 > expr2)
文字列
ユーザーが文字列を定義する場合は、英語の二重引用符 ("") を使用して囲む必要があります。
現在 JKS がサポートしているエスケープ文字は以下の表の通りです。ユーザーは文字列を定義する際に注意しないと解析エラーを引き起こす可能性があります。
| エスケープ文字 | 説明 |
|---|---|
| \\ | バックスラッシュ記号 |
| \’ | シングルクォーテーション |
| \” | ダブルクォーテーション |
| \n | 改行 |
| \t | 横方向タブ |
| \r | 復帰 |
例:
string = "これは \"文字列\" です"
string = "これは文字列です \n"
配列
配列は同じデータ型のデータをまとめて格納するコンテナです。
現在サポートされているのはスカラー型のデータのみであり、文字列配列や配列の入れ子構造はサポートされていません。
配列の定義
- 構文形式:
arr = [...] # 配列を定義する arr = [] # 空の配列を定義する単一要素の負のインデックスアクセス
配列変数arrayの長さをNとすると、単一要素へのアクセスは次の形式をサポートします:[arrayindex]。
要素インデックスは負の値をサポートし、index の範囲は[ -N から N-1 です]。
index が非負の値の場合、要素アクセスは次の関係を満たします:
arrayindex[] = array[-N+index]
index の値がサポート範囲外の場合、配列アクセスが範囲外であるというエラーを報告し、プログラムの実行を終了します。
例:
a = [1,2,3,4,5,6,7,8,9,0]
b = a[-10] # b = a[0]
b = a[-11] # エラー:配列アクセスが範囲外です
- 配列のサブレンジアクセス
指定した配列の範囲内で指定間隔の部分列にアクセスし、配列として返すことをサポートします。
配列サブレンジへのアクセスの具体的な形式は次のとおりです: [arraystartIndx:endIndex:step]
stepが0の場合、プログラムはエラーを報告し、実行を停止します。
それ以外の場合、たとえstartIndex、endIndex、stepが論理条件を満たさなくても(配列の範囲を超えても)エラーは発生せず、指定された配列の有効範囲内で条件を満たす値のみが返され、存在しない場合は空の配列が返されます。
Stepが1の部分区間アクセスの特別な形式が提供されており、Stepパラメータは省略可能です:[arraystartIndex,endIndex]
例:
a = [1,2,3,4,5,6,7,8,9,0]
b = a[0:5] #[1, 2, 3, 4, 5]
b = a[-5:10:1] #[6, 7, 8, 9, 0]
- 配列と姿勢の表現
JKSでは、6要素の配列を使用してロボットの関節位置または空間姿勢を表します。長さの単位はmm、角度の単位は°です。
例:
endPosJ = [90,90,90,90,90,90] #関節空間位置配列
endPosL = [663.5,8.159996,6.950005,90,0,0] #デカルト空間位置配列
システム変数
作業プログラム内で定義された変数は、プログラムの実行終了後に解放されます。
値を永続的に保持したい変数について、JKSはシステム変数の仕組みを提供しています。
システムはプログラム内で直接使用でき、値を変更して終了または電源を切っても、その値は保持されます。
システム変数はスカラー型のみをサポートしており、現在ユーザーが使用できるシステム変数の最大数は100個です。そのアクセス方法は次のとおりです:
sysvarid[]、ここでid∈[5500, 5599]
例:
sysvar[5500] = 100
a = sysvar[5500]
ヒント:
システム変数は現在、負のインデックスや区間アクセスには対応していません。
式
算術演算子
算術演算子は四則演算を行うために使用され、演算子の優先順位に従ってグループ化されます。(*、/、%、**)の優先順位は(+、-)よりも高くなります。
優先順位の高い演算子は低い演算子よりも強く結合し、以下の表に示す演算子は左結合律に従います。つまり、同じ優先順位の場合は左から右の順に処理されます。
| 演算子 | 機能 | 使い方 |
|---|---|---|
| * | 乗算 | expr * expr |
| / | 除算 | expr / expr |
| % | 剰余 | expr % expr |
| ** | べき乗 | expr ** expr |
| + | 加算 | expr + expr |
| - | 減算 | expr - expr |
論理および関係演算子
関係演算子は算術型に対して作用し、論理演算子はブール値に変換できる任意の型に対して作用します。
論理演算子と関係演算子の戻り値の型はどちらもブール型です。
| 結合律 | 演算子 | 機能 | 使い方 | サポートされている入力データ型 |
|---|---|---|---|---|
| 右 | ! | 論理否定 | !expr | 整数型 |
| 左 | && | 論理積(AND) | expr && expr | 整数型 |
| 左 | II | 論理和(OR) | expr II expr | 整数型 |
| 左 | < | より小さい | 式 < 式 | 整数型、文字列 |
| 左 | > | より大きい | 式 > 式 | 整数型、文字列 |
| 左 | == | 等しい | 式 == 式 | 整数型、文字列、配列 |
| 左 | != | 等しくない | 式 != 式 | 整数型、文字列、配列 |
| 左 | <= | 以下 | 式 <= 式 | 整数型、文字列 |
| 左 | >= | 以上 | 式 >= 式 | 整数型、文字列 |
ビット演算子
ビット演算子は整数型のオペランドに対して作用し、オペランドをビットの集合として扱います。現在は排他的論理和(XOR)演算のみをサポートしています。
ビット演算子(左結合):
| 演算子 | 機能 | 使い方 |
|---|---|---|
| ^ | 排他的論理和 | 式 ^ 式 |
文
通常、文は順に実行されます。
しかし、最も単純なプログラムでない限り、順次実行だけでは不十分です。そのため、JKS はより複雑な実行制御をサポートするために一連の制御フロー文を提供します。
単純文
JKS では、文は個別の行に記述する必要があり、ほとんどの文では終端記号は不要です。
単純文には、式文、関数呼び出し文などが含まれます。
条件文
- if...end 文
if文の役割は、指定された条件が真であるかどうかを判定し、その結果に基づいて別の文を実行するかどうかを決定することです。
if文には2つの形式があり、1つはelse分岐を含むもの、もう1つは含まないものです。
構文形式は次のとおりです:
if(condition):
statement
end
例:
condition = get_digital_output(0,1)
if(condition):
endPosJ = [0,0,0,0,0,0]
movj(endPosJ,0,60,200,0)
end
- if...else...end文
構文形式は次のとおりです:
if(condition):
statement
else:
statement
end
例:
condition = get_digital_output(0,1)
if(condition):
endPosJ = [0,0,0,0,0,0]
movj(endPosJ,0,60,200,0)
else:
endPosL = [663.5,8.159996,6.950,90,0,0]
movl(endPosL,0,250,250,0)
end
- if...elif...else...end文
構文形式は次のとおりです:
if(condition1):
statement
elif(condition2):
statement
else:
statement
end
例:
condition = get_digital_output(0,1)
if(condition):
endPosJ1 = [0,0,0,0,0,0]
movj(endPosJ,0,60,200,0)
elif(condition):
endPosJ2 = [90,90,90,90,-90,0]
movj2(endPosJ,0,10,600,0)
else:
endPosL = [663.5,8.159996,6.950,90,0,0]
movl(endPosL,0,250,250,0)
end
ループ文
- whileループ文
条件が真である限り、while文はループ本体を繰り返し実行します。
構文形式は次のとおりです:
while(condition):
statement
end
while構造では、conditionの評価結果が真である限り、statement(通常は文のブロック)が繰り返し実行されます。conditionは空であってはなりません。
もしconditionの最初の評価がfalseであれば、statementは一度も実行されません。
例:
i = 0
while(i <= 4):
endPosJ1 =[0,90,90,90,-90,0]
movj(endPosJ1,0,10,600,0)
endPosJ2 =[90,90,90,90,-90,0]
movj(endPosJ2,0,10,600,0)
i = (i+1)
end
ジャンプ文
ジャンプ文は現在の while 文の実行を中断することができ、JKS は break と continue の2種類のジャンプ文を提供します。
- break文
break 文は、最も近い while 文を終了させ、これらの文の次の文から実行を続けます。
break の有効範囲は最も近い while ループのみに限定されます。
**例: **statement は文ブロックであり、condition1 と condition2 は判定条件です。
while(condition1):
statement
...
if(condition2):
break
end
...
statement
end
- continue文
continue 文は最も近いループ内の現在の反復を終了し、すぐに次の反復を開始します。
continue 文は while** ループの内部でのみ使用でき**ます。
break** と**同様に、continue の有効範囲も最も近い while ループに限定されます。
continue は現在の処理を中断しますが、ループの実行は継続され、while 文の場合は条件の評価を続けます。
例:
statement は文ブロックであり、condition1 と condition2 は判定条件です。
while(condition1):
statement
...
if(condition2):
continue(コンティニュー)
end
...
statement
end
マルチスレッド
最新のコントローラーソフトウェアはマルチスレッド機能をサポートしており、ユーザーは非メインスレッドで特定の非モーション関連クラスの命令を使用できます。
スレッドの作成
ユーザーがマルチスレッドを使用する場合、サブルーチンファイルを通じてスレッドの実行体を定義する必要があります。つまり、スレッド実行体は JKS 拡張子を持つスクリプトファイルに個別に保存されます。
スレッドを作成する際には、スレッド実行体のサブルーチンファイルの絶対パスを指定する必要があり、スレッドが作成されると自動的に実行が開始されます。
JAKAコントローラは最大5つのサブスレッドをサポートします。
スレッドを作成する際には、スレッド名を同期的に書き込む必要があります。スレッド名はサブスレッドのリソース管理(スレッドの破棄、同期、一時停止など)に使用されます。
**例: **/path/to/thread/file.JKSはサブスレッドに対応するスクリプトファイルの絶対パスであり、thread_nameはそのスレッドを識別する一意の文字列です。
create_thread(“/path/to/thread/file. JKS ”, “thread_name”)
スレッドの操作
JKSはスレッドの待機(join)およびスレッド破棄操作をサポートし、スレッドの分離(detach)はサポートしていません。
メインスレッドが終了すると、すべてのサブスレッドは終了し、使用中のリソースも回収されます。
スレッドに関する操作はメインスレッド内でのみ呼び出しが可能であり、サブスレッド内で呼び出しても無効です。スレッド操作では有効なスレッド名を指定する必要があり、無効なスレッド名は実行時エラーを引き起こします。
動作関連クラスや一部の設定クラス(例:負荷設定、座標系設定)の指令はメインスレッドでのみ使用可能であり、サブスレッド内ではスキップされ実行されません。
**例: ** thread_nameはスレッド名です。
スレッド同期:
thread_join("thread_name")
スレッド破棄:
thread_destroy("thread_name")
さらに、サブスレッドとメインスレッドはプログラム一時停止指令を呼び出すことができ、一時停止後はプログラム内のすべてのスレッドが停止状態になります。プログラムを再開すると、すべてのスレッドが再び動作を続けます。
スレッドのスケジューリング
ユーザーがジョブプログラム内で作成したすべてのサブスレッドは同じ優先度を保持し、変更はサポートされません。
制御命令サイクル内では、同時に1つのスレッドのみが低レベル制御インターフェースの呼び出し権を持つことができ、スレッド間で競合によって権利を獲得します。
競合の過程では、他のスレッドのタスクは実行がブロックされます。
スレッドの排他制御
複数のスレッドが同時に共有データやリソース(例:システム変数)にアクセスする場合、競合が発生する可能性があります。JKSはリソース競合を解決するために臨界領域への進入および退出操作のインターフェースを提供します。
複数のスレッドが同時に同じ臨界領域に入ろうとする場合、1つのスレッドのみがその操作権を取得でき、他のすべてのスレッドは当該スレッドが臨界領域から退出するまで待機状態になります。
臨界領域への進入は実質的に実行権の独占を意味するため、他のスレッドが正常に動作できるように、臨界領域への進入および退出間で実行する命令はできるだけ短くする必要があります。
例:
thread_enter_critical()
# いくつかの処理を行う
thread_exit_critical()
スクリプトプリセット関数
動作関連コマンド
基本動作
movel
コマンドプロトタイプ:
movl(var_pos, rel_flag, vel, acc, tol, end_cond, ori_vel, ori_acc, planner_type)
コマンド説明:
ロボットにデカルト空間での直線運動を実行させるために使用します。
パラメータの説明:
| var_pos | デカルト空間の目標位置を指定するための6要素配列変数で、事前に定義する必要があります。 |
| rel_flag | この区間の動作が相対運動か絶対運動かを指定します。 ·0:絶対運動。この場合、var_posの値はデカルト空間の絶対位置として解釈されます。 ·1:現在のユーザー座標系に対する増分運動。この場合、var_posの値はデカルト空間の位置増分として解釈されます。 ·2:現在のツール座標系に対する増分運動。 |
| vel | 動作速度。単位:mm/s。 |
| acc | 直線加速度。単位:mm/s^2。 |
| tol | 指定された終点に到達する際の許容誤差。 0の場合、目標点に正確に到達します。 正の値の場合、位置が後続のセグメントと混ざる可能性があり、目標点に正確に到達できません。 |
| end_cond | このセグメントの命令停止条件。オプションのパラメーターは3つの要素を含む配列で、以下を含みます: di_type:入力タイプ。
di_index:IOアドレス。 di_state:IOが条件を満たす状態 0/1。 |
| ori_vel | 姿勢速度。オプションのパラメーターで、単位はdeg/s。 このパラメーターを入力しない場合、ロボットは最大姿勢速度で動作します。 |
| ori_acc | 姿勢加速度。オプションのパラメーターで、単位はdeg/s^2。 このパラメーターを入力しない場合、ロボットは最大姿勢加速度で動作します。 |
| planner_type | 速度計画タイプ。シーンに応じて柔軟に選択します。 0:サイクル優先の速度計画方式を採用します。 1:スムーズさ優先の速度計画方式を採用します。 |
戻り値:
なし
movej
コマンドプロトタイプ:
movj(var_pos, rel_flag, vel, acc, tol, end_cond, planner_type)
コマンド説明:
ロボットの関節空間運動を制御するために使用されます。
パラメータの説明:
| var_pos | 6要素の配列変数で、関節空間での目標位置を指定するために使用され、事前に定義する必要があります。 |
| rel_flag | この区間の動作が相対運動か絶対運動かを指定します。 ·0は絶対運動であり、この場合、var_posで指定された値は関節空間の絶対位置として解釈されます; ·1は相対運動であり、この場合、var_posで指定された値は関節空間位置の増分として解釈されます。 |
| vel | 各関節の指令速度。単位:deg/s。 実際の動作時は、各関節の最大実速度の制約を受けます。 |
| acc | 線形加速度。単位:deg/s^2。 |
| tol | 指定された終点に到達する際の許容誤差。 0の場合、目標点に正確に到達します。 正の値の場合、後続のセグメントと混ざる可能性があり、目標点に正確に到達できないことがあります。 |
| end_cond | このセグメントの命令停止条件。オプションのパラメーターは3つの要素を含む配列で、以下を含みます: di_type:入力タイプ。
di_index:IOアドレス。 di_state:IOが条件を満たす状態 0/1。 |
| planner_type | 速度計画タイプ。シーンに応じて柔軟に選択します。 0:サイクル優先の速度計画方式を採用します。 1:スムーズさ優先の速度計画方式を採用します。 |
**戻り値: **なし
movec
コマンドプロトタイプ:
movc(var_pos_mid, var_pos_end, rel_flag, vel, acc, tol, turn_cnt, end_cond, movc_mode, planner_type)
コマンド説明:
ロボットのデカルト空間における円弧運動を制御するために使用されます。
パラメータの説明:
| var_pos_mid | 6要素の配列変数で、空間円弧の中間通過点を指定するために使用され、事前に定義する必要があります。 |
| var_pos_end | 6要素の配列変数で、空間円弧の終了点を指定するために使用され、事前に定義する必要があります。 |
| rel_flag | このセグメントの動作が相対運動か絶対運動かを指定します。現在は絶対運動のみ対応しています。 ·0は絶対運動であり、この場合、var_posで指定された値はデカルト空間の絶対位置として解釈されます。 |
| vel | 各関節の指令速度。単位:deg/s。 実際の動作時は、各関節の最大実速度の制約を受けます。 |
| acc | 動作の加速度を指定します。単位:mm/s^2。 |
| tol | 指定された終点に到達する際の許容誤差。 0の場合、目標点に正確に到達します。 正の値の場合、後続のセグメントと混ざる可能性があり、目標点に正確に到達できないことがあります。 |
| turn_cnt | ユーザーが指定する円弧運動の回転数(非負の実数)。オプションのパラメータです。 回転数が0の場合、3点によって円弧運動が決定されます。 もし回転数が0以外の場合、3点で決まる円弧運動を指定された回転数で行い、姿勢は初期点の姿勢と回転軸との角度を同じに保ちます。 |
| end_cond | このセクションの命令停止条件、オプションパラメータです。ただし、バージョン1.7.1_28以降では円弧中間姿勢を制御する必要がある場合、必須パラメータになります。3つのパラメータを含む配列であり、以下を含みます: di_type:入力タイプ。
di_index:IOアドレス。 di_state:IOが条件を満たす状態 0/1。 |
| movc_mode | 円弧運動中の姿勢モードを指定します。オプションパラメータであり、turn_cntが0の場合に有効です。 ·0 最小姿勢変化モード:ロボットの姿勢は開始−終了姿勢の回転軸を中心に最小角度変化方向で動作します; ·1 大きな姿勢変化モード:ロボットの姿勢は開始−終了姿勢の回転軸を中心に大きな角度変化方向(つまり最小角度変化方向の反対方向)で動作します; ·2 中間点姿勢適応モード:ロボットの姿勢は中間点の姿勢に基づいて自動的に最小または大きな姿勢変化を選択します; ·3 姿勢角固定モード:ロボットの円弧運動中、ツール姿勢はデカルト円弧軸線−半径で構成される座標系との角度を固定します。 |
| planner_type | 単一動作命令の速度計画タイプであり、シーンに応じて柔軟に選択します。 0:サイクル優先の速度計画方式を採用します。 1:スムーズさ優先の速度計画方式を採用します。 |
戻り値:
なし
get_atl_joint_pose
コマンドプロトタイプ:
atlJntPos = get_atl_joint_pose()
コマンド説明:
現在のロボットの実際の関節位置を取得するために使用します。
戻り値:
現在の実際の関節位置を返します。
get_atl_tcp_pose
コマンドプロトタイプ:
atlTcpPos = get_atl_tcp_pose()
コマンド説明:
現在のロボットの実際のエンドツール中心点の姿勢を取得するために使用します。
戻り値:
現在の実際のツールエンド中心点の姿勢を返します。
get_atl_flange_pose
コマンドプロトタイプ:
atlFlangePos = get_atl_flange_pose()
コマンド説明:
現在のロボットのエンドフランジ中心点の姿勢を取得するために使用されます。
戻り値:
現在の実際のエンドフランジ中心点の姿勢を返します。
enable_speed_override
コマンドプロトタイプ:
enable_speed_override(type, vel, acc)
コマンド説明:
関数ブロックの速度と加速度を設定するために使用されます。
パラメータの説明:
| type | ·0 はデカルト空間の動作タイプを示します ·1 は関節空間の動作タイプを示します |
| vel | double 型データで、設定された上書き速度を表します。 |
| acc | double 型データで、設定された上書き加速度を表します。 |
| ori_vel | double 型データで、設定された上書き姿勢速度を表します。デフォルト値:180.0 |
| ori_acc | double 型データで、設定された上書き姿勢加速度を表します。デフォルト値:720.0 |
戻り値:
なし
disable_speed_override
コマンドプロトタイプ:
disable_speed_override(type)
コマンド説明:
関数ブロックの速度と加速度の設定を取り消すために使用されます。
パラメータの説明:
| type | ·0 はデカルト空間の動作タイプを示します ·1 は関節空間の動作タイプを示します |
戻り値:
なし
enable_planner_override()
コマンドプロトタイプ:
enable_planner_override(type)
コマンド説明:
グローバル速度プランナタイプを設定するために使用されます。
パラメータの説明:
| type | グローバル速度プランニングタイプは、異なるシーンに応じて柔軟に選択できます。 0:サイクル優先の速度計画方式を採用します。 1:スムーズさ優先の速度計画方式を採用します。 グローバル速度プランニング命令を使用する場合、単一命令内の速度プランニングパラメータは無効になります。 |
戻り値:
なし
disable_planner_override
コマンドプロトタイプ:
disable_planner_override()
コマンド説明:
グローバル速度プランナタイプの設定を取り消すために使用されます。
戻り値:
なし
コンベヤートラッキング
enable_conveyor_linear_track
コマンドプロトタイプ:
enable_conveyor_linear_track(dir, mm_per_pulse, trigger, com_dis, max_dis)
コマンド説明:
リニアコンベヤートラッキングを有効にします。
パラメータの説明:
| dir | トラッキング方向。X+、Y+、Z+、X-、Y-、Z-のいずれかを指定できます。 |
| mm_per_pulse | パルス当量を指定します。これは、コンベヤー上のエンコーダが1パルス出力するごとにコンベヤー方向に対応する変位量(mm単位)です。 |
| trigger | オプションパラメータ。ロボットの動作開始点からコンベヤートラッキング開始点までの距離です。ロボットがコンベア ベルトの追跡を開始する位置を 0 ~ 3000 mm の範囲でカスタマイズするために使用されます。 |
| com_dis | 実際の位置とティーチング位置との誤差を補正するために使用します。範囲は±100 mmです。 |
| max_dis | オプションパラメータ。ロボットの動作開始点から動作終点までの距離です。ロボットのトラッキング距離を制限し、コンベヤー範囲外または特異点に到達するのを防ぐために使用します。範囲は1~3000 mmです。 |
戻り値:
なし
enable_conveyor_circular_track
コマンドプロトタイプ:
enable_conveyor_circular_track(convey_P1, convey_P2, convey_P3, rad_per_pulse, rotate_tool, com_dis, max_dis)
コマンド説明:
円形コンベヤートラッキングを有効にします。
パラメータの説明:
convey_P1 convey_P2 convey_P3 | ワールド座標系におけるある点の位置ベクトルを示します。例: convey_P1 =[ P1x, P1y, P1z] convey_P2 =[ P2x, P2y, P2z] convey_P3 =[ P3x, P3y, P3z] convey_P1、convey_P2、convey_P3はコンベヤー上の同一円周上の3点のワールド座標であり、コンベヤーの回転方向に従って順に選択されます。これにより、ワールド座標系におけるコンベヤー円心座標系{O}の変換行列を取得します。直接入力またはティーチングによって取得できます。 |
| rad_per_pulse | パルス当量を指定します。これは、コンベヤートラッキングのエンコーダが1パルス出力するごとに、Oz軸正方向(右手の法則)に回転する角度を示します。単位は°/cntです。 |
| rotate_tool | ·0 円形コンベアの追従中にエンドエフェクタの姿勢は変化しない ·1 エンドエフェクタがコンベア軸を中心に回転し、姿勢が変化する(アプリではデフォルト値は1) |
| com_dis | 実際の位置とティーチング位置との誤差を補償するために使用し、範囲は±20°です。 |
| max_dis | オプションパラメータ。ロボットの動作開始点から動作終点までの距離です。ロボットの追従距離を制限し、コンベア範囲外または特異点への到達を防ぐために使用し、範囲は1~360°です。 |
戻り値:
なし
disable_convayor_track
コマンドプロトタイプ:
disable_convayor_track()
コマンド説明:
コンベア追従をオフにするために使用します。
戻り値:
なし
record_pulse_cond()
コマンドプロトタイプ:
record_pulse_cond(type, index, state)
コマンド説明:
コンベア上のワーク位置を取得して保存し、IOと連動して、コンベアの速度が速いためにロボットが全てのワークを処理できず取りこぼすのを防ぎます。このコマンドは、「コンベア ベルト キューから値を取得」と組み合わせて使用する必要があります。
この命令を使用すると、コンベア上でIOがトリガーされたワーク位置情報がコントローラ内に記録され、「コンベアキュー値取得」命令が実行された際、保存順に従ってワーク位置情報が取得されます。
パラメータの説明:
| type | ·0 標準IO(制御キャビネット) ·1 ツールIO ·2 拡張IO ·3 予約 ·4 Modbus IO ·5 PROFINET IO ·6 Ethernet/IP IO |
| index | 制御するデジタル出力の番号で、0からインデックスされます。 |
| state | ·1 はオン ·0 はオフ |
戻り値:
なし
get_pulse_cond()
コマンドプロトタイプ:
get_pulse_cond()
コマンド説明:
保存されているコンベヤパルスキュー情報を取得するために使用
戻り値:
なし
clear_pulse_cond()
コマンドプロトタイプ:
clear_pulse_cond()
コマンド説明:
保存されているコンベヤパルスキュー情報をクリアするために使用
戻り値:
なし
record_pos_cond()
コマンドプロトタイプ:
record_cond(array)
コマンド説明:
姿勢配列変数のキューを保存するために使用し、コンベヤビジョントラッキングと組み合わせて使用でき、カメラから送信される姿勢情報を保存する
**パラメータ説明: **| | | | ----- | ------------------------------------ | | array | 位置変数またはプログラム変数、1~12次元の配列が使用可能。|
戻り値:
なし
get_pos_cond()
コマンドプロトタイプ:
get_pos_cond()
コマンド説明:
保存されている姿勢キュー情報を取得するために使用
戻り値:
姿勢キューから取得された姿勢配列変数
clear_pos_cond()
コマンドプロトタイプ:
clear_pos_cond()
コマンド説明:
保存されている姿勢キュー情報をクリアするために使用
戻り値:
なし
get_pulse_num()
コマンドプロトタイプ:
get_pulse_num()
コマンド説明:
現在のコンベヤパルスキューに保存されているターゲットの数を取得するために使用
戻り値:
現在のコンベヤパルスキューに保存されているターゲットの数
get_pos_num()
コマンドプロトタイプ:
get_pos_num()
コマンド説明:
現在の姿勢キューに保存されているターゲットの数を取得するために使用
戻り値:
現在の姿勢キューに保存されているターゲットの数
モーションコンプライアンス制御
set_compliance_ft_config
コマンドプロトタイプ:
set_compliance_ft_config(id, admitctrlconfig, immed)
コマンド説明:
定力コンプライアンス制御の設定に使用。admitctrlconfigは設定パラメータ配列です。
パラメータの説明:
| id | 代表的な配置軸番号[0、5] |
| admitctrlconfig | = opt[, FTuser, FTreboundK, FTconstant, FTnormalTrack] opt:この方向(idパラメータで指定された軸方向)で定力コンプライアンスを有効にするかどうか。1は有効、0は無効を意味します。 FTuser:ロボットが定力コンプライアンス制御中に示す剛性。一般に力方向では5より大きく、トルク方向では0.2より大きく設定する必要があります。 FTreboundK:ロボットに外力が作用して元の位置から離れた後、元の位置に戻ろうとする際の弾性係数。非負値に設定する必要があり、0に設定すると反発を行いません。 FTconstant:目標定力を表します。 FTnormalTrack:内部予約パラメータで、固定値0を指定する必要があります。 |
| immed | 内部予約パラメータで、固定値1を指定する必要があります。 |
戻り値:
なし
set_compliance_velocity_level
コマンドプロトタイプ:
velCompliantCtrl = [level, rate1, rate2, rate3, rate4]
set_compliance_velocity_level(velCompliantCtrl)
コマンド説明:
速度コンプライアンス制御の段階的速度を設定するために使用します。
パラメータの説明:
| velCompliantCtrl | 速度モードでは、ロボットのエンドエフェクタに加わる力がコントローラの設定値を超えると、設定された倍率で減速し、センサーの検出値が制御力の設定値より小さくなるまで続きます。 速度コンプライアンス制御の段階的速度は3つのレベルに分かれ、1 > rate1 > rate2 > rate3 > rate4 > 0 である必要があります。 ・レベル1の場合、rate1とrate2の2つのレベルのみを設定でき、rate3とrate4の値は0になります。 ・レベル2の場合、rate1、rate2、rate3の3つのレベルのみを設定でき、rate4の値は0になります。 ・レベル3の場合、rate1、rate2、rate3、rate4の4つのレベルを設定できます。 |
戻り値:
なし
set_compliance_condition
コマンドプロトタイプ:
compliantCondition = [fx, fy, fz, tx, ty, tz]
set_compliance_condition(compliantCondition)
コマンド説明:
速度コンプライアンス制御の力を設定するために使用します。
パラメータの説明:
| compliantCondition | 力およびトルクの停止条件を設定するために使用します。 ロボットの実際の力がこの条件を超えたとき、ロボットは set_compliance_velocity_level で設定された倍率で減速を開始します。 fx、fy、fz、tx、ty、tz の範囲:0より大きい。 |
戻り値:
なし
disable_force_control
コマンドプロトタイプ:
disable_force_control()
コマンド説明:
力制御を無効にするために使用します。
戻り値:
なし
enable_force_control
コマンドプロトタイプ:
enable_force_control(type, compensation)
コマンド説明:
コンプライアンス制御タイプの設定およびセンサー補償に使用します。
パラメータの説明:
| type | ·0 は、いかなるコンプライアンス制御も使用しないことを示します ·1 は、一定力コンプライアンス制御を示します ·2 は、速度コンプライアンス制御を示します |
| compensation | ·1 は、コンプライアンス制御を有効化する前に一度センサーのゼロ補正を行うことを示します ·0 は、コンプライアンス制御を有効化する前にセンサーのゼロ補正を行わないことを示します |
戻り値:
なし
set_end_force_condition
コマンドプロトタイプ:
condition = [enableEndCond, lowFlag, lowLimitForce, upFlag, upLimitForce]
set_end_force_condition(axis, condition)
コマンド説明:
力制御の終了条件を設定するために使用します。力制御の終了条件を設定します。すぐには有効にならず、デフォルトでは非即時コマンドであり、その後の最初の動作指令のみに作用します。この終了条件がトリガーされると、その動作指令は直ちに終了し、プログラムはその動作指令の次の行へジャンプして実行を続けます。
パラメータの説明:
| axis | 軸番号を表し、取値範囲は[ 0〜5 です] |
| enableEndCond | 有効にするかどうか。1は有効、0はその逆を示す。 |
| lowFlag | 運動終了力の下限が有効かどうかのフラグ。1は有効、0はその逆を示す。 |
| lowLimitForce | 運動終了力の下限 |
| upFlag | 運動終了力の上限が有効かどうかのフラグ。1は有効、0はその逆を示す。 |
| upLimitForce | 運動終了力の上限 |
戻り値:
なし
set_force_control_frame
コマンドプロトタイプ:
set_force_control_frame(ftFrame)
コマンド説明:
この関数は力制御座標系を設定するために使用されます。
パラメータの説明:
| ftFrame | ·0 はツール座標系を示す ·1 はワールド座標系を示す |
戻り値:
なし
get_sensor_torque
コマンドプロトタイプ:
torq = get_sensor_torque(type)
コマンド説明:
ベースまたはエンドのトルクセンサからトルク値を取得するために使用されます。この値はセンサ末端の負荷を補償した後の純トルク値です。
パラメータの説明:
| type | ·0 はエンドトルクセンサを示す ·その他の値は予約 |
戻り値:
6次元配列で表される6軸トルクセンサの読み取り値
torque_sensor_enable
コマンドプロトタイプ:
torque_sensor_enable(enable)
コマンド説明:
エンドフォースセンサを起動します。
パラメータの説明:
| enable | ·0はオフ ·1はオン |
戻り値:
なし
set_force_sensor_zero
コマンドプロトタイプ:
set_force_sensor_zero()
コマンド説明:
エンドエフェクタの力センサーをゼロ点校正します。
パラメータの説明:
なし
戻り値:
なし
インターフェースの設定と照会
IO制御と照会
set_digital_output
コマンドプロトタイプ:
set_digital_output(type, index, tarState, immed)
コマンド説明:
デジタル出力信号を制御するために使用します。
パラメータの説明:
| type | ·0 標準IO(制御キャビネット) ·1 ツールIO ·2 拡張IO ·3 予約 ·4 Modbus IO ·5 PROFINET IO ·6 Ethernet/IP IO |
| index | 制御するデジタル出力の番号で、0からインデックスされます。 |
| tarState | ·1 はオン ·0 はオフ |
| immed | ·1は即時コマンド ·0は非即時コマンド 非即時コマンドの場合、このコマンドの実際の実行は次の動作コマンドの前に行われます。 |
備考:
即時IOコマンドは異なる動作セグメント間の切り替えを中断します。非即時コマンドは制御キャビネットのDO/AOでのみ使用できます。
戻り値:
なし
set_analog_output
コマンドプロトタイプ:
set_analog_output(type, index, tarValue, immed)
コマンド説明:
アナログ出力信号を制御するために使用します。
パラメータの説明:
| type | ·0 標準IO(制御キャビネット) ·1 ツールIO ·2 拡張IO ·3 予約 ·4 Modbus IO ·5 PROFINET IO ·6 Ethernet/IP IO |
| index | 制御するアナログ出力の番号(インデックス)は0から始まります。 |
| tarValue | Real型の値で、アナログ出力の目標値を指定します。 |
| immed | ·1は即時コマンド ·0は非即時コマンド 非即時コマンドの場合、このコマンドの実際の実行は次の動作コマンドの前に行われます。 |
備考:
即時IOコマンドは異なる動作セグメント間の切り替えを中断します。
戻り値:
なし
get_digital_output
コマンドプロトタイプ:
get_digital_output(type, index)
コマンド説明:
指定したデジタル出力の状態を取得するために使用します。
パラメータの説明:
| type | ·0 標準IO(制御キャビネット) ·1 ツールIO ·2 拡張IO ·3 予約 ·4 Modbus IO ·5 PROFINET IO ·6 Ethernet/IP IO |
| index | デジタル出力インデックス |
戻り値:
関数はクエリ結果を返します:0 -> オフ、1 -> オン
get_analog_output
コマンドプロトタイプ:
get_analog_output(type, index)
コマンド説明:
指定されたアナログ出力の状態を取得するために使用します。
パラメータの説明:
| type | ·0 標準IO(制御キャビネット) ·1 ツールIO ·2 拡張IO ·3 予約 ·4 Modbus IO ·5 PROFINET IO ·6 Ethernet/IP IO |
| index | アナログ出力インデックス |
戻り値:
関数は double 型のクエリ結果を返します。
get_digital_input
コマンドプロトタイプ:
get_digital_input(type, index)
コマンド説明:
指定されたデジタル入力の状態を取得します。
パラメータの説明:
| type | ·0 標準IO(制御キャビネット) ·1 ツールIO ·2 拡張IO ·3 予約 ·4 Modbus IO ·5 PROFINET IO ·6 Ethernet/IP IO |
| index | デジタル入力インデックス |
戻り値:
関数はクエリ結果を返します:0 はオフ、1 はオンです。
get_analog_input
コマンドプロトタイプ:
get_analog_input(type, index)
コマンド説明:
指定されたアナログ入力の状態を取得します。
パラメータの説明:
| type | ·0 標準IO(制御キャビネット) ·1 ツールIO ·2 拡張IO ·3 予約 ·4 Modbus IO ·5 PROFINET IO ·6 Ethernet/IP IO |
| index | アナログ入力インデックス |
戻り値:
関数は double 型のクエリ結果を返します。
wait_input
コマンドプロトタイプ:
wait_input(type, index, state, time)
コマンド説明:
指定された入力が指定された状態になるまで待機するために使用します。最大待機時間を超えると、TIMEOUT 状態フラグが設定され、GETTIMEOUT 関数で確認できます。
パラメータの説明:
| type | ·0 標準IO(制御キャビネット) ·1 ツールIO ·2 拡張IO ·3 予約 ·4 Modbus IO ·5 PROFINET IO ·6 Ethernet/IP IO |
| index | 入力のインデックス |
| state | 期待する入力状態 |
| time | 最大待機時間、0 は無限待機(最大 10000000000 秒まで) |
戻り値:
なし
get_timeout
コマンドプロトタイプ:
get_timeout()
コマンド説明:
この関数は wait_input 命令の実行結果を取得するために使用されます。
1 は待機タイムアウト、0 は指定時間内に信号を正常に受信したことを示します。
戻り値:
なし
set_motion_digital_output
コマンドプロトタイプ:
set_motion_digital_output(type, index, refpoint, distance, tarState)
コマンド説明:
動作中にデジタル信号の出力を制御するために使用されます。
パラメータの説明:
| type | ·0 標準IO(制御キャビネット) ·1 ツールIO ·2 拡張IO ·3 予約 ·4 Modbus IO ·5 PROFINET IO ·6 Ethernet/IP IO |
| index | 制御するデジタル出力の番号で、0からインデックスされます。 |
| refpoint | 信号がトリガーされる距離の基準点 ·0 は開始点を意味します ·1 は終了点を意味します |
| distance | 信号がトリガーされる距離。 |
| tarState | ·1 はオン ·0 はオフ |
備考:
動作中に IO 設定命令を使用する場合、その後に動作命令が存在する必要があります。2 つの動作命令の間で、最大 8 個の動作中 IO 設定命令を設定できます。
戻り値:
なし
set_motion_analog_output
コマンドプロトタイプ:
set_motion_analog_output(type, index, refpoint, distance, tarValue)
コマンド説明:
動作中にアナログ信号の出力を制御するために使用されます。
パラメータの説明:
| type | ·0 標準IO(制御キャビネット) ·1 ツールIO ·2 拡張IO ·3 予約 ·4 Modbus IO ·5 PROFINET IO ·6 Ethernet/IP IO |
| index | 制御するアナログ出力の番号(インデックス)は0から始まります。 |
| refpoint | 信号がトリガーされる距離の基準点 ·0 は開始点を意味します ·1 は終了点を意味します |
| distance | 信号がトリガーされる距離。 |
| tarValue | Real型の値で、アナログ出力の目標値を指定します。 |
備考:
動作中に IO 設定命令を使用する場合、その後に動作命令が存在する必要があります。2 つの動作命令の間で、最大 8 個の動作中 IO 設定命令を設定できます。
戻り値:
なし
TIO 制御と照会
tio_update_signal
コマンドプロトタイプ:
tio_update_signal(strId, freq)
コマンド説明:
一定周期で指定された TIO Modbus RTU 信号を更新するために使用されます。
パラメータの説明:
| strId | 信号の識別子 |
| freq | 0 の場合は一度だけ更新されます; その他の正の値の場合、それが更新周期を示し、更新周期は内部的に CAN 通信の帯域制限を受けます。 |
戻り値:
なし
tio_get_signal_value
コマンドプロトタイプ:
res = tio_get_signal_value(strId)
コマンド説明:
指定した信号の値を取得するために使用します。
パラメータの説明:
| strId | 信号の識別子 |
戻り値:
信号の値を返します。
tio_send_command
コマンドプロトタイプ:
tio_send_command(chnId, cmdBuf, crcType)
コマンド説明:
指定されたTIO RS485チャンネルにバイトデータを送信するために使用します。
パラメータの説明:
| chnId | チャンネル番号。 ·0はRS485チャンネル1 ·1はRS485チャンネル2 |
| cmdBuf | バイト配列 |
| crcType | 送信データのタイプ。指定されたチャンネルがRS485パススルーの場合にのみ有効。Modbus RTUの場合は0を書き込みます。 |
戻り値:
なし
ネットワーク通信
socket_open
コマンドプロトタイプ:
sockid = socket_open(ip, port)
コマンド説明:
指定されたIPとポート番号を開き、作成されたSOCKETハンドルを変数に保存して返します。
パラメータの説明:
| ip | 文字列形式のTCPサーバーアドレス。例:「192.168.1.10」 |
| port | TCPサーバーポート |
戻り値:
socketハンドルを返します。
socket_close
コマンドプロトタイプ:
socket_close(sockid)
コマンド説明:
指定されたソケットを閉じるために使用します。
パラメータの説明:
| sockid | 閉じる必要のあるソケット接続 |
|---|
戻り値:
なし
socket_get_var
コマンドプロトタイプ:
varname = socket_get_var(sockid, type, argname, timeout)
コマンド説明:
リモート側のパラメータ設定を要求するために使用します。
パラメータの説明:
| sockid | 事前に作成されたソケットID。 |
| type | パラメータタイプ。 ·0 は整数型 ·1 は浮動小数点数 ·2 は文字列 |
| argname | 文字列タイプの変数名で、取得したい変数の値を表します。 形式は |
| timeout | フィードバック取得のタイムアウト。0 は無期限待機(最大 65536 秒)。 |
戻り値:
戻り値を格納する変数。
この関数はソケットを通じて文字列 get <arg_varname> を送信し、データ形式<arg_varname><value>の受信を期待します```。デフォルトのタイムアウトは 2 秒で、タイムアウト後は 0 を返します。
配列を送信する場合、上位機は次の形式で送信します:
<arrName><{num1, num2, ..., numN}>
文字列を送信する場合、上位機は次の形式で送信します:
<strName><“stringValue”>
socket_read_real
コマンドプロトタイプ:
res = socket_read_real(sockid, num, timeout)
コマンド説明:
指定されたソケットを介して外部から(一連の)数値を取得し、配列変数に格納するために使用されます。
パラメータの説明:
| sockid | 事前に作成されたソケットID。 |
| num | 受信を期待する数値の数。 |
| timeout | フィードバック取得のタイムアウト。0 は無期限待機(最大 65536 秒)。 |
戻り値:
受信したデータの結果。
受信に失敗した場合はスカラー0を返し、受信に成功した場合はすべて配列に格納されます。
デフォルトで2秒のタイムアウトがあり、受信に失敗した場合は0を返します。
socket_read_string
コマンドプロトタイプ:
res = socket_read_string(sockid, prefix, suffix, timeout)
コマンド説明:
指定されたソケットを介して外部から文字列を取得し、変数に格納するために使用されます。
関数の送信形式は get#string#prefix#suffix# であり、期待される受信データ形式は prefixSTRINGsuffix です。
パラメータの説明:
| sockid | 事前に作成されたソケットID。 |
| prefix | 受信を期待する文字列のプレフィックス要件。 |
| suffix | 受信を期待する文字列のサフィックス要件。 |
| timeout | 応答を取得する待機タイムアウト。0は無期限待機を意味します。 |
戻り値:
受信したデータの結果。
デフォルトで2秒のタイムアウトがあり、受信に失敗した場合は空文字列を返します。
socket_send
コマンドプロトタイプ:
res = socket_send(sockid, var)
コマンド説明:
指定されたSOCKETを介して変数の値を文字列形式で送信するために使用されます。
パラメータの説明:
| sockid | 事前に作成されたソケットID。 |
| var | 送信を期待する変数。現在、Number、Number配列、およびString型をサポートしています。 配列を送信する場合、送信される文字列の形式は |
戻り値:
res は送信結果のフラグです。
デフォルトで2秒の送信タイムアウトがあり、送信に成功した場合は1、失敗した場合は0を返します。
送信データの形式は次のとおりです:
<varName><varValue>
<intVar><12>
<strVar><“string”>
<listVar><{ele1, ele2, ele3, ...}>
socket_recv
コマンドプロトタイプ:
res = socket_recv(sockid, timeout)
コマンド説明:
指定されたソケットからデータを受信するために使用され、ユーザーがタイムアウト時間を設定できます。
備考:
このコマンドはデータ受信のみに使用され、他の接続先に要求を送信しません。
パラメータの説明:
| sockid | 事前に作成されたソケットID。 |
| timeout | 受信タイムアウトの設定。 |
戻り値:
正常に受信した場合、関数は受信した文字列を返します。
タイムアウト内にデータを受信できなかった場合、空文字列を返します。
ネットワークの問題がある場合は、スカラー値 -1 を返します。
パラメータ設定と照会
set_payload
コマンドプロトタイプ:
set_payload(m, centriod)
コマンド説明:
現在のロボットのペイロードを設定するために使用します。
パラメータの説明:
| m | ペイロード質量、単位はkg。 |
| centroid | ペイロードの重心、3つの要素を含む配列、単位:mm。 |
備考:
このコマンドは動作と同期し、切替を中断します。
戻り値:
なし
get_payload
コマンドプロトタイプ:
payload = get_payload()
コマンド説明:
現在のロボットのペイロードを取得するために使用します。
戻り値:
ロボットフランジ末端の総負荷を返します。
payload0[]は負荷質量(単位kg)、[payload1]~[3]は負荷の重心(単位mm)です。
set_collision_level
コマンドプロトタイプ:
set_collision_level(clsnLevel)
コマンド説明:
デフォルトではこのコマンドはサポートされていません。
実行中のJKSプログラムにこのコマンドが含まれている場合、メインスレッドはこのコマンドを解析した際にエラーメッセージを表示し、このコマンドをスキップして後続のコマンドを実行します。
サブスレッドがこのコマンドを解析した場合、直接スキップして後続のコマンドを実行します(サブスレッドでは動作および動作パラメータの変更に関するコマンドは処理しません)。
get_collision_level
コマンドプロトタイプ:
res = get_collision_level()
コマンド説明:
現在の衝突検知感度を取得するために使用します。
戻り値:
現在の衝突感度を返します。
set_tool
コマンドプロトタイプ:
set_tool(var_tool)
コマンド説明:
ツール末端がフランジ末端に対して持つ位置オフセットを設定するために使用します。
フランジ座標系では外向き垂直端面がz軸の正方向であり、ツールIO接続ポートがy軸の負方向になります。
パラメータの説明:
| var_tool | ツール末端がフランジ座標系に対して持つオフセット。6要素の配列です。 |
戻り値:
なし
set_tool_id
コマンドプロトタイプ:
set_tool_id(id)
コマンド説明:
ツール座標系IDを設定するために使用します。
パラメータの説明:
| id | 値は[0~15です]。 制御システムでは最大で16個のツールをサポートし、IDを設定することで現在使用するツールオフセット値を指定します。idが0の場合、デフォルトのツール座標系がフランジ座標系と一致します。 |
戻り値:
なし
get_tool_offsets
コマンドプロトタイプ:
res = get_tool_offsets()
コマンド説明:
現在のツール座標系のオフセット値を取得するために使用します。
戻り値:
6要素の配列を返します。
get_tool_offsets_of
コマンドプロトタイプ:
res = get_tool_offsets_of(id)
コマンド説明:
指定されたツール座標系のオフセット値を取得するために使用します。
パラメータの説明:
| id | 指定されたツール座標系、値の範囲は[1~15です]。 |
戻り値:
6要素の配列を返します。
set_user_frame
コマンドプロトタイプ:
set_user_frame(user_frame)
コマンド説明:
ユーザー座標系を設定するために使用します。
設定時にツールIDは-1に設定され、プログラム内で設定しても保存されません。
パラメータの説明:
| user_frame | ユーザー座標系の値、6要素の配列です。 |
戻り値:
なし
set_user_frame_id
コマンドプロトタイプ:
set_user_frame_id(id)
コマンド説明:
ユーザー座標系IDを設定するために使用します。
パラメータの説明:
| id | 値は[0~15です]。 制御システム内では最大16個のユーザー座標系がサポートされています。IDを設定することで現在使用するユーザー座標系のオフセット値を指定します。idが0の場合は、ユーザー定義の座標系を使用せず、デフォルトのワールド座標系を使用します。 |
戻り値:
なし
get_user_frame
コマンドプロトタイプ:
res = get_user_frame()
コマンド説明:
現在のユーザー座標系のオフセット値を取得するために使用します。
戻り値:
6要素の配列を返します。
get_user_frame_of
コマンドプロトタイプ:
res = get_user_frame_of(id)
コマンド説明:
指定されたユーザー座標系のオフセット値を取得するために使用します。
パラメータの説明:
| id | 指定されたユーザー座標系、値の範囲は[1~15です]。 |
戻り値:
6要素の配列を返します。
補助関数ライブラリ
数学計算ライブラリ
| 関数プロトタイプ | 関数の説明 |
|---|---|
| res = atan2(arg_y, arg_x) | arg_y/arg_x のアークタンジェントを求め、戻り値の単位は°です |
| res = abs(arg) | 式の絶対値を計算する |
| res = acos(arg) | アークコサイン関数、戻り値の単位は°です |
| res = asin(arg) | アークサイン関数、戻り値の単位は°です |
| res = cos(arg) | コサイン関数、引数の単位は°です |
| res = sin(arg) | サイン関数、引数の単位は°です |
| res = tan(arg) | タンジェント関数、引数の単位は°です |
| res = floor(arg) | 小数点以下を切り捨てる |
| res = ceil(arg) | 小数点以下を切り上げる |
| res = round(arg) | 四捨五入する |
| res = sqrt(arg) | 平方根を求める |
| res = rad2deg(arg) | ラジアンを度に変換 |
| res = deg2rad(arg) | 度をラジアンに変換 |
ポーズ演算ライブラリ
pose_add
コマンドプロトタイプ:
res = pose_add(pos1, pos2)
コマンド説明:
2つのポーズの和を計算し、結果を返すために使用します。
位置は単純な加算計算を行います;
姿勢の計算式は:R_res = R_pos2 * R_pos1
備考:
Rは回転行列を表します。
戻り値:
計算結果を返します。
pose_sub
コマンドプロトタイプ:
res = pose_sub(pos1, pos2)
コマンド説明:
2つのポーズの差を計算し、結果を返すために使用します。
位置は単純な減算計算を行います;
姿勢の計算式は:R_res = inv(R_pos2) * R_pos1
備考:
Rは回転行列を表します。
戻り値:
計算結果を返します。
pose_dist
コマンドプロトタイプ:
res = pose_dist(pos1, pos2)
コマンド説明:
2つのポーズ間の距離を計算するために使用され、位置座標のみを考慮して計算します。
戻り値:
計算結果を返します。
pose_inv
コマンドプロトタイプ:
res = pose_inv(pos)
コマンド説明:
特定の位置の逆変換を計算するために使用します。
戻り値:
pose形式で計算結果を返します。
pose_trans
コマンドプロトタイプ:
res = pose_trans(p_from, p_from_to)
コマンド説明:
位置変換を計算するために使用されます。
計算式:p_res = p_from * p_from_to
戻り値:
位置の結果を返します。
pose_intpl
コマンドプロトタイプ:
res = pose_intpl(pos1, pos2, alpha)
コマンド説明:
指定された係数に基づいて、2点間の補間点を計算するために使用されます。
計算式:p_res = pos1 + (pos2 - pos1) * alpha
ここで、alpha >= 0 かつ alpha <= 1 であり、姿勢を含み、その補間方法も線形補間です。
戻り値:
補間点の位置変数を返します。
xy_plane_trans
コマンドプロトタイプ:
res = xy_plane_trans(posebase, dx, dy, drz)
コマンド説明:
この命令は、XY平面内で剛体を変換します。posebaseにおいてZ軸を中心にdrz度回転し、その後X軸方向にdx、Y軸方向にdy平行移動します。
戻り値:
変換後の姿勢を返します。
yz_plane_trans
コマンドプロトタイプ:
res = yz_plane_trans(posebase, dy, dz, drx)
コマンド説明:
この命令は、YZ平面内で剛体を変換します。posebaseにおいてX軸を中心にdrx度回転し、その後Y軸方向にdy、Z軸方向にdz平行移動します。
戻り値:
変換後の姿勢を返します。
zx_plane_trans
コマンドプロトタイプ:
res = zx_plane_trans(posebase, dz, dx, dry)
コマンド説明:
この命令は、ZX平面内で剛体を変換します。posebaseにおいてY軸を中心にdry度回転し、その後Z軸方向にdz、X軸方向にdx平行移動します。
戻り値:
変換後の姿勢を返します。
kine_inverse
コマンドプロトタイプ:
res = kine_inverse(posJ, posP)
コマンド説明:
この命令は運動学の逆解を計算するために使用されます。
機能は、入力されたデカルト空間位置posPに対応する関節空間位置を計算することです。
posJは、この逆解の関節値付近の一組の関節値であり、逆解関数の多重解の選択を決定するために使用されます。
戻り値:
逆運動学の計算結果を返します。
逆解が失敗した場合、プログラムはエラーを出して終了します。
kine_forward
コマンドプロトタイプ:
res = kine_forward(posJ)
コマンド説明:
運動学の順運動を計算するために使用します。
入力された関節角度に対応するデカルト空間上の位置を計算する機能です。
戻り値:
順運動学の計算結果を返します。
is_pose_reachable
コマンドプロトタイプ:
res = is_pose_reachable(posP, ref_jointPos)
コマンド説明:
現在の姿勢で、デカルト空間の動作指令によってposPまで移動可能かどうかを判断するために使用します。
ref_jointPosは任意のパラメータで、posPの逆解時に参照として使用されます。パラメータが省略された場合、デフォルトでロボットの現在位置を参照とします。
戻り値:
可能な場合は1(条件が真)を返します;
不可能な場合は0(条件が偽)を返します。
文字列操作ライブラリ
sprintf
コマンドプロトタイプ:
resLen = sprint(bufferOut, stringFormat, …)
コマンド説明:
文字列を指定された形式でフォーマット出力するために使用します。つまり、指定されたデータを指定のフォーマットで文字列として出力します。
パラメータの説明:
| bufferOut | フォーマット後の文字列結果。変数は事前に定義されている必要があります。 |
| stringFormat | フォーマット文字列を定義します。現在は変数形式のみサポートされています。 %f、%d、%sの3種類の変数タイプのフォーマットをサポートします。 フォーマット例:%f、%s、%d |
| … | フォーマット対象の変数。可変パラメータ。整数型、浮動小数点型、および文字列型の変数または定数をサポートします。 |
戻り値:
strLen:フォーマットが成功した場合、文字列の長さを返します。失敗した場合は -1 を返します。
sscanf
コマンドプロトタイプ:
resNum = sscanf(bufferIn, stringFormat, …)
コマンド説明:
文字列のフォーマットされた入力に使用され、指定された形式の文字列を一致させてデータを変数に入力します。
パラメータの説明:
| bufferIn | マッチさせる対象の文字列。現在は変数形式のみをサポートします。 |
| stringFormat | フォーマット文字列を定義します。現在は変数形式のみサポートされています。 %f、%d、%sの3種類の変数タイプのフォーマットをサポートします。 形式の例:%f、%d、%s
`` %s 文字列にマッチし、空白文字(スペース、改行、タブなど)またはフォーマット文字列中の次の一致文字(%s、%f、%d 以外)に出会うまで連続する文字を読み取ります。 |
| … | フォーマット対象の変数。可変パラメータ。整数型、浮動小数点型、および文字列型の変数または定数をサポートします。 |
戻り値:
resNum:フォーマットが成功した場合、一致した変数の数を返します。失敗した場合は -1 を返します。
string_concat
コマンドプロトタイプ:
strRes = string_concat(str1, str2)
コマンド説明:
2つの文字列を連結し、連結後の文字列を返します。
パラメータの説明:
| str1 | 連結する部分文字列、変数または定数。 |
| str2 | 連結する部分文字列、変数または定数。 |
戻り値:
strRes: 文字列連結の結果。
get_string_from_array
コマンドプロトタイプ:
resLen = get_string_from_array(arrayIn, splittingToken, stringOut)
コマンド説明:
特定の形式に従った文字列を配列変数に変換するために使用されます。
パラメータの説明:
| arrayIn | ユーザーが指定した配列。 |
| splittingToken | 文字列形式の区切り文字。 |
| stringOut | 変換に成功した後の文字列。 |
戻り値:
resLen: 変換が成功した場合、文字列の長さ(終端文字を含まない)を返します。失敗した場合は -1 を返します。
get_array_from_string
コマンドプロトタイプ:
resNum = get_array_from_string(stringIn, splittingToken, arrayOut)
コマンド説明:
指定された文字列を配列変数に変換するために使用します。
パラメータの説明:
| stringIn | ユーザーが指定した文字列(配列内のデータを含む)。 |
| splittingToken | 文字列形式の区切り文字。 |
| arrayOut | 変換に成功した後の配列。 |
戻り値:
resNum: 変換が成功した場合、配列の要素数を返します。失敗した場合は -1 を返します。
get_length
コマンドプロトタイプ:
len = get_length(str_or_arr)
コマンド説明:
文字列または配列の長さを取得するために使用します。
戻り値:
引数のデータ型が配列または文字列でない場合、-1 を返します。エラーは発生せず、プログラムは通常通り実行を続けます。
例:
len = get_length(int_val)
引数 int_val が整数型変数の場合、命令の結果は len = -1 となります。
strcmp
コマンドプロトタイプ:
res = strcmp(str1, str2)
コマンド説明:
2つの文字列を比較するために使用します。
戻り値:
str1 = str2 の場合、0 を返します。
str1<str2 の場合、負の値を返します。
str1>str2 の場合、正の値を返します。
プログラム制御とデバッグ
log_message
コマンドプロトタイプ:
log_message(level, message)
コマンド説明:
ユーザーが自分でログ情報を追加するために使用します。
パラメータの説明:
| level | ログメッセージの種類。 具体的なインターフェース定義は次のとおりです。 ·INFO:1 ·WARNING:2 ·ERROR:3 |
| message | ログメッセージのテキスト。 Unicodeタイプはサポートされていません。 |
戻り値:
なし
get_system_clock
コマンドプロトタイプ:
clock = get_system_clock()
コマンド説明:
ユーザーがシステムのリアルタイムクロックを取得するために使用します。
戻り値:
double型の浮動小数点数で、単位はms(ミリ秒)、ns単位の精度を持ちます。
低レベルではCLOCK_MONOTONICを使用し、これはシステム起動後に経過したクロック数を表します。
sleep
コマンドプロトタイプ:
sleep(time)
コマンド説明:
プログラムを一定時間遅延させるために使用します。
パラメータの説明:
| time | 遅延時間の長さで、単位は秒(s)です。 |
備考:
この命令は異なる動作セグメント間の切り替えを中断します。
戻り値:
なし
pause
コマンドプロトタイプ:
pause()
コマンド説明:
プログラムを一時停止するために使用します。この命令が呼び出されると、すべてのスレッドが停止します。
戻り値:
なし
exit
コマンドプロトタイプ:
exit()
コマンド説明:
ジョブプログラムを終了させるために使用します。
戻り値:
なし
execute_script
コマンドプロトタイプ:
execute_script(jks_file_path)
コマンド説明:
指定された jks スクリプト ファイルを読み込み実行し、そのファイルの実行が完了した後に、execute_script() の後続の命令を続行します。
戻り値:
なし
マルチスレッド命令
create_thread
コマンドプロトタイプ:
create_thread(thread_file_path, thread_name)
コマンド説明:
サブスレッドを作成し、スレッドを起動して実行します。
パラメータの説明:
| thread_file_path | スレッド プログラム ファイルが保存されている絶対パス。 必ず /user/etc/jkzuc/scripts/program/ ディレクトリに統一して保存する必要があり、他のディレクトリ パスは使用できません。 |
| thread_name | スレッドを一意に識別する文字列。Unicode はサポートされません。 スレッド名が重複している場合、作成に失敗したことを通知します。 |
戻り値:
なし
thread_join
コマンドプロトタイプ:
thread_join(thread_name)
コマンド説明:
指定されたスレッドの動作を同期するために使用され、この関数はメインスレッドでのみ有効です。
パラメータの説明:
| thread_name | スレッドを一意に識別する文字列。Unicode はサポートされません。 スレッド名が重複している場合、作成に失敗したことを通知します。 |
戻り値:
なし
thread_destroy
コマンドプロトタイプ:
thread_destroy(thread_name)
コマンド説明:
指定されたスレッドを破棄するために使用され、この関数はメインスレッドでのみ有効です。
パラメータの説明:
| thread_name | スレッドを一意に識別する文字列。Unicode はサポートされません。 スレッド名が重複している場合、作成に失敗したことを通知します。 |
戻り値:
なし
thread_enter_critical
コマンドプロトタイプ:
thread_enter_critical()
コマンド説明:
スレッドがクリティカルセクションに入る操作に使用されます。
戻り値:
なし
thread_exit_critical
コマンドプロトタイプ:
thread_exit_critical()
コマンド説明:
スレッドがクリティカルセクションを退出する操作に使用されます。
戻り値:
なし
