(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-08-26
(45)【発行日】2024-09-03
(54)【発明の名称】ロボット安全状態情報のセキュアな無線通信
(51)【国際特許分類】
H04L 49/55 20220101AFI20240827BHJP
H04M 11/00 20060101ALI20240827BHJP
H04L 9/36 20060101ALI20240827BHJP
【FI】
H04L49/55
H04M11/00 302
H04L9/36
(21)【出願番号】P 2022552764
(86)(22)【出願日】2021-03-04
(86)【国際出願番号】 US2021020911
(87)【国際公開番号】W WO2021178693
(87)【国際公開日】2021-09-10
【審査請求日】2022-10-05
(32)【優先日】2020-03-04
(33)【優先権主張国・地域又は機関】US
【早期審査対象出願】
(73)【特許権者】
【識別番号】522342754
【氏名又は名称】フォート ロボティクス,インコーポレイテッド
【氏名又は名称原語表記】FORT ROBOTICS,INC.
(74)【代理人】
【識別番号】110001302
【氏名又は名称】弁理士法人北青山インターナショナル
(72)【発明者】
【氏名】ビヴァンス,ネイサン
【審査官】安藤 一道
(56)【参考文献】
【文献】特開2017-022433(JP,A)
【文献】特開2016-007042(JP,A)
【文献】特開2010-088120(JP,A)
【文献】特表2007-528160(JP,A)
【文献】米国特許第11086336(US,B1)
【文献】米国特許出願公開第2014/0350725(US,A1)
【文献】米国特許出願公開第2007/0230627(US,A1)
【文献】特開2014-114562(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
H04L 9/36
H04M 11/00
H04L 49/55
(57)【特許請求の範囲】
【請求項1】
第1ソースマイクロコントローラによって、ペイロードと、第1エラーコードと、を含む第1データパケットを生成するステップであって、
ロボットの安全状態を示す前記ペイロードに第1キーを付加するステップと、
前記ペイロードの長さと第1キーとに基づいて前記第1エラーコードを生成するステップと、
前記第1データパケットから前記第1キーを除去するステップと、
前記ペイロードに前記第1エラーコードを付加するステップと、によって第1データパケットを生成するステップと、
前記第1ソースマイクロコントローラから第2ソースマイクロコントローラに前記第1データパケットを送信するステップと、
前記第2ソースマイクロコントローラによって、前記ペイロード、前記第1エラーコード及び第2エラーコードを含む第2データパケットを生成するステップであって、
前記第1データパケットから前記第1エラーコードを除去するステップと、
前記第1データパケットの前記ペイロードに第2キーを付加するステップと、
前記ペイロードの長さと前記第2キーとに基づいて前記第2エラーコードを生成するステップと、
前記第1データパケットから前記第2キーを除去するステップと、
前記ペイロードに前記第1エラーコードを再度付加するステップと、
前記第1エラーコードに前記第2エラーコードを付加するステップと、によって第2データパケットを生成するステップと、
通信チャネルを介して受信側マイクロコントローラに前記第2データパケットを送信するステップであって、前記受信側マイクロコントローラは、前記第1キー及び前記第2キーの両方で予めプログラムされたものであるステップと、
前記受信側マイクロコントローラによって、前記第1エラーコード及び前記第2エラーコードのうちの少なくとも1つに基づいて前記ペイロードを回復するステップであって、
前記第2データパケットから前記ペイロードを抽出するステップと、
前記ペイロードに前記第2キーを付加するステップと、
第3エラーコードを生成するステップと、
前記第3エラーコードが前記第2エラーコードに一致することを確認するステップと、
前記ペイロードに前記第1キーを付加するステップと、
第4エラーコードを生成するステップと、
前記第4エラーコードが前記第1エラーコードに一致することを確認するステップと、によって前記ペイロードを回復するステップと、を含む方法。
【請求項2】
第1ソースマイクロコントローラによって、ペイロードと、第1エラーコードと、を含む第1データパケットを生成するステップであって、
ロボットの安全状態を示す前記ペイロードに第1キーを付加するステップと、
前記ペイロードの長さと第1キーとに基づいて前記第1エラーコードを生成するステップと、
前記第1データパケットから前記第1キーを除去するステップと、
前記ペイロードに前記第1エラーコードを付加するステップと、によって第1データパケットを生成するステップと、
前記第1ソースマイクロコントローラから第2ソースマイクロコントローラに前記第1データパケットを送信するステップと、
前記第2ソースマイクロコントローラによって、前記ペイロード、前記第1エラーコード及び第2エラーコードを含む第2データパケットを生成するステップであって、
前記第1データパケットから前記第1エラーコードを除去するステップと、
前記第1データパケットの前記ペイロードに第2キーを付加するステップと、
前記ペイロードの長さと前記第2キーとに基づいて前記第2エラーコードを生成するステップと、
前記第1データパケットから前記第2キーを除去するステップと、
前記ペイロードに前記第1エラーコードを再度付加するステップと、
前記第1エラーコードに前記第2エラーコードを付加するステップと、によって第2データパケットを生成するステップと、
通信チャネルを介して第2受信側マイクロコントローラに前記第2データパケットを送信するステップであって、前記第2受信側マイクロコントローラは前記第2キーで予めプログラムされたものであるステップと、
前記第2受信側マイクロコントローラによって、前記第1エラーコード及び前記第2エラーコードのうちの少なくとも1つに基づいて前記ペイロードを回復するステップであって、
前記第2データパケットから前記ペイロードを抽出するステップと、
前記ペイロードに前記第2キーを付加するステップと、
第3エラーコードを生成するステップと、
前記第3エラーコードが前記第2エラーコードに一致することを確認するステップと、によって前記ペイロードを回復するステップと、を含む方法。
【請求項3】
前記第1ソースマイクロコントローラによって、前記第1データパケットを生成するステップは、前記第1データパケットを暗号化するステップを含む、請求項1または2に記載の方法。
【請求項4】
前記第1エラーコード及び前記第2エラーコードは巡回冗長検査値を含む、請求項1または2に記載の方法。
【請求項5】
前記第1データパケットを受信したことに応じて、前記第2ソースマイクロコントローラによって、前記ペイロードで示された前記安全状態に対して前記ロボットの第2の安全状態を検証するステップをさらに含む、請求項1または2に記載の方法。
【請求項6】
前記ペイロードで示された前記安全状態に対して前記第2の安全状態を検証するステップは、前記第2ソースマイクロコントローラにより検出された前記第2の安全状態が、前記第1ソースマイクロコントローラにより検出された前記安全状態と一致するかどうかを判定するステップを含み、
さらに、前記第2の安全状態が前記第1ソースマイクロコントローラにより検出された前記安全状態と一致しないと判定されたことに応じて、前記第2の安全状態が前記第1ソースマイクロコントローラにより検出された前記安全状態と一致していると確認されるまで、前記第2ソースマイクロコントローラによって、さらなる処理を実行することを待機させるステップを含む、請求項5に記載の方法。
【請求項7】
命令が符号化されたメモリを備える非一時的なコンピュータ可読媒体であって、前記命令は、実行されると、1以上のプロセッサに動作を実行させ、前記命令は、
第1ソースマイクロコントローラによって、ペイロードと、第1エラーコードと、を含む第1データパケットを生成することであって、
ロボットの安全状態を示す前記ペイロードに第1キーを付加し、
前記ペイロードの長さと第1キーとに基づいて前記第1エラーコードを生成し、
前記第1データパケットから前記第1キーを除去し、および、
前記ペイロードに前記第1エラーコードを付加することによって、第1データパケットを生成し、
前記第1ソースマイクロコントローラから第2ソースマイクロコントローラに前記第1データパケットを送信し、
前記第2ソースマイクロコントローラによって、前記ペイロード、前記第1エラーコード及び第2エラーコードを含む第2データパケットを生成することであって、
前記第1データパケットから前記第1エラーコードを除去し、
前記第1データパケットの前記ペイロードに第2キーを付加し、
前記ペイロードの長さと前記第2キーとに基づいて前記第2エラーコードを生成し、
前記第1データパケットから前記第2キーを除去し、
前記ペイロードに前記第1エラーコードを再度付加し、
前記第1エラーコードに前記第2エラーコードを付加することによって、第2データパケットを生成し、
通信チャネルを介して、前記第1キー及び前記第2キーの両方で予めプログラムされた受信側マイクロコントローラに前記第2データパケットを送信し、
前記受信側マイクロコントローラによって、前記第1エラーコード及び前記第2エラーコードのうちの少なくとも1つに基づいて前記ペイロードを回復することであって、
前記第2データパケットから前記ペイロードを抽出し、
前記ペイロードに前記第2キーを付加し、
第3エラーコードを生成し、
前記第3エラーコードが前記第2エラーコードに一致することを確認し、
前記ペイロードに前記第1キーを付加し、
第4エラーコードを生成し、
前記第4エラーコードが前記第1エラーコードに一致することを確認すること、によって前記ペイロードを回復する、ための命令を含む非一時的なコンピュータ可読媒体。
【請求項8】
命令が符号化されたメモリを備える非一時的なコンピュータ可読媒体であって、前記命令は、実行されると、1以上のプロセッサに動作を実行させ、前記命令は、
第1ソースマイクロコントローラによって、ペイロードと、第1エラーコードと、を含む第1データパケットを生成することであって、
ロボットの安全状態を示す前記ペイロードに第1キーを付加し、
前記ペイロードの長さと第1キーとに基づいて前記第1エラーコードを生成し、
前記第1データパケットから前記第1キーを除去し、および、
前記ペイロードに前記第1エラーコードを付加することによって、第1データパケットを生成し、
前記第1ソースマイクロコントローラから第2ソースマイクロコントローラに前記第1データパケットを送信し、
前記第2ソースマイクロコントローラによって、前記ペイロード、前記第1エラーコード及び第2エラーコードを含む第2データパケットを生成することであって、
前記第1データパケットから前記第1エラーコードを除去し、
前記第1データパケットの前記ペイロードに第2キーを付加し、
前記ペイロードの長さと前記第2キーとに基づいて前記第2エラーコードを生成し、
前記第1データパケットから前記第2キーを除去し、
前記ペイロードに前記第1エラーコードを再度付加し、
前記第1エラーコードに前記第2エラーコードを付加することによって、第2データパケットを生成し、
通信チャネルを介して、前記第2キーで予めプログラムされた第2受信側マイクロコントローラに前記第2データパケットを送信し、
前記第2受信側マイクロコントローラによって、前記第1エラーコード及び前記第2エラーコードのうちの少なくとも1つに基づいて前記ペイロードを回復することであって、
前記第2データパケットから前記ペイロードを抽出し、
前記ペイロードに前記第2キーを付加し、
第3エラーコードを生成し、
前記第2受信側マイクロコントローラによって、前記第1キーで予めプログラムされた第1受信側マイクロコントローラに、前記ペイロード及び前記第1エラーコードを送信し、前記第1受信側マイクロコントローラによって、前記第1キーと前記第1エラーコードとを使用して前記ペイロードを確認することで、前記第3エラーコードが前記第2エラーコードに一致することを確認すること、によって前記ペイロードを回復する、ための命令を含む非一時的なコンピュータ可読媒体。
【請求項9】
前記第1ソースマイクロコントローラによって、前記第1データパケットを生成するための命令は、前記第1データパケットを暗号化するための命令を含む、請求項7または8に記載の非一時的なコンピュータ可読媒体。
【請求項10】
前記第1エラーコード及び前記第2エラーコードは巡回冗長検査値を含む、請求項7または8に記載の非一時的なコンピュータ可読媒体。
【請求項11】
前記命令は、さらに、前記第1データパケットを受信したことに応じて、前記第2ソースマイクロコントローラによって、前記ペイロードで示された前記安全状態に対して前記ロボットの第2の安全状態を検証するための命令を含む、請求項7または8に記載の非一時的なコンピュータ可読媒体。
【請求項12】
前記ペイロードで示された前記安全状態に対して前記ロボットの第2の安全状態を検証するための命令が、前記第2ソースマイクロコントローラにより検出された前記第2の安全状態が、前記第1ソースマイクロコントローラにより検出されて前記ペイロードで示された前記安全状態と一致するかどうかを判定するための命令を含み、
前記命令は、さらに、前記第2の安全状態が前記第1ソースマイクロコントローラにより検出された前記安全状態と一致しないと判定されたことに応じて、前記第2の安全状態が前記第1ソースマイクロコントローラにより検出された前記安全状態と一致していると確認されるまで、前記第2ソースマイクロコントローラによって、さらなる処理を実行することを待機させるための命令を含む、請求項11に記載の非一時的なコンピュータ可読媒体。
【請求項13】
命令が符号化されたメモリと、
前記命令を実行するとき、動作を実行するようにされる1以上のプロセッサであって、前記動作は:
第1ソースマイクロコントローラによって、ペイロードと、第1エラーコードと、を含む第1データパケットを生成するステップであって、
ロボットの安全状態を示す前記ペイロードに第1キーを付加するステップと、
前記ペイロードの長さと第1キーとに基づいて前記第1エラーコードを生成するステップと、
前記第1データパケットから前記第1キーを除去するステップと、
前記ペイロードに前記第1エラーコードを付加するステップと、によって第1データパケットを生成するステップと、によって第1データパケットを生成するステップと、
前記第1ソースマイクロコントローラから第2ソースマイクロコントローラに前記第1データパケットを送信するステップと、
前記第2ソースマイクロコントローラによって、前記ペイロード、前記第1エラーコード及び第2エラーコードを含む第2データパケットを生成するステップであって、
前記第1データパケットから前記第1エラーコードを除去するステップと、
前記第1データパケットの前記ペイロードに第2キーを付加するステップと、
前記ペイロードの長さと前記第2キーとに基づいて前記第2エラーコードを生成するステップと、
前記第1データパケットから前記第2キーを除去するステップと、
前記ペイロードに前記第1エラーコードを再度付加するステップと、
前記第1エラーコードに前記第2エラーコードを付加するステップと、によって第2データパケットを生成するステップと、
通信チャネルを介して受信側マイクロコントローラに前記第2データパケットを送信するステップであって、前記受信側マイクロコントローラは、前記第1キー及び前記第2キーの両方で予めプログラムされたものであるステップと、
前記受信側マイクロコントローラによって、前記第1エラーコード及び前記第2エラーコードのうちの少なくとも1つに基づいて前記ペイロードを回復するステップであって、
前記第2データパケットから前記ペイロードを抽出するステップと、
前記ペイロードに前記第2キーを付加するステップと、
第3エラーコードを生成するステップと、
前記第3エラーコードが前記第2エラーコードに一致することを確認するステップと、
前記ペイロードに前記第1キーを付加するステップと、
第4エラーコードを生成するステップと、
前記第4エラーコードが前記第1エラーコードに一致することを確認するステップと、によって前記ペイロードを回復するステップと、によって前記ペイロードを回復するステップと、を含む、1以上のプロセッサと、を備えるシステム。
【請求項14】
第1ソースマイクロコントローラによって、ロボットの安全状態を示すペイロードと、第1エラーコードと、を含む第1データパケットを生成するステップと、
前記第1ソースマイクロコントローラから第2ソースマイクロコントローラに前記第1データパケットを送信するステップと、
前記第1データパケットを受信したことに応じて、前記第2ソースマイクロコントローラによって、前記ペイロードで示された前記安全状態に対して前記ロボットの第2の安全状態を検証するステップと、
前記第2ソースマイクロコントローラによって、前記ペイロード、前記第1エラーコード及び第2エラーコードを含む第2データパケットを生成するステップであって、
前記第1データパケットから前記第1エラーコードを除去するステップと、
前記第1データパケットの前記ペイロードに第2キーを付加するステップと、
前記ペイロードの長さと前記第2キーとに基づいて前記第2エラーコードを生成するステップと、
前記第1データパケットから前記第2キーを除去するステップと、
前記ペイロードに前記第1エラーコードを再度付加するステップと、
前記第1エラーコードに前記第2エラーコードを付加するステップと、によって第2データパケットを生成するステップと、
通信チャネルを介して受信側マイクロコントローラに前記第2データパケットを送信するステップであって、前記受信側マイクロコントローラは、
第1キー及び前記第2キーの両方で予めプログラムされたものであるステップと、
前記受信側マイクロコントローラによって、前記第1エラーコード及び前記第2エラーコードのうちの少なくとも1つに基づいて前記ペイロードを回復するステップであって、
前記第2データパケットから前記ペイロードを抽出するステップと、
前記ペイロードに前記第2キーを付加するステップと、
第3エラーコードを生成するステップと、
前記第3エラーコードが前記第2エラーコードに一致することを確認するステップと、
前記ペイロードに前記第1キーを付加するステップと、
第4エラーコードを生成するステップと、
前記第4エラーコードが前記第1エラーコードに一致することを確認するステップと、によって前記ペイロードを回復するステップと、を含む方法。
【請求項15】
命令が符号化されたメモリを備える非一時的なコンピュータ可読媒体であって、前記命令は、実行されると、1以上のプロセッサに動作を実行させ、前記命令は、
第1ソースマイクロコントローラによって、ロボットの安全状態を示すペイロードと、第1エラーコードと、を含む第1データパケットを生成し、
前記第1データパケットを受信したことに応じて、第2ソースマイクロコントローラによって、前記ペイロードで示された前記安全状態に対して前記ロボットの第2の安全状態を検証し、
前記第1ソースマイクロコントローラから前記第2ソースマイクロコントローラに前記第1データパケットを送信し、
前記第2ソースマイクロコントローラによって、前記ペイロード、前記第1エラーコード及び第2エラーコードを含む第2データパケットを生成することであって、
前記第1データパケットから前記第1エラーコードを除去し、
前記第1データパケットの前記ペイロードに第2キーを付加し、
前記ペイロードの長さと前記第2キーとに基づいて前記第2エラーコードを生成し、
前記第1データパケットから前記第2キーを除去し、
前記ペイロードに前記第1エラーコードを再度付加し、
前記第1エラーコードに前記第2エラーコードを付加することによって、第2データパケットを生成し、
通信チャネルを介して、前記第2キーで予めプログラムされた
第2受信側マイクロコントローラに前記第2データパケットを送信し、
前記第2受信側マイクロコントローラによって、前記第1エラーコード及び前記第2エラーコードのうちの少なくとも1つに基づいて前記ペイロードを回復することであって、
前記第2データパケットから前記ペイロードを抽出し、
前記ペイロードに前記第2キーを付加し、
第3エラーコードを生成し、
前記第2受信側マイクロコントローラによって、
第1キーで予めプログラムされた第1受信側マイクロコントローラに、前記ペイロード及び前記第1エラーコードを送信し、前記第1受信側マイクロコントローラによって、前記第1キーと前記第1エラーコードとを使用して前記ペイロードを確認することで、前記第3エラーコードが前記第2エラーコードに一致することを確認すること、によって前記ペイロードを回復する、ための命令を含む非一時的なコンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願への相互参照
[0001] 本願は、2020年3月4日に出願された米国仮出願第62/985,241号の利益を主張し、その開示は、参照によってその全体が本明細書に組み込まれる。
【0002】
[0002] 本開示は、概して、ロボット工学の分野に関し、より具体的には、通信チャネルを介してロボットに安全状態情報を送信することに関する。
【背景技術】
【0003】
[0003] 従来のシステムは、有線通信を使用して安全状態情報を送信する。例えば、安全状態が緊急状態を示している場合、この情報は有線通信回線を介してロボットに送信され、そこでスイッチが切り替わり、ロボットへの電力又は燃料が遮断され、ロボットを強制的に停止させる。無線通信信号は、例えば、無線通信チャネルのガウス雑音に起因するランダムエラーの影響を受けやすく、そのことが今度は、安全システムで検出不可能なエラーを発生させる。規制標準団体は、特定の安全メッセージ内で検出不可能なエラーの可能性を特定のレベル未満に制御するための要件を確立した。要件を満たす既存のシステムは、冗長で、かつ、不必要な帯域幅及び電力消費をもたらす機構に依存している。さらに、安全メッセージのサイズが大きくなるにつれて、それらのシステムでの帯域幅及び電力消費の損失が非常に大きくなる点において、既存のシステムは拡張可能ではない。
【発明の概要】
【0004】
[0004] 帯域幅及び電力の効率が高く、かつ、拡張可能である方法で、通信チャネル(例えば、無線)を介して安全メッセージを生成、送信及び検証するためのシステム及び方法が本明細書で開示される。一実施形態では、第1ソースマイクロコントローラは、ペイロード及び第1エラーコード(例えば、巡回冗長検査(CRC)コード)を含む第1データパケットを生成する。ペイロードはロボットの安全状態を示してもよい。エラーコードは、一貫した方法でデータパケットを符号化するために第1ソースマイクロコントローラによって使用される第1ユニークキーに基づいて生成されてもよい。しかしながら、効率及びセキュリティのため、キーはデータパケットから省略されてもよい。
【0005】
[0005] 第1ソースマイクロコントローラは、第1ソースマイクロコントローラから第2ソースマイクロコントローラにデータパケットを送信する。第2ソースマイクロコントローラは、ペイロード、第1エラーコード及び第2エラーコードを含む第2データパケットを生成し、第2エラーコードは、ペイロードと第2マイクロコントローラに固有の第2キーとに基づいて導出されてもよい。第2ソースマイクロコントローラは、第2データパケットを生成する前に、その安全状態が第1ソースマイクロコントローラの安全状態に一致することを確認してもよい。正常に生成された場合、第2データパケットは安全メッセージである。
【0006】
[0006] 第2ソースマイクロコントローラは、通信チャネル(例えば、無線)を介して受信側マイクロコントローラに第2データパケットを送信し、受信側(sink)マイクロコントローラは、第1エラーコード及び第2エラーコードのうちの少なくとも1つに基づいてペイロードを回復する。ペイロードを回復するため、受信側マイクロコントローラは、第1キー及び第2キーの一方又は両方で予めプログラムされてもよく、かつ、予めプログラムされたキーを使用して符号化されたペイロードを復号化してもよい。
【0007】
[0007] 開示された実施形態は、詳細な説明、添付の特許請求の範囲及び添付の図(又は図面)からより容易に明らかになる他の利点及び特徴を有している。図面の簡単な紹介は以下のとおりである。
【図面の簡単な説明】
【0008】
【
図1】[0008] ソースデバイスと受信側デバイスとの間で通信するためのシステム環境の一実施形態を示している。
【
図2】[0009] ソースマイクロコントローラによって使用される例示的なモジュール及びデータベースの一実施形態を示している。
【
図3】[0010] 受信側マイクロコントローラによって使用される例示的なモジュール及びデータベースの一実施形態を示している。
【
図4】[0011] 第1ソースマイクロコントローラから安全パケットを生成するためのデータフローの一実施形態を示している。
【
図5】[0012] 第1ソースマイクロコントローラから受信されたパケットに基づいて第2ソースマイクロコントローラから安全パケットを生成するためのデータフローの一実施形態を示している。
【
図6】[0013] 安全パケットの表現の一実施形態を示している。
【
図7】[0014] 安全パケットのペイロードの一実施形態を示している。
【
図8】[0015] 安全パケットのペイロードの第2実施形態を示している。
【
図9】[0016] 安全メッセージヘッダ内の情報の一実施形態を示している。
【
図10】[0017] マシン可読媒体から命令を読み取り、かつ、当該命令をプロセッサ(又はコントローラ)で実行することができる一例のマシンのコンポーネントを示すブロック図である。
【
図11】[0018] 安全メッセージを生成及び確認するための例示的なプロセスの一実施形態を示している。
【発明を実施するための形態】
【0009】
[0019] 図面(図)及び以下の説明は、例示としてのみの好ましい実施形態に関するものである。以下の議論から、本明細書に開示される構造及び方法の代替の実施形態が、特許請求されるものの原理から逸脱することなく採用され得る実行可能な代替物として容易に認識されることに留意されたい。
【0010】
[0020] ここで、いくつかの実施形態を詳細に参照し、その例が添付の図に示されている。実施可能である限り、類似又は同様の参照番号が、図で使用され得ること、かつ、類似又は同様の機能を示し得ることに留意されたい。図は、例示のみを目的として、開示されたシステム(又は方法)の実施形態を表現している。当業者は、以下の説明から、本明細書に記載の原理から逸脱することなく、本明細書に例示される構造及び方法の代替の実施形態が採用され得ることを容易に認識する。
【0011】
ソースデバイス及び受信側デバイスのためのシステム環境
[0021] 環境100は、ソースデバイス110、ネットワーク120及び受信側デバイス130を含む。ソースデバイス110は、受信側デバイス130に安全状態情報を提供する任意のデバイスであってもよい。本明細書で使用される安全状態情報という用語は、受信側デバイス130が安全条件のためにその動作を修正すべきかどうかに関する情報を参照してもよい。例えば、安全状態情報は、緊急停止(本明細書ではe-stop又はEstopと参照されることもある)ボタンが作動されたかどうかを含んでもよく、その場合、受信側デバイスの電源又は燃料源が非アクティブ化されなければならない。安全状態情報は、近くの障害物及び危険物が導出され得る環境情報(例えば、カメラ情報)などの他の情報を含んでもよく、このことが今度は、受信側デバイス130が障害物及び危険物に関与することを回避するようにその動作を修正させてもよい。ソースデバイス110は、単一のデバイスとして表現されているが、2以上のデバイスを含んでもよい。ソースデバイス110は、安全状態情報が導出される1以上のセンサを含んでもよく、かつ、安全状態を変更し得る1以上のコントローラ(例えば、受信側デバイス130の1以上の態様を制御するコントローラ)を含んでもよい。以下でさらに詳細に説明されるように、ソースデバイス110は、安全状態情報を含む安全メッセージに信号を処理する複数の安全マイクロコントローラを含んでもよい。
【0012】
[0022] ネットワーク120は、ソースデバイス110と受信側デバイス130との間の任意のデータ通信チャネルであってもよい。通信チャネルは、直接接続であってもよく、又は、介在中継デバイス(例えば、電子リレー、ルータ、ゲートウェイなど)を含んでもよい。通信チャネルは2以上の仮想チャネルを含んでもよい。例えば、複数の安全マイクロコントローラがソースデバイス110にインストールされる場合、各安全マイクロコントローラは、その通信が送信される通信チャネル内に対応の仮想チャネルを有してもよい。任意選択的に、そのような仮想チャネルを通じて送信されるパケットの宛先アドレスは、受信側デバイス130の特定のマイクロコントローラへの到達専用であってもよい。
【0013】
[0023] 受信側デバイス130は、安全情報に基づいてその動作状態を修正するようにプログラムされた任意のデバイスであってもよい。一般に、受信側デバイス130はロボットであり、ロボットが動作を実行するとき、それらの動作は、(例えば、人間の安全に対する、物体の破壊に対する、障害物によって潜在的に損傷するロボット自体に対する、操作している積荷を損傷させるロボットに対する、など)何らかの形態の危険を伴う。しかしながら、受信側デバイス130は、ロボットであることに限定されず、かつ、任意の他のデバイスであってもよい。例示的なデバイスには、フライス盤、コンベアベルト、クレーン、掘削機、トラクタ、収穫機、林業設備、原子力発電所 (又はそのサブコンポーネント)、石油精製所(又はそのサブコンポーネント)などの、人間又は他の損失に対する危険を低減するために危険行為の制御が必要とされるものを含み得る。本明細書で使用される場合、「ロボット」という用語は、デバイスコントローラによって制御される物理的な機械を有する任意のデバイスを参照し得る。
【0014】
[0024] ネットワーク120が無線通信チャネルである一実施形態では、ソースデバイス110と受信側デバイス130との間のメッセージにおける検出不可能なエラーの確率が閾値最大エラー値未満であることを保証するため、ソースデバイス110は、2つの安全マイクロプロセッサを有してもよく、各々が、安全情報を記述したデータペイロードの1つのコピーを送信する。コピーは、互いに反転されてもよいという点で異なってもよい。例えば、各安全マイクロプロセッサは、e-stopボタンの状態を記述するメッセージを周期的に(例えば、20ミリ秒ごとに)送信してもよい。2つのメッセージは、(例えば、コピーをスクランブルしている安全マイクロプロセッサに固有のソルト又はスクランブルコードを使用して)各々スクランブルされてもよい。2つのメッセージは、無線通信チャネルを介して(例えば、別々に又は一緒に)送信されてもよい。受信側デバイス130は、メッセージを受信し、当該メッセージをデスクランブルし、かつ、2つのメッセージが高度に相関している(例えば、100%相関している、又は閾値が0.1%である99.9%などの100%相関の閾値内にある)かどうかを判定する。メッセージが高度に相関している場合、受信側デバイス130は、安全状態情報が正しいと判定する。メッセージが高度に相関していない場合、受信側デバイス130は、安全状態情報が正しくないと判定し、かつそれに応じて受信側デバイス130の動作を修正する(例えば、ロボットを安全状態にする)。一実施形態では、受信側デバイス130は、同期のとれていない安全メッセージをソースマイクロコントローラが有することを可能にして、同期することを可能にするために時間閾値を実装してもよい(例えば、予想されるメッセージレートがメッセージあたり20ミリ秒である場合に、40~50ミリ秒などの2メッセージ周期)。時間閾値を超える時間にわたって安全メッセージが同期していないことを検出したことに応答して、受信側デバイス130は、安全状態情報が正しくないと判定し、障害を判定して安全状態に入ってもよい。
【0015】
[0025] 有利なことに、検出不可能なエラーが2つのメッセージ間の相関不良を引き起こすことを考慮すると、本実施形態において無線通信チャネルを介して2つのメッセージを送信することによって、検出不可能なエラーが存在しないこと又は十分に小さいことが保証される。しかしながら、2つのメッセージを送信することは帯域幅の効率が悪く、かつ、これらの非効率性により複雑なシステムへの拡張可能性が妨げられる。例えば、e-stop情報はバイナリであり、及びしたがって、2つのメッセージを送信することが技術的に実用的であるように小さな帯域幅を必要とする。しかしながら、数バイトの長さであり得るアナログ値が送信される場合、又は、キロバイトのデータを有するポイントフィールドなどのより複雑なものが頻繁に送信される場合、この情報の2つのコピーを送信するには、実用的でない量の帯域幅を消費する必要がある。これらの問題に対処するため、ソースデバイスから受信側デバイスへの安全メッセージの複数のコピーの送信を必要としないさらなる実施形態が
図2~
図11に関して以下に説明される。
【0016】
例示的なソースマイクロコントローラ及び受信側マイクロコントローラのアーキテクチャ
[0026]
図2は、ソースマイクロコントローラによって使用される例示的なモジュール及びデータベースの一実施形態を示している。
図2に示されるように、ソースマイクロコントローラ210は、信号入力モジュール221、パケット生成モジュール222、エラーコードモジュール223、状態検証モジュール224、パケット修正モジュール225、暗号化モジュール226、キーストレージ236及びエラーコードストレージ237を含む。
図2に示されるモジュール及びデータベースは単なる例示であり;本明細書で説明される機能を達成するためにより多くの又はより少ないデータベース及びモジュールが使用されてもよい。さらに、モジュール及びデータベースはソースマイクロコントローラ210の一部として説明されるが、これらのモジュール及び/又はデータベースは、ソースマイクロコントローラ210を収容するソースデバイス110内の他の場所でインスタンス化されてもよい。複数のソースマイクロコントローラ210が単一のソースデバイス110に実装されてもよい。マイクロコントローラという用語は限定的なものではない一方で、例示的な使用事例はマイクロコントローラであり、本明細書でマイクロコントローラという用語が使用される場合は常に、その代わりに任意のコントローラ又はプロセッサが使用されてもよい。
【0017】
[0027] 信号入力モジュール221は、ソースマイクロコントローラ210が収容されているソースデバイス110によって受信又は生成されたセンサデータに基づいて信号を受信する。例えば、ソースデバイス110に動作可能に結合されたe-stopボタンをユーザが押すと、その後、信号入力モジュール221は、e-stopボタンが押されたことを示す信号を検出する。e-stopの例の場合のように、信号はバイナリであってもよい。信号はアナログであってもよく(例えば、ソースデバイス110がリモートコントローラとして機能する受信側デバイス130のリモートコントローラの1以上のジョイスティックからの入力に基づいて信号が受信される場合)、かつ、多次元ポイントクラウド(例えば、LIDAR入力及び/若しくは他のカメラ又は分光データに基づく)を含んでもよい。
【0018】
[0028] パケット生成モジュール222は、ヘッダ、安全ペイロード(本明細書では単にペイロードと同じ意味で参照される)、及び1以上のエラーコードを含むデータパケットを生成する。異なる安全マイクロコントローラが、異なる方法でパケットを生成してもよい。パケット生成モジュール222がデータパケットを生成する方法の詳細は、
図4及び
図5を参照して以下に説明される。パケットヘッダ及びペイロードのコンテンツについての詳細は
図6~
図9に関して以下に説明される。
【0019】
[0029] エラーコードモジュール223はエラーコード(本明細書では「エラー検出コード」と同じ意味で使用される)を生成する。一実施形態では、エラーコードはCRC値である。エラーコードモジュール223は、ペイロードに基づいてCRC値を生成する。CRC値はさらに、ペイロードに付加されるソースマイクロコントローラ210に固有のキーの長さに基づいていてもよい。CRC値を使用する代わりに、チェックサムアルゴリズム(例えば、簡単な計算、フレッチャーのサム、XORアルゴリズムなど)、ハッシュ関数、暗号化ハッシュ(例えば、MD5、HMAC、SHAなど)などを含む任意の他のタイプのチェックシーケンスが使用されてもよい。どのソースマイクロコントローラが使用されているかに応じて、エラーコードが導出される方法についてのさらなる詳細が
図4及び
図5に関して以下に説明される。
【0020】
[0030] 一実施形態では、データパケットがソースデバイス110から受信側デバイス130に送信される前に、2つの異なるソースマイクロコントローラ210がデータパケットを操作する。まず、最初のソースマイクロコントローラ210が、ペイロード及びエラーコードを有するパケットを生成し、及びその後、第2ソースマイクロコントローラ210が、パケットを受信し、かつ、それ自身のエラーコードをパケットに追加する。このプロセスは、
図4及び
図5に関して以下にさらに詳細に説明される。状態検証モジュール224は、本実施形態では、それ自身のエラーコードをパケットに付加する前に状態を検証するために、第2ソースマイクロコントローラ210によって使用される。
【0021】
[0031] 第2ソースマイクロコントローラ210が第1ソースマイクロコントローラ210からパケットを受信すると、状態検証モジュール224は、ペイロード内の安全状態情報を調べて、第1ソースマイクロコントローラ210の安全状態を判定する。第2ソースマイクロコントローラ210は、その安全状態情報をそれ自身の安全状態情報と比較して、一致があるかどうかを判定する。一致しない場合、第2状態検証モジュール224は、第2ソースマイクロコントローラ210が第1ソースマイクロコントローラ210と同期していないと判定する。一実施形態では、第2ソースマイクロコントローラ210が第1ソースマイクロコントローラ210と同期していないと判定したことに応答して、第2ソースマイクロコントローラ210、ソースマイクロコントローラ210は、受信側デバイス130を障害状態に入らせるメッセージを送信する。別の実施形態では、第2ソースコントローラ210が第1ソースマイクロコントローラ210と同期していないと判定したことに応答して、第2ソースマイクロコントローラ210は、2つのソースマイクロコントローラが一定期間にわたって同期するまで、受信側デバイス130に送信するためのパケットを生成するのを待機する。図示する例として、e-stopボタンが押されると、第1及び第2ソースマイクロコントローラの両方が、それらの安全状態情報を更新してe-stopボタンが実際に押されたことを示す信号を受信する。しかしながら、2つのマイクロコントローラのうちの1つだけが信号を受信して、それに応じてそれらの安全状態情報を更新したので、レイテンシによって2つの状態が同期しなくなる時間の長さ(ミリ秒など)があり得る。正確な安全状態情報が受信側デバイス130に下流に渡されることを保証するため、状態検証モジュール224は、安全メッセージを受信側デバイス130に送信する前に、2つのソースマイクロコントローラが同期していることを保証する。一実施形態では、2つのマイクロコントローラの安全状態の間のいくらかの不一致が、タイミング及びノイズの相違を考慮して許容され(例えば、予め規定された相違の閾値又はウィンドウを下回る)、それによって、条件付きの不一致にも拘わらず一致が判定される。時間間隔の後、ソースマイクロコントローラが同期していないままであると判定された場合、ソースマイクロコントローラ210は、受信側デバイス130を故障状態に入らせるメッセージを送信する。
【0022】
[0032] パケット修正モジュール225は第2ソースマイクロコントローラによって実行される。パケット修正モジュール225は、第1ソースマイクロコントローラから受信されたデータパケットを修正することによって、第2ソースマイクロコントローラが安全メッセージを生成することを可能にする。パケット修正モジュール225についてのさらなる詳細は
図5に関して以下で詳細に説明される。
【0023】
[0033] 暗号化モジュール226は、任意選択的に、送信前に安全メッセージを暗号化する。暗号化は、各ソースマイクロコントローラのユニークキーを使用して通常実行される単純なスクランブリングよりも高いレベルのセキュリティを提供する。一実施形態では、暗号化モジュール226は、ペイロードにエラーコードを付加する前に、パケットのペイロードを暗号化する。そのような一実施形態では、エラーコードモジュール223は、スクランブルされた又は裸のペイロードではなく、暗号化されたペイロードにエラーコードを付加する。
【0024】
[0034] キーストレージ236は、ソースマイクロコントローラ210に固有の1以上のキーを格納する。キーは、ペイロードを送信する前にペイロードをスクランブルするためにパケット生成モジュール222によって使用される。エラーコードストレージ237は、後で使用するためにエラーコードを格納する。例えば、第2マイクロコントローラは、第2マイクロコントローラが修正しようとしているパケットからエラーコードを取り除き(strip)、かつ、取り除かれたエラーコードをエラーコードストレージ237に格納してもよい。いくつかの修正を実行した後、第2マイクロコントローラは、取り除かれたエラーコードをエラーコードストレージ237から回収し、かつ、修正されたデータパケットにそれを再び付加する。
【0025】
[0035] ソースマイクロコントローラ210は、受信側デバイス130にデータパケットを直接送信してもよく、又は、ソースデバイス110の別のプロセッサにデータパケットを送信してもよく、ソースデバイス110が今度は受信側デバイス130にデータパケットを送信する。
【0026】
[0036]
図3は、受信側マイクロコントローラによって使用される例示的なモジュール及びデータベースの一実施形態を示している。
図3に示されるように、受信側マイクロコントローラ310は、ペイロード抽出モジュール341、キーモジュール342、エラーコード検証モジュール343、デコーダモジュール344、予めプログラムされたキーストレージ356及びエラーコードストレージ357を含む。
図3に示されるモジュール及びデータベースは単なる例示であり;本明細書で説明される機能を達成するためにより多くの又はより少ないデータベース及びモジュールが使用されてもよい。さらに、モジュール及びデータベースが受信側マイクロコントローラ310の一部として説明されているが、これらのモジュール及び/又はデータベースは、受信側マイクロコントローラ310を収容する受信側デバイス130内の他の場所でインスタンス化されてもよい。複数の受信側マイクロコントローラ310が単一の受信側デバイス310内に実装されてもよい。マイクロコントローラという用語は限定的なものではない一方で、例示的な使用事例はマイクロコントローラであるが、本明細書でマイクロコントローラという用語が使用されている場合は常に、その代わりに任意のコントローラ又はプロセッサが使用されてもよい。
【0027】
[0037] ペイロード抽出モジュール341は、受信されたパケットからペイロードを抽出する。ペイロードは、スクランブルされる、暗号化される又はその両方である。ペイロード抽出341は、付加されたエラーコードをペイロードから除去し、かつ、エラーコードストレージ357にそれを格納することによって、ペイロードを抽出してもよい。キーモジュール342は、予めプログラムされたキーストレージ356から、第1ソースマイクロコントローラ、第2ソースマイクロコントローラのうちの1以上又は両方に対応する1以上の予めプログラムされたキーを回収する。キーモジュール342は、回収されたキーを適用して、スクランブルされたペイロードを復号化する。エラーコード検証モジュール343は、デスクランブルされたペイロードのエラーコードを生成し、それを、エラーコードストレージ357に格納された付加されたエラーコードと比較する。エラーコード検証モジュール343は、生成されたエラーコードが、付加されたエラーコードに一致するとの判定に応答して安全メッセージが有効であると判定する。エラーコード検証モジュール343は、生成されたエラーコードが、付加されたエラーコードに一致しないとの判定に応答して安全メッセージが無効であると判定する。キーはソースマイクロコントローラに固有であるので、エラーコードは、ソースマイクロコントローラに固有であり、したがって、本質的に、本方法で検証可能なソースマイクロコントローラの署名として機能する。
【0028】
[0038] 安全メッセージが無効であるとの判定に応答して、一実施形態では、受信側マイクロコントローラ310は、受信側デバイス130に安全モードに入るように命令してもよい。安全メッセージが有効であるとの判定に応答して、受信側マイクロコントローラ310は、安全メッセージから、受信側デバイス130の動作モードの修正が安全メッセージに対応するかどうかを判定してもよく、かつ、それに応じて受信側デバイス130の動作モードを変更してもよい。
【0029】
安全メッセージを生成するための例示的なデータフロー
[0039]
図4は、第1ソースマイクロコントローラから安全パケットを生成するためのデータフローの一実施形態を示している。
図4は、本明細書ではSMCU0(ソースマイクロコントローラユニット0)とも呼ばれるソースマイクロコントローラ400のアクティビティを示している。ソースマイクロコントローラ400は、トリガの検出に応答してデータパケット(安全メッセージとも呼ばれる)を生成する。例示的なトリガには、センサ情報(例えば、e-stopボタンが押されたこと)、及び、安全メッセージが周期的に送信される周期的(又は非周期的)時間間隔の経過の検出が含まれる。トリガが検出されると、ソースマイクロコントローラ400は、(例えば、パケット生成モジュール222を使用して)安全情報を安全ペイロード411にパッケージ化する。
【0030】
[0040] ソースマイクロコントローラ400は安全ペイロード411にキー412を付加する。その後、ソースマイクロコントローラ400は、パケット410の構造に基づいて、(例えば、エラーコードモジュール223を使用して)安全ペイロード411及びキー412の両方を有するエラーコードを生成する。エラーコードを生成した後、ソースマイクロコントローラ400は、パケットからキー412を除去し、かつ、エラーコード422を安全ペイロード411に追加し、したがって、データパケット420を生じさせる。
図5を参照する議論するように、ソースマイクロコントローラは、その後、さらなる修正のためにソースマイクロコントローラ500にデータパケット420を送信する。
【0031】
[0041]
図5は、第1ソースマイクロコントローラから受信されたパケットに基づいて第2ソースマイクロコントローラから安全パケットを生成するためのデータフローの一実施形態を示している。ソースマイクロコントローラ500(本明細書ではSMCU1とも参照される)は、ソースマイクロコントローラ400からデータパケット420を受信する。データパケット420の受信に応答して、ソースマイクロコントローラ500は、安全ペイロード411に示される安全状態を判定し、かつ、その状態をそれ自身の安全状態(例えば、状態検証モジュール224を使用する)を検証する520。ソースマイクロコントローラ500は、安全ペイロード411からエラーコード422を除去してその自身のキー512を付加することによって、データパケット420をデータパケット530に修正する。これにより、ソースマイクロコントローラ500が、ソースマイクロコントローラ400からのエラーコードの影響を受けないエラーコード543を生成することを可能にする。その後、ソースマイクロコントローラ500は、データパケット530からキー512を除去し、エラーコード422を安全ペイロード411に再度付加し、かつ、エラーコード543をデータパケットに付加することによって、データパケット540を生成する。図示するように、エラーコード422が最初に付加され、エラーコード543が2番目に付加される。これは非限定的であり、エラーコードは任意のエラーに付加されてもよい。既定の順序でエラーコードを付加することは、安全メッセージを復号化するときにどのエラーコードと比較すべきかを受信プロセッサが確実に知ることができるという点で有利であり得、したがって、正しいエラーコードと比較する前に適用不可能なエラーコードと比較する際の処理能力の浪費を防止し得る。
【0032】
[0042]
図4及び
図5は、エラーコードが表される用語「CRC」を使用する。これは単なる例示であり、かつ、理解を助けるためのものである;表される場合には常に、CRC値の代わりに任意のエラーコードが使用されてもよい。2つのソースマイクロコントローラの使用は単なる例示である;次のソースマイクロコントローラがそれ自身のキーを使用してエラーコード値を計算するために前のマイクロコントローラからエラーコード値を除去し、及びその後、前のマイクロコントローラからのエラーコード値を再度付加する、任意の数のソースマイクロコントローラで
図5のプロセスが繰り返されてもよい。
【0033】
[0043]
図4~
図5に示されるデータフローは、システムが、ソースデバイス110から受信側デバイス110に2つのメッセージを送信する必要なく、検出不可能なエラーを閾値(例えば、規制閾値)未満に保つことを可能にする。具体的には、少なくとも2つのメッセージ(各ソースマイクロコントローラから1つ)を使用して、それぞれ自身のエラー検出メカニズム(例えば、CRC)を有する各々が、冗長性(データはソースデバイス110内で2回送信される)と多様性(データは、ソースがソースマイクロコントローラである少なくとも2つの独立したソースから来る)との両方を提供する。ソースデバイス110内部の各安全メッセージの適切なエラー検出と冗長性とを組み合わせることで、これらのエラーの原因となるランダムノイズが両方のメッセージで同じパターンで繰り返される可能性が非常に低いので、メッセージ内の検出不可能なエラーの可能性を大幅に減少させる。受信側デバイス130にネットワーク120を介して2つのメッセージを送信する際に必要な帯域幅が2倍になるというペナルティは、各ソースマイクロコントローラのために固有の署名を使用することによって回避され、そのことが、各プロセッサについて結果として生じるエラーチェックコードを固有にし、したがって、同じデータ(及び各プロセッサ固有の署名)上で2つの固有のチェックを可能にする。
【0034】
[0044]
図6は、安全パケットの表現の一実施形態を示している。本明細書で使用される安全パケットという用語は、安全情報を含む任意のパケット(例えば、
図2~
図5のモジュール及びデータフローを使用して生成されるパケット)を参照し得る。ある変形例では、安全メッセージ(例えば、600)は、ソースデバイス110の所定のソースマイクロコントローラに結合された1以上の入力デバイスの安全クリティカル状態(安全状態)を識別する。ある変形例では、ソースマイクロコントローラは安全メッセージ600を生成する。安全メッセージは、安全メッセージヘッダ610及び安全情報620を含んでもよい。安全メッセージヘッダ610及び安全情報620の内容は
図7~
図9においてさらに詳細に説明される。安全メッセージという用語は、安全情報を有する安全パケットの任意のペイロードを参照し得る。
【0035】
[0045]
図7は、安全パケットのペイロードの一実施形態を示しており、
図8は、安全パケットのペイロードの第2実施形態を示している。具体的には、
図7は、安全メッセージのペイロード内にあり得る安全パケット内の安全情報を示している。第1変形例では、各安全プロセッサ(例えば、400、500)は、安全メッセージ600のそれぞれの部分(例えば、
図7に示されるメッセージ部分711及び712)を生成する。安全メッセージを生成する第1変形例では、各安全プロセッサは、安全メッセージ(例えば、S210で安全プロセッサによって生成された安全状態を識別するデータ)のその部分(例えば、
図5Bに示される711、712)をソースデバイス110のプロセッサに独立して渡し、当該プロセッサは、その部分を、受信側デバイス130に送信される単一のメッセージに結合する。
【0036】
[0046] ある実装では、それぞれの安全プロセッサ(例えば、ソースマイクロコントローラ)によって生成された安全メッセージの各メッセージ部分(例えば、711、712)について、新しいシーケンス番号(例えば、安全シーケンス)がメッセージ部分に対して生成され、安全プロセッサの生成(又は更新)された安全状態(例えば、e-stop状態)(少なくとも1つの安全入力デバイス用)がメッセージ部分に追加され、かつ、エラー検出コードが生成される。エラー検出コードは、CRC(巡回冗長検査)であり得る。一例では、エラー検出コードは、シーケンス番号及び安全状態のCRCである。一例では、CRCは8ビットCRCである。しかしながら、任意の適切なタイプのエラー検出コードが使用されてもよい。一例では、メッセージ部分は、シーケンス番号、安全状態及びエラー検出コードのうちの少なくとも1つを含む。一例では、メッセージ部分は、安全ペイロード及びエラー検出コードを含み、かつ、安全ペイロードは、シーケンス番号(安全シーケンス)及び安全状態(例えば、ローカルEstop状態、入力状態など)を含む。一例では、メッセージ部分は、関連の安全入力装置(例えば、131)に関連付けられたセキュリティキーを使用することによってスクランブル(例えば、暗号化)され、かつ、セキュリティキーは、安全プロセッサ(例えば、111)と、安全メッセージ(例えば、500)を使用するデバイス(例えば、120)に含まれる安全プロセッサ(例えば、121)とに既知である。ある実装では、各メッセージ部分(例えば、511、512)は2バイトである。ある実装では、各メッセージ部分は3バイトである。しかしながら、各メッセージ部分は適切なサイズを有し得る。
【0037】
[0047]
図8に示されている第2変形例では、安全マイクロコントローラによって生成された安全メッセージ800の単一の安全ペイロード(例えば、
図8に示される810)が存在してもよく、かつ、1以上の安全マイクロコントローラが、(例えば、それぞれのエラー検出コードを生成することによって)生成された安全ペイロードを検証する。検証された安全ペイロード(例えば、
図8に示される810)は受信側デバイス130への出力のために送信され得る。ある実装では、安全プロセッサは、単一の安全情報が処理されるまで、安全情報(例えば、
図5Cに示される800)をソースデバイス110のプロセッサに連続的に渡す。ある実装では、この単一の安全情報(例えば、800)は、安全ペイロード(例えば、810)の1つのコピーを含む。安全ペイロードは、S220で生成された安全状態を識別する。安全ペイロードに加えて、単一の安全情報(例えば、810)には、ユニークキーコードを使用して各安全マイクロコントローラによって生成されたエラー検出データ(例えば、821、822)が含まれる。ある実装では、安全ペイロード(例えば、810)は、1以上の安全上クリティカル入力に関連する様々な情報を含む。ある実装では、安全ペイロードは、(安全メッセージのフォーマット及び長さを特定する)フレームタイプ;シーケンス番号(例えば、安全メッセージの順序を識別する単調に増加する番号);及び、ソース識別子(例えば、関連の安全入力デバイスの一意の識別子)のうちの少なくとも1つを識別する。ある実装では、シーケンス番号が使用されて、繰り返される、順序が正しくない及び遅延したメッセージを検出することができる。ある実装では、安全ペイロードは、バイナリ安全入力状態(例えば、緊急停止ボタン、対応/3状態スイッチ、安全対応押しボタンなど);アナログ安全状態(例えば、安全対応ジョイスティック値、安全センサ値など);コントローラ状態(例えば、アクティブフォールト、クリティカルイベントなど);及びログエントリ(例えば、非常にセキュアな及び/又は安全クリティカルイベントログ情報)のうちの少なくとも1つを識別する。しかしながら、安全ペイロードは任意の適切な種類の情報を識別することができる。
【0038】
[0048]
図9は、安全メッセージヘッダ内の情報の一実施形態を示している。一例では、安全メッセージ600は安全メッセージヘッダ(例えば、900)を含む。一例では、ヘッダ900は、安全メッセージ600のエラー検出コードを含む。一例では、ヘッダ(例えば、900)は、パケットマーカの開始;安全メッセージの長さ;安全メッセージのエラー検出コード;(例えば、安全入力デバイスを識別する)ソースアドレス;opcode;及び、安全メッセージ600のシーケンス番号のうちの少なくとも1つを含む。しかしながら、ヘッダは任意の適切な情報を含み得る。一例では、各安全メッセージ(例えば、500)は14バイトである。しかしながら、各安全メッセージは任意の適切なサイズを有し得る。
【0039】
コンピューティングマシンアーキテクチャ
[0049] 図(図形)10は、マシン可読媒体から命令を読み取り、かつ、当該命令をプロセッサ(又はコントローラ)で実行することができる例示的なマシンのコンポーネントを図示するブロック図である。具体的には、
図10は、コンピュータシステム1000の例示的な形態でのマシンの図式の表現を示しており、その中で、マシンに本明細書で議論される方法論のうちの任意の1以上を実行させるためのプログラムコード(例えば、ソフトウェア)が実行されてもよい。プログラムコードは、1以上のプロセッサ1002によって実行可能な命令1024から構成されてもよい。代替の実施形態では、マシンは、スタンドアロンデバイスとして動作する、又は、他のマシンに接続(例えば、ネットワークで接続)されてもよい。ネットワーク接続された展開では、マシンは、サーバ-クライアントネットワーク環境でサーバマシン又はクライアントマシンの能力で動作してもよい、若しくは、ピアツーピア(又は分散)ネットワーク環境でピアマシンとして動作してもよい。
【0040】
[0050] マシンは、サーバコンピュータ、クライアントコンピュータ、パーソナルコンピュータ(PC)、タブレットPC、セットトップボックス(STB)、携帯情報端末(PDA)、携帯電話、スマートフォン、Webアプライアンス、ネットワークルータ、スイッチ又はブリッジ、ロボティクス及びその他のマシン(固定又はモバイル)用のコントローラ、若しくは、そのマシンによって実行されるアクションを特定する命令1024(シーケンシャル又はその他)を実行可能な任意のマシンであってもよい。さらに、単一のマシンのみが図示されている一方で、「マシン」という用語は、命令124を個別に又は共同で実行して、本明細書で議論された方法論のいずれか1以上を実行するマシンの任意の集合も含むと解釈される。
【0041】
[0051] 例示的なコンピュータシステム1000は、プロセッサ1002(例えば、中央演算処理装置(CPU)、グラフィック処理装置(GPU)、デジタル信号プロセッサ(DSP)、1以上の特定用途向け集積回路(ASIC)、1以上の無線周波数集積回路(RFIC)又はこれらの任意の組み合わせ)、メインメモリ1004及びスタティックメモリ1006を含み、これらは、バス1008を介して互いに通信するように構成される。コンピュータシステム1000は、視覚ディスプレイインタフェースをさらに含んでもよい。視覚インタフェースは、画面(又はディスプレイ)上にユーザインタフェースを表示することを可能にするソフトウェアドライバを含んでもよい。視覚インタフェースは、ユーザインタフェースを、直接的(例えば、画面上に)又は間接的に(例えば、視覚投影ユニットを介して)表面、窓などに表示してもよい。議論を簡単にするために、視覚インタフェースは画面として表現されてもよい。視覚インタフェース1010は、タッチ対応画面を含んでもよい、又は、タッチ対応画面とインタフェースしてもよい。コンピュータシステム1000はまた、英数字入力デバイス1012(例えば、キーボード又はタッチスクリーンキーボード)、カーソル制御デバイス1014(例えば、マウス、トラックボール、ジョイスティック、モーションセンサ又は他のポインティング機器)、ストレージユニット1016、信号生成デバイス1018(例えば、スピーカ)、及びネットワークインタフェースデバイス1020であってもよく、これらもバス1008を介して通信するように構成される。
【0042】
[0052] ストレージユニット1016は、本明細書で説明された方法論又は機能のうちのいずれか1以上を具現化する格納された命令1024(例えば、ソフトウェア)であるマシン可読媒体1022を含む。命令1024(例えば、ソフトウェア)はまた、コンピュータシステム1000、メインメモリ1004及びマシン可読媒体を構成するプロセッサ1002による実行中、メインメモリ1004内又はプロセッサ1002内(例えば、プロセッサのキャッシュメモリ内)に、完全に又は少なくとも部分的に存在してもよい。命令1024(例えば、ソフトウェア)は、ネットワークインタフェースデバイス1020を介してネットワーク1026上で送信又は受信されてもよい。
【0043】
[0053] マシン可読媒体1022は、例示的な実施形態では、単一の媒体であるものとして示されているが、「マシン可読媒体」という用語は、命令(例えば、命令1024)を格納することができる単一の媒体又は複数の媒体(例えば、集中型又は分散型データベース、若しくは、関連するキャッシュ及びサーバ)を含むものと解釈される。「マシン可読媒体」という用語はまた、マシンによる実行のために命令(例えば、命令1024)を格納することができ、かつ、マシンに本明細書に開示される方法論のうちの任意の1以上を実行させる任意の媒体を含むものと解釈される。「マシン可読媒体」という用語は、ソリッドステートメモリ、光学媒体及び磁気媒体の形態のデータリポジトリを含むが、これらに限定されない。
【0044】
例示的な安全メッセージプロセス
[0054]
図11は、安全メッセージを生成及び確認するための例示的なプロセスの一実施形態を示している。プロセス100の要素は、プロセッサ(例えば、ソースデバイス110の1以上のソースマイクロコントローラ210の1以上のモジュールを実行するプロセッサ1002)によって実行されてもよい。プロセス1100は、ペイロード(例えば、安全ペイロード411)及び第1エラーコード(例えば、エラーコード422)を含む第1データパケット(例えば、データパケット420)を(例えば、パケット生成モジュール222を使用して)生成1110する第1ソースマイクロコントローラ(例えば、ソースマイクロコントローラ400)を用いて開始し、ペイロードは、(例えば、安全情報711及び/又は安全情報800に示されるような)ロボットの安全状態を示している。第1ソースマイクロコントローラ1120は、第1ソースマイクロコントローラから第2ソースマイクロコントローラ(例えば、ソースマイクロコントローラ500)にデータパケットを送信1120する。
【0045】
[0055] 第2ソースマイクロコントローラ1130は、ペイロード、第1エラーコード及び第2エラーコード(例えばエラーコード543)を含む第2データパケット(例えば、データパケット540)を生成1130する。第2ソースマイクロコントローラは、第2データパケットを、通信チャネル(例えば、無線であり得るネットワーク120)を介して受信側マイクロコントローラ(例えば、受信側デバイス130の受信側マイクロコントローラ310)に送信し、受信側マイクロコントローラは、第1エラーコード及び第2エラーコードのうちの少なくとも1つに基づいてペイロードを回復する。
【0046】
追加の構成に関する留意事項
[0056] 本明細書全体を通じて、複数の実例が、単一の実例として記載されたコンポーネント、動作又は構造を実装してもよい。1以上の方法の個々の動作が別個の動作として例示されて説明されるが、個々の動作の1以上が同時に実行されてもよく、かつ、動作が、例示された順序で実行される必要はない。例示的な構成で別個のコンポーネントとして提示された構造及び機能は、組み合わされた構造又はコンポーネントとして実装されてもよい。同様に、単一のコンポーネントとして提示された構造及び機能は、別個のコンポーネントとして実装されてもよい。これら及び他の変形、修正、追加及び改良が本明細書の主題の範囲内にある。
【0047】
[0057] 特定の実施形態が、本明細書では、論理又は多数のコンポーネント、モジュール又は機構を含むものとして説明される。モジュールは、ソフトウェアモジュール(例えば、マシン可読媒体上又は伝送信号内に具現化されたコード)又はハードウェアモジュールのいずれかを構成してもよい。ハードウェアモジュールは、特定の動作を実行可能な有形のユニットであり、かつ、特定の方法で構成又は配置されてもよい。例示的な実施形態では、1以上のコンピュータシステム(例えば、スタンドアロン、クライアント又はサーバコンピュータシステム)若しくはコンピュータシステムの1以上のハードウェアモジュール(例えば、プロセッサ又はプロセッサ群)が、本明細書で説明される特定の動作を実行するように動作するハードウェアモジュールとしてソフトウェア(例えば、アプリケーション又はアプリケーション部分)によって構成されてもよい。
【0048】
[0058] 様々な実施形態において、ハードウェアモジュールは機械的又は電子的に実装されてもよい。例えば、ハードウェアモジュールは、特定の動作を実行するために(例えば、フィールドプログラマブルゲートアレイ(FPGA)又は特定用途向け集積回路(ASIC)などの専用プロセッサとして)永続的に構成された専用回路又は論理回路を備えてもよい。ハードウェアモジュールは、特定の動作を実行するためにソフトウェアによって一時的に構成されたプログラマブル論理又は回路(例えば、汎用プロセッサ又は他のプログラマブルプロセッサ内に含まれる)を備えてもよい。専用の永続的に構成された回路で又は一時的に構成された回路(例えば、ソフトウェアによって構成された)で機械的にハードウェアモジュールを実装するための決定は、コスト及び時間の検討によってなされてもよいことを理解されたい。
【0049】
[0059] したがって、「ハードウェアモジュール」という用語は、特定の方法で動作するように又は本明細書に記載された特定の動作を実行するように、物理的に構成された、永続的に構成された(例えば、配線で接続された)又は一時的に構成された(例えば、プログラムされた)存在である有体物を含むものと理解されるべきである。本明細書で使用される場合、「ハードウェア実装モジュール」はハードウェアモジュールを参照している。ハードウェアモジュールが一時的に構成される(例えば、プログラムされる)実施形態を考慮すると、ハードウェアモジュールの各々は、任意の時点で構成又はインスタンス化される必要はない。例えば、ハードウェアモジュールがソフトウェアを使用して構成された汎用プロセッサを備える場合、汎用プロセッサは、異なる時点でそれぞれ異なるハードウェアモジュールとして構成されてもよい。したがって、ソフトウェアは、例えば、ある時点で特定のハードウェアモジュールを構成し、かつ、異なる時点で異なるハードウェアモジュールを構成するようにプロセッサを構成してもよい。
【0050】
[0060] ハードウェアモジュールは、他のハードウェアモジュールに情報を提供し、かつ、他のハードウェアモジュールから情報を受信することができる。したがって、説明されたハードウェアモジュールは、通信可能に結合されているとみなされてもよい。複数のそのようなハードウェアモジュールが同時に存在する場合、通信は、(例えば、適切な回路及びバスを介して)ハードウェアモジュールを接続する信号伝送を通じて達成されてもよい。複数のハードウェアモジュールが異なる時間に構成又はインスタンス化される実施形態では、そのようなハードウェアモジュール間の通信は、例えば、複数のハードウェアモジュールがアクセスするメモリ構造内の情報の格納及び検索を通じて達成されてもよい。例えば、1つのハードウェアモジュールが、動作を実行し、かつ、その動作の出力を、通信可能に結合されたメモリデバイスに格納してもよい。その後、さらなるハードウェアモジュールが、後でメモリデバイスにアクセスして、格納された出力を検索して処理してもよい。ハードウェアモジュールは、入力デバイス又は出力デバイスとの通信を開始してもよく、かつ、リソース上で動作することもできる(例えば、情報収集)。
【0051】
[0061] 本明細書に記載される例示的な方法の様々な動作は、少なくとも部分的に、関連の動作を実行するように一時的に構成された(例えば、ソフトウェアによって)又は永続的に構成された1以上のプロセッサによって実行されてもよい。一時的又は永続的に構成されているかどうかにかかわらず、そのようなプロセッサは、1以上の動作又は機能を実行するように動作するプロセッサ実装モジュールを構成してもよい。本明細書で言及されるモジュールは、ある例示的な実施形態では、プロセッサ実装モジュールを備えてもよい。
【0052】
[0062] 同様に、本明細書に記載の方法は、少なくとも部分的にプロセッサ実装されてもよい。例えば、方法の動作の少なくとも一部は、1以上のプロセッサ又はプロセッサ実装ハードウェアモジュールによって実行されてもよい。特定の動作のパフォーマンスは、単一のマシン内に存在するだけでなく、複数のマシンに展開される1以上のプロセッサ間で分散されてもよい。ある例示的な実施形態では、1以上のプロセッサが単一の場所に(例えば、家庭環境、オフィス環境内に又はサーバファームとして)配置されてもよい一方で、他の実施形態では、プロセッサはいくつかの場所に分散されてもよい。
【0053】
[0063] 1以上のプロセッサは、「クラウドコンピューティング」環境で又は「サービスとしてのソフトウェア」(SaaS)として、関連の動作のパフォーマンスをサポートするように動作してもよい。例えば、動作の少なくとも一部は、一群のコンピュータ(プロセッサを含むマシンの例として)によって実行されてもよく、これらの動作は、ネットワーク(例えば、インターネット)及び1以上の適切なインタフェース(例えば、アプリケーションプログラムインタフェース(API))を介してアクセス可能である。
【0054】
[0064] 特定の動作のパフォーマンスは、単一のマシン内に存在するだけでなく、複数のマシンに展開される1以上のプロセッサ間で分散されてもよい。ある例示的な実施形態では、1以上のプロセッサ又はプロセッサ実装モジュールは、単一の地理的位置(例えば、家庭環境、オフィス環境又はサーバファーム内)に配置されてもよい。他の例示的な実施形態では、1以上のプロセッサ又はプロセッサ実装モジュールは、いくつかの地理的位置にわたって分散されてもよい。
【0055】
[0065] 本明細書の一部は、マシンメモリ(例えば、コンピュータメモリ)内にビット又はバイナリデジタル信号として格納されたデータに対する演算のアルゴリズム又は記号表現に関して提示される。これらのアルゴリズム又は記号表現は、データ処理技術の当業者が自身の仕事の内容を他の当業者に伝達するために使用する技法の例である。本明細書で使用される場合、「アルゴリズム」は、所望の結果につながる演算又は同様の処理の一貫したシーケンスである。これに関連して、アルゴリズム及び演算には物理量の物理的な操作が包含される。必ずというわけではないが、典型的には、そのような量は、マシンによって格納、アクセス、送信、結合、比較又はその他の方法で操作されることができる電気、磁気又は光信号の形態をとってもよい。「データ」、「コンテンツ」、「ビット」、「値」、「要素」、「記号」、「文字」、「用語」、「数」、「数字」などの用語を使用して、主に一般的な使用法のために、このような信号を参照することが便利な場合がある。ただし、これらの用語は単に便利なラベルにすぎず、かつ、適切な物理量に関連付けられるべきである。
【0056】
[0066] 特に別途明記しない限り、「処理する」、「演算する」、「計算する」、「判定する」、「提示する」、「表示する」などの用語を使用する本明細書の議論は、1以上のメモリ(例えば、揮発性メモリ、不揮発性メモリ又はそれらの組み合わせなど)、レジスタ又は情報を受信、格納、送信又は表示する他のマシンコンポーネント内の物理的(例えば、電子、磁気又は光学)量として表されるデータを操作又は変換するマシン(例えば、コンピュータ)のアクション又は処理を参照してもよい。
【0057】
[0067] 本明細書で使用される場合、「1つの実施形態」又は「一実施形態」への参照は、その実施形態に関連して説明される特定の要素、特徴、構造又は特性が少なくとも1つの実施形態に含まれることを意味している。本明細書の様々な箇所に現れる「一実施形態において」という語句は、必ずしもすべてが同じ実施形態を参照しているとは限らない。
【0058】
[0068] ある実施形態は、「結合された」及び「接続された」という表現をそれらの派生語とともに使用して説明されてもよい。これらの用語は、互いに同義語として意図されていないことを理解されたい。例えば、ある実施形態は、「接続された」という用語を使用して、2以上の要素が互いに直接物理的又は電気的に接触していることを示すために説明されてもよい。別の例では、ある実施形態は、「結合された」という用語を使用して、2以上の要素が直接物理的又は電気的に接触していることを示すために説明されてもよい。しかしながら、「結合された」という用語は、2以上の要素が互いに直接接触していないが、それでもなお互いに協働又は相互作用することを意味してもよい。実施形態はこの文脈に限定されない。
【0059】
[0069] 本明細書で使用される場合、用語「備える」、「備えている」、「含む」、「含んでいる」、「有する」、「有している」又はそれらの他の変形は、非排他的な包含をカバーすることを意図している。例えば、要素のリストを含むプロセス、方法、物品又は装置は、必ずしもそれらの要素のみに限定されるわけではないが、明示的に列挙されていない又はそのようなプロセス、方法、物品又は装置に固有の他の要素を含んでもよい。さらに、反対のことが明確に述べられていない限り、「又は」は排他的な又はではなく包括的な又はを参照している。例えば、条件A又はBは:Aが真である(又は存在する)かつBが偽である(又は存在しない)、Aが偽である(又は存在しない)かつBが真である(又は存在する)、並びに、A及びBの両方が真である(又は存在する)のうちのいずれか1つによって満たされる。
【0060】
[0070] さらに、「a」又は「an」の使用は、本明細書の実施形態の要素及びコンポーネントを説明するために採用される。これは、単に便宜上、及び、本発明の一般的な意味を与えるために行われる。この説明は、1つ又は少なくとも1つを含むように読まれるべきであり、かつ、別の意味であることが明らかでない限り、単数形は複数形も含む。
【0061】
[0071] 本開示を読むと、当業者は、本明細書で開示の原理を通じてソースデバイスから受信側デバイスに安全情報を効率的に送信するためのシステム及びプロセスのためのさらに追加の代替構造及び機能設計を理解するであろう。したがって、特定の実施形態及び用途が例示及び説明されたが、開示された実施形態が、本明細書に開示された正確な構造及びコンポーネントに限定されないことを理解されたい。当業者には明らかな様々な修正、変更及び変形が、添付の特許請求の範囲で定義された精神及び範囲から逸脱することなく、本明細書に開示された方法及び装置の構成、動作及び詳細においてなされてもよい。