(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-01-25
(54)【発明の名称】パラレルロボットのマルチスレッドコントローラ
(51)【国際特許分類】
G06F 9/48 20060101AFI20240118BHJP
G06F 9/46 20060101ALI20240118BHJP
G05B 19/042 20060101ALI20240118BHJP
【FI】
G06F9/48 300H
G06F9/46 410
G06F9/48 300F
G05B19/042
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2022578871
(86)(22)【出願日】2022-04-12
(85)【翻訳文提出日】2022-12-20
(86)【国際出願番号】 CN2022086273
(87)【国際公開番号】W WO2023115758
(87)【国際公開日】2023-06-29
(31)【優先権主張番号】202111584313.2
(32)【優先日】2021-12-23
(33)【優先権主張国・地域又は機関】CN
(81)【指定国・地域】
(71)【出願人】
【識別番号】522329504
【氏名又は名称】辰星(天津)自動化設備有限公司
【氏名又は名称原語表記】Chenxing (Tianjin) Automation Equipment Co., Ltd.
【住所又は居所原語表記】No. 01, Workshop No. 29, Tongchang, No. 156 Nanhai Road, Tianjin Economic And Technological Development Zone Tianjin 300450, China
(74)【代理人】
【識別番号】110002262
【氏名又は名称】TRY国際弁理士法人
(72)【発明者】
【氏名】朱 平歩
(72)【発明者】
【氏名】李 艶華
(72)【発明者】
【氏名】王 慧
(72)【発明者】
【氏名】李 志峰
(72)【発明者】
【氏名】劉 松涛
【テーマコード(参考)】
5H220
【Fターム(参考)】
5H220AA05
5H220BB03
5H220BB09
5H220CX01
5H220DD07
5H220JJ12
5H220JJ26
(57)【要約】
本願はパラレルロボットのマルチスレッドコントローラに関する。すべてのタスクを、階層的なマスタースレッド、リアルタイムスレッド、前処理スレッド、バックグラウンドスレッドの4つのスレッドに集約し、異なる優先度のタスクを異なるレベルのスレッドに配置し、運動論理を優先的に確保し、次に運動計画、さらに、通信とインターフェースのインタラクション、最後に、ファイルの読み取りと時間のかかる計算を確保し、各スレッドで様々な演算を厳格に実行させ、各スレッド間でデータインタラクションを行うスレッドセキュリティキュー、及びスレッドクロック呼び出しと相互プッシュタスク機構を提供することによって、スレッド間の通信呼び出しの安全性とデータインタラクションの柔軟性を実現する。
【特許請求の範囲】
【請求項1】
パラレルロボットのマルチスレッドコントローラであって、
マスタースレッドと、リアルタイムスレッドと、前処理スレッドと、バックグラウンドスレッドと、を含み、
前記マスタースレッド、リアルタイムスレッド、前処理スレッド、及びバックグラウンドスレッドの間には相互スケジューリングが存在し、スレッドタスクを作成し、バッファリストにデータを格納して他のプロセスによって呼び出すことによって、スレッドのセキュリティキュー方式で、スレッドの正常な呼び出し及び実行を確保し、
前記マスタースレッドは、パラレルロボットの運動論理の制御を可能にするために初期化及びスレッド呼び出しを行うものであり、前記初期化は、ハードウェア通信の初期化と、ログ管理ツールの初期化と、アラーム管理ツールの初期化と、カスタマイズされたTCP通信プロトコルの初期化と、クロックの初期化と、ロボットパラメータの初期化と、を含み、前記スレッド呼び出しは、変数変更命令の受信と、実行命令の受信と、非同期操作の実行と、通信制御と、を含み、
前記リアルタイムスレッドは、ロボットのハードウェアパラメータの取得と、ロボットモバイルプラットフォームのリアルタイム位置の計算と、ハードウェアへの制御信号送信と、I/Oデバイスのリアルタイムなトリガと、を含むハードウェアデバイスとの通信及びインターフェースインタラクションを可能にするものであり、
前記前処理スレッドは、変数命令解析と、ロボット運動計画と、最新命令計画と、を含む運動計画を実施するものであり、
前記バックグラウンドスレッドは、ファイルの読み書き及び時間のかかる計算のためのものであることを特徴とするパラレルロボットのマルチスレッドコントローラ。
【請求項2】
各スレッドのタスクはタスクリストの形式でメモリに格納され、生成された各タスクには特定のクロック信号が含まれ、タスクはクロックのタイミング順に配列され、各スレッドがタスクリストのタスクを呼び出すときはクロックの順序で呼び出されることを特徴とする請求項1に記載のパラレルロボットのマルチスレッドコントローラ。
【請求項3】
変数の変更時に各スレッドが実行する呼び出し論理は、
前記マスタースレッドは、バックグラウンドキャッシュスレッドを作成し、変数変更命令に対応するタスクをバックグラウンドタスクリストに追加し、前処理スレッドを作成し、変数変更命令に対応するパケットを前処理スレッドに送信することと、
前記前処理スレッドは、マスタースレッドによって送信されたパケットを取得した後、命令解析を行い、ロボットの末端位置を取得するリアルタイムスレッドタスクを作成することと、
前記リアルタイムスレッドは、前記前処理スレッドによって作成されたタスクに従ってロボットのハードウェアパラメータを読み取り、リアルタイムモバイルプラットフォームの位置パラメータを計算し、次の位置更新計画のための前処理スレッドを作成することと、
前記バックグラウンドスレッドは必要なファイル読み取りを行うことと、を含むことを特徴とする請求項2に記載のパラレルロボットのマルチスレッドコントローラ。
【請求項4】
ドラッグ教示時に各スレッドが実行する呼び出し論理は、
前記リアルタイムスレッドは、ロボットのハードウェアパラメータを読み取り、リアルタイムモバイルプラットフォームの位置パラメータを計算し、軌跡点の経路処理のための前処理スレッドを作成する一方、ロボットの末端のトルクセンサのパラメータを読み取り、トルクパラメータを制御信号に変換し、その制御信号をドライバに送信することと、
前記前処理スレッドは、リアルタイムスレッドによって送信されたロボット位置リストを取得し、経路計画及び命令解析を行い、位置パラメータを視覚化プログラムフォーマットにシリアル化し、マスタースレッドタスクを作成し、HMIインターフェース命令をリアルタイムで更新する一方、リアルタイムスレッドによって送信されたロボットのリアルタイム位置を取得し、リアルタイムプロセスを作成し、HMIシミュレーション表示を更新することと、
前記マスタースレッドは、前処理スレッドによって送信されたビジュアルプログラムフォーマットのパケットを取得し、更新された表示情報をHMIに送信する一方、プログラムの実行ログ情報をファイルに格納するバックグラウンドプロセスを作成することと、
前記バックグラウンドプロセスは、必要なファイル読み取りを行うことと、を含むことを特徴とする請求項2に記載のパラレルロボットのマルチスレッドコントローラ。
【請求項5】
ロボットの動作制御時に各スレッドが実行する呼び出し論理は、
前記前処理スレッドは、ロボットの実行プログラムリストを取得し、シリアル化解析を行って可視化テキストフォーマットのパケットを取得し、そのパケットをマスタースレッドタスクに送信する一方、リアルタイムスレッドによって送信されたロボットのリアルタイム位置を取得し、ロボットが次に到着する位置のパラメータを計算し、今回の操作を実行するリアルタイムスレッドタスクを作成することと、
前記リアルタイムスレッドは、ロボットのハードウェアパラメータを読み取り、リアルタイムモバイルプラットフォームの位置パラメータを計算し、次の位置更新計画のための前処理スレッドを作成する一方、前処理スレッドによって更新された位置パラメータを取得し、位置パラメータを制御信号に変換し、制御信号をドライバに送信することと、
前記マスタースレッドは、前処理スレッドによって送信された可視化テキストフォーマットのパケットを取得し、更新された表示情報をHMIに送信する一方、バックグラウンドスレッドを作成し、プログラムの実行ログ情報をファイルに格納することと、
前記バックグラウンドプロセスは、必要なファイル読み取りを行うことと、を含むことを特徴とする請求項2に記載のパラレルロボットのマルチスレッドコントローラ。
【発明の詳細な説明】
【技術分野】
【0001】
本願は、ロボットの技術分野に関し、特にパラレルロボットのマルチスレッドコントローラに関する。
【背景技術】
【0002】
ロボットの運動制御は比較的複雑なプロセスであり、ロボットの制御はリアルタイム性が厳しく要求されるが、コントローラとハードウェアとの通信の実効性を確保する必要があり、また、ロボットの運動計画の過程ではファイルの読み書き、通信、数学計算などの時間のかかる作業が必要であり、これらの作業は、ハードウェアとの通信のリアルタイム性に影響を与えずに、運動に必要なデータを提供する必要があり、このため、スレッドを区別する必要がある。
【0003】
しかし、マルチスレッドプログラムに対して、スレッド間の協力とインタラクションはずっとプログラムの難点であり、例えば、従来の態様はマルチスレッドプログラム間のデータ交換とタスクプッシュの処理に柔軟性がなく、その結果として、全体の制御フローのリアルタイム性と安全性が不十分であることを招く。
【発明の概要】
【発明が解決しようとする課題】
【0004】
本願は、既存のマルチスレッド制御方式のリアルタイム性と安全性が不十分であるという問題点を解決するパラレルロボットのマルチスレッドコントローラを提供することを目的とする。
【課題を解決するための手段】
【0005】
本願の上記の目的は、以下の技術的解決手段によって達成される。
【0006】
本願の実施例は、マスタースレッドと、リアルタイムスレッドと、前処理スレッドと、バックグラウンドスレッドと、を含み、
前記マスタースレッド、リアルタイムスレッド、前処理スレッド、及びバックグラウンドスレッドの間には相互スケジューリングが存在し、スレッドタスクを作成し、バッファリストにデータを格納して他のプロセスによって呼び出すことによって、スレッドのセキュリティキュー方式で、スレッドの正常な呼び出し及び実行を確保し、
前記マスタースレッドは、パラレルロボットの運動論理の制御を可能にするために初期化及びスレッド呼び出しを行うものであり、前記初期化は、ハードウェア通信の初期化と、ログ管理ツールの初期化と、アラーム管理ツールの初期化と、カスタマイズされたTCP通信プロトコルの初期化と、クロックの初期化と、ロボットパラメータの初期化と、を含み、前記スレッド呼び出しは、変数変更命令の受信と、実行命令の受信と、非同期操作の実行と、通信制御と、を含み、
前記リアルタイムスレッドは、ロボットのハードウェアパラメータの取得と、ロボットモバイルプラットフォームのリアルタイム位置の計算と、ハードウェアへの制御信号送信と、I/Oデバイスのリアルタイムなトリガと、を含むハードウェアデバイスとの通信及びインターフェースインタラクションを可能にするものであり、
前記前処理スレッドは、変数命令解析と、ロボット運動計画と、最新命令計画と、を含む運動計画を実施するものであり、
前記バックグラウンドスレッドは、ファイルの読み書き及び時間のかかる計算のためのものである、パラレルロボットのマルチスレッドコントローラを提供する。
【0007】
好適には、各スレッドのタスクはタスクリストの形式でメモリに格納され、生成された各タスクには特定のクロック信号が含まれ、タスクはクロックのタイミング順に配列され、各スレッドがタスクリストのタスクを呼び出すときはクロックの順序で呼び出される。
【0008】
好適には、変数の変更時に各スレッドが実行する呼び出し論理は、
前記マスタースレッドは、バックグラウンドキャッシュスレッドを作成し、変数変更命令に対応するタスクをバックグラウンドタスクリストに追加し、前処理スレッドを作成し、変数変更命令に対応するパケットを前処理スレッドに送信することと、
前記前処理スレッドは、マスタースレッドによって送信されたパケットを取得した後、命令解析を行い、ロボットの末端位置を取得するリアルタイムスレッドタスクを作成することと、
前記リアルタイムスレッドは、前記前処理スレッドによって作成されたタスクに従ってロボットのハードウェアパラメータを読み取り、リアルタイムモバイルプラットフォームの位置パラメータを計算し、次の位置更新計画のための前処理スレッドを作成することと、
前記バックグラウンドスレッドは必要なファイル読み取りを行うことと、を含む。
【0009】
好適には、ドラッグ教示時に各スレッドが実行する呼び出し論理は、
前記リアルタイムスレッドは、ロボットのハードウェアパラメータを読み取り、リアルタイムモバイルプラットフォームの位置パラメータを計算し、軌跡点の経路処理のための前処理スレッドを作成する一方、ロボットの末端のトルクセンサのパラメータを読み取り、トルクパラメータを制御信号に変換し、その制御信号をドライバに送信することと、
前記前処理スレッドは、リアルタイムスレッドによって送信されたロボット位置リストを取得し、経路計画及び命令解析を行い、位置パラメータを視覚化プログラムフォーマットにシリアル化し、マスタースレッドタスクを作成し、HMIインターフェース命令をリアルタイムで更新する一方、リアルタイムスレッドによって送信されたロボットのリアルタイム位置を取得し、リアルタイムプロセスを作成し、HMIシミュレーション表示を更新することと、
前記マスタースレッドは、前処理スレッドによって送信された視覚化プログラムフォーマットのパケットを取得し、更新された表示情報をHMIに送信する一方、プログラムの実行ログ情報をファイルに格納するバックグラウンドプロセスを作成することと、
前記バックグラウンドプロセスプロセスは、必要なファイル読み取りを行うことと、を含む。
【0010】
好適には、ロボットの動作制御時に各スレッドが実行する呼び出し論理は、
前記前処理スレッドは、ロボットの実行プログラムリストを取得し、シリアル化解析を行って可視化テキストフォーマットのパケットを取得し、そのパケットをマスタースレッドタスクに送信する一方、リアルタイムスレッドによって送信されたロボットのリアルタイム位置を取得し、ロボットが次に到着する位置のパラメータを計算し、今回の操作を実行するリアルタイムスレッドタスクを作成することと、
前記リアルタイムスレッドは、ロボットのハードウェアパラメータを読み取り、リアルタイムモバイルプラットフォームの位置パラメータを計算し、次の位置更新計画のための前処理スレッドを作成する一方、前処理スレッドによって更新された位置パラメータを取得し、位置パラメータを制御信号に変換し、制御信号をドライバに送信することと、
前記マスタースレッドは、前処理スレッドによって送信された可視化テキストフォーマットのパケットを取得し、更新された表示情報をHMIに送信する一方、バックグラウンドスレッドを作成し、プログラムの実行ログ情報をファイルに格納することと、
前記バックグラウンドプロセスプロセスは、必要なファイル読み取りを行うことと、を含む。
【発明の効果】
【0011】
本願の実施例による技術的解決手段は、以下の有益な効果を含む。
【0012】
本願の実施例による技術的解決手段において、すべてのタスクを、階層的なマスタースレッド、リアルタイムスレッド、前処理スレッド、及びバックグラウンドスレッドの4つのスレッドに集約し、異なる優先度のタスクを異なるレベルのスレッドに配置し、運動の論理を優先的に確保し、次に運動計画、さらに、通信とインターフェースのインタラクション、最後に、ファイルの読み取りと時間のかかる計算を確保し、各スレッドで様々な演算を厳格に実行させ、各スレッド間でデータインタラクションを行うスレッドのセキュリティキュー、及びスレッドクロック呼び出しと相互プッシュタスク機構を提供することによって、スレッド間の通信呼び出しの安全性とデータインタラクションの柔軟性を実現する。
【0013】
なお、上記の一般的な説明及び後の詳細な説明は、単に例示的及び説明的なものであり、本願を限定するものではない。
【図面の簡単な説明】
【0014】
ここでの図面は本明細書に組み込まれ、本明細書の一部を構成し、本明細書に適合する実施例を示し、本明細書と共に本明細書の原理を説明するために使用される。
【
図1】本願の実施例によるパラレルロボットのマルチスレッドコントローラの構造概略図である。
【
図2】マスタースレッドの初期化の流れの概略図である。
【
図3】各スレッドタスクリストのプッシュプロセスの概略図である。
【
図4】HMIが発行した変数変更命令を取得した後の各スレッドの呼び出し論理の概略図である。
【
図5】ドラッグ教示時の各スレッドの呼び出し論理の概略図である。
【
図6】実行制御時の各スレッドの呼び出し論理の概略図である。
【発明を実施するための形態】
【0015】
ここでは、例示的な実施例を詳細に説明し、その例を図面に示す。以下の説明には図面が記載されている場合、別段の記載がない限り、異なる図面中の同じ数字は、同一又は類似の要素を表す。以下の例示的な実施例で説明される実施形態は、本願と一致するすべての実施形態を表すわけではない。むしろ、これらは、特許請求の範囲に詳述された、本願のいくつかの態様と一致する装置及び方法の一例にすぎない。
【0016】
従来のコントローラのスレッド管理方式には、表1に示すような欠点がある。
【表1】
【0017】
上記の問題を解決するために、本願は、マルチスレッド制御の割り当て、統合スキームを提供する。以下、実施例によって詳細に説明する。
【0018】
<実施例>
図1を参照すると、
図1は、本願の実施例によるパラレルロボットのマルチスレッドコントローラの構造概略図である。
図1に示すように、このマルチスレッドコントローラは、マスタースレッドと、リアルタイムスレッドと、前処理スレッドと、バックグラウンドスレッドと、を含む。その中で、リアルタイムスレッドは、ドライバ(例えばモータ)やセンサとリアルタイムで通信する。リアルタイムスレッドでは、複雑な計算を最小限に抑えて、各リアルタイムスレッドの周期的な計算がタイムアウトしないようにする必要がある。リアルタイムスレッドの負荷を軽減するために、計算量の大きいタスクを前処理スレッドに渡し、前処理スレッドがリアルタイムスレッドに計算結果を送信する。スレッドごとにタスクタイプを明確に分け、具体的なタスクを表2に示す。
【0019】
表2と合わせて、各スレッドの主なタスクの詳細を以下に説明する。
【表2】
【0020】
一、マスタースレッド
マスタースレッドの実行過程は、主に、初期化とスレッド呼び出しの2つの部分に分けられ、パラレルロボットの運動論理の制御を実現する。
【0021】
このうち、初期化はプログラムプロセスの起動時に完了し、通信、ログ、時計などのツールの初期化やロボットのハードウェアパラメータの読み取りに用いられるもので、具体的には、次のことを含む。
【0022】
1.ハードウェア通信初期化であって、Ethernetの開発フレームワークに基づいたリアルタイム工業フィールドバス通信プロトコルEtherCATを初期化して、それに分散クロックの特徴のジッタが小さくて、より正確なクロックを取得させ、ハードウェアデバイスに基づいてデータのインタラクションを完了する。
【0023】
2.ログ管理ツールの初期化であって、各スレッドが呼び出されたときにそのツールを使用し、スレッドが実行したすべての動作を記録し、ある仕様に従って表現し、テキストフォーマットでファイルに格納できるようにする。
【0024】
3.アラーム管理ツールの初期化であって、ユーザのインタラクション中でプログラムのプロセスの実行時に発生する可能性がある異常な問題をチェックし、プログラムのクラッシュを減らし、プログラムの安定性を高める。
【0025】
4.カスタマイズされたTCP通信プロトコルの初期化であって、スレッド間の通信、HMI(Human Machine Interface、ヒューマンマシンインタフェース)と運動制御システム間の通信はすべてTCPプロトコルを介して行われる。
【0026】
5.クロックの初期化であって、スレッドごとに周期的に実行し、システム時間の変化に影響されない時間間隔のカウント方法により、スレッドが周期的に実行されることを確保する。
【0027】
6.ロボットパラメータの初期化であって、運動制御システムはパラレルロボットの汎用制御システムであり、ロボットの実際のパラメータに基づいて適応を完成することができるので、プログラムプロセスの起動時に、後続の計算を考慮して、先にロボットパラメータの配置を行う。
【0028】
すべてのサブスレッドはマスタースレッドで作成され実行されるので、マスタースレッドでは、システムのハードウェア通信プロトコル、ログ管理、アラームなどを初期化し、マスタースレッド登録後にシステムクロックプールオブジェクトを初期化して、各スレッドの実行時のクロック応答が正常に行われるようにする必要がある。次に、TCPプロトコルを初期化し、運動制御システムとHMI、運動制御システムとデバイス間の通信を確保する。マスタースレッドのタスク応答を行うたびに、ロボットのパラメータを初期化し、ロボットの運動の安全性、安定性を確保する必要がある。具体的なプロセスを
図2に示す。
【0029】
また、スレッド呼び出しはサブスレッドを作成し、サブスレッドの呼び出しを管理することである。各サブスレッドが単一インスタンス関連オブジェクトを完成した後、制御をマスタースレッドに返し、サブスレッドは周期的に実行状態をフィードバックし、マスタースレッドの割込みスケジューリングを受け入れる。スレッドの呼び出しは、次のことを含む。
【0030】
1.変数変更命令の受信であって、すなわち、HMIが変数を変更する時に、マスタースレッドのHMI通信によってサイクルしてリスニングされて、HMIパケットを受信して、キャッシュ操作のためにバックグラウンドプロセスを起動し、HMIインターフェースをリアルタイムで更新し、前処理スレッドタスクを作成し、前処理スレッドにパケットを送信する。
【0031】
2.実行命令の受信であって、すなわちHMI実行命令のパケットを受信し、前処理命令に送信し、命令実行状況をリアルタイムで表示する。
【0032】
3.非同期操作であって、すなわち、プログラムの実行と同時にアラーム、HMIインターフェースの更新などの非同期操作を実行し、スレッド間の通信をサポートしながらプログラムを実行する。
【0033】
4.通信制御であって、すなわちHMI通信、TCP通信を周期的に実行するように制御し、システムのリアルタイム性と安定性を確保する。
【0034】
二、リアルタイムスレッド
リアルタイムスレッドは、ロボットハンドの運動をより安定させるために、厳密なリアルタイム性を確保する必要がある。リアルタイムスレッドは最も優先度の高いスレッドで、毎回のエントリの時間を厳密に確保する必要があり、毎回のサイクルの開始時に前の周期の演算結果をハードウェアに書き込み(つまり、モータなどのドライバに送信)、センサなどのフィードバックデータを制御システムに読み込み、すなわちハードウェアデバイスとの通信とインターフェースのインタラクションを実現する。具体的には、以下のとおりである。
【0035】
1.ロボットのハードウェアパラメータの取得であって、すなわち、ロボットの関節角度、位置などのハードウェアパラメータをリアルタイムで読み取り、前処理スレッドを作成し、パケットを前処理スレッドに送信する。
【0036】
2.ロボットのプラットフォームのリアルタイム位置の計算であって、すなわち、ロボットのハードウェアのパラメータに基づいてロボットの末端(モバイルプラットフォーム)の位置を計算し、ここでは、命令に基づいて到着する位置に従って、ロボットのハードウェア位置・姿勢パラメータを計算し、ハードウェアによって制御信号を送信してもよく、リアルタイム位置・姿勢パラメータに基づいて前処理スレッドにパケットを送信し、命令を生成してもよい。
【0037】
3.ハードウェアへの制御信号の送信であって、すなわち、受信した前処理スレッド命令を具体的なモータ(ドライバ)制御信号に変換する。
【0038】
4.I/Oデバイスのリアルタイムなトリガであって、すなわち、運動制御システムにI/O応答信号をリアルタイムで送信する。100マイクロ秒を超えるタスクの場合は、注意が必要なので、前処理スレッドや別のスレッドで処理することを検討する。
【0039】
三.前処理スレッド
前処理スレッドはHMI変数命令の解析とロボット実行プログラムに対する命令計画を担当し、すなわち運動計画を実現する。具体的には次のことを含む。
【0040】
1.変数命令解析であって、すなわち、マスタースレッドによって送信されたHMI変数命令変更パケットを受信し、パーサーによって実行可能プログラムに逆シリアル化し、リアルタイムスレッドを作成して実行する。
【0041】
2.ロボットの運動計画であって、すなわち、リアルタイムスレッドの位置・姿勢パラメータを取得して、経路計画を行い、命令をシリアル化して可視化命令変数にし、パケット形式でマスタースレッドに送信する。
【0042】
3.最新命令計画であって、すなわち、命令の順序を計画する。
前処理スレッドにおける運動計画は、経路計画、速度計画、作業空間、座標系変換などを含む非常に複雑なプロセスであるが、本実施例では、命令呼び出しに関する論理部分のみを説明し、具体的な実行については詳述しない。
【0043】
四.バックグラウンドスレッド
バックグラウンドスレッドは、待機が必要な操作を実行し、主にファイルの読み書き、時間のかかる計算及びシステム操作タスクを実行し、バックグラウンドスレッドの優先度は最も低く、他のスレッドへの干渉を防ぎ、実効性の高い計算が優先的に行われることを確保する。具体的には次のことを含む。
【0044】
1.ファイルの読み書きであって、すなわち、マスタースレッドがHMI変数命令を受信して変更するときにバックグラウンドアクセスプロセスを作成し、実行中はいつでも他のスレッドによって中断される。
【0045】
2.時間のかかる計算であって、すなわち、プログラムが大容量の計算を必要とする場合、バックグラウンドで計算し、これによって、コントローラのリアルタイム性を高め、システムの性能に影響を及ぼさないようにする。
【0046】
また、実際の適用では、マスタースレッド、リアルタイムスレッド、前処理スレッド及びバックグラウンドスレッドの間には相互スケジューリングが存在し、スレッドタスクを作成し、バッファリストにデータを格納して他のプロセスによって呼び出すことによって、スレッドのセキュリティキュー方式でスレッドの正常な呼び出し及び実行を確保する。スレッドのセキュリティキューはプログラムレベルのキューであり、データは1つのスレッドからのみ書き込まれるため、他のスレッドから読み出されたときに、異常なデータやエラーデータが読み出されないことが確保される。プログラムを使用する場合には用意したデータ構造体をキューの末端に追加し、使用するときにキューから最も早く格納された構造体を排出する。プログラムは、この2つのインターフェースをカプセル化することによって、すべてのスレッド間のデータインタラクションの呼び出しを提供する。ここでのデータは、インテリジェントポインタの形でメモリを管理し、システムリソースの浪費を回避する。スレッドのセキュリティキューを使用することによって、1つのスレッドが必要なデータをキューに追加し、別のスレッドに次の処理を安全に渡すことができる。
【0047】
クロックの正確性を確保することを前提に、プログラムの安定な実行を確保するためにスレッドのセキュリティキュー機構が必要である。各スレッドにおけるタスクはタスクリストの形でメモリに格納され、生成されたタスクごとに具体的なクロック信号が含まれ、タスクはクロックのタイミング順に配列されているため、各タスクリストへのプッシュはFIFOルールのほかに挿入もサポートしている。各スレッドがタスクリストのタスクを呼び出す際には、タイミング順に呼び出す。
図3に示すように、スレッドは実行周期内にシステムリソースを呼び出し、実行完了又は周完了時にシステムリソースを解放することで、システムリソースがアイドルになることを回避する。
【0048】
また、上記の実施例で述べたように、各スレッドは明確なタスクタイプ区分を有するが、実際の適用では、各スレッドは、実行可能命令をすべて1回実行する必要はなく、明確な実行ステップを有し、次のスレッドの実行命令を返すだけでよい。例えば、1つのリアルタイムスレッドは、ロボットモバイルプラットフォームのリアルタイム位置のみを計算し、それを前処理スレッドに送信し、前処理スレッドは、この命令に応答し続け、別のリアルタイムスレッドは、ロボットのハードウェアパラメータを取得し、ロボットの運動計画などの計算のために前処理スレッドに送信することであってもよい。理解を深めるために、上記の各スレッドによって実行される呼び出し論理を、以下のいくつかの例を使用して説明する。
【0049】
1)変数の変更であって、すなわち、ユーザはHMIを通じて変数の変更命令を発行し、変数の変更を行う。ここで、各スレッドの主な呼び出し論理は、
図4を参照することができ、主に以下のこと、を含む。
【0050】
マスタースレッドは、バックグラウンドキャッシュスレッドを作成し、変数変更命令に対応するタスクをバックグラウンドタスクリストに追加し、前処理スレッドを作成し、変数変更命令に対応するパケットを前処理スレッドに送信する。
【0051】
前処理スレッドは、マスタースレッドによって送信されたパケットを取得した後、命令解析を行い、ロボットの端末位置を取得するリアルタイムスレッドタスクを作成する。
【0052】
リアルタイムスレッドは、前処理スレッドによって作成されたタスクに従ってロボットのハードウェアパラメータを読み取り、リアルタイムモバイルプラットフォームの位置パラメータを計算し、次の位置更新計画のための前処理スレッドを作成する。
【0053】
バックグラウンドスレッドは、必要なファイルの読み取りを行う。
【0054】
2)ドラッグ教示であって、すなわち、オペレータがロボットの各関節を直接ドラッグして理想的な姿勢に移動し、それをロボットが記録する過程である。ここで、各スレッドの主な呼び出し論理は、
図5を参照して、主に以下のこと、を含む。
【0055】
リアルタイムスレッドは、ロボットのハードウェアパラメータを読み取り、リアルタイムモバイルプラットフォームの位置パラメータを計算し、軌跡点の経路処理のための前処理スレッドを作成する一方、ロボットの末端のトルクセンサのパラメータを読み取り、トルクパラメータを制御信号に変換し、その制御信号をドライバに送信する。
【0056】
前処理スレッドは、リアルタイムスレッドによって送信されたロボットの位置リストを取得し、経路計画及び命令解析を行い、位置パラメータを視覚化プログラムフォーマットにシリアル化し、マスタースレッドタスクを作成し、HMIインターフェース命令をリアルタイムで更新する一方、リアルタイムスレッドによって送信されたロボットのリアルタイム位置を取得し、リアルタイムプロセスを作成し、HMIシミュレーション表示を更新する。
【0057】
マスタースレッドは、前処理スレッドによって送信された視覚化パケットを取得し、更新された表示情報をHMIに送信する一方、プログラムの実行ログ情報をファイルに格納するバックグラウンドプロセスを作成する。
【0058】
バックグラウンドプロセスは、必要なファイルの読み取りを行う。
【0059】
3)実行制御であって、すなわち、コントローラはロボットを制御して指令通りに実行する運。ここで、各スレッドの主な呼び出し論理は、
図6を参照して、主に以下のこと、を含む。
【0060】
前処理スレッドは、ロボットの実行プログラムリストを取得し、シリアル化解析を行って可視化テキストフォーマットのパケットを取得し、そのパケットをマスタースレッドタスクに送信する一方、リアルタイムスレッドによって送信されたロボットのリアルタイム位置を取得し、ロボットが次に到着する位置のパラメータを計算し、今回の操作を実行するリアルタイムスレッドタスクを作成する。
【0061】
リアルタイムスレッドは、ロボットのハードウェアパラメータを読み取り、リアルタイムモバイルプラットフォームの位置パラメータを計算し、次の位置更新計画のための前処理スレッドを作成する一方、前処理スレッドによって更新された位置パラメータを取得し、位置パラメータを制御信号に変換し、制御信号をドライバに送信する。
【0062】
マスタースレッドは、前処理スレッドによって送信された可視化テキストフォーマットのパケットを取得し、更新された表示情報をHMIに送信する一方、バックグラウンドスレッドを作成し、プログラムの実行ログ情報をファイルに格納する。
【0063】
バックグラウンドプロセスは、必要なファイルの読み取りを行う。
【0064】
上記した実施例によれば、本願の態様では、すべてのタスクを、階層的なマスタースレッド、リアルタイムスレッド、前処理スレッド、バックグラウンドスレッドの4つのスレッドに集約し、異なる優先度のタスクを異なるレベルのスレッドに配置し、運動の論理を優先的に確保し、次に運動計画、さらに、通信とインターフェースのインタラクション、最後に、ファイルの読み取りと時間のかかる計算を確保し、各スレッドで様々な演算を厳格に実行させ、各スレッド間でデータインタラクションを行うスレッドのセキュリティキュー、及びスレッドクロック呼び出しと相互プッシュタスク機構を提供することによって、スレッド間の通信呼び出しの安全性とデータインタラクションの柔軟性を実現する。
【0065】
なお、上記した各実施例の同一又は類似の部分は相互に参照されてもよく、いくつかの実施例では、詳細に説明されていない内容は、他の実施例の同一又は類似の内容を参照されてもよい。
【0066】
なお、本願の説明では、「第1」、「第2」等の用語は説明の目的のためだけに使用され、相対的重要性を示すもの又は暗示するものとは理解されない。また、本願の説明では、別段の記載がない限り、「複数」とは、少なくとも2つを意味する。
【0067】
フローチャート中に、又は本明細書で他の方式で説明されたプロセス又は方法の説明のいずれかは、特定の論理機能又はプロセスを実装するための1つ又は複数のステップを含む実行可能命令を表すコードのモジュール、フラグメント、又は部分を表し、また、本願の好ましい実施例の範囲は、本願の当業者に理解されるべきであるが、示された順序又は議論された順序ではなく、関連する機能にしたがって実質的に同時に、又は逆の順序で機能を実行すること、を含む別の実装を含む。
【0068】
なお、本願の様々な部分は、ハードウェア、ソフトウェア、ファームウェア、又はこれらの組み合わせで実装されてもよい。上記した実施形態では、複数のステップ又は方法は、メモリに記憶され、適切な命令実行システムによって実行されるソフトウェア又はファームウェアによって実装されてもよい。例えば、ハードウェアで実装する場合、他の実施形態と同様に、データ信号の論理機能を実現するための論理ゲート回路を有する離散論理回路、適切な組み合わせの論理ゲート回路を有する特定用途向け集積回路、プログラマブルゲートアレイ(PGA)、フィールドプログラマブルゲートアレイ(FPGA)など、当業者に知られている技術のいずれか、又はそれらの組み合わせで実現することができる。
【0069】
当業者であれば、上記した実施形態の方法を実現するステップの全部又は一部は、実行時に方法の実施例のステップのうちの1つ又はその組合せを含む、コンピュータ読み取り可能な記憶媒体に記憶され得るプログラムによって、関連するハードウェアによって実行されるように命令することができることが理解される。
【0070】
さらに、本願の様々な実施例における各機能ユニットは、1つの処理モジュールに統合されていてもよいし、物理的に個別に存在していてもよいし、2つ以上のユニットが1つのモジュールに統合されていてもよい。上記の統合されたモジュールは、ハードウェアとしても、ソフトウェア機能モジュールとしても実現可能である。前記統合されたモジュールは、ソフトウェア機能モジュールの形で実装され、独立した製品として販売又は使用される場合には、コンピュータ読み取り可能な記憶媒体に格納することもできる。
【0071】
上記の記憶媒体は、読み取り専用メモリ、磁気ディスク、光ディスク等であってもよい。
【0072】
本明細書の説明において、「一実施例」、「いくつかの実施例」、「例」、「特定の例」、又は「いくつかの例」などの用語を参照した説明は、この実施例又は例を参照して説明さえる特定の特徴、構造、材料、又は特性が本願の少なくとも1つの実施例又は例に含まれることを意味する。本明細書において、上記の用語の概略的な表現は、必ずしも同じ実施例又は例を指すものではない。さらに、説明された特定の特徴、構造、材料、又は特性は、任意の1つ又は複数の実施例又は例において、適切な方法で組み合わされてもよい。
【0073】
本願の実施例が上記して示され、説明されているが、上記の実施例は例示的なものであり、本願を限定するものとは理解されず、当業者であれば、本願の範囲内で上記の実施例を変更、変更、置換、及び変形することができることが理解される。
【国際調査報告】