(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-02-26
(45)【発行日】2024-03-05
(54)【発明の名称】作業機械
(51)【国際特許分類】
E02F 9/20 20060101AFI20240227BHJP
【FI】
E02F9/20 N
(21)【出願番号】P 2021005248
(22)【出願日】2021-01-15
【審査請求日】2023-06-05
(73)【特許権者】
【識別番号】000005522
【氏名又は名称】日立建機株式会社
(74)【代理人】
【識別番号】110001829
【氏名又は名称】弁理士法人開知
(72)【発明者】
【氏名】ヴティア ヴォン
(72)【発明者】
【氏名】國松 聡美
(72)【発明者】
【氏名】青野 正裕
【審査官】亀谷 英樹
(56)【参考文献】
【文献】特開平09-218858(JP,A)
【文献】特開2021-001436(JP,A)
【文献】特開平10-124479(JP,A)
【文献】特開2008-009621(JP,A)
【文献】特開平03-262074(JP,A)
【文献】特開平05-084638(JP,A)
【文献】特開2020-117982(JP,A)
【文献】特開2012-233404(JP,A)
【文献】特開平01-263323(JP,A)
【文献】特開2020-201859(JP,A)
【文献】米国特許出願公開第2016/0170089(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
E02F 9/20-9/22
E02F 3/42-3/43
E02F 3/84-3/85
E02F 9/26
G06F 1/00-40/00
(57)【特許請求の範囲】
【請求項1】
作業現場における作業を行う
とともに、前記作業現場の地形情報を計測する作業機械であって、
1つのマスタ演算装置と、複数のスレイブ演算装置と、記憶装置とを有し、前記記憶装置に記憶された複数の情報からなる情報群に基づ
いて、前記1つのマスタ演算装置および複数のスレイブ演算装置によ
って前記作業現場の地形情報の演算処理を行う制御システムを備え、
前記制御システムは、
前記マスタ演算装置が、前記複数のスレイブ演算装置のうちの1つのスレイブ演算装置から送信された前記情報群に基づく演算処理の実行要求に応じて、前記情報群を予め定めた分割規則に基づいて複数の小情報群に分割するとともに、前記小情報群に基づく演算処理の実行を前記複数の小情報群のそれぞれについて前記複数のスレイブ演算装置の何れかに設定し、
前記複数のスレイブ演算装置が、前記マスタ演算装置で設定された前記小情報群に基づく演算処理をそれぞれ実行し、演算処理の結果とともに演算処理の実行に要した演算負荷の情報を前記マスタ演算装置に返信し、
前記マスタ演算装置が、前記複数のスレイブ演算装置からそれぞれ返信された演算結果を統合し、統合した演算結果を前記情報群に基づく演算処理の実行要求を送信したスレイブ演算装置に前記情報群の演算結果として返信するとともに、前記複数のスレイブ演算装置から返信された演算負荷の情報に基づいて、前記複数のスレイブ演算装置の演算負荷が均一になるように前記分割規則を変更する
際に、1つのスレイブ演算装置あたりの演算負荷である平均演算負荷を算出するとともに、前記複数のスレイブ演算装置のそれぞれに前記小情報群に基づく演算処理を割り当てた場合に、現在の演算負荷の合計と、前記小情報群に基づく演算処理を割り当てる前の演算負荷の合計とのどちらが平均演算負荷に近いかを比較し、比較結果に基づいて、前記分割規則を変更することを特徴とする作業機械。
【請求項2】
請求項1記載の作業機械において、
前記情報群は、前記作業現場における物体の表面位置を前記作業現場に設定された現場座標系における複数の座標で示す点群情報であり、
前記制御システムは、
前記マスタ演算装置が、前記複数のスレイブ演算装置のうちの1つのスレイブ演算装置から送信された前記情報群に基づく演算処理の実行要求に応じて、前記作業現場の空間領域を予め定めた領域である複数のグリッドに分割することで、前記情報群である点群情報群を複数の小情報群に分割するともに、前記複数のグリッドに前記複数のスレイブ演算装置の何れかを設定し、
前記複数のスレイブ演算装置が、前記マスタ演算装置で設定された前記グリッドに含まれる座標からなる前記小情報群に基づく演算処理をそれぞれ実行し、演算処理の結果とともに演算処理の実行に要した演算負荷の情報を前記マスタ演算装置に返信し、
前記マスタ演算装置が、前記複数のスレイブ演算装置からそれぞれ返信された演算結果を統合し、統合した演算結果を前記情報群に基づく演算処理の実行要求を送信したスレイブ演算装置に前記情報群の演算結果として返信するとともに、前記複数のスレイブ演算装置から返信された演算負荷の情報に基づいて、前記複数のスレイブ演算装置の演算負荷が均一になるように前記複数のグリッドの領域をそれぞれ変更することを特徴とする作業機械。
【請求項3】
請求項1記載の作業機械において、
前記複数のスレイブ演算装置は、異なる演算性能のスレイブ演算装置を含むことを特徴とする作業機械。
【請求項4】
請求項1記載の作業機械において、
前記記憶装置は、前記マスタ演算装置および前記複数のスレイブ演算装置にそれぞれ設けられた複数の記憶装置から成り、
前記複数のスレイブ演算装置の記憶装置は、前記マスタ演算装置の記憶装置に記憶されている情報から複製される情報をそれぞれ記憶することを特徴とする作業機械。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、作業機械に関する。
【背景技術】
【0002】
作業機械による情報化施工や施工自動化においては、刻一刻と変化する現場の地形情報の把握が非常に重要である。また、作業現場における施工精度に影響するため、地形情報の精度の向上は必要不可欠である。
【0003】
このような作業機械における地形情報の演算に係る従来技術としては、例えば、特許文献1,2に記載のものがある。特許文献1には、作業機械に取り付けられ、対象を検出して、t対象の情報を出力する対象検出部と、前記対象検出部によって検出された前記対象の情報を用いて、前記対象の三次元形状を表す形状情報を出力する形状検出部と、前記形状情報及び前記形状情報から得られた情報の少なくとも一方を含む、施工に関する情報を送信する通信部と、を含む、施工管理システムが開示されている。
【0004】
また、特許文献2には、作業機械に設けられた撮像装置によって撮像された画像対の中から、処理対象となる対象画像対を選択する選択部と、選択された前記対象画像対を撮像した前記撮像装置に係るカメラパラメータを用いて、選択された前記対象画像対から作業機械の周辺の地形を表す三次元データを生成するステレオ計測部とを備える施工管理装置が開示されている。
【0005】
また、演算処理の高速化に係る従来技術として、例えば、特許文献3には、所定の信号を基準として現用系(通常使用されるシステム)の送信装置から出力される無線周波信号の遅延時間と予備系(予備として使用されるシステム)の送信装置から出力される無線周波信号の遅延時間とを検出する検出部と、前記現用系の送信装置から出力される無線周波信号の遅延時間と前記予備系の送信装置から出力される無線周波信号の遅延時間との間の差分が小さくなるように、前記現用系の送信装置内の信号遅延時間または前記予備系の送信装置内の信号遅延時間を調整する調整部と、を備えた遅延時間調整装置が開示されている。
【先行技術文献】
【特許文献】
【0006】
【文献】特開2017-71915号公報
【文献】特開2019-49121号公報
【文献】特開2017-22658号公報
【発明の概要】
【発明が解決しようとする課題】
【0007】
上記特許文献3に記載の従来技術においては、複数の演算装置によりタスク単位で並列して演算処理を行っている。しかしながら、作業機械が作業現場において行う地形情報の演算のように、タスクごとの計算量の偏りが大きい場合には、従来技術のようにタスク単位で並列して演算する方法では、演算処理の高速化を十分に行うことができなかった。
【0008】
本発明は上記に鑑みてなされたものであり、より高速に多くの情報に基づく演算を行うことができる作業機械を提供することを目的とする。
【課題を解決するための手段】
【0009】
本願は上記課題を解決する手段を複数含んでいるが、その一例を挙げるならば、作業現場における作業を行うとともに、前記作業現場の地形情報を計測する作業機械であって、1つのマスタ演算装置と、複数のスレイブ演算装置と、記憶装置とを有し、前記記憶装置に記憶された複数の情報からなる情報群に基づいて、前記1つのマスタ演算装置および複数のスレイブ演算装置によって前記作業現場の地形情報の演算処理を行う制御システムを備え、前記制御システムは、前記マスタ演算装置が、前記複数のスレイブ演算装置のうちの1つのスレイブ演算装置から送信された前記情報群に基づく演算処理の実行要求に応じて、前記情報群を予め定めた分割規則に基づいて複数の小情報群に分割するとともに、前記小情報群に基づく演算処理の実行を前記複数の小情報群のそれぞれについて前記複数のスレイブ演算装置の何れかに設定し、前記複数のスレイブ演算装置が、前記マスタ演算装置で設定された前記小情報群に基づく演算処理をそれぞれ実行し、演算処理の結果とともに演算処理の実行に要した演算負荷の情報を前記マスタ演算装置に返信し、前記マスタ演算装置が、前記複数のスレイブ演算装置からそれぞれ返信された演算結果を統合し、統合した演算結果を前記情報群に基づく演算処理の実行要求を送信したスレイブ演算装置に前記情報群の演算結果として返信するとともに、前記複数のスレイブ演算装置から返信された演算負荷の情報に基づいて、前記複数のスレイブ演算装置の演算負荷が均一になるように前記分割規則を変更する際に、1つのスレイブ演算装置あたりの演算負荷である平均演算負荷を算出するとともに、前記複数のスレイブ演算装置のそれぞれに前記小情報群に基づく演算処理を割り当てた場合に、現在の演算負荷の合計と、前記小情報群に基づく演算処理を割り当てる前の演算負荷の合計とのどちらが平均演算負荷に近いかを比較し、比較結果に基づいて、前記分割規則を変更するものとする。
【発明の効果】
【0010】
本発明によれば、より高速に多くの情報に基づく演算を行うことができる。
【図面の簡単な説明】
【0011】
【
図1】作業機械の一例である油圧ショベルの外観を模式的に示す図である。
【
図2】第1の実施の形態に係る制御システムの全体構成を模式的に示す図である。
【
図3】スレイブCPUの物体検知アプリケーションの処理内容を示すフローチャートである。
【
図4】スレイブCPUの物体検知アプリケーションにおける法線ベクトル演算処理の処理内容を示すフローチャートである。
【
図5】リクエスト送信処理において送信される分配処理の処理要求リクエストの一例を示す図である。
【
図6】処理命令リクエスト送信処理において送信される演算処理の処理命令リクエストの一例を示す図である。
【
図7】処理命令レスポンス送信処理において送信される処理命令レスポンスの一例を示す図である。
【
図8】マスタCPUの地形担当管理部の処理分配部の処理内容を示すフローチャートである。
【
図9】マスタCPUの地形担当管理部の処理分配部における処理分配処理の処理内容を示すフローチャートである。
【
図10】スレイブCPUの地形処理部の法線ベクトル演算実行部の処理内容を示すフローチャートである。
【
図11】マスタCPUの地形担当管理部の処理結果収集部の処理内容を示すフローチャートである。
【
図12】第2の実施の形態に係るマスタCPUの地形担当管理部の処理分配部における処理分配処理の処理内容を示すフローチャートである。
【
図13】第2の実施の形態に係るマスタCPUの地形担当管理部の処理結果収集部の処理内容を示すフローチャートである。
【
図14】第3の実施の形態に係る制御システムの全体構成を模式的に示す図である。
【
図15】第3の実施の形態に係るマスタCPUの地形担当管理部の処理分配部の処理内容を示すフローチャートである。
【
図16】データベース部分同期処理の処理内容を示すフローチャートである。
【発明を実施するための形態】
【0012】
以下、本発明の実施の形態を図面を参照しつつ説明する。なお、本実施の形態では、作業機械の一例として、フロント作業機を備える油圧ショベルを例示して説明するが、これに限られず、作業現場で稼動する他の作業機械においても本発明を適用することも可能である。
【0013】
<第1の実施の形態>
本発明の第1の実施の形態を
図1~
図8を参照しつつ詳細に説明する。
【0014】
図1は、本実施の形態に係る作業機械の一例である油圧ショベルの外観を模式的に示す図である。
【0015】
図1において、油圧ショベル101は、垂直方向にそれぞれ回動する複数の被駆動部材(ブーム111、アーム112、バケット113)を連結して構成された多関節型のフロント作業機110と、車体130を構成する上部旋回体131及び下部走行体132とを備え、上部旋回体131は下部走行体132に対して旋回可能に設けられている。また、フロント作業機110のブーム111の基端は上部旋回体131の前部に垂直方向に回動可能に支持されており、アーム112の一端はブーム111の基端とは異なる端部(先端)に垂直方向に回動可能に支持されており、アーム112の他端にはバケット113が垂直方向に回動可能に支持されている。ブーム111、アーム112、バケット113、上部旋回体131、及び下部走行体132は、油圧アクチュエータであるブームシリンダ121、アームシリンダ122、バケットシリンダ123、旋回モータ124、及び左右の走行モータ125,126(
図1では右側の一方のみを図示し、他方については符号のみを括弧書きで示す)によりそれぞれ駆動される。
【0016】
上部旋回体131の上部前方には、オペレータが搭乗する運転室151が配置されている。運転室151には、油圧アクチュエータ121~126を操作するための操作信号を出力する複数の操作レバー(図示せず)や、オペレータに情報を通知するための表示装置としての機能と、オペレータによる情報の入力を可能とする入力装置としての機能を有するモニタ(図示せず)などが配置されている。モニタの画面には、例えば、タッチパネルが表層に形成されており、このタッチパネルの機能によりオペレータからの入力を受け付けることができる。
【0017】
ブームシリンダ121、アームシリンダ122、バケットシリンダ123、旋回モータ124及び左右の走行モータ125,126の動作制御は、図示を省略するが、エンジンなどの原動機によって駆動される油圧ポンプから各油圧アクチュエータ121~126に供給される作動油の方向及び流量をコントロールバルブで制御することにより行う。コントロールバルブは、パイロットポンプからパイロットバルブを介して出力される駆動信号(パイロット圧)により行われる。操作レバーからの操作信号に基づいて制御システムでパイロットバルブを制御することにより、各油圧アクチュエータ121~126の動作が制御される。
【0018】
上部旋回体131の上部の後方には、2つのGNSS(Global Navigation Satellite System)受信機171,172が左右に並べて配置されている。以降、これらのGNSS受信機171,172を区別する場合は、左側に配置されているものを左GNSS受信機171、右側に配置されているものを右GNSS受信機172と称する。GNSS受信機171,172は、はるか上空を飛行しているGNSS衛星から出力される測位信号を受信し、受信した測位信号に基づいて油圧ショベル101の地球座標系における位置を演算して位置情報として出力する機能を有している。また、GNSS受信機171,172の上部旋回体131に対する相対位置は固定であるので、2つのGNSS受信機171,172で計測される位置情報の偏差から、上部旋回体131の向きを算出することができる。
【0019】
ここで、GNSS受信機171,172は、作業機械である油圧ショベル101の作業現場における位置を計測し、計測結果を位置情報として出力する位置計測装置を構成している。
【0020】
ブーム111、アーム112、バケット113、及び上部旋回体131には、それぞれ慣性計測装置(IMU: Inertial Measurement Unit)181~184が配置されている。以降、これらの慣性計測装置181~184を区別する必要が有る場合は、それぞれ、ブーム慣性計測装置181、アーム慣性計測装置182、バケット慣性計測装置183、及び、上部旋回体慣性計測装置184と称する。
【0021】
慣性計測装置181~184は、角速度及び加速度を計測するものである。慣性計測装置181~184が配置された被駆動部材111~113及び上部旋回体131が静止している場合を考えると、慣性計測装置181~184に設定されたIMU座標系における重力加速度の方向(つまり、鉛直下向き方向)と、慣性計測装置181~184の取り付け状態(つまり、慣性計測装置181~184と被駆動部材111~113や上部旋回体131との相対的な位置関係)とに基づいて、被駆動部材111~113及び上部旋回体131の向き(対地角度)を姿勢情報として検出することができる。そして、慣性計測装置181~184の検出結果から被駆動部材111~113及び上部旋回体131のそれぞれの相対角度を算出することができる。また、慣性計測装置184で検出される角速度に基づいて上部旋回体131の旋回角度を検出することができるとともに、重力加速度の方向に基づいて上部旋回体131の傾斜角を検出することができる。すなわち、慣性計測装置181~184の検出結果に基づいて、上部旋回体131に対して固定して設定される車体座標系における作業機械の姿勢(例えば、油圧ショベル101を構成する各部の位置、バケット113の爪先位置など)を求めることができる。
【0022】
上部旋回体131の、例えば、運転室151の上部には、油圧ショベル101の周囲の地形を計測し、計測結果を地形データとして出力する地形計測装置100が配置されている。地形計測装置100は、例えば、ステレオカメラ、レーザスキャナ、ミリ波レーダ等の外界センサである。地形計測装置100から出力される地形データは、例えば、上部旋回体131に対して固定して設定される車体座標系における地形や物体の表面位置を示す点群データである。地形計測装置100は、例えば、周期的に油圧ショベル101の周囲の地形を自動で計測し、地形データとして出力する。なお、地形計測装置100の搭載位置は上記に限定されるものではなく、油圧ショベル101の周囲の地形の計測が十分に行える位置および姿勢で配置すれば良い。なお、地球座標系、IMU座標系、及び車体座標系における位置情報(座標)は、座標系間において互いに変換可能である。
【0023】
図2は、制御システムの全体構成を模式的に示す図である。
【0024】
図2において、制御システムは、1つのマスタCPU(マスタ演算装置)10と、複数のスレイブCPU(スレイブ演算装置)20,30と、データベースサーバ(記憶装置)40とを有し、データベースサーバ40に記憶された情報に基づくマスタCPU10及び複数のスレイブCPU20,30による演算結果を用いて油圧ショベル101の動作を制御するものである。なお、本実施の形態においては、複数のスレイブCPUのうち2つのみを図示して説明している。
【0025】
なお、図示を省略する、マスタCPU10は、処理装置としてのCPU(Central Processing Unit)に加え、処理装置が実行するアプリケーション及びそのアプリケーションの実行に必要な設定情報等が格納される記憶装置(例えばROM、RAM等の半導体メモリ)を有するコンピュータ相当のハードウェアである。同様に、複数のスレイブCPU20,30は、それぞれ、処理装置としてのCPUに加え、処理装置が実行するアプリケーション及びそのアプリケーションの実行に必要な設定情報等が格納される記憶装置を有するコンピュータ相当のアプリケーションである。
【0026】
データベースサーバ40は、例えば、ハードディスクドライブや大容量フラッシュメモリなどで構成されており、地形計測装置100の計測結果や、計測結果に基づいた複数のスレイブCPU20,30による演算処理の演算負荷の情報(後述)などが記憶されている。
【0027】
制御システムのマスタCPU10、スレイブCPU20,30、及び、データベースサーバ40は、図示しないインタフェースによって接続されており、互いに高速での信号の授受が可能である。なお、各CPU10~30間の通信は、例えば、TCP/IPプロトコルを使用するものとする。また、制御システムは、図示しないインタフェースによって、運転室151のモニタや、油圧アクチュエータの駆動系と接続されており、演算結果に基づいてモニタに情報を表示したり、油圧アクチュエータ121~126の動作を制御したりする。
【0028】
ここで、制御システムの構成および演算処理についてさらに詳細に説明する。本実施の形態においては、スレイブCPU20において、アプリケーション23を実行する場合を例示して説明する。アプリケーション23は、例えば、物体検知アプリケーションであり、データベースサーバ40に記憶された点群情報における各点の法線ベクトルを演算し、法線ベクトルの向きが連続している点の集合を物体として検知するものである。
【0029】
マスタCPU10は、例示した物体検知アプリケーションに係る演算処理のような作業現場の地形に関する処理の管理を担当する機能部であって、マスタCPU10上で実行されるアプリケーションにより実現される地形担当管理部11と、1つ以上の他のアプリケーション15とで構成されている。また、地形担当管理部11は、地形担当管理部11における処理を担当する機能部として、マスタCPU10上で実行されるアプリケーションにより実現される処理分配部12、情報格納部13、及び、処理結果収集部14を有している。
【0030】
スレイブCPU20は、例示した物体検知アプリケーションに係る演算処理のような作業現場の地形に関する処理を行う機能部であって、スレイブCPU20上で実行されるアプリケーションにより実現される地形処理部21と、複数の他のアプリケーション23,24とで構成されている。また、地形処理部21は、地形処理部21における演算処理(例えば、法線ベクトル演算処理)の実行を担当する機能部として、スレイブCPU20上で実行されるアプリケーションにより実現される法線ベクトル演算実行部22を有している。なお、本実施の形態においては、スレイブCPU20のアプリケーション23が物体検知アプリケーションである場合を例示する。
【0031】
同様に、スレイブCPU30は、例示した物体検知アプリケーションに係る演算処理のような作業現場の地形に関する処理を行う機能部であって、スレイブCPU30上で実行されるアプリケーションにより実現される地形処理部31と、複数の他のアプリケーション33,34とで構成されている。また、地形処理部31は、地形処理部31における演算処理(例えば、法線ベクトル演算処理)の実行を担当する機能部として、スレイブCPU30上で実行されるアプリケーションにより実現される法線ベクトル演算実行部32を有している。
【0032】
以上のように構成した本実施の形態の制御システムにおいて、スレイブCPU20のアプリケーション23(物体検知アプリケーション)は、並列に処理すべき複数の演算処理(後述の法線ベクトル演算処理)を持っている。スレイブCPU20でアプリケーション23(物体検知アプリケーション)が起動されると、アプリケーション23は、まず、複数の演算処理を並列に処理するために、マスタCPU10の地形担当管理部11の処理分配部12に分配処理の処理要求リクエストを送信する。処理分配部12は、スレイブCPU20からの分配処理の処理要求リクエストを受信すると、予め定めた分配処理手順に基づいて各スレイブCPU20,30に演算処理を分配し、スレイブCPU20,30の地形処理部21,31に演算処理の処理命令リクエストを送信する。なお、処理分配部12は、分配処理において、データベースサーバ40に格納されている処理計算量(演算負荷)を取得し、この処理計算量に基づいて分配処理を行う。スレイブCPU20,30の地形処理部21,31は、それぞれ、演算処理の処理命令リクエストを受信すると、その処理命令リクエストの情報に基づいて演算処理を実行し、演算結果と演算処理に要した演算負荷とをマスタCPU10の地形担当管理部11の処理結果収集部14に送信する。処理結果収集部14は、処理命令リクエストを送信した全てのスレイブCPU20,30からの演算結果を受信して結合し、並列に処理すべき複数の演算処理の演算結果として、処理要求リクエストを送信したアプリケーション23(物体検知アプリケーション)に送信する。また、処理結果収集部14は、処理命令リクエストを送信した全てのスレイブCPU20,30からの処理計算量に基づいて、データベースサーバ40に記憶されている処理計算量(演算負荷)を更新する。
【0033】
図3は、スレイブCPUの物体検知アプリケーションの処理内容を示すフローチャートである。物体検知アプリケーションは、点群情報から物体を示す点の集合を抽出することで、物体の有無およびその位置を検知するものである。
【0034】
図3に示すように、スレイブCPU20のアプリケーション23(物体検知アプリケーション)は、まず、地形計測装置100で計測されてデータベースサーバ40に記憶された計測結果(点群情報)を取得し、点群情報を構成する各点の法線ベクトルを演算する(ステップS100)。なお、本実施の形態においては、後に詳述するようにステップS100の点群情報に対する法線ベクトルの演算を複数のスレイブCPU20,30で分配して並列に行うことにより、演算処理の高速化を実現している。
【0035】
続いて、物体検知アプリケーションは、点群情報を構成する各点について最も近い他の点を探索し(ステップS110)、点群の各点の法線ベクトルの向きが連続している近傍点の集合(以降、クラスタと称する)を抽出する(ステップS120)。以降、このような抽出処理をクラスタリングと称する。
【0036】
続いて、物体検知アプリケーションは、ステップS120で抽出したクラスタの数が2以上であるか否かを判定し(ステップS130)、判定結果がNOの場合、すなわち、クラスタの数が2未満である場合には、エラーであると判定し、演算結果としてエラー値を返し(ステップS132)、処理を終了する。
【0037】
また、ステップS130での判定結果がYESの場合、すなわち、クラスタ数が2以上である場合には、算出したクラスタを検知した物体として返し(ステップS131)、処理を終了する。
【0038】
図4は、スレイブCPUの物体検知アプリケーションにおける法線ベクトル演算処理の処理内容を示すフローチャートである。
【0039】
図4に示すように、スレイブCPU20のアプリケーション23(物体検知アプリケーション)は、法線ベクトル演算処理(
図2のステップS100)として、まず、点群情報を構成する各点の法線ベクトルの演算処理を並列に実行するための分配処理の処理要求リクエストを生成し、マスタCPU10の地形担当管理部11の処理分配部12に送信する(ステップS200)。
【0040】
続いて、物体検知アプリケーションは、マスタCPU10の地形担当管理部11の処理結果収集部14から法線ベクトルの演算結果を受信するまで待機し(ステップS210)、マスタCPU10から法線ベクトルの演算結果を受信すると(ステップS220)、受信した演算結果を用いて物体検知アプリケーションの後段の処理(
図2のステップS110)に移る。
【0041】
図5は、リクエスト送信処理において送信される分配処理の処理要求リクエストの一例を示す図である。処理要求リクエストの送信は、例えば、オブジェクト言語であるJSON(JavaScript Object Notation)形式で記述されたデータファイルの送信により行われる。
【0042】
図5に示すように、リクエスト送信処理(
図4のステップS200)では、地形担当管理部11の処理分配部12に送信する処理要求リクエストを生成する。処理要求リクエストには、リクエスト元CPU名、リクエスト元IPアドレス、リクエスト元ポート番号、リクエストID、リクエスト処理内容、及び、対象地形領域情報が含まれている。
【0043】
リクエスト元CPU名(requester)、リクエスト元IPアドレス(IP-addr)、及び、リクエスト元ポート番号(Port num)は、地形担当管理部11に対して、演算結果の返信先の情報を伝えるものである。地形担当管理部11では、これらの情報を情報格納部13に格納する。
【0044】
リエクスト処理内容(target_region)は、地形担当管理部11に対して処理してほしい内容の情報を伝えるものである。本実施の形態においては、法線ベクトル演算である。
【0045】
対象地形領域情報(process_type)は、地形担当管理部11に対して、処理してほしい地形の範囲の情報を伝えるものである。本実施の形態では、物体検知アプリケーションが物体を検知すべき作業現場の領域を示している。作業機械である油圧ショベル101が作業する領域は、あらかじめ複数の小さな領域に区切られており、例えば、現場座標系として与えられた座標により一意に特定できる。本実施の形態では、この小さな領域のことをグリッドと称する。対象地形領域情報が示すグリッドの領域が例えば、(0,0)(0,10)(20,0)(20,10)の4つの座標を頂点とする長方形である場合には、”0:20,0:10”と示される。
【0046】
リクエストID(request ID)は、送信した処理要求リクエストとレスポンス(演算結果)とを1対1で紐づけるために使用されるものである。例えば、同一のアプリケーションで複数のリクエストを送信する場合に必要となる。
【0047】
図8は、マスタCPUの地形担当管理部の処理分配部の処理内容を示すフローチャートである。
【0048】
図8に示すように、マスタCPU10の地形担当管理部11の処理分配部12は、スレイブCPU20のアプリケーション23から処理要求リクエストを受信すると、まず、データベースサーバ40から地形の処理負荷(処理計算量)を取得する(ステップS300)。処理負荷は、地形のグリッド毎に与えられている。各グリッドに対して処理負荷は整数値で表示されている。
【0049】
続いて、取得した処理負荷に基づいて、各スレイブCPU20,30に割り当てる領域を決定する(ステップS310)。この処理分配処理では、領域の割り当てはグリッド単位で行われる。
【0050】
続いて、データベースサーバ40から地形フィルターを取得する(ステップS320)。地形フィルターは、各グリッドが複数のスレイブCPU20,30の何れのスレイブCPUに割り当てられているかを示す情報である。例えば、地形フィルタとして各グリッドに整数値を割り当て、数値が1であるグリッドは第1のスレイブCPUが、数値が2であれば第2のスレイブCPUがそのグリッドの演算処理を担当するというルールをあらかじめ定めておく。本実施の形態では、データベースサーバ40に予め格納されている複数の地形フィルターの中から現在使用できる地形フィルターを取得する。データベースサーバ40には、複数の地形フィルターを同時に使用するために、予め決まった数の複数の地形フィルターが格納されている。
【0051】
続いて、各グリッドに割り当てた領域を示す地形フィルターを作成し、データベースサーバ40の情報を更新する(ステップS330)。
【0052】
続いて、各グリッドの演算処理を担当するスレイブCPU20,30に、それぞれ演算処理の処理命令リクエストを送信し(ステップS340)、処理を終了する。
【0053】
図6は、処理命令リクエスト送信処理において送信される演算処理の処理命令リクエストの一例を示す図である。処理命令リクエストの送信は、例えば、オブジェクト言語であるJSON(JavaScript Object Notation)形式で記述されたデータファイルの送信により行われる。
【0054】
図6に示すように、リクエスト送信処理(
図8のステップS340)では、各スレイブCPU20,30に送信する処理命令リクエストを生成する。処理命令リクエストには、リクエストID、リクエストサブID、対象地形領域情報、地形フィルター名、及び、リクエスト処理内容が含まれている。
【0055】
リクエストID(request ID)、対象地形領域情報(target_region)、及び、リクエスト処理内容(process_type)は、処理要求リクエスト(
図5参照)の情報と同じである。
【0056】
リクエストサブID(request_sub ID)は、処理を分担するスレイブCPU20,30ごとに割り振られており、全てのスレイブCPU20,30からレスポンス(演算結果の受信)があったことを確認するために使用するものである。すなわち、リクエストサブIDから全ての処理要求リクエストの数も判断できるようになっている。
【0057】
地形フィルター名(mask)は、データベースサーバ40に格納されている地形フィルターを特定するための名前であり、スレイブCPU20,30がデータベースサーバ40から地形情報を取得するのに使用されるものである。
【0058】
図9は、マスタCPUの地形担当管理部の処理分配部における処理分配処理の処理内容を示すフローチャートである。
【0059】
図9に示すように、マスタCPU10の地形担当管理部11の処理分配部12は、処理分配処理(
図8のステップS310)として、まず、全グリッドの処理計算量を合算し、スレイブCPU20,30の数で割ることで、1つのスレイブCPUが処理する平均の処理計算量を算出する(ステップS400)。
【0060】
続いて、各スレイブCPU20,30が処理するグリッドを0(ゼロ)とし(ステップS410)、各スレイブCPUを表す変数i=0(ゼロ)とすることで初期化を行う(ステップS420)。
【0061】
続いて、(i+1)<N(N:スレイブCPUの総数)であるか否か、すなわち、グリッドの割当処理を行っていないスレイブCPUが存在するか否かを判定し(ステップS430)、判定結果がYESの場合には、未割当のグリッドがあるか否かを判定する(ステップS440)。ステップS440での判定結果がNOの場合、すなわち、i番目のスレイブCPUに対して割り当てるべき未割当のグリッドが存在しない場合には処理を終了し、処理分配部12の後段の処理(
図8のステップS320)に移る。
【0062】
また、ステップS440での判定結果がYESの場合、すなわち、未割当のグリッドが存在する場合は、その未割当のグリッドをi番目のスレイブCPUに割り当てる(ステップS450)。
【0063】
続いて、i番目のスレイブCPUに割り当てられているグリッドの合計処理計算量が、ステップS400で計算した平均処理計算量よりも大きいか否かを判定し(ステップS460)、判定結果がNOの場合には、ステップS440の処理に戻る。
【0064】
また、ステップS460での判定結果がYESの場合、すなわち、i番目のスレイブCPUに割り当てられているグリッドの合計処理計算量が、ステップS400で計算した平均処理計算量よりも大きい場合には、続いて、i番目のスレイブCPUの現在の合計処理計算量が最新のグリッドを追加する前の合計処理計算量よりも平均処理計算量に近くなったか否かを判定する(ステップS470)。すなわち、ステップS470では、i番目のスレイブCPUの現在の合計処理計算量と、最新のグリッドを追加する前の合計処理計算量とのどちらが平均処理計算量に近いかを比較している。
【0065】
ステップS470での判定結果がNOの場合、最新のグリッドを追加する前の合計処理計算量の方が平均処理計算量に近い場合には、最新のグリッドを未割当にもどし(ステップS480)、ステップS430の処理に戻って(i+1)番目のスレイブCPUに対する割当処理に移行する。
【0066】
また、ステップS470での判定結果がYESの場合、すなわち、現在の合計処理計算量の方が平均処理計算量に近い場合には、ステップS430の処理に戻って(i+1)番目のスレイブCPUに対する割当処理に移行する。
【0067】
また、ステップS430での判定結果がNOの場合、すなわち、全てのスレイブCPUへの割り当て処理が終了し場合には、続いて、未割当のグリッドがあるか否かを判定する(ステップS431)。
【0068】
ステップS431での判定結果がYESの場合、すなわち、未割当のグリッドが存在する場合には、平均処理計算量よりも合計処理計算量が低いスレイブCPUにその未割当のグリッドを割り当て(ステップS432)、ステップS431の処理に戻る。すなわち、ステップS431,S432の処理を、未割当のグリッドが存在しなくなるまで繰り返す。ステップS431での判定結果がYESの場合のように未割当のグリッドが存在する場合には、合計処理計算量が平均処理計算量よりも低いスレイブCPUが必ず存在するので、そのスレイブCPUにその未割当のグリッドを割り当てることで、各スレイブCPUに均一にグリッドを割り当てることができる。
【0069】
また、ステップS431での判定結果がNOの場合、すなわち、未割当のグリッドが存在しない場合には、処理を終了して処理分配部12の後段の処理(
図8のステップS320)に移る。
【0070】
図10は、スレイブCPUの地形処理部の法線ベクトル演算実行部の処理内容を示すフローチャートである。
【0071】
図10に示すように、スレイブCPU20,30の地形処理部21,31の法線ベクトル演算実行部22,32は、処理命令リクエストを受領するまでは待ち受け状態であり(ステップS500)、マスタCPU10の地形担当管理部11の処理分配部からの演算処理の処理命令リクエストを受領すると、処理命令リクエストの対象地形領域情報と地形フィルター名とを用いて、データベースサーバ40から点群情報を読み込む(ステップS510)。
【0072】
続いて、処理命令リクエストのリクエスト処理内容に基づいて、点群情報に対する処理方法(本実施の形態では、法線ベクトルの演算処理方法)をデータベースサーバ40から読み出し(ステップS520)、読みだした処理方法を用いて点群情報に対する演算処理を実行するとともに(ステップS530)、演算処理の実行に要した処理計算量を計測する(ステップS540)。
【0073】
続いて、演算処理の結果と処理計算量とを処理命令レスポンスとしてマスタCPU10の地形担当管理部11の処理結果収集部14に送信し(ステップS550)、処理を終了する。
【0074】
図7は、処理命令レスポンス送信処理において送信される処理命令レスポンスの一例を示す図である。処理命令レスポンスの送信は、例えば、オブジェクト言語であるJSON(JavaScript Object Notation)形式で記述されたデータファイルの送信により行われる。
【0075】
図7に示すように、処理命令レスポンス送信処理(
図10のステップS550)では、マスタCPU10に送信する処理命令レスポンス生成する。処理命令レスポンスには、リクエストID、リクエストサブID、処理結果、及び、処理計算量が含まれている。
【0076】
リクエストID(request ID)、及び、リクエストサブID(request_sub ID)は、処理要求リクエスト(
図5参照)や処理命令リクエスト(
図6参照)の情報と同じである。
【0077】
処理結果(serialized_result)は、各スレイブCPU20,30の法線ベクトル演算実行部22,32における演算結果と処理計算量とをシリアル形式で表したものである。
【0078】
図11は、マスタCPUの地形担当管理部の処理結果収集部の処理内容を示すフローチャートである。
【0079】
図11に示すように、マスタCPU10の地形担当管理部11の処理結果収集部14は、各スレイブCPU20,30からの処理命令レスポンスを受領するまでは待ち受け状態であり(ステップS600)、処理命令レスポンスを受領すると、各スレイブCPU20,30から受信した処理命令レスポンスに含まれる処理結果を統合するとともに(ステップS610)、処理命令レスポンスに含まれる処理計算量を用いてデータベースサーバ40の処理計算量を更新する(ステップS620)。
【0080】
続いて、処理分配部12が演算処理の処理命令リクエストを送信した全てのスレイブCPU20,30から処理命令レスポンスを受信したか否かを判定し(ステップS630)、判定結果がNOの場合、すなわち、全ての処理命令レスポンスを受信していない場合には、全ての処理命令レスポンスを受信するまで、ステップS600~S630の処理を繰り返す。
【0081】
また、ステップS630での判定結果がYESの場合には、統合した演算結果を処理要求レスポンスとして、処理要求リクエストを送信したスレイブCPU20のアプリケーション23に返信し(ステップS640)、処理を終了する。処理要求リクエストを発信したスレイブCPU20の情報は、情報格納部13に格納されている。
【0082】
以上のように構成した本実施の形態における効果を説明する。
【0083】
従来技術においては、複数の演算装置によりタスク単位で並列して演算処理を行っている。しかしながら、作業機械が作業現場において行う地形情報の演算のように、タスクごとの計算量の偏りが大きい場合には、従来技術のようにタスク単位で並列して演算する方法では、演算処理の高速化を十分に行うことができなかった。
【0084】
これに対して本実施の形態においては、マスタ演算装置が、複数のスレイブ演算装置のうちの1つのスレイブ演算装置から送信された情報群に基づく演算処理の実行要求に応じて、情報群を予め定めた分割規則に基づいて複数の小情報群に分割するとともに、小情報群に基づく演算処理の実行を複数の小情報群のそれぞれについて複数のスレイブ演算装置の何れかに設定し、複数のスレイブ演算装置が、マスタ演算装置で設定された小情報群に基づく演算処理をそれぞれ実行し、演算処理の結果とともに演算処理の実行に要した演算負荷の情報をマスタ演算装置に返信し、マスタ演算装置が、複数のスレイブ演算装置からそれぞれ返信された演算結果を統合し、統合した演算結果を情報群に基づく演算処理の実行要求を送信したスレイブ演算装置に情報群の演算結果として返信するとともに、複数のスレイブ演算装置から返信された演算負荷の情報に基づいて、複数のスレイブ演算装置の演算負荷が均一になるように分割規則を変更するように構成したので、複数のスレイブCPUでの並列処理において均一に演算処理を割り当てることができ、より高速に多くの情報に基づく演算を行うことができる。
【0085】
<第2の実施の形態>
本発明の第2の実施の形態を
図12及び
図13を参照しつつ説明する。図中、第1の実施の形態と同様の部材には同じ符号を付し、説明を省略する。
【0086】
本実施の形態は、異なる性能・状態の複数のスレイブCPUにおいても、複数のスレイブCPUでの並列処理において均一に演算処理を割り当てることができ、より高速に多くの情報に基づく演算を行うことができるように構成したものである。
【0087】
一般的に、CPUの性能が高いほど同じ処理計算量に対して早い処理が可能となる。また、あるアプリケーションをCPU実行させる場合において、他の優先度の高いアプリケーションが存在する状態では、そちらのアプリケーションに係る計算にCPU処理能力を使われるため、あるアプリケーションの処理完了が遅くなる。本実施の形態においては、このような状況を考慮するために、各スレイブCPU対してCPUキャパシティ(許容量)を計算し、このCPUキャパシティに基づいて分配処理を実行する。CPUキャパシティは、データベースサーバ40に格納されている。CPUキャパシティは処理内容ごとに異なる可能性があるため、処理内容ごとに異なるCPUキャパシティが格納されている。
【0088】
図12は、マスタCPUの地形担当管理部の処理分配部における処理分配処理の処理内容を示すフローチャートである。
【0089】
図12に示すように、マスタCPU10の地形担当管理部11の処理分配部12は、処理分配処理(
図8のステップS310)として、まず、データベースサーバ40から現在の処理内容に応じた各スレイブCPU20,30のキャパシティを取得し(ステップS400A)、スレイブCPUの処理計算量の合計をキャパシティの合計で割ることにより平均処理時間を算出する(ステップS401A)。
【0090】
続いて、各スレイブCPU20,30が処理するグリッドを0(ゼロ)とし(ステップS410)、各スレイブCPUを表す変数i=0(ゼロ)とすることで初期化を行う(ステップS420)。
【0091】
続いて、(i+1)<N(N:スレイブCPUの総数)であるか否か、すなわち、グリッドの割当処理を行っていないスレイブCPUが存在するか否かを判定し(ステップS430)、判定結果がYESの場合には、未割当のグリッドがあるか否かを判定する(ステップS440)。ステップS440での判定結果がNOの場合、すなわち、i番目のスレイブCPUに対して割り当てるべき未割当のグリッドが存在しない場合には処理を終了し、処理分配部12の後段の処理(
図8のステップS320)に移る。
【0092】
また、ステップS440での判定結果がYESの場合、すなわち、未割当のグリッドが存在する場合は、その未割当のグリッドをi番目のスレイブCPUに割り当てる(ステップS450)。
【0093】
続いて、i番目のスレイブCPUに割り当てられているグリッドの合計処理計算時間が、ステップS400で計算した平均処理計算時間よりも大きいか否かを判定し(ステップS460A)、判定結果がNOの場合には、ステップS440の処理に戻る。スレイブCPUに割り当てられた処理計算量の合計をそのCPUのキャパシティで割ることにより現在の処理時間が計算できる。
【0094】
また、ステップS460Aでの判定結果がYESの場合、すなわち、i番目のスレイブCPUに割り当てられているグリッドの合計処理計算時間が、ステップS400で計算した平均処理計算時間よりも大きい場合には、続いて、i番目のスレイブCPUの現在の合計処理計算時間が最新のグリッドを追加する前の合計処理計算時間よりも平均処理計算時間に近くなったか否かを判定する(ステップS470A)。すなわち、ステップS470Aでは、i番目のスレイブCPUの現在の合計処理計算時間と、最新のグリッドを追加する前の合計処理計算時間とのどちらが平均処理計算時間に近いかを比較している。
【0095】
ステップS470Aでの判定結果がNOの場合、最新のグリッドを追加する前の合計処理計算時間の方が平均処理計算時間に近い場合には、最新のグリッドを未割当にもどし(ステップS480)、ステップS430の処理に戻って(i+1)番目のスレイブCPUに対する割当処理に移行する。
【0096】
また、ステップS470Aでの判定結果がYESの場合、すなわち、現在の合計処理計算時間の方が平均処理計算時間に近い場合には、ステップS430の処理に戻って(i+1)番目のスレイブCPUに対する割当処理に移行する。
【0097】
また、ステップS430での判定結果がNOの場合、すなわち、全てのスレイブCPUへの割り当て処理が終了し場合には、続いて、未割当のグリッドがあるか否かを判定する(ステップS431)。
【0098】
ステップS431での判定結果がYESの場合、すなわち、未割当のグリッドが存在する場合には、平均処理計算時間よりも合計処理計算時間時間が短いスレイブCPUにその未割当のグリッドを割り当て(ステップS432A)、ステップS431の処理に戻る。すなわち、ステップS431,S432Aの処理を、未割当のグリッドが存在しなくなるまで繰り返す。ステップS431での判定結果がYESの場合のように未割当のグリッドが存在する場合には、合計処理計算時間が平均処理計算時間よりも短いスレイブCPUが必ず存在するので、そのスレイブCPUにその未割当のグリッドを割り当てることで、各スレイブCPUに均一にグリッドを割り当てることができる。
【0099】
また、ステップS431での判定結果がNOの場合、すなわち、未割当のグリッドが存在しない場合には、処理を終了して処理分配部12の後段の処理(
図8のステップS320)に移る。
【0100】
図13は、マスタCPUの地形担当管理部の処理結果収集部の処理内容を示すフローチャートである。
【0101】
図11に示すように、マスタCPU10の地形担当管理部11の処理結果収集部14は、各スレイブCPU20,30からの処理命令レスポンスを受領するまでは待ち受け状態であり(ステップS600)、処理命令レスポンスを受領すると、各スレイブCPU20,30から受信した処理命令レスポンスに含まれる処理結果を統合するとともに(ステップS610)、処理命令レスポンスに含まれる処理計算量およびスレイブCPUのキャパシティを用いて、データベースサーバ40の処理計算量およびキャパシティを更新する(ステップS620A)。キャパシティは処理にかかったCPU時間とそのCPUの動作周波数を掛けることにより求められる。CPU処理時間は、他のプロセス実行中は計測されず純粋にその処理に必要であった時間が求められる。複数のコアで並列に計算した場合も、各コアの時間が合計されるためマルチコアCPUでも本方法で対応可能である。
【0102】
続いて、処理分配部12が演算処理の処理命令リクエストを送信した全てのスレイブCPU20,30から処理命令レスポンスを受信したか否かを判定し(ステップS630)、判定結果がNOの場合、すなわち、全ての処理命令レスポンスを受信していない場合には、全ての処理命令レスポンスを受信するまで、ステップS600~S630の処理を繰り返す。
【0103】
また、ステップS630での判定結果がYESの場合には、統合した演算結果を処理要求レスポンスとして、処理要求リクエストを送信したスレイブCPU20のアプリケーション23に返信し(ステップS640)、処理を終了する。処理要求リクエストを発信したスレイブCPU20の情報は、情報格納部13に格納されている。
【0104】
その他の構成は第1の実施の形態と同様である。
【0105】
以上のように構成した本実施の形態においても第1の実施の形態と同様の効果を得ることができる。
【0106】
また、異なる性能・状態の複数のスレイブCPUにおいても、複数のスレイブCPUでの並列処理において均一に演算処理を割り当てることができ、より高速に多くの情報に基づく演算を行うことができる。
【0107】
<第3の実施の形態>
本発明の第3の実施の形態を
図14~
図16を参照しつつ説明する。図中、第1の実施の形態と同様の部材には同じ符号を付し、説明を省略する。
【0108】
本実施の形態は、マスタCPUがデータベースサーバを有するとともに、複数のスレイブCPUがそれぞれ複製データベースを有する場合を示すものである。これにより、データベースサーバへのアクセス回数が減少し、処理完了がさらに速くなる。
【0109】
図14は、本実施の形態に係る制御システムの全体構成を模式的に示す図である。
【0110】
図14において、制御システムは、1つのマスタCPU(マスタ演算装置)10Bと、複数のスレイブCPU(スレイブ演算装置)20B,30Bとを有し、マスタCPU10Bに設けられたデータベースサーバ41、及び、各スレイブCPU20B,30Bに設けられた複製データベース42,43に記憶された情報に基づくマスタCPU10B及び複数のスレイブCPU20B,30Bによる演算結果を用いて油圧ショベル101の動作を制御するものである。なお、本実施の形態においては、複数のスレイブCPUのうち2つのみを図示して説明している。
【0111】
マスタCPU10Bは、例示した物体検知アプリケーションに係る演算処理のような作業現場の地形に関する処理の管理を担当する機能部であって、マスタCPU10B上で実行されるアプリケーションにより実現される地形担当管理部11と、1つ以上の他のアプリケーション15と、データベースサーバ41とで構成されている。また、地形担当管理部11は、地形担当管理部11における処理を担当する機能部として、マスタCPU10B上で実行されるアプリケーションにより実現される処理分配部12、情報格納部13、及び、処理結果収集部14を有している。
【0112】
スレイブCPU20Bは、例示した物体検知アプリケーションに係る演算処理のような作業現場の地形に関する処理を行う機能部であって、スレイブCPU20B上で実行されるアプリケーションにより実現される地形処理部21と、複数の他のアプリケーション23,24と、複製データベース42とで構成されている。また、地形処理部21は、地形処理部21における演算処理(例えば、法線ベクトル演算処理)の実行を担当する機能部として、スレイブCPU20B上で実行されるアプリケーションにより実現される法線ベクトル演算実行部22を有している。なお、本実施の形態においては、スレイブCPU20Bのアプリケーション23が物体検知アプリケーションである場合を例示する。複製データベース42には、マスタCPU10Bのデータベースサーバ41の情報の複製が格納されている。
【0113】
同様に、スレイブCPU30Bは、例示した物体検知アプリケーションに係る演算処理のような作業現場の地形に関する処理を行う機能部であって、スレイブCPU30B上で実行されるアプリケーションにより実現される地形処理部31と、複数の他のアプリケーション33,34と、複製データベース43とで構成されている。また、地形処理部31は、地形処理部31における演算処理(例えば、法線ベクトル演算処理)の実行を担当する機能部として、スレイブCPU30B上で実行されるアプリケーションにより実現される法線ベクトル演算実行部32を有している。複製データベース43には、マスタCPU10Bのデータベースサーバ41の情報の複製が格納されている。
【0114】
図15は、マスタCPUの地形担当管理部の処理分配部の処理内容を示すフローチャートである。
【0115】
図15に示すように、マスタCPU10Bの地形担当管理部11の処理分配部12は、スレイブCPU20Bのアプリケーション23から処理要求リクエストを受信すると、まず、データベースサーバ41から地形の処理負荷(処理計算量)を取得する(ステップS300)。処理負荷は、地形のグリッド毎に与えられている。各グリッドに対して処理負荷は整数値で表示されている。
【0116】
続いて、データベースサーバ41から地形フィルターを取得する(ステップS320)。地形フィルターは、各グリッドが複数のスレイブCPU20B,30Bの何れのスレイブCPUに割り当てられているかを示す情報である。例えば、地形フィルタとして各グリッドに整数値を割り当て、数値が1であるグリッドは第1のスレイブCPUが、数値が2であれば第2のスレイブCPU2がそのグリッドの演算処理を担当するというルールをあらかじめ定めておく。本実施の形態では、データベースサーバ41に予め格納されている複数の地形フィルターの中から現在使用できる地形フィルターを取得する。データベースサーバ41には、複数の地形フィルターを同時に使用するために、予め決まった数の複数の地形フィルターが格納されている。
【0117】
続いて、データベース部分同期処理を行い(ステップS321)、複製データベース42,43の情報をデータベースサーバ41の情報に同期させる。
【0118】
続いて、取得した処理負荷に基づいて、各スレイブCPU20B,30Bに割り当てる領域を決定する(ステップS322)。この処理分配処理では、領域の割り当てはグリッド単位で行われる。
【0119】
続いて、各グリッドに割り当てた領域を示す地形フィルターを作成し、データベースサーバ41の情報を更新する(ステップS330)。
【0120】
続いて、各グリッドの演算処理を担当するスレイブCPU20B,30Bに、それぞれ演算処理の処理命令リクエストを送信し(ステップS340)、処理を終了する。
【0121】
図16は、データベース部分同期処理の処理内容を示すフローチャートである。
【0122】
図16において、マスタCPU10Bの地形担当管理部11の処理分配部12は、まず、更新リストを初期化し(ステップS700)、対象地形領域情報の領域に含まれるすべてのグリッドに対して未チェックのグリッドがあるか否かを判定する(ステップS710)。
【0123】
ステップS710での判定結果がYESの場合、すなわち、未チェックのグリッドがある場合には、そのグリッドの同期時刻を取得し(ステップS720)、続いて、センサなどからデータベースサーバ41へのデータ更新が複製データベース42,43との同期時刻より後か否かを判定する(ステップS730)。複製データベース42,43には、各グリッドが最後に同期を実施した時間が記録されており、それらを参照することでステップS720の同期時刻を取得することができる。
【0124】
ステップS730での判定結果がNOの場合、すなわち、同期時刻の後にセンサなどからデータベースサーバ41へのデータ更新がなされていた場合には、そのグリッドを更新リストに追加し(ステップS740)、ステップS710の処理に戻る。また、ステップS730での判定結果がYESの場合には、データベースサーバ41と複製データベース42,43は同期された状態であり、ステップS730の処理に戻る。
【0125】
また、ステップS710での判定結果がNOの場合、すなわち、全てのグリッドに対して同期のチェックが終了した場合には、更新リストのグリッドの全てについてスレイブCPU20B,30Bの複製データベース42,43の同期を行い(ステップS711)、処理を終了する。
【0126】
その他の構成は第1の実施の形態と同様である。
【0127】
以上のように構成した本実施の形態においても第1の実施の形態と同様の効果を得ることができる。
【0128】
また、データベースサーバへのアクセス回数が減少するので、処理完了をさらに速くすることができる。
【0129】
<付記>
なお、本発明は上記の実施の形態に限定されるものではなく、その要旨を逸脱しない範囲内の様々な変形例や組み合わせが含まれる。また、本発明は、上記の実施の形態で説明した全ての構成を備えるものに限定されず、その構成の一部を削除したものも含まれる。また、上記の各構成、機能等は、それらの一部又は全部を、例えば集積回路で設計する等により実現してもよい。また、上記の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。また、各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、SSD(Solid State Drive)等の記録装置、または、ICカード、SDカード、DVD等の記録媒体に置くように構成してもよい。
【符号の説明】
【0130】
10,10B…マスタCPU、11…地形担当管理部、12…処理分配部、13…情報格納部、14…処理結果収集部、15…アプリケーション、20,20B…スレイブCPU、21…地形処理部、22…法線ベクトル演算実行部、23,24…アプリケーション、30,30B…スレイブCPU、31…地形処理部、32…法線ベクトル演算実行部、33,34…アプリケーション、40,41…データベースサーバ、42,43…複製データベース、100…地形計測装置、101…油圧ショベル、110…フロント作業機、111…ブーム、112…アーム、113…バケット、121…ブームシリンダ、122…アームシリンダ、123…バケットシリンダ、124…旋回モータ、125,126…走行モータ、130…車体、131…上部旋回体、132…下部走行体、151…運転室、171,172…GNSS受信機、181,182,183,184…慣性計測装置