(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024082089
(43)【公開日】2024-06-19
(54)【発明の名称】制御装置およびロボットシステム
(51)【国際特許分類】
G06F 9/445 20180101AFI20240612BHJP
B25J 9/06 20060101ALI20240612BHJP
G05B 19/414 20060101ALI20240612BHJP
G06F 21/57 20130101ALI20240612BHJP
【FI】
G06F9/445
B25J9/06 B
G05B19/414 P
G06F21/57 350
【審査請求】未請求
【請求項の数】6
【出願形態】OL
(21)【出願番号】P 2022195806
(22)【出願日】2022-12-07
(71)【出願人】
【識別番号】000002369
【氏名又は名称】セイコーエプソン株式会社
(74)【代理人】
【識別番号】100091292
【弁理士】
【氏名又は名称】増田 達哉
(74)【代理人】
【識別番号】100173428
【弁理士】
【氏名又は名称】藤谷 泰之
(74)【代理人】
【識別番号】100091627
【弁理士】
【氏名又は名称】朝比 一夫
(72)【発明者】
【氏名】小笠原 直樹
【テーマコード(参考)】
3C269
3C707
5B376
【Fターム(参考)】
3C269AB33
3C269BB05
3C269CC09
3C269EF81
3C269MN07
3C269QB01
3C707BS12
5B376AE21
5B376AE49
5B376EA21
5B376FA11
5B376GA13
(57)【要約】
【課題】複数の基板で構成される装置を外部から読み込んだプログラムで起動するとき、短時間で起動可能な制御装置、および、かかる制御装置を備えるロボットシステムを提供すること。
【解決手段】第1作業領域と第1接続領域とを含む第1記憶部および第1作業領域に格納されている第1プログラムを実行する第1処理部、を有する第1基板と、第2作業領域を含む第2記憶部および第2作業領域に格納されている第2プログラムを実行する第2処理部、を有する第2基板と、第1接続領域と第2作業領域とをリンクする通信インターフェースと、圧縮ファイルを格納する記憶媒体と、を備え、圧縮ファイルを記憶媒体から第1作業領域に読み出し、第1プログラムを第1作業領域に展開し、第2プログラムを第1接続領域に展開し、通信インターフェースを介して第2プログラムを第1接続領域から第2作業領域に転送することを特徴とする制御装置。
【選択図】
図1
【特許請求の範囲】
【請求項1】
第1作業領域と第1接続領域とを含む第1記憶部、および、前記第1作業領域に格納されている第1プログラムを実行する第1処理部、を有する第1基板と、
第2作業領域を含む第2記憶部、および、前記第2作業領域に格納されている第2プログラムを実行する第2処理部、を有する第2基板と、
前記第1接続領域と前記第2作業領域とをリンクする通信インターフェースと、
前記第1プログラムおよび前記第2プログラムを含む圧縮ファイルを格納する記憶媒体と、
を備え、
前記圧縮ファイルを前記記憶媒体から前記第1作業領域に読み出し、
前記圧縮ファイルに含まれる前記第1プログラムを前記第1作業領域に展開し、
前記圧縮ファイルに含まれる前記第2プログラムを前記第1接続領域に展開し、
前記通信インターフェースを介して前記第2プログラムを前記第1接続領域から前記第2作業領域に転送することを特徴とする制御装置。
【請求項2】
前記記憶媒体は、前記圧縮ファイルに紐づく電子署名を格納し、
前記電子署名に基づいて、前記圧縮ファイルを認証する認証処理を行い、
前記認証処理で認証できた場合に、前記第1プログラムおよび前記第2プログラムを展開し、
前記認証処理で認証できなかった場合に、前記第1プログラムおよび前記第2プログラムを展開しない請求項1に記載の制御装置。
【請求項3】
前記認証処理は、
公開鍵を用いて前記電子署名から第1ハッシュ値を生成する処理と、
前記圧縮ファイルをハッシュ関数にかけて第2ハッシュ値を生成する処理と、
前記第1ハッシュ値と前記第2ハッシュ値とを比較する処理と、
を有する請求項2に記載の制御装置。
【請求項4】
前記通信インターフェースは、PCI Express(登録商標)インターフェースである請求項1ないし3のいずれか1項に記載の制御装置。
【請求項5】
第3作業領域を含む第3記憶部、および、前記第3作業領域に格納されている第3プログラムを実行する第3処理部、を有する第3基板をさらに備え、
前記第2記憶部は、さらに第2接続領域を含み、
前記通信インターフェースは、前記第1接続領域、前記第2接続領域および前記第3作業領域を互いにリンクしており、
前記通信インターフェースを介して、前記第1接続領域から前記第2接続領域を経由して前記第3作業領域に前記第3プログラムを転送する請求項1ないし3のいずれか1項に記載の制御装置。
【請求項6】
ロボットアームを備えるロボットと、
前記ロボットの動作を制御する請求項1ないし3のいずれか1項に記載の制御装置と、
を備えることを特徴とするロボットシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、制御装置およびロボットシステムに関するものである。
【背景技術】
【0002】
特許文献1には、外部記憶手段に記憶されているプログラムを読み込んで、実行することにより、電子機器を起動させるように構成された電子機器が開示されている。このような電子機器によれば、読み出し専用メモリー(ROM)に記憶されているブートプログラムやROM自体に不具合がある場合でも、電子機器の起動が可能になる。これにより、ROMを交換する修理等を行う手間を省くことができる。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
電子機器は、少なくとも起動を担うメイン基板と、機能の拡張を図るサブ基板と、で構成される場合がある。このような複数の基板で構成される電子機器を起動する場合、従来、起動に必要なプログラムを、一旦、外部記憶手段からメイン基板のメモリーに読み出した後、メイン基板のプロセッサーが各基板用のプログラムを展開する処理を行う。このような展開処理は、メイン基板のメモリーの作業領域に各基板用のプログラムを読み込んだ上で行われる。このため、メイン基板の作業領域が一時的に減少し、展開処理の速度やメイン基板の起動処理の速度が低下する。その結果、電子機器の起動に時間を要するという課題が生じる。
【課題を解決するための手段】
【0005】
本発明の適用例に係る制御装置は、
第1作業領域と第1接続領域とを含む第1記憶部、および、前記第1作業領域に格納されている第1プログラムを実行する第1処理部、を有する第1基板と、
第2作業領域を含む第2記憶部、および、前記第2作業領域に格納されている第2プログラムを実行する第2処理部、を有する第2基板と、
前記第1接続領域と前記第2作業領域とをリンクする通信インターフェースと、
前記第1プログラムおよび前記第2プログラムを含む圧縮ファイルを格納する記憶媒体と、
を備え、
前記圧縮ファイルを前記記憶媒体から前記第1作業領域に読み出し、
前記圧縮ファイルに含まれる前記第1プログラムを前記第1作業領域に展開し、
前記圧縮ファイルに含まれる前記第2プログラムを前記第1接続領域に展開し、
前記通信インターフェースを介して前記第2プログラムを前記第1接続領域から前記第2作業領域に転送する。
【0006】
本発明の適用例に係るロボットシステムは、
ロボットアームを備えるロボットと、
前記ロボットの動作を制御する本発明の適用例に係る制御装置と、
を備える。
【図面の簡単な説明】
【0007】
【
図1】実施形態に係るロボットシステムを示す概念図である。
【
図2】
図1に示す制御装置のハードウェア構成を示すブロック図である。
【
図3】
図2に示す制御装置の機能を示す機能ブロック図である。
【
図4】
図2のメモリーカードに格納されているファームウェア全体のファイル構造を示す図である。
【
図5】
図2に示すメモリーカードのメモリーマップ、および、
図2に示すメイン基板のメモリーマップである。
【
図6】制御装置の起動方法を説明するためのフローチャートである。
【
図7】
図6に示す起動方法を説明する概念図である。
【
図8】
図6に示す起動方法を説明する概念図である。
【
図9】
図6に示す起動方法を説明する概念図である。
【
図10】
図6に示す起動方法を説明する概念図である。
【発明を実施するための形態】
【0008】
以下、本発明の制御装置およびロボットシステムを添付図面に示す好適な実施形態に基づいて詳細に説明する。
【0009】
1.ロボットシステム
まず、実施形態に係るロボットシステムについて説明する。
図1は、実施形態に係るロボットシステム1を示す概念図である。
【0010】
図1に示すロボットシステム1は、ロボット100と、制御装置200(実施形態に係る制御装置)と、ティーチペンダント300と、パーソナルコンピューター350と、表示部360と、を備える。
【0011】
1.1.ロボット
図1に示すロボット100は、基台120と、ロボットアーム130と、を備える。ロボットアーム130は、基台120側から順に接続された6本のアームと、基台120とアームとの間やアーム同士の間を接続する6つの関節J1~J6と、を備える。
図1に示す6つの関節J1~J6のうち、3つの関節J2、J3、J5は、曲げ関節であり、他の3つの関節J1、J4、J6は、ねじり関節である。また、関節J1~J6は、それぞれ図示しないが、駆動源としてのモーターと、モーターの回転量、すなわちモーターの位置情報を検出するためのエンコーダーと、を備えている。本明細書では、モーターおよびエンコーダーを合わせてサーボモーターとする。ロボットアーム130の先端には、ロボットアーム130の位置を示し、制御の対象となる制御点が設定されている。
【0012】
なお、本実施形態では、ロボット100として6軸の垂直多関節ロボットを例示しているが、軸の数は、特に限定されず、6より少なくても多くてもよい。また、ロボット100は、水平多関節ロボットであってもよいし、双腕ロボットであってもよいし、その他の形態のロボットであってもよい。
【0013】
ロボットアーム130の先端、つまりロボットアーム130の基台120とは反対側の端には、アームエンド132が設けられている。アームエンド132には、エンドエフェクター160が取り付けられている。エンドエフェクター160は、着脱可能に取り付けられている。エンドエフェクター160としては、例えば、ワークを把持するハンド、ワークを吸着する吸着ツール等が挙げられる。
【0014】
1.2.制御装置
図2は、
図1に示す制御装置200のハードウェア構成を示すブロック図である。
【0015】
図2に示す制御装置200は、メイン基板220(第1基板)と、第1サブ基板240(第2基板)と、第2サブ基板260(第3基板)と、を備える。そして、これらの各基板は、通信インターフェース280を介して互いに通信可能になっている。
【0016】
1.2.1.メイン基板
図2に示すメイン基板220は、プリント配線板221と、プロセッサー222(第1処理部)と、システムバス226と、RAM228(第1記憶部)と、ROM230と、入出力ポート232と、メモリーカードインターフェース234と、メモリーカード290(記憶媒体)と、を備える。なお、RAMは、Random Access Memoryであり、ROMは、Read-Only Memoryである。
【0017】
プリント配線板221は、絶縁基板と配線とを備え、取り付けられた電子部品同士を電気的に接続する。
【0018】
プロセッサー222は、RAM228に展開された第1プログラムを実行することにより、各種機能を実現する。プロセッサー222としては、例えば、マイクロプロセッサーや図示しないコアおよびキャッシュメモリー等を備えるプロセッサー回路等が挙げられる。マイクロプロセッサーおよびコアとしては、例えば、CPU(Central Processing Unit)、DSP(Digital Signal Processor)等が挙げられる。プロセッサー回路としては、例えばSoC(System on a Chip)、SiP(System in a Package)等が挙げられる。また、プロセッサー222は、その一部または全部が、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)等のデバイスで構成されていてもよい。
【0019】
システムバス226は、プロセッサー222と、RAM228およびROM230と、の間を接続して相互の通信を可能にする伝送路である。
【0020】
RAM228は、プロセッサー222に実行させる第1プログラムや読み出されたデータ等を一時的に格納する。RAM228としては、例えば、DRAM(Dynamic Random Access Memory)等が挙げられる。
【0021】
ROM230は、プロセッサー222に実行させるブートプログラム等を格納する。ROM230としては、例えば、EEPROM(登録商標)(Electrically Erasable Programmable Read-Only Memory)、Flash ROM(Flash Read-Only Memory)等が挙げられる。なお、ROM230は、外付け型のメモリーであってもよい。
【0022】
入出力ポート232は、メイン基板220の各部と他の装置との間で通信を行うためのインターフェースである。入出力ポート232としては、例えば、USB(Universal Serial Bus)等のデジタル入出力ポート、イーサネット(登録商標)ポート、映像出力ポート等が挙げられる。
【0023】
メモリーカードインターフェース234は、メモリーカード290(記憶媒体)を着脱可能にするインターフェースである。メモリーカードインターフェース234は、装着されたメモリーカード290に格納されたファイルを読み出したり、装着されたメモリーカード290に対してファイルを書き込んだりすることができる。メモリーカード290には、後述する圧縮ファイル400が格納されている。
【0024】
メモリーカード290としては、例えば、SDカード、USBメモリー等の各種記憶媒体が挙げられる。また、この記憶媒体は、データ書き換え可能であり、かつ、不揮発性を有することが好ましい。これにより、例えば新しい圧縮ファイル400を格納したメモリーカード290に容易に交換できるため、メイン基板220に対して新しい圧縮ファイル400を簡単にかつ短時間に移入することができる。
【0025】
なお、メモリーカード290は、着脱可能にすることで、外部からのデータをメイン基板220に簡単に読み込ませることができる。一方、着脱可能でなくてもよく、その場合、メモリーカード290は、単なる記憶媒体として制御装置200に固定されていてもよい。そして、ネットワーク等を介して記憶媒体にデータをダウンロードするように構成されていてもよい。
【0026】
1.2.2.第1サブ基板
図2に示す第1サブ基板240は、プリント配線板241と、プロセッサー242(第2処理部)と、システムバス246と、RAM248(第2記憶部)と、を備える。
【0027】
プリント配線板241は、絶縁基板と配線とを備え、取り付けられた電子部品同士を電気的に接続する。
【0028】
プロセッサー242は、RAM248に展開された第2プログラムを実行することにより、各種機能を実現する。プロセッサー242としては、例えば、マイクロプロセッサーや図示しないコアおよびキャッシュメモリー等を備えるプロセッサー回路等が挙げられる。また、プロセッサー242は、その一部または全部が、ASICやFPGA等のデバイスで構成されていてもよい。
【0029】
システムバス246は、プロセッサー242とRAM248との間を通信可能にする。RAM248は、プロセッサー242に実行させる第2プログラムや読み出されたデータ等を一時的に格納する。
【0030】
1.2.3.第2サブ基板
図2に示す第2サブ基板260は、プリント配線板261と、プロセッサー262(第3処理部)と、システムバス266と、RAM268(第3記憶部)と、を備える。
【0031】
プリント配線板261は、絶縁基板と配線とを備え、取り付けられた電子部品同士を電気的に接続する。
【0032】
プロセッサー262は、RAM268に展開された第3プログラムを実行することにより、各種機能を実現する。プロセッサー262としては、例えば、マイクロプロセッサーや図示しないコアおよびキャッシュメモリー等を備えるプロセッサー回路等が挙げられる。また、プロセッサー262は、その一部または全部が、ASICやFPGA等のデバイスで構成されていてもよい。
【0033】
システムバス266は、プロセッサー262とRAM268との間を通信可能にする。RAM268は、プロセッサー262に実行させる第3プログラムや読み出されたデータ等を一時的に格納する。
【0034】
1.2.4.通信インターフェース
通信インターフェース280は、プログラムやデータ等を伝送する伝送路であり、例えば、PCIやPCIExpress(登録商標)のようなシリアル通信インターフェース等である。なお、以下の説明では、PCIExpressを「PCIe」ともいう。
【0035】
以上、制御装置200のハードウェア構成例について説明したが、ハードウェア構成は、これに限定されない。例えば、第2サブ基板260が省略されていてもよいし、さらに別のサブ基板が追加されていてもよい。
【0036】
1.2.5.機能部
図3は、
図2に示す制御装置200の機能を示す機能ブロック図である。
【0037】
1.2.5.1.メイン基板の機能部
図3に示すメイン基板220は、機能部として、インターフェース制御部312と、言語解析部314と、入出力制御部316と、割り込み制御部318と、起動処理部320と、を有する。これらの各機能部が担う機能は、メイン基板220のハードウェア構成によっても異なるが、例えばメイン基板220のRAM228に格納されている第1プログラムやROM230に格納されているブートプログラムをプロセッサー222が実行することにより実現される。
【0038】
インターフェース制御部312は、例えば、メイン基板220、第1サブ基板240および第2サブ基板260の間の通信を制御する。
【0039】
言語解析部314は、ロボット100の動作を記述するロボット言語を読み取り、解析する。後述する入出力制御部316を介して、パーソナルコンピューター350からロボット100の動作プログラムを受け付け、動作プログラムを解析して、ロボットアーム130の目標位置情報を取得する。目標位置情報は、ロボットアーム130の制御点を移動させる目標地点である目標位置についての情報であり、例えば、目標位置の座標を示すデータである。
【0040】
入出力制御部316は、メイン基板220に接続されるティーチペンダント300、パーソナルコンピューター350やその他の周辺機器等との接続を制御する。
【0041】
割り込み制御部318は、実行中のプログラムから別のプログラムに分岐する処理(割り込み処理)を制御する。
【0042】
起動処理部320は、メイン基板220を起動させる機能を有する。起動処理部320は、ハードウェア初期化部322と、プログラム読出部324と、プログラム認証部326と、プログラム展開部328と、プログラム実行部330と、を有する。
【0043】
ハードウェア初期化部322は、少なくともメイン基板220および通信インターフェース280を初期化する。
【0044】
プログラム読出部324は、メモリーカード290に格納されているファイルを読み出す。そして、プログラム読出部324は、読み出したファイルをRAM228にコピーする。
【0045】
図4は、
図2のメモリーカード290に格納されているファームウェア全体440のファイル構造を示す図である。ファームウェア全体440は、
図4に示すように、メイン基板用ファームウェア410(第1プログラム)、第1サブ基板用ファームウェア420(第2プログラム)および第2サブ基板用ファームウェア430(第3プログラム)を有する。各ファームウェアは、例えば、OS(オペレーティングシステム)、アプリケーション、データ等を含むプログラムである。ファームウェア全体440は、通常、バイナリー形式とされるが、テキスト形式であってもよい。
【0046】
図5は、
図2に示すメモリーカード290のメモリーマップ、および、
図2に示すメイン基板220のメモリーマップである。なお、
図5に示すメモリーマップは、一例であり、これに限定されない。
【0047】
図5に示すように、メイン基板220のRAM228には、PCIeリンク領域512(第1接続領域)、ペリフェラル領域514、作業領域516(第1作業領域)およびブート領域518等のメモリー空間が含まれている。このうち、ブート領域518は、公開鍵542およびブートローダー544を格納している。
【0048】
また、
図5に示すように、メモリーカード290のメモリー空間は、第1パーティション291および第2パーティション292に分かれている。第1パーティション291は、圧縮ファイル400と、電子署名405と、を格納している。第2パーティション292は、ルートファイルシステム403を格納している。
【0049】
図5に示す圧縮ファイル400、電子署名405およびルートファイルシステム403は、後述する制御装置200の起動処理において作業領域516にコピーされる。
【0050】
プログラム認証部326は、RAM228に読み出した圧縮ファイル400を認証する。認証とは、圧縮ファイル400の完全性および真正性を検証することをいう。本明細書では、この検証の結果、完全性および真正性があることが確認された状態を指して「認証できた」という。
【0051】
プログラム展開部328は、認証できた圧縮ファイル400のうち、メイン基板用ファームウェア410を、メイン基板220が備えるRAM228の作業領域516に展開する。また、プログラム展開部328は、認証できた圧縮ファイル400のうち、第1サブ基板用ファームウェア420および第2サブ基板用ファームウェア430を、RAM228のPCIeリンク領域512に展開する。
【0052】
プログラム実行部330は、認証できたメイン基板用ファームウェア410を実行する。これにより、メイン基板220が起動する。
【0053】
なお、メイン基板220が有するこれらの機能部は、一例であり、一部が省略されていてもよいし、一部が他の基板にあってもよいし、別の機能部が付加されていてもよい。
【0054】
1.2.5.2.第1サブ基板の機能部
図3に示す第1サブ基板240は、機能部として、軌道生成部332と、起動処理部336と、を有する。これらの各機能部が担う機能は、第1サブ基板240のハードウェア構成によっても異なるが、例えば第1サブ基板240のRAM248に格納されている第2プログラムをプロセッサー242が実行することにより実現される。
【0055】
軌道生成部332は、メイン基板220から受け付けた目標位置情報に基づいてロボットアーム130が駆動されるときの軌道を生成する。
【0056】
起動処理部336は、認証できた第1サブ基板用ファームウェア420を実行する。これにより、第1サブ基板240が起動する。
【0057】
なお、第1サブ基板240が有するこれらの機能部は、一例であり、一部が省略されていてもよいし、一部が他の基板にあってもよいし、別の機能部が付加されていてもよい。
【0058】
1.2.5.3.第2サブ基板の機能部
図3に示す第2サブ基板260は、機能部として、サーボ処理部342と、起動処理部346と、を有する。これらの各機能部が担う機能は、第2サブ基板260のハードウェア構成によっても異なるが、例えば第2サブ基板260のRAM248に格納されている第2プログラムをプロセッサー262が実行することにより実現される。
【0059】
サーボ処理部342は、ロボット100が備えるサーボモーターの動作を制御する。
起動処理部346は、認証できた第2サブ基板用ファームウェア430を実行する。これにより、第2サブ基板260が起動する。
【0060】
なお、第2サブ基板260が有するこれらの機能部は、一例であり、一部が省略されていてもよいし、一部が他の基板にあってもよいし、別の機能部が付加されていてもよい。
【0061】
1.3.制御装置の起動方法
次に、
図3に示す制御装置200の起動方法について説明する。
【0062】
図6は、制御装置200の起動方法を説明するためのフローチャートである。
図7ないし
図10は、
図6に示す起動方法を説明する概念図である。
【0063】
図6に示す制御装置200の起動方法は、工程S102から工程S114を有する。
制御装置200に電源が入った後、工程S102に移行する。工程S102では、起動処理部320が有するプログラム読出部324が、
図5に示すブート領域518に格納されている公開鍵542およびブートローダー544を読み出す処理を行う。そして、プログラム認証部326が、公開鍵542およびブートローダー544を認証する処理を行う。この認証処理は、公開鍵542およびブートローダー544の完全性および真正性を検証する処理である。
【0064】
工程S104では、ハードウェア初期化部322が、メイン基板220および通信インターフェース280を初期化する。
【0065】
工程S106では、プログラム実行部330が、ブートローダー544を実行する。これにより、ファームウェアを実行する準備を整える。
【0066】
工程S108では、プログラム読出部324が、メモリーカード290に格納されている圧縮ファイル400、電子署名405およびルートファイルシステム403を、作業領域516に読み出す。
【0067】
電子署名405は、圧縮ファイル400に紐づくデジタル署名である。圧縮ファイル400は、ファームウェア全体440をデータ圧縮してなるファイルである。ルートファイルシステム403は、各ファームウェアのルートファイルシステムである。
【0068】
図7では、電子署名405の生成処理を説明している。
まず、ファームウェア全体440をデータ圧縮し、圧縮ファイル400を得る。この圧縮ファイル400は、そのままメモリーカード290に格納する。ファームウェア全体440を圧縮して格納することにより、メモリーカード290のデータ容量を削減するとともに、格納した圧縮ファイルの読み出しや展開に要する時間を削減することができる。
【0069】
一方、圧縮ファイル400をハッシュ関数にかける。これにより、ハッシュ値401を得る。ハッシュ関数は、任意の長さのデータから固定長の出力データ(ハッシュ値)を返す関数であって、同じデータからは同じハッシュ値を返す性質を有している。ハッシュ関数には、例えば、SHA-256、SHA-384、SHA-512等が挙げられる。
【0070】
得られたハッシュ値401を、秘密鍵402を用いて暗号化する。ハッシュ値401の暗号化は、例えば証明機関である認証局が秘密鍵402を用いて行うことができる。これにより、電子署名405を得る。電子署名405は、メモリーカード290に格納する。
【0071】
工程S110では、プログラム認証部326が、作業領域516に読み出された電子署名405に基づいて、圧縮ファイル400を認証する。
【0072】
図8では、圧縮ファイル400の認証処理を説明している。
まず、読み出された電子署名405を、公開鍵542を用いて復号化する。公開鍵542は、前述した秘密鍵402と対をなすものであって、認証局からあらかじめ発行されたものである。復号化により、ハッシュ値407(第1ハッシュ値)を生成する。一方、圧縮ファイル400をハッシュ関数にかける。これにより、ハッシュ値408(第2ハッシュ値)を生成する。そして、ハッシュ値407と、ハッシュ値408と、を比較する。両者が同じ値である場合、圧縮ファイル400の完全性および真正性を確認できるため、これをもって認証できたものとする。両者が異なる値である場合、圧縮ファイル400の完全性または真正性が損なわれているといえることから、認証できなかったものとする。
【0073】
このような認証処理によれば、ハッシュ値という固定長の値同士を比較するのみで、圧縮ファイル400の認証を行うことができる。このため、短時間で認証を行うことができ、制御装置200の起動時間の短縮に寄与できる。また、公開鍵542は、制御装置200に内蔵しておくのが好ましい。これにより、ローカル環境で認証処理を行うことができ、起動時間のさらなる短縮に寄与できる。
【0074】
工程S111では、圧縮ファイル400の認証できたか否かを判断する。認証できた場合には、工程S112に移行する。認証できなかった場合には、フローを終了する。これにより、認証できた場合のみ、制御装置200を起動することができるので、セキュアブートが実現される。
【0075】
工程S112では、プログラム展開部328が、圧縮ファイル400から各ファームウェアを展開する。
【0076】
図9および
図10は、それぞれ、圧縮ファイル400から各ファームウェアを展開する処理を説明している。
【0077】
メイン基板220は、
図9および
図10に示すように、メモリー空間として、PCIeリンク領域512(第1接続領域)、ペリフェラル領域514、および、作業領域516(第1作業領域)を含む。このうち、PCIeリンク領域512は、第1サブ基板用リンク領域512aおよび第2サブ基板用リンク領域512bを含む。ペリフェラル領域514は、メイン基板220に接続される周辺機器に提供されるメモリー空間である。作業領域516は、プロセッサー222によりアクセスされるメモリー空間である。なお、これらのメモリー空間は、例えばRAM228に設定されるが、それ以外のメモリー素子に設定されていてもよい。また、メモリー空間の設定は、例えば、通信インターフェース280のチップセットに含まれる図示しないコントローラーにより行われる。
【0078】
第1サブ基板240は、
図10に示すように、メモリー空間として、PCIeリンク領域522(第2接続領域)、および、作業領域526(第2作業領域)を含む。このうち、PCIeリンク領域522は、第2サブ基板用リンク領域522bを含む。作業領域526は、プロセッサー242によりアクセスされるメモリー空間である。なお、これらのメモリー空間は、例えばRAM248に設定されるが、それ以外のメモリー素子に設定されていてもよい。
【0079】
第2サブ基板260は、
図10に示すように、メモリー空間として、作業領域536(第3作業領域)を含む。作業領域536は、プロセッサー262によりアクセスされるメモリー空間である。
【0080】
第1サブ基板用リンク領域512aは、通信インターフェース280を介して、作業領域526とリンクしている。
【0081】
第2サブ基板用リンク領域512bは、通信インターフェース280を介して、第2サブ基板用リンク領域522bおよび作業領域536と相互にリンクしている。
【0082】
工程S112では、プログラム展開部328が、
図9に示すように、圧縮ファイル400からメイン基板用ファームウェア410(第1プログラム)を取り出し、メイン基板220の作業領域516に展開する。また、プログラム展開部328が、
図9に示すように、圧縮ファイル400から第1サブ基板用ファームウェア420(第2プログラム)を取り出し、メイン基板220のPCIeリンク領域512(第1接続領域)に含まれる第1サブ基板用リンク領域512aに展開する。さらに、プログラム展開部328が、
図9に示すように、圧縮ファイル400から第2サブ基板用ファームウェア430(第3プログラム)を取り出し、メイン基板220のPCIeリンク領域512に含まれる第2サブ基板用リンク領域512bに展開する。これらの展開処理は、例えば、プロセッサー222または通信インターフェース280のチップセットに含まれる図示しないコントローラーにより行われる。
【0083】
なお、プログラム展開部328が上記の展開を行う場合、各ファームウェアを圧縮された状態のまま展開してもよいし、解凍した状態で展開してもよい。圧縮された状態のまま展開した場合には、各基板において解凍すればよい。
【0084】
工程S114では、通信インターフェース280を介して、
図10に示すように、第1サブ基板用ファームウェア420を、PCIeリンク領域512(第1接続領域)に含まれる第1サブ基板用リンク領域512aから、第1サブ基板240の作業領域526(第2作業領域)に転送する。
【0085】
また、工程S114では、通信インターフェース280を介して、
図10に示すように、第2サブ基板用ファームウェア430を、PCIeリンク領域512(第1接続領域)に含まれる第2サブ基板用リンク領域512bから、第1サブ基板240のPCIeリンク領域522(第2接続領域)を経由して、第2サブ基板260の作業領域536(第3作業領域)に転送する。これらの転送処理は、例えば、通信インターフェース280のチップセットに含まれる図示しないコントローラーにより行われる。これにより、プロセッサー222の負荷を最小限に抑えつつ、転送処理を行うことができる。
【0086】
以上のようにして、各ファームウェアを、各作業領域に展開することができる。その後、各基板において各ファームウェアを実行することにより、各基板を起動することができ、制御装置200の起動が完了する。
【0087】
以上のように、メイン基板220の作業領域516に読み出した圧縮ファイル400を全て作業領域516に展開するのではなく、メイン基板用ファームウェア410のみを作業領域516に展開する。一方、第1サブ基板用ファームウェア420および第2サブ基板用ファームウェア430については、PCIeリンク領域512に展開する。
【0088】
そして、通信インターフェース280を介して、PCIeリンク領域512から第1サブ基板240の作業領域526に第1サブ基板用ファームウェア420を転送するとともに、PCIeリンク領域512からPCIeリンク領域522を経由して第2サブ基板260の作業領域536に第2サブ基板用ファームウェア430を転送する。
【0089】
これにより、メイン基板220の作業領域516が、各ファームウェアの展開および転送に占有されるのを避けることができる。その結果、作業領域516が一時的に減少することを抑制できるため、メイン基板220のプロセッサー222の処理速度が低下するのを抑制することができる。また、プロセッサー222の動作と並列して、各ファームウェアの転送が可能になる。このため、各ファームウェアの転送に伴うプロセッサー222の動作速度の低下を抑制することができる。したがって、上記の起動方法を用いることで、制御装置200の起動時間を短縮することができる。
【0090】
また、制御装置200では、圧縮ファイル400を読み出す方式を採用しているため、非圧縮のファームウェアを読み出す場合に比べて、メモリーカード290のデータ容量を削減することができる。これにより、ファームウェアの読み出しに要する時間を削減することができる。
【0091】
2.実施形態が奏する効果
以上のように、制御装置200(前記実施形態に係る制御装置)は、
図1および
図2に示すように、メイン基板220(第1基板)と、第1サブ基板240(第2基板)と、通信インターフェース280と、メモリーカード290(記憶媒体)と、を備える。
【0092】
メイン基板220は、
図2および
図10に示すように、作業領域516(第1作業領域)とPCIeリンク領域512(第1接続領域)とを含むRAM228(第1記憶部)、および、作業領域516に格納されているメイン基板用ファームウェア410(第1プログラム)を実行するプロセッサー222(第1処理部)、を有する。
【0093】
第1サブ基板240は、作業領域526(第2作業領域)を含むRAM248(第2記憶部)、および、作業領域526に格納されている第1サブ基板用ファームウェア420(第2プログラム)を実行するプロセッサー242(第2処理部)、を有する。
【0094】
通信インターフェース280は、PCIeリンク領域512と作業領域526とをリンクする。
【0095】
メモリーカード290(記憶媒体)は、メイン基板用ファームウェア410および第1サブ基板用ファームウェア420を含む圧縮ファイル400を格納する。
【0096】
そして、制御装置200は、圧縮ファイル400をメモリーカード290から作業領域516に読み出し、圧縮ファイル400に含まれるメイン基板用ファームウェア410を作業領域516に展開し、圧縮ファイル400に含まれる第1サブ基板用ファームウェア420をPCIeリンク領域512に展開し、通信インターフェース280を介して第1サブ基板用ファームウェア420をPCIeリンク領域512から作業領域526に転送する。
【0097】
このような構成によれば、メイン基板220の作業領域516が、各ファームウェアの展開および転送に占有されるのを避けることができる。その結果、作業領域516が一時的に減少することを抑制できるため、メイン基板220のプロセッサー222の処理速度が低下するのを抑制することができる。また、プロセッサー222の動作と並列して、各ファームウェアの転送が可能になる。このため、各ファームウェアの転送に伴うプロセッサー222の動作速度の低下を抑制することができる。したがって、上記の構成によれば、制御装置200の起動時間を短縮することができる。
【0098】
また、前記実施形態では、メモリーカード290(記憶媒体)は、圧縮ファイル400に紐づく電子署名405を格納している。
【0099】
そして、前記実施形態に係る制御装置200は、電子署名405に基づいて、圧縮ファイル400を認証する認証処理を行い、認証処理で認証できた場合に、メイン基板用ファームウェア410(第1プログラム)および第1サブ基板用ファームウェア420(第2プログラム)を展開し、認証処理ができなかった場合に、メイン基板用ファームウェア410および第1サブ基板用ファームウェア420を展開しないことが好ましい。
【0100】
これにより、制御装置200のセキュアブートを実現することができる。つまり、認証できない圧縮ファイル400に基づいて制御装置200が起動してしまうのを防止することができる。
【0101】
また、前記実施形態では、認証処理は、公開鍵542を用いて電子署名405からハッシュ値407(第1ハッシュ値)を生成する処理と、圧縮ファイル400をハッシュ関数にかけてハッシュ値408(第2ハッシュ値)を生成する処理と、ハッシュ値407とハッシュ値408とを比較する処理と、を有する。
【0102】
これにより、メモリーカード290から2つのファイル(電子署名405および圧縮ファイル400)を読み出し、これらから生成される固定長の値同士を比較するのみで、圧縮ファイル400の認証を行うことができる。これにより、制御装置200の起動時間をより短縮することができる。また、公開鍵542を制御装置200に内蔵しておくことにより、起動時間をさらに短縮することができる。
【0103】
また、前記実施形態では、通信インターフェース280が、PCI Expressインターフェースである。PCI Expressインターフェースは、プロセッサー222、242、262の負荷を抑えながら転送処理をより高速に行う機構、例えばバスマスター転送を備えている。これにより、プロセッサー222、242、262では、転送処理とは別の処理を並列して行うことができる。その結果、制御装置200の起動時間をより短縮することができる。
【0104】
また、前記実施形態では、制御装置200がさらに第2サブ基板260(第3基板)を備える。第2サブ基板260は、作業領域536(第3作業領域)を含むRAM268(第3記憶部)、および、作業領域536に格納されている第2サブ基板用ファームウェア430(第3プログラム)を実行するプロセッサー262(第3処理部)、を有する。
【0105】
また、RAM248(第2記憶部)は、さらにPCIeリンク領域522(第2接続領域)を含み、通信インターフェース280は、PCIeリンク領域512(第1接続領域)、PCIeリンク領域522(第2接続領域)および作業領域536(第3作業領域)を互いにリンクしている。
【0106】
そして、制御装置200は、通信インターフェース280を介して、PCIeリンク領域512からPCIeリンク領域522を経由して作業領域536に第2サブ基板用ファームウェア430を転送する。
【0107】
このような構成によれば、2つ以上の拡張基板(サブ基板)を有する制御装置200でも、起動時間を短縮することができる。これにより、機能分散に伴う性能や安定性の向上と、起動時間の短縮と、を両立させることができる。
【0108】
また、前記実施形態に係るロボットシステム1は、ロボットアーム130を備えるロボット100と、ロボット100の動作を制御する制御装置200(本実施形態に係る制御装置)と、を備える。
【0109】
このような構成によれば、制御装置200が奏する効果を享受することができ、短時間で起動可能なロボットシステム1を実現することができる。
【0110】
以上、本発明の制御装置およびロボットシステムを、図示の実施形態に基づいて説明したが、本発明は、これに限定されるものではない。
【0111】
例えば、本発明の制御装置およびロボットシステムは、前記実施形態の各部の構成が、同様の機能を有する任意の構成のものに置換されたものであってもよく、他の任意の構成物が付加されたものであってもよい。また、本発明の制御装置は、ロボットの制御以外の目的で用いられてもよい。
【符号の説明】
【0112】
1…ロボットシステム、100…ロボット、120…基台、130…ロボットアーム、132…アームエンド、160…エンドエフェクター、200…制御装置、220…メイン基板、221…プリント配線板、222…プロセッサー、226…システムバス、228…RAM、230…ROM、232…入出力ポート、234…メモリーカードインターフェース、240…第1サブ基板、241…プリント配線板、242…プロセッサー、246…システムバス、248…RAM、260…第2サブ基板、261…プリント配線板、262…プロセッサー、266…システムバス、268…RAM、280…通信インターフェース、290…メモリーカード、291…第1パーティション、292…第2パーティション、300…ティーチペンダント、312…インターフェース制御部、314…言語解析部、316…入出力制御部、318…割り込み制御部、320…起動処理部、322…ハードウェア初期化部、324…プログラム読出部、326…プログラム認証部、328…プログラム展開部、330…プログラム実行部、332…軌道生成部、336…起動処理部、342…サーボ処理部、346…起動処理部、350…パーソナルコンピューター、360…表示部、400…圧縮ファイル、401…ハッシュ値、402…秘密鍵、403…ルートファイルシステム、405…電子署名、407…ハッシュ値、408…ハッシュ値、410…メイン基板用ファームウェア、420…第1サブ基板用ファームウェア、430…第2サブ基板用ファームウェア、440…ファームウェア全体、512…PCIeリンク領域、512a…第1サブ基板用リンク領域、512b…第2サブ基板用リンク領域、514…ペリフェラル領域、516…作業領域、518…ブート領域、522…PCIeリンク領域、522b…第2サブ基板用リンク領域、526…作業領域、536…作業領域、542…公開鍵、544…ブートローダー、J1…関節、J2…関節、J3…関節、J4…関節、J5…関節、J6…関節、S102…工程、S104…工程、S106…工程、S108…工程、S110…工程、S111…工程、S112…工程、S114…工程