(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-11-06
(54)【発明の名称】ロボットスケジューリング方法、装置、電子機器及び記憶媒体
(51)【国際特許分類】
G06F 9/50 20060101AFI20241029BHJP
【FI】
G06F9/50 150C
G06F9/50 150D
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2024525116
(86)(22)【出願日】2022-10-11
(85)【翻訳文提出日】2024-04-25
(86)【国際出願番号】 CN2022124487
(87)【国際公開番号】W WO2023071769
(87)【国際公開日】2023-05-04
(31)【優先権主張番号】202111240287.1
(32)【優先日】2021-10-25
(33)【優先権主張国・地域又は機関】CN
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
(71)【出願人】
【識別番号】521347066
【氏名又は名称】上海▲けい▼朗智能科技有限公司
【氏名又は名称原語表記】Keenon Robotics Co., Ltd.
【住所又は居所原語表記】11/F, Bldg 56, No.1000, Jinghai Rd. China(Shanghai) Pilot Free Trade Zone(China)
(74)【代理人】
【識別番号】100079108
【氏名又は名称】稲葉 良幸
(74)【代理人】
【識別番号】100109346
【氏名又は名称】大貫 敏史
(74)【代理人】
【識別番号】100117189
【氏名又は名称】江口 昭彦
(74)【代理人】
【識別番号】100134120
【氏名又は名称】内藤 和彦
(74)【代理人】
【識別番号】100108213
【氏名又は名称】阿部 豊隆
(72)【発明者】
【氏名】ワン,シャン
(72)【発明者】
【氏名】ヤン,イェウェン
(72)【発明者】
【氏名】ワン,ヨンフィ
(72)【発明者】
【氏名】リー,トン
(57)【要約】
【要約】
本願の一部の実施例は、ロボットスケジューリング方法、装置、電子機器及び記憶媒体を開示する。前記方法は、複数の配信対象タスクを取得し、ここで、前記複数の配信対象タスクは、それぞれ複数のオリジナルタスクキューにおけるキューの先頭に位置する複数のタスクを含み、複数のオリジナルタスクキューは、生成された順序に従ってキューの先頭からキューの末尾までソートされたランダムロボットタスクキューと、複数のロボットのうちの少なくとも2つのロボットに対応する少なくとも2つの指定ロボットタスクキューとを含み、複数の配信対象タスクのタイプは、ランダムロボットタスクと指定ロボットタスクとを含むことと、各配信対象タスクのタイプ、各ロボットのタスク数及び状態に基づいて、生成された順序に従って各配信対象タスクに対するスケジューリング対象ロボットを決定し、配信対象タスクをスケジューリング対象ロボットに配信することと、各オリジナルタスクキューにおける残りのタスクに対して、上記操作を繰り返し実行することと、を含む。
【選択図】
図1
【特許請求の範囲】
【請求項1】
ロボットスケジューリング方法であって、
複数の配信対象タスクを取得し、ここで、前記複数の配信対象タスクは、それぞれ複数のオリジナルタスクキューにおけるキューの先頭に位置する複数のタスクを含み、前記複数のオリジナルタスクキューは、生成された順序に従ってキューの先頭からキューの末尾までソートされたランダムロボットタスクキューと、複数のロボットのうちの少なくとも2つのロボットに対応する少なくとも2つの指定ロボットタスクキューとを含み、前記複数の配信対象タスクのタイプは、ランダムロボットタスクと指定ロボットタスクとを含むことと、
各配信対象タスクのタイプ、各ロボットのタスク数及び状態に基づいて、生成された順序に従って各配信対象タスクに対するスケジューリング対象ロボットを決定し、前記配信対象タスクを前記スケジューリング対象ロボットに配信することと、
各オリジナルタスクキューにおける残りのタスクに対して、以上の操作を繰り返し実行することと、
を含むことを特徴とするロボットスケジューリング方法。
【請求項2】
前記各配信対象タスクのタイプ、各ロボットのタスク数及び状態に基づいて、生成された順序に従って各配信対象タスクに対するスケジューリング対象ロボットを決定し、前記配信対象タスクを前記スケジューリング対象ロボットに前記配信することは、
生成された順序に従って前記複数の配信対象タスクをソートし、配信対象タスクキューを構成することと、
前記配信対象タスクキューからキューの先頭に位置する配信対象タスクを現在の配信対象タスクとして取得することと、
前記現在の配信対象タスクのタイプ、各ロボットのタスク数及び状態に基づいて、前記現在の配信対象タスクに対するスケジューリング対象ロボットを決定し、前記現在の配信対象タスクを前記スケジューリング対象ロボットに配信することと、
前記配信対象タスクキューにおける残りの配信対象タスクに対して、前記配信対象タスクキューからキューの先頭に位置する配信対象タスクを現在の配信対象タスクとして取得する操作を、前記配信対象タスクキューが空になるまで繰り返し実行することと、
を含むことを特徴とする請求項1に記載のロボットスケジューリング方法。
【請求項3】
前記現在の配信対象タスクのタイプはランダムロボットタスクであり、前記現在の配信対象タスクに対するスケジューリング対象ロボットを前記決定することは、
各ロボットの状態に基づいて、複数の現在スケジューリング可能なロボットを決定し、各現在スケジューリング可能なロボットに対応する指定ロボットタスクキューにおけるタスク数を取得することと、
タスク数が最も少ない現在スケジューリング可能なロボットを前記現在の配信対象タスクのスケジューリング対象ロボットとして選択することと、
を含むことを特徴とする請求項2に記載のロボットスケジューリング方法。
【請求項4】
前記タスク数が最も少ない現在スケジューリング可能なロボットを前記現在の配信対象タスクのスケジューリング対象ロボットとして前記選択することは、
前記タスク数の小さい順に従って、前記複数の現在スケジューリング可能なロボットをソートすることと、
ソート後の順序に従って、各現在スケジューリング可能なロボットのロボットロックを順次取得することと、
ロボットロックの取得に初めて成功した現在スケジューリング可能なロボットにロボットロックを追加し、それを前記現在の配信対象タスクのスケジューリング対象ロボットとすることと、
を含むことを特徴とする請求項3に記載のロボットスケジューリング方法。
【請求項5】
前記現在の配信対象タスクのタイプはランダムロボットタスクであり、前記現在の配信対象タスクに対するスケジューリング対象ロボットを前記決定することは、
前記現在の配信対象タスクが前記複数の現在スケジューリング可能なロボットのうちのいずれかのターゲットロボットに配信されたか否かを判断することと、
YESと判断された場合、再び前記ターゲットロボットを前記現在の配信対象タスクのスケジューリング対象ロボットとすることと、
NOと判断した場合、前記タスク数が最も少ない現在スケジューリング可能なロボットを前記現在の配信対象タスクのスケジューリング対象ロボットとして選択する操作を前記実行することと、
を含むことを特徴とする請求項3に記載のロボットスケジューリング方法。
【請求項6】
再び前記ターゲットロボットを前記現在の配信対象タスクのスケジューリング対象ロボットと前記することは、
前記ターゲットロボットに対するロボットロックの取得に成功できるか否かを判断することと、
YESと判断された場合、前記ターゲットロボットをロックし、再び前記ターゲットロボットを前記現在の配信対象タスクのスケジューリング対象ロボットとすることと、
NOと判断された場合、前記現在の配信対象タスクが配信されたことを示すことと、
を含むことを特徴とする請求項5に記載のロボットスケジューリング方法。
【請求項7】
前記現在の配信対象タスクのタイプはランダムロボットタスクであり、且つ前記現在の配信対象タスクは既に前記スケジューリング対象ロボットに配信されており、前記配信対象タスクに対するスケジューリング対象ロボットを前記決定することは、
前記現在の配信対象タスクに対してスケジューリング成功マークを設定することと、
前記ランダムロボットタスクキューから前記現在の配信対象タスクの次のタスクを取得し、それを前記配信対象タスクキューに入れて、現在の配信対象タスクキューを得ることと、
前記現在の配信対象タスクキューを再びソートし、再びソートされた配信対象タスクキューにおける残りの配信対象タスクについて、前記配信対象タスクキューからキューの先頭に位置する配信対象タスクを現在の配信対象タスクとして取得する操作を前記実行することと、
を含むことを特徴とする請求項2に記載のロボットスケジューリング方法。
【請求項8】
前記現在の配信対象タスクのタイプは指定ロボットタスクであり、前記現在の配信対象タスクに対するスケジューリング対象ロボットを前記決定することは、
前記指定ロボットタスクに対応する指定ロボットが現在スケジューリング可能であることに応答して、前記指定ロボットに対するロボットロックの取得に成功できるか否かを判断することと、
YESと判断された場合、前記指定ロボットをロックし、前記指定ロボットを前記現在の配信対象タスクのスケジューリング対象ロボットとすることと、
NOと判断された場合、前記現在の配信対象タスクを前記配信対象タスクキューから削除することと、
を含むことを特徴とする請求項2に記載のロボットスケジューリング方法。
【請求項9】
前記現在の配信対象タスクのタイプは指定ロボットタスクであり、前記現在の配信対象タスクに対するスケジューリング対象ロボットを前記決定することは、
前記指定ロボットタスクに対応する指定ロボットが現在スケジューリング不可であることに応答して、前記指定ロボットが一時的にスケジューリング不可であるか否かを判断することと、
YESと判断された場合、前記現在の配信対象タスクを前記配信対象タスクキューから削除することと、
NOと判断された場合、前記現在の配信対象タスクをそれが所属するオリジナルタスクキューから削除した後、更に前記配信対象タスクキューから削除することと、
を含むことを特徴とする請求項8に記載のロボットスケジューリング方法。
【請求項10】
前記配信対象タスクに対するスケジューリング対象ロボットを前記決定することは、
前記現在の配信対象タスクの状態が、受け入れ済み、または取り消し済みである場合、前記現在の配信対象タスクを、それが所属するオリジナルタスクキューから削除し、更に前記配信対象タスクキューから削除することと、
を更に含むことを特徴とする請求項2に記載のロボットスケジューリング方法。
【請求項11】
前記各配信対象タスクに対するスケジューリング対象ロボットを前記決定することは、
前記現在の配信対象タスクに対するスケジューリング対象ロボットを決定する過程において計時を行い、スケジューリング時間を得ることと、
ここで、前記スケジューリング時間は、前記スケジューリング対象ロボットを決定する前に、前記現在の配信対象タスクのスケジューリング時間が予め設定された閾値を超えた場合、前記現在の配信対象タスクをそれが所属するオリジナルタスクキューから削除し、更に前記配信対象タスクキューから削除することに用いられることと、
を更に含むことを特徴とする請求項2に記載のロボットスケジューリング方法。
【請求項12】
ロボットスケジューリング装置であって、
複数の配信対象タスクを取得するように構成され、ここで、前記複数の配信対象タスクは、それぞれ複数のオリジナルタスクキューにおけるキューの先頭に位置する複数のタスクを含み、前記複数のオリジナルタスクキューは、生成された順序に従ってキューの先頭からキューの末尾までソートされたランダムロボットタスクキューと、複数のロボットのうちの少なくとも2つのロボットに対応する少なくとも2つの指定ロボットタスクキューとを含み、前記複数の配信対象タスクのタイプは、ランダムロボットタスクと指定ロボットタスクとを含む配信対象タスク取得モジュールと、
各配信対象タスクのタイプ、各ロボットのタスク数及び状態に基づいて、生成された順序に従って各配信対象タスクに対するスケジューリング対象ロボットを決定し、前記配信対象タスクを前記スケジューリング対象ロボットに配信するロボットスケジューリングモジュールと、
各オリジナルタスクキューにおける残りのタスクに対して、以上の操作を繰り返し実行する循環実行モジュールと、
を含むことを特徴とするロボットスケジューリング装置。
【請求項13】
電子機器であって、
1つまたは複数のプロセッサと、
1つまたは複数のプログラムを記憶するためのメモリと、を含み、
前記1つまたは複数のプログラムが前記1つまたは複数のプロセッサによって実行される場合、前記1つまたは複数のプロセッサに請求項1-11のいずれか1項に記載のロボットスケジューリング方法を実現させる、
ことを特徴とする電子機器。
【請求項14】
コンピュータプログラムが記憶されているコンピュータ読み取り可能な記憶媒体であって、前記コンピュータプログラムがプロセッサによって実行されると、請求項1-11のいずれか1項に記載のロボットスケジューリング方法が実現される、
ことを特徴とするコンピュータ読み取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本願は、ロボット技術に関し、特に、ロボットスケジューリング方法、装置、電子機器及び記憶媒体に関する。
【背景技術】
【0002】
人工知能の急速な発展に伴い、ロボットは徐々に人々の生活に入り、人々に便利を提供する。例えば、同じ店舗(例えば、レストラン又はホテルなど)において、ユーザは、特定の呼び出し装置(例えば、携帯電話又は腕時計など)を介して、店舗におけるランダムなロボット又は特定のロボットを指定して、ロボットに特定のタスクを実行させることができる。すると、ロボットをどのようにスケジューリングするかという問題が生じる。
【0003】
従来技術において、通常、時間公平原則を採用してスケジューリングを行い、即ち、タスクが生成された時間に従って各タスクをランダム又は指定のロボットに順次送信する。このような方式は、絶対的な公平性を保証することができるが、スケジューリングに参加するロボットが複数あり、先行タスクがランダムタスクであり、且つそれにロボットAをランダムに割り当て、後続タスクがロボットAに指定するタスクである場合、該後続タスクは先行タスクの完了を待ってから行う必要があるため、全体のスケジューリング効率が低く、ロボットの利用率を確保することができない。
【発明の概要】
【発明が解決しようとする課題】
【0004】
本願の一部の実施例は、従来技術におけるスケジューリング効率が低く、ロボットの利用率を確保できない問題を解決するためのロボットスケジューリング方法、装置、電子機器及び記憶媒体を提供することを目的とする。
【課題を解決するための手段】
【0005】
第1態様において、本願の実施例は、複数の配信対象タスクを取得し、ここで、前記複数の配信対象タスクは、それぞれ複数のオリジナルタスクキューにおけるキューの先頭に位置する複数のタスクを含み、前記複数のオリジナルタスクキューは、生成された順序に従ってキューの先頭からキューの末尾までソートされたランダムロボットタスクキューと、複数のロボットのうちの少なくとも2つのロボットに対応する少なくとも2つの指定ロボットタスクキューとを含み、前記複数の配信対象タスクのタイプは、ランダムロボットタスクと指定ロボットタスクとを含むことと、各配信対象タスクのタイプ、各ロボットのタスク数及び状態に基づいて、生成された順序に従って各配信対象タスクに対するスケジューリング対象ロボットを決定し、前記配信対象タスクを前記スケジューリング対象ロボットに配信することと、各オリジナルタスクキューにおける残りのタスクに対して、上記操作を繰り返し実行することと、を含む、ロボットスケジューリング方法を提供する。
【0006】
第2態様において、本願の実施例は、複数の配信対象タスクを取得するように構成され、ここで、前記複数の配信対象タスクは、それぞれ複数のオリジナルタスクキューの先頭に位置する複数のタスクを含み、前記複数のオリジナルタスクキューは、生成された順序に従ってキューの先頭からキューの末尾までソートされたランダムロボットタスクキューと、複数のロボットのうちの少なくとも2つのロボットに対応する少なくとも2つの指定ロボットタスクキューとを含み、前記複数の配信対象タスクのタイプは、ランダムロボットタスクと指定ロボットタスクとを含む配信対象タスク取得モジュールと、各配信対象タスクのタイプ、各ロボットのタスク数及び状態に基づいて、生成された順序に従って各配信対象タスクに対するスケジューリング対象ロボットを決定し、前記配信対象タスクを前記スケジューリング対象ロボットに配信するためのロボットスケジューリングモジュールと、各オリジナルタスクキューにおける残りのタスクに対して、上記操作を繰り返し実行するための循環実行モジュールと、を含む、ロボットスケジューリング装置をさらに提供する。
【0007】
第3態様において、本願の実施例は、1つ又は複数のプロセッサと、1つ又は複数のプログラムを記憶するためのメモリと、を含み、前記1つ又は複数のプログラムが前記1つ又は複数のプロセッサによって実行されると、前記1つ又は複数のプロセッサに上記のロボットスケジューリング方法を実現させる電子機器をさらに提供する。
【0008】
第4態様において、本願の実施例は、コンピュータプログラムが記憶されているコンピュータ読み取り可能な記憶媒体をさらに提供し、当該プログラムがプロセッサによって実行されると、上記のロボットスケジューリング方法が実現される。
【発明の効果】
【0009】
本願の実施例の技術案において、各ロボットに対して対応する指定ロボットタスクキューを設定するとともに、ランダムロボットタスクキューを設定し、指定ロボットタスクキューとランダムロボットタスクキューにそれぞれ対応する指定ロボットタスクとランダムロボットタスクを配置する。スケジューリングポリシーを実行する場合、各タスクキューからキューの先頭に位置するタスクを配信対象タスクとして取得し、次に、これらの配信対象タスクに対して、生成された順序に従ってスケジューリングを行い、タスクのタイプ、各ロボットのタスク数及び状態に基づいて、各配信対象タスクに対応するスケジューリング対象ロボットを決定する。このように、スケジューリングポリシーを実行するたびにランダムタスク又は各ロボットの指定タスクに対してスケジューリングを行うため、従来技術において全てのタスクをまとめて時間公平原則に従ってスケジューリングする過程において、先行タスクと後続タスクで指定されたロボットが衝突することにより後続の全てのタスクの渋滞待ちの問題を回避し、ロボットのスケジューリング効率と利用率を向上させる。
【図面の簡単な説明】
【0010】
1つ又は複数の実施例は、それに対応する図面における画像によって例示的に説明され、これらの例示的な説明は実施例を限定するものではない。
【0011】
【
図1】本願の実施例1に係るロボットスケジューリング方法のフローチャートである。
【
図2】本願の実施例2に係るロボットスケジューリング方法におけるスケジューリング対象ロボットの決定方法のフローチャートである。
【
図3】本願の実施例3における配信対象タスクがランダムロボットタスクである場合のロボットスケジューリング方法のフローチャートである。
【
図4】本願の実施例4における配信対象タスクが指定ロボットタスクである場合のロボットスケジューリング方法のフローチャートである。
【
図5】本願の実施例5に係るロボットスケジューリング方法のフローチャートである。
【
図6】本願の実施例6に係るロボットスケジューリング装置の構造模式図である。
【
図7】本願の実施例7に係る電子機器の構造模式図である。
【発明を実施するための形態】
【0012】
以下、図面及び実施例を参照しながら本願をさらに詳細に説明する。ここで説明される具体的な実施例は、本願を説明するためのものに過ぎず、本願を限定するものではないことを理解されたい。加えて、説明を容易にするために、添付の図面は、本願の実施例に関連する部分のみを示し、構造のすべてではないことにさらに留意されたい。
実施例1
【0013】
図1は、本願の実施例1に係るロボットスケジューリング方法のフローチャートであり、本実施例は、例えば、同一の店舗でユーザによってトリガされたタスクに処理を担当するロボットを割り当てる場合に適用可能であり、該方法は、ロボットスケジューリング装置によって実行可能であり、該装置は、ソフトウェア及び/又はハードウェアの方式で実現可能であり、好ましくは、例えばコンピュータ機器又はサーバなどの電子機器に配置される。
図1に示すように、当該方法は具体的に以下のステップを含む。
【0014】
S101、複数の配信対象タスクを取得し、ここで、複数の配信対象タスクは、それぞれ複数のオリジナルタスクキューにおけるキューの先頭に位置する複数のタスクを含み、複数のオリジナルタスクキューは、生成された順序に従ってキューの先頭からキューの末尾までソートされたランダムロボットタスクキューと、複数のロボットのうちの少なくとも2つのロボットに対応する少なくとも2つの指定ロボットタスクキューとを含み、複数の配信対象タスクのタイプは、ランダムロボットタスクと指定ロボットタスクとを含む。
【0015】
一例において、店舗にN個のロボットがある場合、N個の指定ロボットタスクキュー及び1個のランダムロボットタスクキューを設定し、ユーザによってトリガされたタスクのタイプに応じて、タスクが生成された時間の前後順序に従って、対応するキューの先頭から末尾に排列し、即ち、キューの先頭のタスクの生成時間がより早い。例えば、ロボットを指定しないランダムタスク甲はランダムロボットタスクキューに置かれ、それぞれロボットA、ロボットBを指定する指定タスク乙と指定タスク丙は、それぞれロボットAとロボットBのそれぞれに対応する指定ロボットタスクキューに置かれ、もう1つのランダムタスク丁が生成されると、ランダムロボットタスクキューに置かれ且つランダムタスク甲の後に位置する。
【0016】
タスクが生成された後、いずれも対応するタスクキューに配置されて送信を待機する。スケジューリングポリシーは、一定の時間間隔で実行することができ、スケジューリングポリシーを実行するたびに、まず、各オリジナルタスクキューにおいてキューの先頭に位置するタスクを取得し、それを配信対象タスクとする。
【0017】
S102、各配信対象タスクのタイプ、各ロボットのタスク数及び状態に基づいて、生成された順序に従って配信対象タスクごとにスケジューリング対象ロボットを決定し、配信対象タスクをスケジューリング対象ロボットに送信する。
【0018】
スケジューリングポリシーを実行する過程において、各配信対象タスクの生成順序に従って、配信対象タスクごとにスケジューリング対象ロボットを順次決定する。例えば、全ての配信対象タスクの生成時間を比較し、生成時間が最も早いタスクを現在の配信対象タスクとし、それにスケジューリング対象ロボットを決定し、現在の配信対象タスクを決定されたスケジューリング対象ロボットに送信する。次に、残りの未処理の配信対象タスクのうち生成時間が最も早いタスクを新たな現在の配信対象タスクとしてスケジューリングし続け、これによって類推し、全ての配信対象タスクの処理が完了するまで続ける。
【0019】
スケジューリング対象ロボットを決定する場合、タスクのタイプ、各ロボットのタスク数及び状態に基づいて行うことができる。例えば、現在の配信対象タスクがランダムロボットタスクである場合、全てのロボットからタスク数が最も少ないロボットを、現在の配信対象タスクの実行を担当するスケジューリング対象ロボットとして選択することにより、タスク処理の効率及び各ロボットの利用率を向上させることができる。現在の配信対象タスクが指定ロボットタスクである場合、該タスクで指定されたロボットを現在の配信対象タスクの処理を担当するスケジューリング対象ロボットとする。
【0020】
別の例では、ロボットの状態と組み合わせてスケジューリングを行うこともでき、例えば、まず各ロボットから現在呼び出し可能な状態のロボットを選択し、次に現在呼び出し可能なロボットから各タスクごとにスケジューリング対象ロボットを決定することにより、タスク配信の成功率を向上させる。ここで、ロボットの状態は、ロボットから報告された状態情報に基づいて決定することができる。例えば、ロボットの現在のネットワーク状態はオンラインであるが、ロボットが充電によりタスクを実行できない場合、この時の当該ロボットの状態は呼び出し不可である。なお、ロボットの状態は、実際の作業シーンに応じて決定されてもよく、本願の実施例はこれを限定しない。
【0021】
S103、各オリジナルタスクキューにおける残りのタスクに対して、上記操作を繰り返し実行する。
【0022】
具体的には、配信対象タスクをスケジューリング対象ロボットに送信した後、引き続けて各オリジナルタスクキューにおける残りのタスクについて、上記操作に従って繰り返し実行することができる。
【0023】
もう一つの例において、スケジューリング対象ロボットは、タスクを受信するメッセージをフィードバックすることができ、該タスクの配信に成功したことを示すが、ネットワーク遅延などの原因により、スケジューリング対象ロボットが該タスクを受信できるとしても、そのフィードバックメッセージに遅延が存在する可能性がある。また、スケジューリング対象ロボットは、他の原因で該タスクを受け入れることができない可能性もあり、該タスクを受け入れるメッセージをフィードバックしない。したがって、本願の実施例において、タスクの配信の成功率を確保するために、スケジューリング対象ロボットがタスクを受け取るフィードバックメッセージを受信した場合にのみ、配信対象タスクの配信が成功したことを確認し、当該配信対象タスクをその所属するオリジナルタスクキューから削除し、そうでない場合にもその所属するオリジナルタスクキューに保留し、その元のキューにおける位置を保留することで、次回にスケジューリングポリシーを実行する際にタイムリーに配信することができる。当然のことながら、キューから削除する方式以外に、既に割り当てられたタスクに対して、他の方式で既に割り当てられたタスクをマークして、繰り返し割り当てを回避する目的を達成してもよい。
【0024】
上記S101-S103のステップに従ってスケジューリングポリシーを循環的に実行し、全てのオリジナルタスクキューに配信対象タスクがない場合、又はスケジューリング可能なロボットがない場合、実行を停止し、新しいタスクを生成した後に実行を続けることができる。例えば、上記停止条件が満たされるまで、一定の時間間隔で上記スケジューリングポリシーを実行してもよい。
【0025】
もう1つの例において、1つの店舗でA、B、Cの3台のロボットがあれば、異なるユーザによって甲、乙、丙、丁の4つのタスクが順番に開始される。ここで、甲はロボットを指定しなく、ランダムロボットタスクであり、乙と丙は、いずれもBロボットを指定し、丁はCロボットを指定し、乙、丙と丁は、いずれも指定ロボットタスクである。すると、甲はランダムロボットキューにあり、乙と丙はロボットBの指定ロボットキューにあり、乙は先頭にあり、丁はロボットCの指定ロボットキューにある。このとき、ロボットAのタスク数は0、ロボットBのタスク数は2、ロボットCのタスク数は1である。スケジューリングポリシーを実行する場合、まず、各オリジナルタスクキューから先頭に位置するタスクを配信対象タスクとして取得し、即ち、配信対象タスクは、甲、乙、丁を含む。ここで、生成順序に従って、まず甲のために割り当てを行い、甲がランダムロボットタスクであり、且つ現在のロボットAのタスク数が最も少ないため、ロボットAを甲のスケジューリング対象ロボットとし、タスク甲をロボットAに送信する。次にタスク乙のために割り当てを行い、タスク乙はロボットBを指定するため、ロボットBが現在呼び出し可能な状態にある場合、タスク乙をロボットBに送信する。最後にタスク丁のために割り当てを行い、ロボットCが現在呼び出し可能な状態にある場合、タスク丁をロボットCに送信する。この時、現在の全ての配信対象タスクは既に配信されており、ロボットA、B、Cがいずれもタスクを受信するメッセージをフィードバックすると、タスク甲、乙及び丁はいずれもそれが所属するオリジナルキューから削除される。次にスケジューリングポリシーを実行する際に、割り当てられたタスクが削除された後のオリジナルキューには、ロボットBが指定されたタスクキューに1つのタスク丙のみがあるため、タスク丙のために割り当てを行う。タスク丙がロボットBを指定するため、ロボットBが既に前のタスク乙を実行し終え、状態が呼び出し可能であることを報告した場合、タスク丙をロボットBに送信し、ロボットBが受信したメッセージをフィードバックした後、タスク丙をロボットBの指定されたロボットキューから削除し、そうでないと、タスク丙が現在配信できないことを示すため、ロボットBの指定されたロボットキューから削除せず、次回にスケジューリングポリシーを実行する時に配信し続ける。当然のことながら、上記スケジューリング過程において、いずれかのロボットがタスクを送信した後にタスクを受け入れたメッセージをフィードバックしない場合、対応するタスクはいずれもそれが所属するオリジナルタスクキューから削除されず、キューにおけるオリジナル位置に保留され、次回にスケジューリングポリシーを実行する際に配信される。
【0026】
なお、上記の例において、従来技術の時間公平原則に従ってスケジューリングを行うと、タスク甲のためにスケジューリング対象ロボットを決定する場合、ランダムに選択するため、ロボットB又はロボットCを選択する可能性がある。ロボットBを選択してタスク甲を実行すると、タスク乙を配信する時に、タスク乙がロボットBを指定するため、この時にロボットBがタスク甲を実行しており、時間を要するため、タスク乙は待機することしかできず、同様にロボットBが指定されたタスク丙も当然に待機する必要があり、同時に、タスク丁が指定したロボットがCであるが、タスク乙と丙がまだ配信されていないため、タスク丁も渋滞されて待機する。ロボットCを選択してタスク甲を実行し、タスク乙をロボットBに配信した後、タスク丙とタスク丁は依然として待機する必要がある。これにより、タスクの実行効率が大きく低下する。本願の実施例の技術案によれば、ランダムタスクの割り当て時に各ロボットの現在のタスク数を考慮するだけでなく、同時に、同一のロボットを指定するタスクがいずれも同一のキューに配置され、スケジューリングポリシーを実行するたびに各キューから先頭に位置するタスクを1つ選択して配信対象タスクとしてスケジューリングするため、従来技術においてロボットのスケジューリングが競合してタスクが無為に渋滞されて待機する問題が発生しない。上記の例において、タスク乙をロボットBに送信した後、タスク丙を処理することなく、タスク丁をロボットCに送信するため、タスク丁の渋滞待ちを引き起こすことがなく、タスクの実行効率を向上させる。
【0027】
本願の実施例の技術案において、各ロボットに対応する指定ロボットタスクキューを設定するとともに、ランダムロボットタスクキューを設定する。スケジューリングポリシーを実行する場合、各タスクキューから先頭に位置する配信対象タスクを取得し、次に、これらの配信対象タスクに対して、生成された順序に従ってスケジューリングを行い、タスクのタイプ、各ロボットのタスク数及び状態に基づいて、各配信対象タスクに対応するスケジューリング対象ロボットを決定する。次に、スケジューリング対象ロボットが受け入れた配信対象タスクは、それが所属するオリジナルタスクキューから削除することができ、その後、各オリジナルタスクキューにおける残りのタスクに対して、残りのタスクがないかスケジューリング可能なロボットがなくなるまで、上記スケジューリングポリシーを繰り返し実行する。このように、スケジューリングポリシーを実行するたびにランダムタスク又は各ロボットの指定タスクに対してスケジューリングを行うため、従来技術において時間公平原則に従ってスケジューリングを行う過程において、先行タスクと後続タスクとがロボットを割り当てる問題で衝突することにより後続タスクの全てが渋滞され待機する問題を回避し、ロボットのスケジューリング効率及び利用率を向上させる。
【0028】
好ましくは、別の例では、スケジューリング対象ロボットを決定する前に、現在の配信対象タスクの状態をチェックし、現在の配信対象タスクの状態がキャンセルされたか否かを判断し、キャンセルされた場合、実行するロボットを決定し続ける必要がなく、オリジナルタスクキュー及び配信対象タスクキューから直接削除すればよい。また、毎回タスクを送信した後、ロボットからフィードバックされたタスクの受け入れたメッセージを受信した場合のみ、タスクの割り当てが成功したことを示し、この時、該タスクの状態は受け入れたことであり、オリジナルタスクキュー及び配信対象タスクキューから削除することができ、そうでないと、該タスクをオリジナルタスクキューに保留する。現在の配信対象タスクキューの状態を検証することにより、配信が成功したタスクを繰り返し配信することを回避することができ、ユーザがキャンセルしたタスクを配信することによるロボットリソースの浪費を回避することもでき、タスク配信の正確性をさらに向上させ、ロボットスケジューリングの効率を向上させる。
【0029】
もう1つの例において、配信対象タスク毎にスケジューリング対象ロボットを決定する過程において計時を行い、スケジューリング時間を得ることをさらに含んでもよい。スケジューリング時間は、スケジューリング対象ロボットを決定する前に、現在の配信対象タスクのスケジューリング時間が予め設定された閾値を超える場合、現在の配信対象タスクを、それが所属するオリジナルタスクキュー及び配信対象タスクキューから削除するために用いられる。つまり、各配信対象タスクに対してスケジューリングポリシーを実行する過程において、計時を行うことができる。例えば、1つの配信対象タスクが現在の配信対象タスクとして決定された時刻で計時を開始し、該配信対象タスクがスケジューリング対象ロボットに受け入れられたと決定された時刻で計時を停止して、スケジューリング時間を得ることができる。1つの配信対象タスクが、ロボットからフィードバックした受け入れのメッセージを受信していない等の原因により、まだオリジナルタスクキューから削除されていない場合、該タスクが再び現在の配信対象タスクになると、そのスケジューリング時間を判断する。そのスケジューリング時間がタイムアウトした場合、タスクが失敗したと考えられ、その所属するオリジナルタスクキューから削除することができ、タイムアウトしていない場合、その配信を継続することができる。同時に、計時を開始した後、タスクがオリジナルタスクキューから削除されていない場合、スケジューリング時間が予め設定された閾値を超えるか、又はタスクが完了してオリジナルタスクキューから削除されるまで、計時を継続する。完了されていないタスクがスケジューリングポリシーのループ内に無制限に存在することは、タスクの円滑な完了に影響するだけでなく、ロボットの利用率を低下させ、本願の実施例は、スケジューリング時間がタイムアウトしたか否かを監視することにより、この問題を効果的に防止できることが理解できる。
実施例2
【0030】
図2は本願の実施例2に係るロボットスケジューリング方法においてどのようにスケジューリング対象ロボットを決定するかに関する方法のフローチャートであり、本実施例は上記実施例に基づいてスケジューリング対象ロボットを決定する方法のフロー、即ち上記実施例におけるS102をさらに最適化する。
図2に示すように、前記方法は以下のステップを含む。
【0031】
S201、生成した順序に従って複数の配信対象タスクをソートし、配信対象タスクキューを構成する。
【0032】
すなわち、複数の配信対象タスクを決定した後、生成された順序に従ってこれらの配信対象タスクを再びソートし、ソートされた配信対象タスクに従って配信対象タスクキューを形成することができる。
【0033】
S202、配信対象タスクキューから先頭に位置する配信対象タスクを現在の配信対象タスクとして取得する。
【0034】
S203、現在の配信対象タスクのタイプ、各ロボットのタスク数及び状態に基づいて、現在の配信対象タスクに対するスケジューリング対象ロボットを決定し、現在の配信対象タスクをスケジューリング対象ロボットに配信する。
【0035】
S204、現在の配信対象タスクキューが空であるか否かを判断し、空ではない場合、配信対象タスクキューにおける残りの配信対象タスクに対して、配信対象タスクキューが空になるまで、S202に繰り返して実行する。
【0036】
現在の配信対象タスクキューが空であるか否かを判断し、空である場合、現在の配信対象タスクキューにおけるタスクが全て処理されたことを示すことが理解できる。
【0037】
スケジューリングポリシーを1回実行することは、現在の配信対象タスクキューにおける各配信対象タスクを配信し、各配信対象タスクに対応するスケジューリング対象ロボットを決定することである。当該プロセスも1つの循環プロセスであり、即ち、配信対象タスクキューが空になるまで、配信対象タスクキューにおける各タスクが生成した順序に従って配信する。
【0038】
なお、現在の配信対象タスクをスケジューリング対象ロボットに配信した後、該現在の配信対象タスクを配信対象タスクキューから削除してもよいが、該現在の配信対象タスクは依然としてそれが所属するオリジナルタスクキューにあり、該配信対象タスクを実行するロボットが該タスクを受け入れたメッセージを返すまで、オリジナルタスクキューから該配信対象タスクを削除する。
【0039】
本願の実施例の技術案は、配信対象タスクを配信対象タスクキューに構成し、生成された順序に従って配信対象タスクキューにおけるタスクに対してスケジューリング対象ロボットを決定して配信することにより、配信対象タスクキューにおける各タスクの時間公平性を確保する。同時に、ロボットが受け入れたと確定されていないタスクについて、現在の配信対象タスクキューのみから削除し、それが所属するオリジナルキューから削除しないので、ロボットに受け入れられる前に、該タスクが再び新しい配信対象タスクに現れ、これにより、各タスクがいずれもロボットに配信されてロボットに実行されることを確保し、タスク実行の成功率を向上させる。
実施例3
【0040】
図3は、本願の実施例3における、配信対象タスクがランダム型ロボットタスクである場合のロボットスケジューリング方法のフローチャートである。本実施例は、上記実施例に基づいてさらに最適化する。
図3に示すように、前記方法は以下のステップを含む。
【0041】
S301、生成した順序に従って複数の配信対象タスクをソートし、配信対象タスクキューを構成する。
【0042】
S302、配信対象タスクキューから先頭に位置する配信対象タスクを現在の配信対象タスクとして取得する。
【0043】
S303、現在の配信対象タスクのタイプを判断し、現在の配信対象タスクがランダムロボットタスクである場合、S304を実行する。
【0044】
S304、各ロボットの状態に基づいて、複数の現在スケジューリング可能なロボットを決定し、各現在スケジューリング可能なロボットに対応する指定ロボットタスクキューにおけるタスク数を取得する。
【0045】
具体的には、全てのロボットの現在の状態に基づいて現在スケジューリング可能なロボットを取得することができ、さらにそれに対応する指定ロボットタスクキューにおけるタスク数を取得することができる。
【0046】
例示的には、まず、現在のネットワークがオンラインであるロボットから、呼び出し禁止状態にあるロボットを除去し、その後、呼び出したことがあり且つタスクの受け入れを拒否するロボットを除去することができる。このとき、除去された後にロボットが残っていない場合、タスクが失敗したと判定し、呼出側にタスクの配信が失敗したことを通知し、現在の配信対象タスクをその所属するオリジナルキューから削除することができる。除去された後に依然として残りのロボットが存在する場合、その中から一時的に呼び出し不可能なロボットを除去することができ、除去された後に残りのロボットが存在しない場合、現在の配信対象タスクが一時的に配信できないことを示し、次回のスケジューリングを待ち、現在の配信対象タスクを現在の配信対象タスクキューから削除するが、依然としてそれが所属するオリジナルタスクキューに保留することができる。上記除去操作を経た後にも残りのロボットが存在する場合、残りのロボットを現在スケジューリング可能なロボットとして決定することができる。上記除去操作により、現在スケジューリング可能なロボットに対してタスク配信を行うことで、タスク配信の成功率をさらに向上させ、ロボットのスケジューリング効率を向上させることができる。
【0047】
S305、現在の配信対象タスクが複数の現在スケジューリング可能なロボットのうちの任意のターゲットロボットに配信されたか否かを判断し、YESと判断した場合、S306を実行してからS308を実行し、NOと判断した場合、S307を実行してからS308を実行する。
【0048】
S306、該ターゲットロボットを現在の配信対象タスクのスケジューリング対象ロボットとする。
【0049】
S307、タスク数が最も少ない現在スケジューリング可能なロボットを現在の配信対象タスクのスケジューリング対象ロボットとして選択する。
【0050】
S308、現在の配信対象タスクをスケジューリング対象ロボットに送信する。
【0051】
具体的には、タスクが送信された後、ロボットが受け入れたことを示すメッセージを受信する場合にのみ、それが所属するオリジナルタスクキューから削除されるが、当該メッセージは必ずしもすぐに受信されない。したがって、スケジューリングポリシーが実行されるたびに、現在の配信対象タスクがすでに送信されたことがある。したがって、現在の配信対象タスクが現在スケジューリング可能なロボットのうちの任意のターゲットロボットに配信されたことが確認された場合、タスクの配信が成功していないか、または当該ターゲットロボットが受け入れられていない可能性がある。したがって、現在の配信対象タスクを再び当該ターゲットロボットに配信する必要がある。このように、同一のタスクを異なるロボットに送信してタスクが重複して処理されることを避けることができ、ロボットのスケジューリング効率を向上させることに有利である。
【0052】
しかし、さらに説明する必要があるのは、現在の配信対象タスクが一度送信されたが、送信されたロボットが現在スケジューリング可能なロボットの範囲内にない場合、その時に送信されたロボットが何らかの原因で該タスクを受けておらず、且つ該ロボットが現在スケジューリング不可能であることを示し、この場合、再度該ロボットに送信する必要がなく、現在の配信対象タスクが送信されていない場合と同様に、S307を実行し、それに対してスケジューリング対象ロボットを決定する。具体的には、タスク数が最も少ない現在スケジューリング可能なロボットを現在の配信対象タスクのスケジューリング対象ロボットとして選択することができる。ランダムロボットタスクについて、現在処理対象タスクの数が最も少ないロボットを選択して実行することにより、後続のタスクの渋滞待ちの可能性を最大限に低減し、タスク処理の効率及びロボットの利用率を向上させることができる。
【0053】
さらに、別の例では、上記S306は、
ターゲットロボットに対してロボットロックの取得に成功できるか否かを判断すること、
YESと判断された場合、ターゲットロボットをロックし、再びターゲットロボットを現在の配信対象タスクのスケジューリング対象ロボットとすること、
NOと判断された場合、現在の配信対象タスクが送信されたことを示すこと、を含んでもよい。
【0054】
一例において、同時に複数の異なるタスクを同一のロボットに送信することを回避するとともに、ロボットをスケジューリングする際に当該ロボットが他の遠隔要求等の影響を受けることを回避するために、ロボットにタスクを送信する前にロボットをロックし、ロックの時間長さ、例えば6Sを設定することができる。ロック後の該時間内に、該ロボットは他のタスク又は命令を受けない。あるロボットがロックされていない場合、該ロボットロックの取得に成功することができる。したがって、上記操作において、ターゲットロボットのロボットロックの取得に成功する場合、ターゲットロボットがスケジューリングされていないことを示し、ターゲットロボットをロックし、再びターゲットロボットを現在の配信対象タスクのスケジューリング対象ロボットとし、現在の配信対象タスクをターゲットロボットに送信することができる。逆に、ロボットロックの取得に成功できない場合、ターゲットロボットにタスクを送信したことがあり、且つ該ターゲットロボットがまだロック状態にあることを示す。この場合、その後、現在の配信対象タスクを現在の配信対象タスクキューから削除して次回のスケジューリングを待つことができる。
【0055】
それに対応して、上記S307は、
タスク数が小さい順に、複数の現在スケジューリング可能なロボットをソートすること、
ソート後の順序に従って、各現在スケジューリング可能なロボットのロボットロックを順次取得すること、
ロボットロックの取得に初めて成功した現在スケジューリング可能なロボットにロボットロックを追加し、それを現在の配信対象タスクのスケジューリング対象ロボットとすること、を含んでもよい。
【0056】
ここで、タスク数が最も少ないロボットは必ずしもロックの取得に成功することができないため、ソートされた複数の現在スケジューリング可能なロボットに対してロボットロックの取得を順次試み、どのロボットが先に取得することができれば、該ロボットをスケジューリング対象ロボットとすることができる。
【0057】
S309、現在の配信対象タスクにスケジューリング成功マークを設定する。
【0058】
S310、ランダムロボットタスクキューから現在の配信対象タスクの次のタスクを取得し、それを配信対象タスクキューに入れ、現在の配信対象タスクキューを得る。
【0059】
S311、現在の配信対象タスクキューを改めてソートする。
【0060】
S312、改めてソートされた配信対象タスクキュー内の残りの配信対象タスクについて、S302の実行に戻る。
【0061】
好ましくは、S302の実行に戻る前に、改めてソートされた配信対象タスクキューが空であるか否かを判断してもよく、空である場合、S302の実行に戻る必要がない。あるいは、S310を実行する前に、ランダムロボットタスクキューが空であるか否かを判断してもよく、ランダムロボットタスクキューが空であると決定された場合、S310-S312を実行する必要がない。
【0062】
具体的には、ランダムロボットタスクに対してスケジューリングポリシーを実行する過程において、現在の配信対象タスクをスケジューリング対象ロボットに送信した後、S309-S311を実行する。任意の配信対象タスクキューがスケジューリング成功にマークされた場合、該タスクを配信対象タスクキューから削除し、次にランダムロボットタスクキューからその次のタスクを取得し、他の配信対象タスクとともに新たな配信対象タスクキューを構成し、新たな配信対象タスクキューにおける各タスクを改めてソートし、該新たな配信対象タスクキューに対してS302の実行に戻り、キューにおけるタスクが空になるまでロボットスケジューリングを再度行い、現在の周期のスケジューリングポリシーを完成することを示す。このようにする目的は、ランダムロボットタスクにとって、現在のタスクが配信された後、ランダムロボットタスクキューにおける次のランダムロボットタスクにランダムに割り当て可能なロボットが存在する可能性があるためであり、該次のランダムロボットタスクを配信対象タスクキューに配置しないと、該タスクの実行に影響を与える。したがって、タスク実行の効率を向上させるために、ランダムロボットタスクキューにおける次のタスクも現在の配信対象タスクキューに入れて、改めてソートしてスケジューリングすることができる。
【0063】
本願の実施例の技術案において、ランダムロボットタスクについて、現在呼び出し可能であり且つタスク数が最も少ないロボットを選択してスケジューリングし、タスク配信の成功率を確保するとともに、後続のタスクの渋滞待ちの可能性を低減し、ロボットの利用率を向上させる。
実施例4
【0064】
図4は、本願の実施例4における、配信対象タスクが指定ロボットタスクである場合のロボットスケジューリング方法のフローチャートである。本実施例は、上記実施例に基づいてさらに最適化する。
図4に示すように、前記方法は以下のステップを含む。
【0065】
S401、生成した順序に従って複数の配信対象タスクをソートし、配信対象タスクキューを構成する。
【0066】
S402、配信対象タスクキューから先頭に位置する配信対象タスクを現在の配信対象タスクとして取得する。
【0067】
S403、現在の配信対象タスクのタイプを判断し、指定ロボットタスクである場合、S404を実行する。
【0068】
S404、該現在の配信対象タスクに対応する指定ロボットが現在スケジューリング可能であるか否かを判断し、YESと判断した場合、S405を実行し、NOと判断した場合、S406を実行する。
【0069】
例えば、現在の配信対象タスクにおいて指定されたロボットの報告状態が呼び出し可能である場合、現在はスケジューリング可能であると考えられる。
【0070】
S405、指定ロボットのロボットロックの取得に成功できるか否かを判断し、YESと判断するとS407を実行し、NOと判断するとS410を実行する。
【0071】
S407、指定ロボットをロックし、指定ロボットを現在の配信対象タスクのスケジューリング対象ロボットとする。
【0072】
S408、現在の配信対象タスクをスケジューリング対象ロボットに送信する。
【0073】
S410、現在の配信対象タスクを配信対象タスクキューから削除する。
【0074】
ロボットをロックする目的については、上記実施例と同様であり、ここでは説明を省略する。
【0075】
S411、現在の配信対象タスクキューが空であるか否かを判断し、NOと判断すると、まだ配信されていないタスクがあることを示し、そして、S402の実行に戻って今回のスケジューリングポリシーを実行し続け、そうでないと、今回のスケジューリングポリシーを終了する。
【0076】
上記S404において、指定ロボットが現在スケジューリング可能であるか否かを判断し、スケジューリング不可能であると判断すると、S406を実行し続ける。
【0077】
S406、指定ロボットが一時的にスケジューリング不可であるか否かを判断し、YESと判断した場合、S410を実行し、NOと判断した場合、S409を実行してから、S410を実行する。
【0078】
S409、現在の配信対象タスクをその所属するオリジナルタスクキューから削除する。
【0079】
いくつかのスケジューリング不可能なロボットは、一時的な問題によって一時的にスケジューリング不可能である可能性があり、その後、スケジューリング可能な状態に回復する可能性があり、次にタスクを再度配信する時に成功する可能性がある。したがって、指定ロボットが一時的にスケジューリング不可である場合、現在の配信対象タスクを現在の配信対象タスクキューから削除し、再びこの指定ロボットを割り当てるのを待つことができる。指定ロボットが一時的にスケジューリング不可ではない場合、該指定ロボットが確かにスケジューリングできないことを示し、現在の配信対象タスクをその所属するオリジナルタスクキューから直接削除し、該タスク配信が失敗したと判定し、タスク呼び出し側に通知することができる。
【0080】
本願の実施例の技術案では、指定されたロボットが現在スケジューリング可能であると決定された後に、指定されたロボットタスクを当該ロボットに送信し、タスク送信の成功率を保証する。
実施例5
【0081】
図5は、本願の実施例5に係るロボットスケジューリング方法のフローチャートである。
【0082】
図に示すように、タスクスケジューリングタイマーにより、3秒ごとにスケジューリングポリシーを起動する(S1)。店舗で利用可能なロボットに基づいて、各ロボットに対応する指定ロボットタスクキューSSRを設定し、ランダムロボットタスクキューSSSを設定する(S2)。リアルタイムで生成されたタスクは、タイプに応じてそれぞれ対応するキューに入れられる。次に、SSRとSSSキューからそれぞれ先頭のタスクを取得し、各タスクが生成した時間に従ってソートし、配信対象タスクキューSSを構成する(S3)。また、店舗に対応する現在のロボットリストRLを取得することもできる(S4)。
【0083】
スケジューリングポリシーを実行するたびに、配信対象タスクキューに対してスケジューリングを行う循環プロセスである。まず、SSから先頭のタスクを現在の配信対象タスクとして取得する(S5)。次に、まず、該タスクの状態を判断し(S6)、該タスクがキャンセルされた又は受け入れられた場合、SSR又はSSSキューから削除し(S7)、この時、配信対象タスクキューが空であるか否かを判断し(S37)、配信対象タスクキューにまだ配信されていないタスクがある場合、現在の配信対象タスクをSSから削除した後(S51)、SSから先頭のタスクを取得するステップ、即ちS5に戻る。現在の配信対象タスクがキャンセルされなく、又は受け入れられていない場合、そのスケジューリング時間がタイムアウトしたか否かを引き続き判断する(S8)。タイムアウトした場合、タスクの割り当てが失敗したと判定し(S9)、それを所属するオリジナルキュー(即ちSSR又はSSS)から削除した後(S10)、配信対象タスクキューが空であるか否かを判断し(S37)、タイムアウトしていない場合、当該タスクを割り当て続け、当該タスクがランダムロボットタスクであるか否かを判断する(S11)。
【0084】
現在の配信対象タスクがランダムロボットタスクである場合、まずRLリストから呼び出し禁止状態にあるロボットを除去し(S12)、次に呼び出し履歴且つ拒否のロボットを除去し(S13)、この時にRLリストが空である場合(S14)、タスクの割り当てが失敗したと判定し(S15)、タスクを所属するオリジナルのSSSキューから除去し(S16)、RLリストが空でない場合、スケジューリング開始をマークし、計時し(S17)、その後、呼び出し不可のロボットを除去し(S18)、この時にRLリストが空である場合(S19)、次回に現在の配信対象タスクをスケジューリングするのを待ち(S21)、空でない場合、該タスクに対して実行するロボットを決定する。具体的には、まず、現在の配信対象タスクがあるロボットに割り当てられたことがあり、且つ該ロボットが依然として現在のRLリストにあるか否かを判断し(S20)、そうである場合、ロボットロックの取得に成功したか否かを判断し(S22)、成功した場合、該ロボットを6Sにロックし(S24)、現在の配信対象タスクを該ロボットに再度配信し(S27)、同時に該現在の配信対象タスクをスケジューリング成功としてマークし(S29)、ロボットロックの取得に成功しなかった場合、該ロボットが6S内にタスクを1回配信したことを示し、次回のスケジューリングを待ってもよく(S25)、該現在の配信対象タスクがロボットに配信されたことがなく、又は配信されたが該ロボットが現在のRLリストにない場合、残りのロボットにおいて、各ロボットに対応するSSRキューの長さが小さい順に、これらの残りのロボットをソートし(S23)、即ち、各ロボットに対応する指定ロボットタスクの数に従ってソートし、ソート後の各ロボットに対してロボットロックを順次取得し(S26)、ロボットロックの取得に成功したか否かを判断し(S28)、ロックの取得に初めて成功したロボットを現在のロボットと決定し、該ロボットにロックし(S30)、タスクを該ロボットに配信する(S32)。タスクを該ロボットに配信した後、該タスクのスケジューリングが成功するとマークすることができる(S33)。なお、ランダムロボットタスクを配信する過程において、ランダムロボットタスクのスケジューリングが成功するとマークしたか否かを判断し(S34)、成功した場合、SSSから次のタスクを取得し(S35)、それをSSに入れ、現在のSSを改めてソートし(S36)、その後、ソート後の新しいSSキューに対して、今回のスケジューリングポリシーを実行し続ける。
【0085】
現在の配信対象タスクが指定ロボットタスクである場合、まず、指定ロボットに現在タスクがマークされているか否かを判断し(S38)、YESの場合、次回のスケジューリングを待ち(S39)、NOの場合、スケジューリング開始をマークして計時する(S40)。その後、指定ロボットの状態が呼び出し可能であるか否かを判断し(S41)、呼び出し不可であれば一時的に呼び出し不可か否かを引き続き判断する(S43)。指定ロボットの状態が呼び出し可能であると判断された場合、該指定ロボットをスケジューリング対象ロボットとし(S42、S49、S50及びS46を実行する)、指定ロボットの状態が一時的に呼び出し不可である場合、次回のスケジューリングを待ち(S44)、一時的に呼び出し不可でない場合、ロボット状態が呼び出し禁止であることを示し(S45)、この場合、タスク失敗をマークし、呼び出し側に通知し(S47)、該タスクをオリジナルのSSRキューから除去する(S48)。その後、配信対象タスクキューSSが空でない場合、現在の配信対象タスクをSSキューから除去した後、SSから先頭のタスクを取得するステップを実行し続け、今回のスケジューリングポリシーを実行し続ける。
【0086】
SSキューが空である場合、今回のスケジューリングポリシーの実行が完了し、次の実行周期で次のスケジューリングポリシーが起動されるのを待ってもよい。
【0087】
本願の実施例の技術案において、各ロボットに対応する指定ロボットタスクキューを設定するとともに、ランダムロボットタスクキューを設定する。スケジューリングポリシーを実行する場合、各タスクキューから先頭に位置する配信対象タスクを取得し、次に、これらの配信対象タスクに対して、生成された順序に従って順次スケジューリングを行い、タスクのタイプ、各ロボットのタスク数及び状態に基づいて、各配信対象タスクに対応するスケジューリング対象ロボットを決定する。次に、スケジューリング対象ロボットに受け入れられた配信対象タスクは、それが所属するオリジナルタスクキューから削除することができ、そして、削除後の各オリジナルタスクキューに対して、上記スケジューリングポリシーを、配信対象タスクがないかスケジューリング可能なロボットがなくなるまで繰り返し実行する。このように、スケジューリングポリシーを実行するたびにランダムロボットタスク又は指定ロボットタスクに対してスケジューリングを行うため、従来技術において時間公平原則に従ってスケジューリングを行う過程において、先行タスクと後続タスクがロボットを割り当てる問題で衝突することによる後続タスクの全ての渋滞待ちの問題を回避し、ロボットのスケジューリング効率と利用率を向上させる。
実施例6
【0088】
図6は本願の実施例6に係るロボットスケジューリング装置の構造模式図である。本実施例は、例えば、ユーザがトリガしたタスクに対して、同じ店舗で処理を担当するロボットを割り当てる場合に適用できる。当該装置は、本願の任意の実施例に記載のロボットスケジューリング方法を実現することができる。
図6に示されるように、装置は、具体的に、
複数の配信対象タスクを取得するように構成され、ここで、前記複数の配信対象タスクは、それぞれ複数のオリジナルタスクキューにおけるキューの先頭に位置する複数のタスクを含み、複数のオリジナルタスクキューは、生成された順序に従ってキューの先頭からキューの末尾までソートされたランダムロボットタスクキューと、複数のロボットのうちの少なくとも2つのロボットに対応する少なくとも2つの指定ロボットタスクキューとを含み、各オリジナルタスクキューにおけるタスクは、生成された順序に従ってキューの先頭からキューの末尾までソートされ、複数の配信対象タスクのタイプは、ランダムロボットタスクと指定ロボットタスクとを含む配信対象タスク取得モジュールと、
各配信対象タスクのタイプ、各ロボットのタスク数及び状態に基づいて、生成された順序に従って各配信対象タスクに対するスケジューリング対象ロボットを決定し、配信対象タスクをスケジューリング対象ロボットに送信するロボットスケジューリングモジュールと、
各オリジナルタスクキューにおける残りのタスクに対して、上記操作を繰り返し実行する循環実行モジュールと、を含む。
【0089】
好ましくは、ロボットスケジューリングモジュール602は、
生成された順序に従って複数の配信対象タスクをソートし、配信対象タスクキューを構成する配信対象タスクキュー構成ユニットと、
発行対象タスクキューから先頭に位置する配信対象タスクを現在の配信対象タスクとして取得する先頭タスク取得ユニットと、
現在の配信対象タスクのタイプ、各ロボットのタスク数及び状態に基づいて、現在の配信対象タスクに対するスケジューリング対象ロボットを決定し、現在の配信対象タスクをスケジューリング対象ロボットに配信するスケジューリング対象ロボット決定ユニットと、
配信対象タスクキュー内の残りの配信対象タスクについて、上記の配信対象タスクキューから現在の配信対象タスクとして先頭に位置する配信対象タスクを取得する動作を、配信対象タスクキューが空になるまで繰り返し実行する循環実行ユニットと、を含む。
【0090】
好ましくは、スケジューリング対象ロボット決定ユニットは、
各ロボットの状態に基づいて、複数の現在スケジューリング可能なロボットを決定し、各現在スケジューリング可能なロボットに対応する指定ロボットタスクキューにおけるタスク数を取得するスケジューリング可能なロボット取得サブユニットと、
タスク数が最も少ない現在スケジューリング可能なロボットを、現在の配信対象タスクのスケジューリング対象ロボットとして選択するスケジューリング対象ロボット決定サブユニットと、を含む。
【0091】
好ましくは、スケジューリング対象ロボット決定サブユニットは、具体的に、
タスク数の小さい順に従って、現在スケジューリング可能なロボットをソートし、
ソート後の順序に従って、各現在スケジューリング可能なロボットのロボットロックを順次取得し、
ロボットロックの取得に初めて成功した現在スケジューリング可能なロボットにロボットロックを追加し、それを現在の配信対象タスクのスケジューリング対象ロボットとする。
【0092】
好ましくは、スケジューリング対象ロボット決定ユニットは、判断処理サブユニットをさらに含み、具体的には、
現在の配信対象タスクが複数の現在スケジューリング可能なロボットのいずれかに配信されたか否かを判断し、
YESと判断された場合、再び当該ターゲットロボットを現在の配信対象タスクのスケジューリング対象ロボットとし、
NOと判断した場合、上記タスク数が最も少ない現在スケジューリング可能なロボットを現在の配信対象タスクのスケジューリング対象ロボットとして選択する操作を実行する。
【0093】
好ましくは、判断処理ユニットは、当該ターゲットロボットを現在の配信対象タスクのスケジューリング対象ロボットとする操作を実行する場合、具体的には、
ターゲットロボットに対してロボットロックの取得に成功できるか否かを判断し、
YESと判断された場合、ターゲットロボットをロックし、該ターゲットロボットを現在の配信対象タスクのスケジューリング対象ロボットとし、
NOと判断された場合、現在の配信対象タスクが配信されたことを示す。
【0094】
好ましくは、スケジューリング対象ロボット決定ユニットは、スケジューリングマーク処理サブユニットをさらに含み、現在の配信対象タスクのタイプがランダムロボットタスクであり、且つ現在の配信対象タスクが既にスケジューリング対象ロボットに配信されている場合、スケジューリングマーク処理サブユニットは、具体的に、
現在の配信対象タスクに対してスケジューリング成功マークを設定し、
ランダムロボットタスクキューから現在の配信対象タスクの次のタスクを取得し、それを配信対象タスクキューに入れ、現在の配信対象タスクキューを得、
現在の配信対象タスクキューを再びソートし、再びソートされた配信対象タスクキューにおける残りの配信対象タスクに対して、上記配信対象タスクキューから先頭に位置するタスクを取得して現在の配信対象タスクとする操作を実行する。
【0095】
好ましくは、スケジューリング対象ロボット決定ユニットは、指定ロボットタスク第1処理サブユニットをさらに含み、現在の配信対象タスクのタイプが指定ロボットタスクである場合、指定ロボットタスク第1処理サブユニットは、具体的に、
指定ロボットタスクに対応する指定ロボットが現在スケジューリング可能であることに応答して、指定ロボットに対するロボットロックの取得に成功できるか否かを判断し、
YESと判断された場合、指定ロボットをロックし、指定ロボットを現在の配信対象タスクのスケジューリング対象ロボットとし、
NOと判断された場合、上記の現在の配信対象タスクを配信対象タスクキューから削除する操作を直接実行する。
【0096】
好ましくは、スケジューリング対象ロボット決定ユニットは、指定ロボットタスク第2処理サブユニットをさらに含み、現在の配信対象タスクのタイプが指定ロボットタスクである場合、指定ロボットタスク第2処理サブユニットは、具体的に、
指定ロボットタスクに対応する指定ロボットが現在スケジューリング不可であることに応答して、指定ロボットが一時的にスケジューリング不可であるか否かを判断し、
YESと判断された場合、上記の現在の配信対象タスクを配信対象タスクキューから削除する操作を直接実行し、
NOと判断された場合、現在の配信対象タスクをそれが所属するオリジナルタスクキューから削除した後、上記の現在の配信対象タスクを配信対象タスクキューから削除する操作を実行する。
【0097】
好ましくは、ロボットスケジューリングモジュール602は、状態チェックユニットをさらに含み、状態チェックユニットは、具体的に、
スケジューリング対象ロボットを決定する前に、現在の配信対象タスクの状態が受け入れ済みまたは取り消し済みである場合、現在の配信対象タスクを、それが所属するオリジナルタスクキューから削除し、上記の現在の配信対象タスクを配信対象タスクキューから削除する操作の実行へ移行する。
【0098】
好ましくは、ロボットスケジューリングモジュール602は、スケジューリング計時ユニットをさらに含み、スケジューリング計時ユニットは、
現在の配信対象タスクに対してスケジューリング対象ロボットを決定する過程において計時を行い、スケジューリング時間を得、
ここで、スケジューリング時間は、スケジューリング対象ロボットを決定する前に、現在の配信対象タスクのスケジューリング時間が予め設定された閾値を超えた場合、現在の配信対象タスクをそれが所属するオリジナルタスクキューから削除し、次に配信対象タスクキューから削除するために用いられる。
【0099】
本願の実施例に係るロボットスケジューリング装置は、本願の任意の実施例に係るロボットスケジューリング方法を実行することができ、方法の実行に対応する機能モジュール及び有益な効果を備える。
実施例7
【0100】
図7は本願の実施例7に係る電子機器の構造模式図である。
図7は、本願の実施例を実現するための例示的な電子機器712のブロック図を示す。
図7に示す電子機器712は一例に過ぎず、本願の実施例の機能及び使用範囲を制限するものではない。
【0101】
図7に示すように、電子機器712は、汎用コンピューティングデバイスの形式で表現される。電子機器712のコンポーネントは、1つ又は複数のプロセッサ又は処理ユニット716、メモリ728、異なるシステムコンポーネント(メモリ728及び処理ユニット716を含む)を接続するバス718を含んでもよいが、これらに限定されない。
【0102】
バス718は、メモリバスまたはメモリコントローラ、周辺バス、グラフィックスアクセラレーションポート、プロセッサ、または複数のバス構造のうちの任意のバス構造を使用するローカルバスを含む、いくつかのタイプのバス構造のうちの1つまたは複数を示す。例示的に、これらのアーキテクチャは、工業標準アーキテクチャ(ISA)バス、マイクロチャネルアーキテクチャ(MAC)バス、強化型ISAバス、ビデオ電子標準協会(VESA)ローカルバス及び周辺コンポーネント相互接続(PCI)バスを含むが、これらに限定されない。
【0103】
電子機器712は、典型的には、複数種のコンピュータシステム読み取り可能な媒体を含む。これらの媒体は、電子機器712によってアクセス可能な任意の利用可能な媒体であってもよく、揮発性及び不揮発性媒体、リムーバブル及びノンリムーバブル媒体を含む。
【0104】
メモリ728は、揮発性メモリ形式のコンピュータシステム読み取り可能な媒体、例えばランダムアクセスメモリ(RAM)730及び/又はキャッシュメモリ732を含んでもよい。電子機器712は、他のリムーバブル/ノンリムーバブル、揮発性/不揮発性コンピュータシステム記憶媒体をさらに含んでもよい。単なる例として、ストレージシステム734は、ノンリムーバブルの不揮発性磁気媒体(
図7には示されていないが、一般的に「ハードディスクドライブ」と呼ばれる)の読み書きに用いられてもよい。
図7には示されていないが、リムーバブルの不揮発性磁気ディスク(例えば「フロッピーディスク」)の読み書きに用いられる磁気ディスクドライブ、及びリムーバブルの不揮発性光ディスク(例えばCD-ROM、DVD-ROM又は他の光媒体)の読み書きに用いられる光ディスクドライブを提供することができる。これらの場合、各ドライブは、1つ又は複数のデータ媒体インタフェースを介してバス718に接続されてもよい。メモリ728は、本願の各実施例の機能を実行するように構成される1セット(例えば、少なくとも1つ)のプログラムモジュールを有する少なくとも1つのプログラム又はプログラム製品を記憶することができる。
【0105】
1セット(少なくとも1つ)のプログラムモジュール742を有するプログラム/ユーティリティツール740は、例えばメモリ728に記憶されてもよく、このようなプログラムモジュール742は、オペレーティングシステム、1つ又は複数のアプリケーションプログラム、他のプログラムモジュール及びプログラムデータを含むが、これらに限定されず、これらの例における何れか又はある組み合わせには、ネットワーク環境の実現が含まれてもよい。プログラムモジュール742は、通常、本願に記載の実施例における機能及び/又は方法を実行する。
【0106】
電子機器712は、1つ又は複数の外部機器714(例えば、キーボード、ポインティングデバイス、ディスプレイ724など)と通信してもよく、ユーザが当該電子機器712とインタラクションできるようにする1つ又は複数の機器と通信してもよく、及び/又は当該電子機器712が1つ又は複数の他のコンピューティング機器と通信できるようにする任意の機器(例えば、ネットワークカード、モデムなど)と通信してもよい。この通信は、入出力インタフェース722を介して行うことができる。また、電子機器712は、ネットワークアダプタ720を介して1つ又は複数のネットワーク(例えばローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)及び/又はパブリックネットワーク、例えばインターネット)と通信することもできる。図に示すように、ネットワークアダプタ720は、バス718を介して電子機器712の他のモジュールと通信する。なお、図示しないが、電子機器712と組み合わせて他のハードウェア及び/又はソフトウェアモジュールを使用することができ、マイクロコード、デバイスドライバ、冗長処理ユニット、外部ディスクドライブアレイ、RAIDシステム、テープドライバ及びデータバックアップ記憶システムなどを含むが、これらに限定されない。
【0107】
処理ユニット716は、メモリ728に記憶されたプログラムを実行することにより、様々な機能アプリケーション及びデータ処理を実行し、例えば、本願の実施例に係るロボットスケジューリング方法を実現する。
実施例8
【0108】
本願の実施例8は、コンピュータプログラムが記憶されているコンピュータ読み取り可能な記憶媒体をさらに提供し、当該プログラムがプロセッサによって実行されると、本願の実施例に係るロボットスケジューリング方法が実現される。
【0109】
本願の実施例のコンピュータ記憶媒体は、1つ又は複数のコンピュータ読み取り可能な媒体の任意の組み合わせを採用することができる。コンピュータ読み取り可能な媒体は、コンピュータ読み取り可能な信号媒体またはコンピュータ読み取り可能な記憶媒体であってもよい。コンピュータ読み取り可能な記憶媒体は、例えば、電気、磁気、光、電磁気、赤外線、又は半導体のシステム、装置若しくはデバイス、又はこれらの任意の組み合わせであってもよいが、これらに限定されない。コンピュータ読み取り可能な記憶媒体のより具体的な例(非網羅的なリスト)は、1つ又は複数の導線を有する電気的接続、ポータブルコンピュータディスク、ハードディスク、ランダムアクセスメモリ(RAM)、リードオンリメモリ(ROM)、消去可能なプログラマブルリードオンリメモリ(EPROM又はフラッシュメモリ)、光ファイバ、ポータブルコンパクトディスクリードオンリメモリ(CD-ROM)、光記憶デバイス、磁気記憶デバイス、又は上記の任意の適切な組み合わせを含む。本明細書において、コンピュータ読み取り可能な記憶媒体は、プログラムを含む又は記憶する任意の有形媒体であってもよく、当該プログラムは、命令実行システム、装置又はデバイスによって使用され又はそれらと組み合わせて使用されてもよい。
【0110】
コンピュータ読み取り可能な信号媒体は、ベースバンドにおいて、または搬送波の一部として伝搬されるデータ信号を含んでよく、コンピュータ読み取り可能なプログラムコードを搬送する。このような伝播されたデータ信号は、電磁信号、光信号又は上記の任意の適切な組み合わせを含むが、これらに限定されない様々な形式を採用することができる。コンピュータ読み取り可能な信号媒体は、コンピュータ読み取り可能な記憶媒体以外の任意のコンピュータ読み取り可能な媒体であってもよく、当該コンピュータ読み取り可能な媒体は、命令実行システム、装置又はデバイスによって使用される又はそれらと組み合わせて使用されるプログラムを送信、伝播又は伝送することができる。
【0111】
コンピュータ読み取り可能な媒体に含まれるプログラムコードは、無線、電線、光ケーブル、RFなど、またはこれらの任意の適切な組み合わせを含むがこれらに限定されない任意の適切な媒体で伝送されてもよい。
【0112】
本願の操作を実行するためのコンピュータプログラムコードは、Java、Smalltalk、C++などのオブジェクト指向のプログラミング言語を含み、「C」言語または類似のプログラミング言語などの従来の手続き型プログラミング言語を更に含む、1つまたは複数のプログラミング言語またはそれらの組み合わせで記述されてもよい。プログラムコードは、完全にユーザコンピュータで実行されてもよく、部分的にユーザコンピュータで実行されてもよく、独立したソフトウェアパッケージとして実行されてもよく、部分的にユーザコンピュータで部分的にリモートコンピュータで実行されてもよく、又は完全にリモートコンピュータ若しくはサーバで実行されてもよい。リモートコンピュータに関する場合、リモートコンピュータは、ローカルエリアネットワーク(LAN)又はワイドエリアネットワーク(WAN)を含む任意の種類のネットワークを介してユーザコンピュータに接続されてもよく、又は、外部コンピュータに接続されてもよい(例えば、インターネットサービスプロバイダを利用してインターネットを介して接続される)。
【0113】
注意すべきことは、上記は本願の好ましい実施例及び適用される技術原理に過ぎない。当業者が理解できるように、本願はここに記載の特定の実施例に限定されず、当業者にとって本願の保護範囲から逸脱することなく、様々な明らかな変更、再調整及び代替を行うことができる。従って、以上の実施例により本願を詳細に説明したが、本願は以上の実施例に限定されるものではなく、本願の構想を逸脱しない限り、より多くの他の同等の実施例を含んでもよく、本願の範囲は添付の特許請求の範囲によって決められる。
【国際調査報告】