(57)【特許請求の範囲】
【請求項１】
第１携帯端末に接続されたデバイスを特定するデバイス情報を、前記第１携帯端末から受信する、または前記第１携帯端末を中継して前記デバイスから受信するデバイス情報受信手段と、
前記第１携帯端末が取得した前記デバイスの動作条件を示す動作条件情報を、前記第１携帯端末から受信する動作情報受信手段と、
前記デバイス情報および前記動作条件情報に基づいて、前記デバイスを制御するデバイス制御手段と、
を備えることを特徴とする情報処理装置。
【請求項２】
前記動作条件情報は、前記デバイスの仕様を示す仕様情報と、前記デバイスの置かれた環境を示す環境情報とを含むことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記環境情報は、温度と、湿度と、気圧と、動作時間とのいずれかを含むことを特徴とする請求項２に記載の情報処理装置。
【請求項４】
前記デバイス情報および前記動作条件情報に基づいて、前記デバイスの動作を制御するためのアプリケーションプログラム、デバイスドライバプログラムおよびそのパラメータを選定するプログラム選定手段を備え、
前記デバイス制御手段は、前記パラメータを使用して前記アプリケーションプログラムおよび前記デバイスドライバプログラムを実行することにより、前記デバイスを制御することを特徴とする請求項１乃至３のいずれか１項に記載の情報処理装置。
【請求項５】
前記デバイス情報および前記動作条件情報と、前記プログラム選定手段が選定した前記アプリケーションプログラム、前記デバイスドライバプログラムおよび前記パラメータの組合せとの履歴を、該組合せによる動作の評価と共に蓄積する蓄積手段をさらに備え、
前記プログラム選定手段は、受信した前記デバイス情報および前記動作条件情報に基づいて、前記蓄積手段に蓄積された前記履歴を参照して、前記アプリケーションプログラム、前記デバイスドライバプログラムおよび前記パラメータを選定することを特徴とする請求項４に記載の情報処理装置。
【請求項６】
前記デバイス制御手段による前記デバイスの制御開始後に受信した前記動作条件情報に基づいて、前記プログラム選定手段が選定した前記アプリケーションプログラム、デバイスドライバプログラムおよびそのパラメータの少なくともいずれかを変更するプログラム変更手段、
をさらに備えることを特徴とする請求項４または５に記載の情報処理装置。
【請求項７】
前記動作情報受信手段は、前記第１携帯端末が撮像した前記デバイスの置かれた環境を示す映像を受信して、前記映像から前記デバイスの動作条件情報を取得する動作条件情報取得手段を有することを特徴とする請求項１乃至６のいずれか１項に記載の情報処理装置。
【請求項８】
前記動作情報受信手段は、さらに、前記第１携帯端末が取得した前記デバイスの動作状態を示す動作状態情報を、前記第１携帯端末から受信し、
前記プログラム変更手段は、前記デバイスの制御開始後に受信した前記動作条件情報と前記動作状態情報との少なくともいずれかに基づいて、前記プログラム選定手段が選定した前記アプリケーションプログラム、デバイスドライバプログラムおよびそのパラメータの少なくともいずれかを変更することを特徴とする請求項６に記載の情報処理装置。
【請求項９】
前記動作情報受信手段は、前記第１携帯端末が撮像した前記デバイスの動作状態を示す映像を受信して、前記映像から前記デバイスの動作状態情報を取得する動作状態情報取得手段を有することを特徴とする請求項８に記載の情報処理装置。
【請求項１０】
前記デバイス情報受信手段は、さらに、第２携帯端末に接続されたセンサを特定するデバイス情報を、前記第２携帯端末から受信し、
前記動作情報受信手段は、さらに、前記デバイスの状態を示す前記センサの検出情報を、前記第２携帯端末から受信し、
前記デバイス制御手段は、前記第１携帯端末から受信した前記デバイス情報および前記動作条件情報と、前記第２携帯端末から受信した前記センサの検出情報とを使って、前記デバイスを制御することを特徴とする請求項１乃至９のいずれか１項に記載の情報処理装置。
【請求項１１】
前記デバイス制御手段は、前記第１携帯端末に接続した前記デバイスと前記第２携帯端末の接続した前記センサとの組合せを記憶するセンサ／デバイス組合せ記憶手段を有することを特徴とする請求項１０に記載の情報処理装置。
【請求項１２】
前記デバイスが、所定のタイミングで動作を行なう複数のデバイスであって、
前記複数のデバイスの各デバイスに対応する複数の前記デバイス情報受信手段および前記動作情報受信手段と、
前記複数のデバイスの各デバイスに対応する複数の前記デバイス制御手段と、
前記複数のデバイス制御手段に対して前記タイミングに応じて動作を制御するよう指示するタイミング制御手段と、
をさらに備えることを特徴とする請求項１乃至１１のいずれか１項に記載の情報処理装置。
【請求項１３】
前記デバイスが、所定のタイミングで動作を行なう複数のデバイスであって、
前記複数のデバイスに対応する１つの前記デバイス情報受信手段および前記動作情報受信手段と、
前記複数のデバイスに対応する１つの前記デバイス制御手段と、
前記１つのデバイス制御手段に対して前記タイミングに応じて動作を制御するよう指示するタイミング制御手段と、
をさらに備えることを特徴とする請求項１乃至１１のいずれか１項に記載の情報処理装置。
【請求項１４】
前記デバイス制御手段は、前記デバイスからの前記第１携帯端末を介した信号の受信に応答して、前記第１携帯端末を介して前記デバイスを制御する信号を送信することを特徴とする請求項１乃至１３のいずれか１項に記載の情報処理装置。
【請求項１５】
前記デバイス制御手段は、前記デバイスの一連の動作を実行するための制御プログラムを、前記デバイスの動作シーケンスに従い前記第１携帯端末に対して送信することを特徴とする請求項１乃至１４のいずれか１項に記載の情報処理装置。
【請求項１６】
前記制御プログラムは、前記デバイスからの信号の受信に応答して所定のタイミングで前記デバイスの動作を制御する信号を送信する一連の動作を実行するプログラムであることを特徴とする請求項１５に記載の情報処理装置。
【請求項１７】
前記デバイス制御手段は、前記第１携帯端末から前記デバイスの操作指示を受信する操作指示受信手段を有し、
前記操作指示受信手段が受信した前記操作指示にしたがって、前記第１携帯端末を介して前記デバイスを制御することを特徴とする請求項１乃至１６のいずれか１項に記載の情報処理装置。
【請求項１８】
前記デバイスは携帯端末のＵＳＢコネクタにＵＳＢケーブルで接続されるＵＳＢデバイスであることを特徴とする請求項１乃至１７のいずれか１項に記載の情報処理装置。
【請求項１９】
前記デバイス情報受信手段は、前記第１携帯端末が接続されたデバイスの前記デバイス情報を取得できない場合における前記接続されたデバイスの制御の依頼を、前記第１携帯端末から受信した場合に、前記第１携帯端末を中継して前記デバイスから前記デバイス情報を受信する、請求項１に記載の情報処理装置。
【請求項２０】
第１携帯端末に接続されたデバイスを特定するデバイス情報を、前記第１携帯端末から受信するデバイス情報受信ステップと、
前記第１携帯端末が取得した前記デバイスの動作条件を示す動作条件情報を、前記第１携帯端末から受信する動作情報受信ステップと、
前記デバイス情報および前記動作条件情報に基づいて、前記デバイスを制御するデバイス制御ステップと、
を含むことを特徴とする情報処理装置の制御方法。
【請求項２１】
第１携帯端末に接続されたデバイスを特定するデバイス情報を、前記第１携帯端末から受信するデバイス情報受信ステップと、
前記第１携帯端末が取得した前記デバイスの動作条件を示す動作条件情報を、前記第１携帯端末から受信する動作情報受信ステップと、
前記デバイス情報および前記動作条件情報に基づいて、前記デバイスを制御するデバイス制御ステップと、
をコンピュータに実行させることを特徴とする情報処理装置の制御プログラム。
【請求項２２】
デバイス接続コネクタと、
前記デバイス接続コネクタに接続したデバイスを特定するデバイス情報を、情報処理装置に送信するデバイス情報送信手段と、
前記デバイスの動作条件を示す動作条件情報または前記デバイスの動作状態を示す動作状態情報を取得して、前記情報処理装置に送信する動作情報送信手段と、
前記デバイス情報および前記動作条件情報または前記動作状態情報に基づく前記情報処理装置による前記デバイスの制御を中継するデバイス制御中継手段と、
を備えることを特徴とする携帯端末。
【請求項２３】
前記動作条件情報は、前記デバイスの仕様を示す仕様情報と、前記デバイスの置かれた環境を示す環境情報とを含むことを特徴とする請求項２２に記載の携帯端末。
【請求項２４】
前記環境情報は、温度と、湿度と、気圧とのいずれかを含むことを特徴とする請求項２３に記載の携帯端末。
【請求項２５】
前記デバイス制御中継手段は、前記情報処理装置が前記デバイス情報および前記動作条件情報または前記動作状態情報に基づいて選定した、パラメータを使用するアプリケーションプログラムとデバイスドライバプログラムとの実行による前記デバイスの制御を中継することを特徴とする請求項２２乃至２４のいずれか１項に記載の携帯端末。
【請求項２６】
前記動作情報送信手段は、前記デバイスが置かれた動作条件を示す映像または前記デバイスの動作状態を示す映像を撮像する撮像手段を有し、前記撮像手段が撮像した映像を前記動作条件情報または前記動作状態情報として、前記情報処理装置に送信することを特徴とする請求項２２乃至２５のいずれか１項に記載の携帯端末。
【請求項２７】
前記デバイスの一連の動作を実行するための制御プログラムを、前記情報処理装置から前記デバイスの動作シーケンスに従い受信する制御プログラム受信手段と、
前記デバイスとの信号のやり取りをしながら前記制御プログラムを実行して、前記デバイスの一連の動作を実現するプログラム実行手段と、
をさらに備えることを特徴とする請求項２２乃至２６のいずれか１項に記載の携帯端末。
【請求項２８】
前記制御プログラムは、前記デバイスからの信号の受信に応答して所定のタイミングで前記デバイスの動作を制御する信号を送信する一連の動作を実行するプログラムであることを特徴とする請求項２７に記載の携帯端末。
【請求項２９】
前記デバイス接続コネクタはＵＳＢコネクタであり、前記デバイスは前記ＵＳＢコネクタにＵＳＢケーブルで接続されるＵＳＢデバイスであることを特徴とする請求項２２乃至２８のいずれか１項に記載の携帯端末。
【請求項３０】
デバイス接続コネクタを有する携帯端末の制御方法であって、
前記デバイス接続コネクタに接続したデバイスを特定するデバイス情報を、情報処理装置に送信するデバイス情報送信ステップと、
前記デバイスの動作条件を示す動作条件情報または前記デバイスの動作状態を示す動作状態情報を取得して、前記情報処理装置に送信する動作情報送信ステップと、
前記デバイス情報および前記動作条件情報に基づく前記情報処理装置による前記デバイスの制御を中継するデバイス制御中継ステップと、
を含むことを特徴とする携帯端末の制御方法。
【請求項３１】
デバイス接続コネクタを有する携帯端末の制御プログラムであって、
前記デバイス接続コネクタに接続したデバイスを特定するデバイス情報を、情報処理装置に送信するデバイス情報送信ステップと、
前記デバイスの動作条件を示す動作条件情報または前記デバイスの動作状態を示す動作状態情報を取得して、前記情報処理装置に送信する動作情報送信ステップと、
前記デバイス情報および前記動作条件情報に基づく前記情報処理装置による前記デバイスの動作の制御を中継するデバイス制御中継ステップと、
をコンピュータに実行させることを特徴とする携帯端末の制御プログラム。
【請求項３２】
デバイス接続コネクタを有する携帯端末と、前記デバイス接続コネクタに接続可能なデバイスと、前記携帯端末とネットワークを介して接続される情報処理装置と、を備える情報処理システムであって、
前記携帯端末が、
前記デバイス接続コネクタに接続した前記デバイスを特定するデバイス情報を、前記ネットワークを介して前記情報処理装置に送信するデバイス情報送信手段と、
前記デバイスが置かれた動作条件を示す動作条件情報を取得して、前記ネットワークを介して前記情報処理装置に送信する動作情報送信手段と、
を備え、
前記情報処理装置が、前記デバイス情報および前記動作条件情報に基づいて、前記ネットワークおよび前記携帯端末を介して前記デバイスを制御するデバイス制御手段、
を備えることを特徴とする情報処理システム。
【請求項３３】
デバイス接続コネクタを有する携帯端末と、前記デバイス接続コネクタに接続可能なデバイスと、前記携帯端末とネットワークを介して接続される情報処理装置と、を備える情報処理システムにおける情報処理方法であって、
前記携帯端末が、前記デバイス接続コネクタに接続した前記デバイスを特定するデバイス情報を、前記ネットワークを介して前記情報処理装置に送信するデバイス情報送信ステップと、
前記携帯端末が、前記デバイスが置かれた動作条件を示す動作条件情報を取得して、前記ネットワークを介して前記情報処理装置に送信する動作情報送信ステップと、
前記情報処理装置が、前記デバイス情報および前記動作条件情報とに基づいて、前記ネットワークおよび前記携帯端末を介して前記デバイスを制御するデバイス制御ステップと、
を含むことを特徴とする情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、携帯端末に接続された産業機器などのデバイスの制御を行なう技術に関する。
【背景技術】
【０００２】
上記技術分野において、特許文献１には、知識管理装置が、各自立型ロボットから収集した知識情報を集めて管理しておき、当該ロボットから受け付けた周辺の環境情報に対応する制御情報を選定して提供する技術が開示されている。また、特許文献２には、シンクライアントサーバシステムにおいて、ＵＳＢデバイスをシンクライアントに接続して、サーバからＵＳＢデバイスを制御する技術が開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００５−１１１６０３号公報
【特許文献２】特開２０１０−２１８３４７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、上記文献に記載の技術では、携帯端末に対して、ＵＳＢデバイスとして自立型ロボットなどの産業機器を接続したときに、携帯端末が取得したデバイスの動作条件に適合して、サーバからデバイス制御をすることはできなかった。
【０００５】
本発明の目的は、上述の課題を解決する技術を提供することにある。
【課題を解決するための手段】
【０００６】
上記目的を達成するため、本発明に係る装置は、
第１携帯端末に接続されたデバイスを特定するデバイス情報を、前記第１携帯端末から受信する、または前記第１携帯端末を中継して前記デバイスから受信するデバイス情報受信手段と、
前記第１携帯端末が取得した前記デバイスの動作条件を示す動作条件情報を、前記第１携帯端末から受信する動作情報受信手段と、
前記デバイス情報および前記動作条件情報に基づいて、前記デバイスを制御するデバイス制御手段と、
を備えることを特徴とする。
【０００７】
上記目的を達成するため、本発明に係る方法は、
第１携帯端末に接続されたデバイスを特定するデバイス情報を、前記第１携帯端末から受信するデバイス情報受信ステップと、
前記第１携帯端末が取得した前記デバイスの動作条件を示す動作条件情報を、前記第１携帯端末から受信する動作情報受信ステップと、
前記デバイス情報および前記動作条件情報に基づいて、前記デバイスを制御するデバイス制御ステップと、
を含むことを特徴とする。
【０００８】
上記目的を達成するため、本発明に係るプログラムは、
第１携帯端末に接続されたデバイスを特定するデバイス情報を、前記第１携帯端末から受信するデバイス情報受信ステップと、
前記第１携帯端末が取得した前記デバイスの動作条件を示す動作条件情報を、前記第１携帯端末から受信する動作情報受信ステップと、
前記デバイス情報および前記動作条件情報に基づいて、前記デバイスを制御するデバイス制御ステップと、
をコンピュータに実行させることを特徴とする。
【０００９】
上記目的を達成するため、本発明に係る装置は、
デバイス接続コネクタと、
前記デバイス接続コネクタに接続したデバイスを特定するデバイス情報を、情報処理装置に送信するデバイス情報送信手段と、
前記デバイスの動作条件を示す動作条件情報または前記デバイスの動作状態を示す動作状態情報を取得して、前記情報処理装置に送信する動作情報送信手段と、
前記デバイス情報および前記動作条件情報または前記動作状態情報に基づく前記情報処理装置による前記デバイスの制御を中継するデバイス制御中継手段と、
を備えることを特徴とする。
【００１０】
上記目的を達成するため、本発明に係る方法は、
デバイス接続コネクタを有する携帯端末の制御方法であって、
前記デバイス接続コネクタに接続したデバイスを特定するデバイス情報を、情報処理装置に送信するデバイス情報送信ステップと、
前記デバイスの動作条件を示す動作条件情報または前記デバイスの動作状態を示す動作状態情報を取得して、前記情報処理装置に送信する動作情報送信ステップと、
前記デバイス情報および前記動作条件情報に基づく前記情報処理装置による前記デバイスの制御を中継するデバイス制御中継ステップと、
を含むことを特徴とする。
【００１１】
上記目的を達成するため、本発明に係るプログラムは、
デバイス接続コネクタを有する携帯端末の制御プログラムであって、
前記デバイス接続コネクタに接続したデバイスを特定するデバイス情報を、情報処理装置に送信するデバイス情報送信ステップと、
前記デバイスの動作条件を示す動作条件情報または前記デバイスの動作状態を示す動作状態情報を取得して、前記情報処理装置に送信する動作情報送信ステップと、
前記デバイス情報および前記動作条件情報に基づく前記情報処理装置による前記デバイスの動作の制御を中継するデバイス制御中継ステップと、
をコンピュータに実行させることを特徴とする。
【００１２】
上記目的を達成するため、本発明に係るシステムは、
デバイス接続コネクタを有する携帯端末と、前記デバイス接続コネクタに接続可能なデバイスと、前記携帯端末とネットワークを介して接続される情報処理装置と、を備える情報処理システムであって、
前記携帯端末が、
前記デバイス接続コネクタに接続した前記デバイスを特定するデバイス情報を、前記ネットワークを介して前記情報処理装置に送信するデバイス情報送信手段と、
前記デバイスが置かれた動作条件を示す動作条件情報を取得して、前記ネットワークを介して前記情報処理装置に送信する動作情報送信手段と、
を備え、
前記情報処理装置が、前記デバイス情報および前記動作条件情報に基づいて、前記ネットワークおよび前記携帯端末を介して前記デバイスを制御するデバイス制御手段、
を備えることを特徴とする。
【００１３】
上記目的を達成するため、本発明に係る方法は、
デバイス接続コネクタを有する携帯端末と、前記デバイス接続コネクタに接続可能なデバイスと、前記携帯端末とネットワークを介して接続される情報処理装置と、を備える情報処理システムにおける情報処理方法であって、
前記携帯端末が、前記デバイス接続コネクタに接続した前記デバイスを特定するデバイス情報を、前記ネットワークを介して前記情報処理装置に送信するデバイス情報送信ステップと、
前記携帯端末が、前記デバイスが置かれた動作条件を示す動作条件情報を取得して、前記ネットワークを介して前記情報処理装置に送信する動作情報送信ステップと、
前記情報処理装置が、前記デバイス情報および前記動作条件情報とに基づいて、前記ネットワークおよび前記携帯端末を介して前記デバイスを制御するデバイス制御ステップと、
を含むことを特徴とする。
【発明の効果】
【００１４】
本発明によれば、携帯端末に対してデバイスを接続した場合に、携帯端末が取得したデバイスの動作条件に適合して、情報処理装置（サーバなど）からデバイス制御ができる。
【図面の簡単な説明】
【００１５】
【図１】本発明の第１実施形態に係る情報処理装置の構成を示すブロック図である。
【図２Ａ】本発明の第２実施形態に係る情報処理システムの動作概念を説明する図である。
【図２Ｂ】本発明の第２実施形態に係る情報処理システムの構成を示すブロック図である。
【図３Ａ】本発明の第２実施形態に係る情報処理システムの動作手順を示すシーケンス図である。
【図３Ｂ】本発明の第２実施形態に係るＵＳＢ接続されたＵＳＢデバイスの制御手順を示すシーケンス図である。
【図３Ｃ】本発明の第２実施形態に係るＵＳＢ接続されたＵＳＢデバイスの制御手順を示すシーケンス図である。
【図３Ｄ】本発明の第２実施形態に係るＵＳＢ接続されたＵＳＢデバイス以外のデバイスの制御手順を示すシーケンス図である。
【図４】本発明の第２実施形態に係るクラウドサーバの機能構成を示すブロック図である。
【図５】本発明の第２実施形態に係る携帯端末の機能構成を示すブロック図である。
【図６】本発明の第２実施形態に係るデバイス（産業機器）の機能構成を示すブロック図である。
【図７Ａ】本発明の第２実施形態に係るデバイスＤＢの構成を示す図である。
【図７Ｂ】本発明の第２実施形態に係るデバイスディスクリプタの構成を示す図である。
【図８Ａ】本発明の第２実施形態に係るプログラム履歴ＤＢの構成を示す図である。
【図８Ｂ】本発明の第２実施形態に係るパラメータ履歴ＤＢの構成を示す図である。
【図９】本発明の第２実施形態に係るクラウドサーバのハードウェア構成を示すブロック図である。
【図１０Ａ】本発明の第２実施形態に係るプログラム選定テーブルの構成を示す図である。
【図１０Ｂ】本発明の第２実施形態に係るパラメータ選定テーブルの構成を示す図である。
【図１１】本発明の第２実施形態に係るクラウドサーバの処理手順を示すフローチャートである。
【図１２Ａ】本発明の第２実施形態に係るプログラム選定処理の処理手順を示すフローチャートである。
【図１２Ｂ】本発明の第２実施形態に係る指示操作の実行処理の処理手順を示すフローチャートである。
【図１３】本発明の第２実施形態に係る携帯端末のハードウェア構成を示すブロック図である。
【図１４】本発明の第２実施形態に係る携帯端末の処理手順を示すフローチャートである。
【図１５】本発明の第３実施形態に係る情報処理システムの動作概念を説明する図である。
【図１６】本発明の第３実施形態に係る情報処理システムの動作手順を示すシーケンス図である。
【図１７】本発明の第３実施形態に係るクラウドサーバの機能構成を示すブロック図である。
【図１８】本発明の第３実施形態に係るプログラム履歴ＤＢの構成を示す図である。
【図１９】本発明の第３実施形態に係るパラメータ履歴ＤＢの構成を示す図である。
【図２０】本発明の第３実施形態に係るプログラム検証／変更テーブルの構成を示す図である。
【図２１】本発明の第３実施形態に係るクラウドサーバの処理手順を示すフローチャートである。
【図２２】本発明の第３実施形態に係るプログラム選定処理の処理手順を示すフローチャートである。
【図２３】本発明の第４実施形態に係る情報処理システムの動作概念を説明する図である。
【図２４】本発明の第４実施形態に係る情報処理システムの動作手順を示すシーケンス図である。
【図２５】本発明の第４実施形態に係るクラウドサーバの機能構成を示すブロック図である。
【図２６】本発明の第４実施形態に係るセンサ／デバイス組合せテーブルの構成を示す図である。
【図２７】本発明の第４実施形態に係るクラウドサーバの処理手順を示すフローチャートである。
【図２８】本発明の第４実施形態に係る仮想ＰＣ生成処理の処理手順を示すフローチャートである。
【図２９Ａ】本発明の第５実施形態に係る情報処理システムの第１動作概念を説明する図である。
【図２９Ｂ】本発明の第５実施形態に係る情報処理システムの第２動作概念を説明する図である。
【図３０】本発明の第５実施形態に係る情報処理システムの動作手順を示すシーケンス図である。
【図３１】本発明の第５実施形態に係るクラウドサーバの機能構成を示すブロック図である。
【図３２】本発明の第５実施形態に係るタイミング制御テーブルの構成を示す図である。
【図３３】本発明の第５実施形態に係るクラウドサーバの処理手順を示すフローチャートである。
【図３４】本発明の第５実施形態に係るタイミング制御処理の処理手順を示すフローチャートである。
【図３５Ａ】本発明の第６実施形態に係る情報処理システムの第１動作概念を説明する図である。
【図３５Ｂ】本発明の第６実施形態に係る情報処理システムの第２動作概念を説明する図である。
【図３６Ａ】本発明の第６実施形態に係る情報処理システムの第１動作手順を示すシーケンス図である。
【図３６Ｂ】本発明の第６実施形態に係る情報処理システムの第２動作手順を示すシーケンス図である。
【図３７】本発明の第６実施形態に係るクラウドサーバの機能構成を示すブロック図である。
【図３８】本発明の第６実施形態に係る携帯端末の機能構成を示すブロック図である。
【図３９】本発明の第６実施形態に係るプログラム履歴ＤＢの構成を示す図である。
【図４０】本発明の第６実施形態に係るクラウドサーバの処理手順を示すフローチャートである。
【図４１】本発明の第６実施形態に係るプログラム選定処理の処理手順を示すフローチャートである。
【図４２】本発明の第６実施形態に係る携帯端末の処理手順を示すフローチャートである。
【図４３】本発明の第６実施形態に係る制御プログラム処理の処理手順を示すフローチャートである。
【発明を実施するための形態】
【００１６】
以下に、図面を参照して、本発明の実施の形態について例示的に詳しく説明する。ただし、以下の実施の形態に記載されている構成要素は単なる例示であり、本発明の技術範囲をそれらのみに限定する趣旨のものではない。
【００１７】
［第１実施形態］
本発明の第１実施形態としての情報処理装置１００について、図１を用いて説明する。情報処理装置１００は、第１携帯端末１２０に接続されたデバイス１１０を、第１携帯端末１２０を介して制御する装置である。
【００１８】
図１に示すように、情報処理装置１００は、デバイス情報受信部１０１と、動作情報受信部１０２と、デバイス制御部１０３と、を含む。デバイス情報受信部１０１は、第１携帯端末１２０に接続されたデバイス１１０を特定するデバイス情報１２０ａを、第１携帯端末１２０から受信する。動作情報受信部１０２は、第１携帯端末１２０が取得したデバイス１１０の動作条件を示す動作条件情報１２０ｂを、第１携帯端末１２０から受信する。デバイス制御部１０３は、デバイス情報１２０ａおよび動作条件情報１２０ｂに基づいて、デバイス１１０を制御する。
【００１９】
本実施形態によれば、携帯端末に対してデバイスを接続した場合にデバイス情報および動作条件情報に基づいて情報処理装置（サーバなど）がデバイスを制御する。したがって、携帯端末が取得したデバイスの動作条件に適合して、情報処理装置からデバイスの制御ができる。
【００２０】
［第２実施形態］
次に、本発明の第２実施形態に係る情報処理システムについて説明する。なお、本実施形態においては、サーバの一例としてクラウドサーバを用いて説明する。本実施形態においては、携帯端末のＵＳＢコネクタに接続した産業機器であるロボットアームを、携帯端末の表示画面を使用する操作にしたがってクラウドサーバにより制御する。携帯端末からクラウドサーバへは、接続したロボットアームのデバイス情報（デバイスディスクリプタ）と、ロボットアームの動作条件情報（室温や動作時間など）とをネットワークを介して送信する。クラウドサーバは、デバイス情報および動作条件情報に基づいて、ロボットアームを駆動するためのデバイスドライバプログラム、ロボットアームの動作シーケンスを制御するアプリケーションプログラム、およびそれらプログラムで使用される各種パラメータを選定する。そして、接続されたロボットアームおよびその動作条件に適合した制御を実現する。以下、デバイスドライバプログラムを、デバイスドライブあるいはドライブと称し、アプリケーションプログラムを、アプリケーションあるいはアプリと称する場合もある。第２実施形態においては、携帯端末の表示画面から、あたかも携帯端末がロボットアームを制御しているかのように、ロボットアームの動作制御を可能とするが、ロボットアームに限定されない。なお、本実施形態において、動作条件情報は、デバイスの仕様を示す仕様情報と、デバイスの置かれた環境を示す環境情報とを含む。そして、環境情報は、温度と、湿度と、気圧と、動作時間とのいずれかを含む。
【００２１】
本実施形態によれば、携帯端末に対してＵＳＢデバイスとして産業機器を接続した場合に、携帯端末が取得したワールドワイドに展開された産業機器の動作条件に適合して、情報処理装置（サーバ）から各デバイス制御ができる。
【００２２】
《情報処理システム》
図２Ａ〜図３Ｄを参照して、本実施形態の情報処理システム２００の動作について説明する。
【００２３】
（動作概念）
図２Ａは、本実施形態に係る情報処理システム２００の動作概念を説明する図である。
【００２４】
情報処理システム２００においては、クラウドサーバ２１０が、携帯端末２２０の画面からの操作指示にしたがって、携帯端末２２０のＵＳＢコネクタに接続された産業機器であるロボットアーム２３０（２３０−１〜２３０−４）の動作を制御する。
【００２５】
図２Ａにおいては、左から右に携帯端末２２０操作およびロボットアーム２３０の動作が進むとしている。まず、左端図においては、携帯端末２２０のＵＳＢコネクタにロボットアーム２３０−１が接続され、まず、携帯端末２２０は、ロボットアーム２３０−１からデバイス情報であるデバイスディスクリプタをＵＳＢプロトコルにしたがって取得する。次に、携帯端末２２０にはユーザによって、ロボットアーム２３０−１の置かれた環境情報を含む、プログラム選定に関連する動作条件情報が入力される。携帯端末２２０は、デバイス情報および動作条件情報をクラウドサーバ２１０に送信する。クラウドサーバ２１０は、デバイス情報および動作条件情報に基づいて、ロボットアーム２３０−１を駆動するためのデバイスドライバ、ロボットアーム２３０−１の動作手順を制御するアプリケーション、および関連するパラメータを選定する。そして、クラウドサーバ２１０は、選定したパラメータを使用して、アプリケーションを起動し、アプリケーションの下でデバイスドライバを起動する。起動したアプリケーションは、操作画面２２０−１を携帯端末２２０に送って表示させる。
【００２６】
左端図では、操作画面２２０−１のハッチングが掛かった“右”の操作ボタンが押されたとする。左端下図のように、ロボットアーム２３０−１は、クラウドサーバ２１０の制御によりそのアームを矢印のように右回転する。次の図では、操作画面２２０−２のハッチングが掛かった“上”の操作ボタンが押されたとする。下図のように、ロボットアーム２３０−２は、クラウドサーバ２１０の制御によりそのアームを矢印のように上方に挙げる。次の図では、操作画面２２０−３のハッチングが掛かった“遠”の操作ボタンが押されたとする。下図のように、ロボットアーム２３０−３は、クラウドサーバ２１０の制御によりそのアームを矢印のように遠くに伸ばす。右端図では、操作画面２２０−４のハッチングが掛かった“にぎる”の操作ボタンが押されたとする。下図のように、ロボットアーム２３０−４は、クラウドサーバ２１０の制御によりそのアームの先端で矢印のようにモノを握る。
【００２７】
以上のように、あたかも携帯端末２２０がロボットアーム２３０を操作するプログラムを有して、実行しているかのように、クラウドサーバ２１０の制御によってロボットアーム２３０が動作することになる。
【００２８】
（システム構成）
図２Ｂは、本実施形態に係る情報処理システム２００の構成を示すブロック図である。なお、図２の情報処理システム２００の構成は一例であり、この構成に限定されない。
【００２９】
図２Ｂにおいて、クラウドサーバ２１０は日本にあるものとする。ネットワーク２４０を介して、世界各地に配備されているロボットアーム２３１〜２３ｎを携帯端末２２１〜２２ｎのＵＳＢコネクタにＵＳＢケーブル２２１ａ〜２２ｎａにより接続する。そうすると、クラウドサーバ２１０が、各ロボットアーム２３１〜２３ｎおよびその動作条件に適合したアプリケーション、デバイスドライバおよびパラメータをそれぞれ選定して実行し、各ロボットアーム２３１〜２３ｎの最適動作制御を実現する。なお、図２Ｂにおいては、ロボットアーム２３ｎはＲＳ２３２Ｃケーブル２３ｎａによる接続であると仮定している。ＲＳ２３２Ｃケーブル２３ｎａは信号変換してＵＳＢケーブル２２ｎａに接続されて、携帯端末２２ｎのＵＳＢコネクタに接続することになる。
【００３０】
情報処理装置であるクラウドサーバ２１０は、プログラム選定部２１１と、デバイス制御部２１２と、デバイスＤＢ２１３と、プログラム履歴ＤＢ２１４と、パラメータ履歴ＤＢ２１５と、を含む。プログラム選定部２１１は、世界各地のロボットアーム２３１〜２３ｎにそれぞれ接続された携帯端末２２１〜２２ｎから受信した、各ロボットアーム２３１〜２３ｎのデバイス情報と各ロボットアーム２３１〜２３ｎの動作条件に基づき、それぞれの動作を制御するプログラムおよび使用するパラメータを選定する。選定するプログラムは、デバイスドライバとアプリケーションとを含み、デバイスＤＢ２１３（図７Ａ参照）を参照して特定されたロボットアームとその動作条件に適合したプログラムが、プログラム履歴を蓄積するプログラム履歴ＤＢ２１４（図８Ａ参照）を参照して選定される。また、選定するパラメータは、選定したプログラムを参照して動作条件に適合したパラメータが、パラメータ履歴を蓄積するパラメータ履歴ＤＢ２１５（図８Ｂ参照）を参照して選定される。
【００３１】
そして、デバイス制御部２１２は、選定したパラメータを使用して選定したプログラムを実行し、携帯端末２２１〜２２ｎを中継して、各ロボットアーム２３１〜２３ｎの動作を制御する。
【００３２】
（動作手順）
図３Ａは、本実施形態に係る情報処理システム２００の動作手順を示すシーケンス図である。なお、図３Ａは、デバイスがＵＳＢデバイスである場合の手順である。また、以下の説明では、簡略化のため、携帯端末２２０、デバイス２３０として説明する。
【００３３】
まず、ステップＳ３１１において、携帯端末２２０にデバイス２３０をＵＳＢ接続する。携帯端末２２０は、ステップＳ３１３において、ＵＳＢ汎用ドライバでデバイス２３０からディスクリプタを読み出す。携帯端末２２０は、ステップＳ３１５において、そのディスクリプタをクラウドサーバ２１０に送信する。クラウドサーバ２１０は、ステップＳ３１７において、デバイスＤＢ２１３を参照してディスクリプタから接続したデバイスを特定する。次に、携帯端末２２０は、ステップＳ３１９において、デバイス２３０の動作条件情報を取得してクラウドサーバ２１０に送信する。なお、デバイス２３０の動作条件情報の取得は、ユーザの携帯端末２２０への入力によってもよいし、他の方法であってもよい。
【００３４】
クラウドサーバ２１０は、ステップＳ３２１において、ステップＳ３１７で特定したデバイス情報と、受信した動作条件情報とに基づいて、プログラム履歴ＤＢ２１４を参照してデバイスドライバを選定する。また、同時に、パラメータ履歴ＤＢ２１５を参照してデバイスドライバで使用するパラメータを選定する。次に、クラウドサーバ２１０は、ステップＳ３２３において、ステップＳ３１７で特定したデバイス情報と、受信した動作条件情報とに基づいて、プログラム履歴ＤＢ２１４を参照して、ステップＳ３２１で選定したデバイスドライバと相性のよいアプリケーションを選定する。また、同時に、パラメータ履歴ＤＢ２１５を参照してアプリケーションで使用するパラメータを選定する。なお、デバイスドライバとアプリケーションとの選定の順序は逆であっても、組合せとして同時選定であってもよい。
【００３５】
クラウドサーバ２１０は、ステップＳ３２５において、選定したアプリケーションを起動して、図２Ａに示した操作画面を携帯端末２２０に送信する。そして、ステップＳ３２７において、選定したデバイスドライバを起動する。携帯端末２２０は、ステップＳ３２９において、操作画面を表示画面に表示する。携帯端末２２０は、ステップＳ３３１において、操作画面上でユーザの操作指示入力があると、操作指示情報をクラウドサーバ２１０に送信する。クラウドサーバ２１０は、操作指示受信したことを携帯端末２２０に操作画面の更新で報知し、携帯端末２２０は、ステップＳ３３３において、受信した操作画面に更新する。
【００３６】
クラウドサーバ２１０は、ステップＳ３３５において、選定したデバイスドライバとアプリケーションとにより、携帯端末２２０を中継してデバイス２３０に指示操作を実行させる。この間、クラウドサーバ２１０からデバイス２３０に動作指示データが送信され、デバイス２３０からは動作による変化を検出する検出信号がクラウドサーバ２１０に送信される。
【００３７】
携帯端末２２０からユーザによって次の操作指示が入力されると、ステップＳ３３１〜Ｓ３３５が繰り返されて、次のデバイス２３０の動作がクラウドサーバ２１０により、あたかも携帯端末２２０で操作しているかのように、実行される。操作が終了すると、ステップＳ３４１において、クラウドサーバ２１０が選定したデバイスドライバ、アプリケーションおよびパラメータへのユーザの評価が入力され、クラウドサーバ２１０に送信される。クラウドサーバ２１０は、ステップＳ３４３において、プログラム履歴ＤＢ２１４およびパラメータ履歴ＤＢ２１５にユーザ評価と共に記録され、後のデバイスドライバ、アプリケーションおよびパラメータの選定時に参照される。
【００３８】
（ＵＳＢデバイス制御手順）
図３Ｂおよび図３Ｃは、本実施形態に係るＵＳＢ接続されたＵＳＢデバイスの制御手順を示すシーケンス図である。なお、簡略化のため携帯端末２２０、デバイス２３０として説明する。
【００３９】
まず、図３Ｂは、ＵＳＢ接続されたＵＳＢデバイスのディスクリプタ取得手順３２０を示すシーケンス図である。
【００４０】
デバイス２３０に設定されているディスクリプタは、ＧＥＴ＿ＤＥＳＣＲＩＰＴＯＲなどのＵＳＢリクエストにより取得される。ＵＳＢリクエストは、それぞれコントロール転送によりデバイス２３０とやり取りされる。各コントロール転送は、セット・ステージと、データ・ステージと、ステータス・ステージとからなる。各ステージは、トークン・パケットと、データ・パケットと、ハンドシェイク・パケットとからなる。ディスクリプタは、各データ・ステージのデータ・パケットで取得される。
【００４１】
デバイス２３０から取得したディスクリプタはＩＰヘッダやＴＣＰヘッダでＩＰカプセリングして、携帯端末２２０からクラウドサーバ２１０に送信される。
【００４２】
次に、図３Ｃは、ＵＳＢ接続されたＵＳＢデバイスのデータ入出力手順を示すシーケンス図である。クラウドサーバ２１０からデバイス２３０へのデータ出力手順３３０と、デバイス２３０からクラウドサーバ２１０へのデータ入力手順３４０とを含む。
【００４３】
デバイス２３０へのデータ出力手順３３０は、まず、クラウドサーバ２１０からＩＰカプセリングした出力データが携帯端末２２０に送信される。次に、携帯端末２２０は、アンカプセンリグして取得したデータはバルク転送（ＯＵＴ）でデバイス２３０に転送される。各バルク転送（ＯＵＴ）は、トークン・パケットと、データ・パケットと、ハンドシェイク・パケットとからなる。
【００４４】
デバイス２３０からのデータ入力手順３４０は、まず、携帯端末２２０は、バルク転送（ＩＮ）でデバイス２３０から入力データを取得する。各バルク転送（ＩＮ）は、トークン・パケットと、データ・パケットと、ハンドシェイク・パケットとからなる。次に、携帯端末２２０から、ＩＰカプセリングした入力データがクラウドサーバ２１０に送信される。
【００４５】
（非ＵＳＢデバイス制御手順）
図３Ｄは、本実施形態に係るＵＳＢ接続されたＵＳＢデバイス以外のデバイスの制御手順を示すシーケンス図である。
【００４６】
図３Ｄにおいては、携帯端末２２０がデバイス情報を取得できない例として、デバイス２３ｎがＲＳ２３２ＣケーブルからＵＳＢケーブルに接続されている場合を説明する。携帯端末２２０は、ＵＳＢパケットからＲＳ２３２Ｃに接続されたデバイス２３ｎのデバイス情報を取得する特殊ドライバを有しないとする。しかし、これに限定されない。なお、図３Ｄにおいて図３Ａと同様のステップには同じステップ番号を付して、説明は省略する。
【００４７】
ステップＳ３１１においては、ＲＳ２３２ＣケーブルとＵＳＢケーブルによってデバイス２３ｎが携帯端末２２０に接続される。携帯端末２２０は、ステップＳ３５３以降、汎用ＵＳＢドライバを起動してデバイス２３ｎのディスクリプタを取得しようとするが、ステップＳ３５７において、ディスクリプタを取得できないまま、タイムアウトをする。
【００４８】
携帯端末２２０は、タイムアウトを検出すると、ステップＳ３５９において、汎用ＵＳＢドライバの処理を停止する。そして、ステップＳ３６１において、クラウドサーバ２１０に接続したデバイス２３ｎの制御を依頼する。
【００４９】
デバイス制御の依頼を受けたクラウドサーバ２１０は、ステップＳ３６３において、接続したデバイス２３ｎを動作させ得るドライバ類を順に動作させて、接続したデバイス２３ｎを判定する。詳細には、まず、ステップＳ３６５において１組のドライバを起動する。次に、ステップＳ３６７において、起動したドライバでデバイス２３ｎをアクセスする。ステップＳ３６９において、デバイス２３ｎを制御可能か否かが判定される。制御可能と判定されれば、ステップＳ３７１において、そのドライバによってデバイス情報を取得する。かかるドライバには、デバイスを駆動可能なドライバと共に、ＲＳ２３２ＣとＵＳＢとの変換を実現するドライバが含まれる。
【００５０】
デバイス情報が獲得できれば、ステップＳ３１７において、デバイスＤＢ２１３を参照して、デバイス２３ｎを特定する。以降は、図３Ａと同様の処理が行なわれる。
【００５１】
《クラウドサーバの機能構成》
図４は、本実施形態に係るクラウドサーバ２１０の機能構成を示すブロック図である。なお、以下の説明においては、簡略化のため携帯端末２２０で代表させて説明する。また、実際には、ユーザ登録などを行なう構成も含まれるが、図４においては煩雑さを避けるため省略する。
【００５２】
クラウドサーバ２１０は、ネットワーク２４０を介して携帯端末２２０と通信する通信制御部４０１を有する。通信制御部４０１が携帯端末２２０から受信したメッセージから、ディスクリプタ受信部４０２は、携帯端末２２０に接続したデバイス２３０から取得したディスクリプタを受信する。デバイス判定部４０３は、携帯端末２２０から受信したデバイス２３０のディスクリプタから、デバイスＤＢ２１３（図７Ａ参照）を参照して、携帯端末２２０に接続したデバイス２３０を特定する。また、動作条件情報受信部４０４は、ディスクリプタを送信した同じ携帯端末２２０が送信した、デバイス２３０の動作条件情報を受信する。動作条件情報分析部４０５は、動作条件情報受信部４０４が受信した動作条件情報を分析してプログラム選定に必要な情報を抽出したり生成したりする。
【００５３】
プログラム選定部２１１は、プログラム選定テーブル２１１ａ（図１０Ａ参照）とパラメータ選定テーブル２１１ｂ（図１０Ｂ参照）とを有する。そして、プログラム選定部２１１は、デバイス判定部４０３からのデバイス情報と、動作条件情報分析部４０５からの動作条件情報とに基づいて、プログラム履歴ＤＢ２１４とパラメータ履歴ＤＢ２１５とを参照して、デバイスプログラム、アプリケーション、およびそれらで使用するパラメータを選定する。
【００５４】
デバイス制御部２１２は、プログラム選定部２１１が選定したアプリケーションを実行するアプリケーション実行部４０７を有する。アプリケーション実行部４０７は、携帯端末２２０に送信する操作画面を生成して、操作画面送信部４０８に渡す。操作画面送信部４０８は、操作画面を携帯端末２２０に送信する。一方、操作指示受信部４０９は、携帯端末２２０から送信されたユーザが入力した操作指示を受信する。そして、操作指示受信部４０９は、受信した操作指示をアプリケーション実行部４０７に渡す。アプリケーション実行部４０７は、操作指示に従ったデバイス２３０の動作を行なうように、ＵＳＢデバイスドライバ実行部４１０に対して、デバイス２３０の駆動のための指示を出力する。
【００５５】
また、デバイス制御部２１２は、プログラム選定部２１１が選定したデバイスドライバを実行するＵＳＢデバイスドライバ実行部４１０を有する。ＵＳＢデバイスドライバ実行部４１０は、携帯端末２２０を中継してＵＳＢコネクタに接続されたデバイスに対するＵＳＢパケットを生成して、ＵＳＢパケットカプセリング部４１１に渡す。ＵＳＢパケットカプセリング部４１１は、ＵＳＢパケットをＩＰカプセリングして、携帯端末２２０に向けて送信する。一方、ＵＳＢパケットアンカプセリング部４１２は、携帯端末２２０からＩＰカプセリングして送信されたメッセージを受信して、メッセージをアンカプセリングしてＵＳＢパケットを取り出す。そして、ＵＳＢパケットカプセリング部４１１は、ＵＳＢパケットをアプリケーション実行部４０７に渡す。ＵＳＢデバイスドライバ実行部４１０は、受信したＵＳＢパケットを分析して、新たなＵＳＢパケットを生成してデバイスに応答したり、アプリケーション実行部４０７にデバイス２３０のステータスを報告したりする。
【００５６】
なお、図４においては、分かり易くするために、ディスクリプタ受信部４０２をデバイス制御部２１２と独立させて示したが、ディスクリプタ受信部４０２がデバイス制御部２１２に組み込まれてもよい。
【００５７】
《携帯端末の機能構成》
図５は、本実施形態に係る携帯端末２２０、２２１〜２２ｎの機能構成を示すブロック図である。以下、構成は同ようなので、携帯端末２２０を代表させて説明する。
【００５８】
本実施形態の携帯端末２２０は、クラウドサーバ２１０とのネットワークを介した通信を制御する通信制御部５０３を有する。また、携帯端末２２０は、タッチパネルやキーボードなどからなる操作部５０１と、入出力部５０５とを有する。入出力部５０５は、画面受信部５０４が受信したクラウドサーバ２１０からの指示画面を表示する表示部５０６と、音声を入出力する音声入出力部５０７とを有する。
【００５９】
また、デバイス接続コネクタであるＵＳＢコネクタ５１０に接続されたデバイスの動作条件を取得する動作条件情報取得部５０８を有する。動作条件情報取得部５０８が取得した動作条件情報は、動作情報送信部に含まれる動作条件情報送信部５０９によりクラウドサーバ２１０に送信される。なお、動作条件情報取得部５０８は、操作部５０１にあってもよい。
【００６０】
また、携帯端末２２０は、ＵＳＢデバイスを接続するためのＵＳＢコネクタ５１０を有する。そして、ＵＳＢコネクタ５１０に接続したデバイス２３０のディスクリプタを取得するための汎用ＵＳＢドライバ実行部５１１を有する。さらに、携帯端末２２０は、汎用ＵＳＢドライバ実行部５１１が取得したＵＳＢパケットからデバイス２３０のディスクリプタを取得するディスクリプタ取得部５１２を有する。また、ディスクリプタ取得部５１２が取得したデバイス２３０のディスクリプタをクラウドサーバ２１０に送信する、デバイス情報送信部であるディスクリプタ送信部５１３を有する。
【００６１】
また、汎用ＵＳＢドライバ実行部５１１を介して、ＵＳＢコネクタ５１０に接続可能なデバイス２３０とクラウドサーバ２１０がＵＳＢパケットをやり取りするための、アンカプセリング部５１４とカプセリング部５１５とを有する。アンカプセリング部５１４は、クラウドサーバ２１０からのＩＰメッセージをアンカプセリングする。カプセリング部５１５は、クラウドサーバ２１０へのＩＰカプセリングを行なう。かかる汎用ＵＳＢドライバ実行部５１１、アンカプセリング部５１４、およびカプセリング部５１５が、クラウドサーバ２１０のデバイス制御を中継するデバイス制御中継部を構成する。
【００６２】
《デバイス（産業機器）の機能構成》
図６は、本実施形態に係るデバイス（産業機器）２３０の機能構成を示すブロック図である。なお、図６の構成は、ＵＳＢ接続に必要な一般的な構成要素を示したものであり、これに限定されない。なお、詳細は、ＵＳＢ仕様書を参照されたい。
【００６３】
デバイス２３０は、携帯端末２２０のＵＳＢコネクタ５１０とＵＳＢケーブルで接続される、ＵＳＢコネクタ６０１ａを有するトランシーバ６０１を有する。ＳＩＥ（Serial Interface Engine)６０２は、フィジカルインタフェース（ＰＨＹ）６０３とメディアアクセス制御（ＭＡＣ）６０４とを有し、ＵＳＢパケットのやり取りのプロトコルを制御する。ＳＩＥ６０２により送受信されるディスクリプタを含むデータは、ＦＩＦＯ６０５ａを含むエンドポイント制御部６０５に保持される。
【００６４】
デバイス制御部６０７は、エンドポイント制御部６０５のＦＩＦＯ６０５ａに保持されたデータに従い、本実施形態においてはロボットアームであるデバイス２３０のメカ機構部６０８およびセンサ群６０９を制御する。
【００６５】
（デバイスＤＢ）
図７Ａは、本実施形態に係るデバイスＤＢ２１３の構成を示す図である。なお、デバイスＤＢ２１３は、図７Ａの構成に限定されない。
【００６６】
デバイスＤＢ２１３は、デバイスディスクリプタ７１１に対応付けて、デバイスＩＤ７１２、デバイスの機種７１３、デバイスのバージョン７１４、デバイスの能力７１５などを記憶する。ここで、デバイスディスクリプタ７１１は、デバイスクラス、デバイスサブクラス、ベンダーＩＤ、プロダクトＩＤ、シリアル番号などを含む。
【００６７】
（デバイスディスクリプタ）
図７Ｂは、本実施形態に係るデバイスディスクリプタ７１１の構成を示す図である。詳細は説明を省く。ＵＳＢ仕様書を参照されたい。
【００６８】
例えば、Ｏｆｆｓｅｔの、“４”がデバイスクラス、“５”がデバイスサブクラス、“８”がベンダーＩＤ、“１０”がプロダクトＩＤ、“１６”がシリアル番号である。これらの情報により、ＵＳＢコネクタに接続されたデバイス２３０が１つ１つ一意に特定される。なお、デバイスディスクリプタ７１１は、エンドポイント０に領域が確保されて、あらかじめ記憶されている。
【００６９】
（プログラム履歴ＤＢ）
図８Ａは、本実施形態に係るプログラム履歴ＤＢ２１４の構成を示す図である。なお、プログラム履歴ＤＢ２１４は、図８Ａの構成に限定されない。
【００７０】
プログラム履歴ＤＢ２１４には、デバイスＩＤ８１１、デバイスの機種８１２、バージョン８１３、能力８１４などのデバイス情報に対応付けて、複数の動作条件情報８１５を記憶する。そして、各動作条件情報８１５に対応付けて、使用ドライバ８１６と使用アプリ８１７とを記憶し、それぞれにユーザが入力したユーザ評価８１８を記憶する。
【００７１】
（パラメータ履歴ＤＢ）
図８Ｂは、本実施形態に係るパラメータ履歴ＤＢ２１５の構成を示す図である。なお、パラメータ履歴ＤＢ２１５は、図８Ｂの構成に限定されない。
【００７２】
パラメータ履歴ＤＢ２１５は、ドライバが使用するパラメータを記憶するドライバパラメータ記憶部８２０と、アプリが使用するパラメータを記憶するアプリパラメータ記憶部８３０とを有する。
【００７３】
ドライバパラメータ記憶部８２０は、ドライバＩＤ８２１および複数の動作条件情報８２２のそれぞれに対応付けて、使用される第１パラメータ８２３、第２パラメータ８２４、…、第ｎパラメータ８２５を記憶する。そして、ドライバ選定時に参考にされるユーザが入力したユーザ評価８２６を記憶する。
【００７４】
また、アプリパラメータ記憶部８３０は、アプリＩＤ８３１および複数の動作条件情報８３２のそれぞれ、さらに、異なる動作シーケンス８３３に対応付けて、使用される全体パラメータ８３４、第１シーケンスパラメータ８３５、第２シーケンスパラメータ８３６、…、第ｎシーケンスパラメータ８３７を記憶する。そして、アプリ選定時に参考にされるユーザが入力したユーザ評価８３８を記憶する。
【００７５】
《クラウドサーバのハードウェア構成》
図９は、本実施形態に係るクラウドサーバ２１０のハードウェア構成を示すブロック図である。
【００７６】
図９で、ＣＰＵ(Central Processing Unit)９１０は演算制御用のプロセッサであり、プログラムを実行することで図４のクラウドサーバ２１０の各機能構成部を実現する。ＲＯＭ(Read Only Memory)９２０は、初期データおよびプログラムなどの固定データおよびプログラムを記憶する。また、通信制御部４０１は通信制御部であり、本実施形態においては、ネットワーク２４０を介して携帯端末２２０、２２１〜２２ｎと通信する。なお、ＣＰＵ９１０は１つに限定されず、複数のＣＰＵであっても、あるいは画像処理用のＧＰＵ（Graphics Processing Unit）を含んでもよい。
【００７７】
ＲＡＭ(Random Access Memory)９４０は、ＣＰＵ９１０が一時記憶のワークエリアとして使用するランダムアクセスメモリである。ＲＡＭ９４０には、本実施形態の実現に必要なデータを記憶する領域が確保されている。ユーザＩＤ／ユーザ認証情報９４１は、通信中のユーザの識別子とその認証情報などである。端末ＩＤ／端末認証情報９４２は、通信中の携帯端末の識別子とその認証情報などである。ディスクリプタ９４３は、携帯端末に接続したデバイスから携帯端末が取得してクラウドサーバ２１０に送信したデバイスディスクリプタである。デバイス情報９４４は、ディスクリプタ９４３に基づいて、デバイスＤＢ２１３を参照してデバイスを特定する情報である。動作条件情報９４５は、携帯端末から受信したデバイスの動作条件に関する情報である。プログラム選定テーブル２１１ａは、デバイス情報９４４と動作条件情報９４５とから使用するプログラムを選定するためのテーブルである。パラメータ選定テーブル２１１ｂは、デバイス情報９４４と動作条件情報９４５とから使用するパラメータを選定するためのテーブルである。操作画面９４６は、携帯端末に送信して表示画面に表示するための操作画面のデータである。操作指示９４７は、操作画面９４６は、携帯端末に表示された操作画面に対してユーザが指示入力した操作指示に対応する、携帯端末から受信したデータである。ＵＳＢパケット（入出力）９４８は、携帯端末を中継してＵＳＢデバイスとやり取りするパケットデータである。送受信データ９４９は、携帯端末と通信制御部４０１を介して送受信するＩＰカブセリングされたデータである。
【００７８】
ストレージ９５０には、データベースや各種のパラメータ、あるいは本実施形態の実現に必要な以下のデータまたはプログラムが記憶されている。デバイスＤＢ２１３は、図７Ａに示したデータベースである。プログラム履歴ＤＢ２１４は、図８Ａに示したデータベースである。パラメータ履歴ＤＢ２１５は、図８Ｂに示したデータベースである。
【００７９】
ストレージ９５０には、以下のプログラムが格納される。クラウドサーバ制御プログラム９５１は、本クラウドサーバ２１０の全体を制御するプログラムである。デバイス判定モジュール９５２は、クラウドサーバ制御プログラム９５１において、携帯端末に接続したデバイスのディスクリプタからデバイスを特定するモジュールである。プログラム選定モジュール９５３は、クラウドサーバ制御プログラム９５１において、プログラム履歴ＤＢ２１４およびパラメータ履歴ＤＢ２１５を参照して接続したデバイスを動作させる適切なプログラムおよびパラメータを選定するモジュールである（図１２Ａ参照）。アプリケーションプログラム９５４は、プログラム選定モジュール９５３により選定されたプログラムである。デバイスドライブプログラム９５５は、プログラム選定モジュール９５３により選定されたプログラムである。
【００８０】
なお、図９には、本実施形態に必須なデータやプログラムのみが示されており、本実施形態に関連しないデータやプログラムは図示されていない。
【００８１】
（プログラム選定テーブル）
図１０Ａは、本実施形態に係るプログラム選定テーブル２１１ａの構成を示す図である。プログラム選定テーブル２１１ａは、デバイス情報と動作条件情報とからプログラムを選定するためのテーブルである。
【００８２】
プログラム選定テーブル２１１ａは、デバイスＩＤ１００１や機種１００２などのデバイス情報と、動作条件情報１００３とに基づいて選定された、使用ドライバ１００４と使用アプリ１００５、そして、ユーザが入力したユーザ評価１００６を記憶する。
【００８３】
（パラメータ選定テーブル）
図１０Ｂは、本実施形態に係るパラメータ選定テーブル２１１ｂの構成を示す図である。パラメータ選定テーブル２１１ｂは、選定したドライバやアプリと動作条件情報とから使用するパラメータを選定するためのテーブルである。
【００８４】
パラメータ選定テーブル２１１ｂは、選定したドライバＩＤと動作条件情報とに基づいてパラメータとユーザ評価を記憶する、デバイスドライバ用のテーブル１０１１を有する。また、選定したアプリＩＤと動作条件情報とに基づいてパラメータとユーザ評価を記憶する、アプリケーション用のテーブル１０１２を有する。そして、デバイスドライバのパラメータとアプリケーションのパラメータとの組合せの全体評価１０１３を記憶する。
【００８５】
《クラウドサーバの処理手順》
図１１は、本実施形態に係るクラウドサーバ２１０の処理手順を示すフローチャートである。このフローチャートは、図９のＣＰＵ９１０がＲＡＭ９４０を使用して実行し、図４の各機能構成部を実現する。
【００８６】
まず、ステップＳ１１１１において、携帯端末から接続したデバイスのディスクリプタを受信したか否かを判定する。また、デバイスのディスクリプタ受信でない場合、ステップＳ１１３１において、携帯端末からの操作指示の受信か否かを判定する。また、デバイスのディスクリプタ受信でなく、かつ、操作指示の受信でない場合、ステップＳ１１４１においては、ＵＳＢパケットを、携帯端末を中継してデバイスに送信するか否かを判定する。
【００８７】
デバイスのディスクリプタを受信した場合はステップＳ１１１３に進んで、デバイスＤＢ２１３を参照してデバイス（本実施形態では、産業機器であるロボットアーム）を特定する。次に、ステップＳ１１１５において、携帯端末からの動作条件情報の受信を待って、受信があるとステップＳ１１１７に進んで、プログラム選定処理を行なう（図１２Ａ参照）。そして、ステップＳ１１１９において、選定したパラメータを使用して選定したプログラムを起動する。起動したアプリケーションは、ステップＳ１１２１において、操作画面を携帯端末に送信する。
【００８８】
また、操作指示の受信であればステップＳ１１３３に進んで、受信した操作指示を解析する。そして、解析結果に対応する指示操作の実行処理を行なう（図１２Ｂ参照）。
【００８９】
また、ＵＳＢパケットをデバイスに送信する場合はステップＳ１１４３に進んで、送信用のＵＳＢパケットを生成する。そして、ステップＳ１１４５において、ＩＰカプセリングしてデバイス宛に送信する。ステップＳ１１４７においては、デバイスからの応答受信を待って、応答受信があればステップＳ１１４９に進む。ステップＳ１１４９においては、受信したデータをＩＰアンカプセリングしてＵＳＢパケットを取り出す。ステップＳ１１５１においては、取り出したＵＳＢパケットを処理する。
【００９０】
（プログラム選定処理）
図１２Ａは、本実施形態に係るプログラム選定処理Ｓ１１１７の処理手順を示すフローチャートである。
【００９１】
まず、ステップＳ１２１１において、ステップＳ１１１３において特定したデバイス情報を取得する。次に、ステップＳ１２１３において、ステップＳ１１１５において受信した動作条件情報を取得する。そして、ステップＳ１２１５においては、プログラム履歴ＤＢ２１４を参照して、デバイス情報と動作条件情報とに合致するプログラムを選定する。続いて、ステップＳ１２１７において、パラメータ履歴ＤＢ２１５を参照して、選定したプログラムで使用する好適なパラメータを選定する。
【００９２】
（指示操作の実行処理）
図１２Ｂは、本実施形態に係る指示操作の実行処理の処理手順Ｓ１１３５を示すフローチャートである。
【００９３】
まず、ステップＳ１２２１において、送信用のＵＳＢパケットを生成する。そして、ステップＳ１２２３において、ＩＰカプセリングしてデバイス宛に送信する。ステップＳ１２２５においては、デバイスからの応答受信を待って、応答受信があればステップＳ１２２７に進む。ステップＳ１２２７においては、受信したデータをＩＰアンカプセリングしてＵＳＢパケットを取り出す。ステップＳ１２２９においては、取り出したＵＳＢパケットを処理する。そして、ステップＳ１２３１において、指示した操作が完了したか否かを判定し、完了していなければステップＳ１２２１に戻ってさらに処理を継続する。指示した操作が完了すればリターンする。
【００９４】
《携帯端末のハードウェア構成》
図１３は、本実施形態に係る携帯端末２２０、２２１〜２２ｎのハードウェア構成を示すブロック図である。以下、携帯端末２２０を代表して説明する。
【００９５】
図１３で、ＣＰＵ１３１０は演算制御用のプロセッサであり、プログラムを実行することで図５の携帯端末２２０の各機能構成部を実現する。ＲＯＭ１３２０は、初期データおよびプログラムなどの固定データおよびプログラムを記憶する。また、通信制御部５０３は通信制御部であり、本実施形態においては、ネットワークを介してクラウドサーバ２１０と通信する。なお、ＣＰＵ１３１０は１つに限定されず、複数のＣＰＵであっても、あるいは画像処理用のＧＰＵを含んでもよい。
【００９６】
ＲＡＭ１３４０は、ＣＰＵ１３１０が一時記憶のワークエリアとして使用するランダムアクセスメモリである。ＲＡＭ１３４０には、本実施形態の実現に必要なデータを記憶する領域が確保されている。ユーザＩＤ／ユーザ認証情報１３４１は、携帯端末２２０を使用中のユーザの識別子とその認証情報である。端末ＩＤ／端末認証情報１３４２は、当該携帯端末２２０の識別子とその認証情報である。ディスクリプタ１３４３は、ＵＳＢコネクタ５１０に接続したデバイスから読み出したデバイス情報である。動作条件情報１３４４は、当該携帯端末２２０が取得したデバイスの動作条件に関する情報である。操作画面１３４５は、クラウドサーバ２１０から受信した、デバイス２３０を操作するための表示データである。操作指示１３４６は、ユーザが表示部５０６に表示された操作画面上で指示した操作のデータである。デバイス入出力ＵＳＢパケット１３４７は、ＵＳＢデバイスに入出力するパケットである。サーバ送受信ＩＰパケット１３４８は、通信制御部５０３を介してクラウドサーバ２１０と送受信するＩＰカプセリングしたパケットである。入出力データ１３４９は、入出力インタフェース１３６０を介して入出力される入出力データを示す。
【００９７】
ストレージ１３５０には、データベースや各種のパラメータ、あるいは本実施形態の実現に必要な以下のデータまたはプログラムが記憶されている。端末情報１３５１は、本携帯端末の識別子を含む情報である。ストレージ１３５０には、以下のプログラムが格納される。携帯端末制御プログラム１３５２は、本携帯端末２２０の全体を制御する制御プログラムである。ディスクリプタ転送モジュール１３５３は、携帯端末制御プログラム１３５２において、デバイス２３０から取得したディスクリプタをクラウドサーバ２１０に転送するモジュールである。デバイス操作指示モジュール１３５４は、クラウドサーバ２１０に対してデバイス２３０の操作指示を行なうためのモジュールである。デバイス入出力データ中継モジュール１３５５は、クラウドサーバ２１０とデバイス２３０間のデータの入出力を中継するモジュールである。汎用ＵＳＢドライバ１３５６は、デバイス２３０のディスクリプタ読み出しなどの基本的なＵＳＢプロトコルを実行するプログラムである。
【００９８】
入出力インタフェース１３６０は、入出力機器との入出力データをインタフェースする。入出力インタフェース１３６０には、表示部５０６、タッチパネルなどからなる操作部５０１が接続される。また、スピーカやマイクなどの音声入出力部５０７が接続される。さらに、ＧＰＳ（Global Positioning System)位置生成部１３６１やカメラ１３６２などが接続される。そして、ＵＳＢコネクタ５１０が接続される。
【００９９】
なお、図１３には、本実施形態に必須なデータやプログラムのみが示されており、本実施形態に関連しないデータやプログラムは図示されていない。
【０１００】
《携帯端末の処理手順》
図１４は、本実施形態に係る携帯端末２２０、２２１〜２２ｎの処理手順を示すフローチャートである。このフローチャートは、図１３のＣＰＵ１３１０がＲＡＭ１３４０を使用して実行し、図５の各機能構成部を実現する。
【０１０１】
まず、ステップＳ１４１１において、ＵＳＢコネクタにデバイスが接続されたか否かを判定する。また、ＵＳＢコネクタへのデバイス接続でない場合、ステップＳ１４３１において、クラウドサーバ２１０からの操作画面の受信か否かを判定する。また、ＵＳＢコネクタへのデバイス接続でなく、かつ、操作画面の受信でない場合、ステップＳ１４４１において、デバイス宛のデータをクラウドサーバ２１０から受信したか否かを判定する。また、ＵＳＢコネクタへのデバイス接続でなく、操作画面の受信でなく、かつ、デバイス宛のデータ受信でない場合、ステップＳ１４５１においては、デバイスからのデータを受信したか否かを判定する。
【０１０２】
ＵＳＢコネクタにデバイスが接続された場合はステップＳ１４１３に進んで、汎用ＵＳＢドライブを起動する。そして、ステップＳ１４１５において、デバイスのディスクリプタを取得する。次に、ステップＳ１４１７において、取得したディスクリプタをクラウドサーバ２１０に送信する。続いて、ステップＳ１４１９において、動作条件情報の取得を待って、取得するとステップＳ１４２１に進んで、取得した動作条件情報をクラウドサーバ２１０に送信する。
【０１０３】
また、操作画面の受信であればステップＳ１４３３に進んで、操作画面を表示部５０６に表示する。そして、ステップＳ１４３５において、ユーザの操作入力を待つ。ユーザからの操作入力があるとステップＳ１４３７に進んで、クラウドサーバ２１０に操作指示を送信する。
【０１０４】
また、デバイス宛のデータの受信であればステップＳ１４４３に進んで、受信したＩＰカプセリングした受信データをＩＰアンカプセリングする。そして、ステップＳ１４４５において、ＵＳＢパケットをデバイスに送信する。一方、デバイスからのデータの受信であればステップＳ１４５３に進んで、受信したＵＳＢパケットをＩＰカプセリングする。そして、ステップＳ１４５５において、ＩＰパケットをクラウドサーバ２１０に送信する。
【０１０５】
本実施形態によれば、携帯端末に対してデバイスを接続した場合にデバイス情報および動作条件情報に基づいて情報処理装置（サーバなど）がデバイスを制御する。したがって、携帯端末が取得したデバイスの動作条件に適合して、情報処理装置からデバイスの制御ができる。
【０１０６】
［第３実施形態］
次に、本発明の第３実施形態に係る情報処理システムについて説明する。本実施形態に係る情報処理システムは、上記第２実施形態と比べると、携帯端末がカメラで撮像された映像をクラウドサーバに送信する点で異なる。クラウドサーバにおいては、受信した映像から動作条件情報に加えて、実際の動作状態を示す動作状態情報も判断して、デバイスドライバプログラム、アプリケーションプログラム、およびそれらプログラムで使用される各種パラメータを選定する。その他の構成および動作は、第２実施形態と同様であるため、同じ構成および動作については同じ符号を付してその詳しい説明を省略する。
【０１０７】
本実施形態によれば、携帯端末のカメラからの映像取得という、ユーザの簡単な操作によって産業機器の動作条件を取得する。したがって、産業機器の動作条件に適合した、さらに、実際の動きから動作状態を判断して、情報処理装置（サーバなど）から各デバイス制御ができる。
【０１０８】
なお、本実施形態においては、デバイスの動作条件を表わす映像や、デバイスの動作状態の映像について示す。しかし、例えば、デバイスが動作する時に発生する音によりデバイスの動作状態が監視できる場合は、携帯端末によりデバイスが発生する音を拾って、クラウドサーバ１５１０に送るように構成してもよい。また、本実施形態においては、動作中のプログラム変更が必要か否かの検証をする場合を説明するが、例えば、初期動作前や動作中にデバイスの設定変更や、動作変更が必要な場合の、ユーザによるプログラム変更指示においても、本実施形態は適用できる。
【０１０９】
《情報処理システム》
図１５および図１６を参照して、本実施形態の情報処理システム１５００の動作について説明する。
【０１１０】
（動作概念）
図１５は、本実施形態に係る情報処理システム１５００の動作概念を説明する図である。
【０１１１】
情報処理システム１５００においては、クラウドサーバ１５１０が、携帯端末２２０のカメラ１３６２が撮像した映像を受信して、この映像から、ロボットアーム２３０の動作条件情報（図１５では、温度／湿度、あるいは気圧）や実際の動作の状態である動作状態情報を取得する。そして、動作条件情報や動作状態情報に基づいて、プログラムを選定あるいは変更して、携帯端末２２０のＵＳＢコネクタに接続された産業機器であるロボットアーム２３０の動作を制御する。なお、以下、動作条件情報を取得するための映像を動作条件映像と呼ぶ、動作状態情報を取得するための映像を動作状態映像と呼ぶ。クラウドサーバ１５１０は、本実施形態に対応するプログラム履歴ＤＢ１５１４（図１８参照）とパラメータ履歴ＤＢ１５１５（図１９参照）とを有する。なお、プログラムの選定は制御開始時の動作条件情報や動作状態情報に基づいて行なわれ、プログラムの変更は制御開始後の動作条件情報や動作状態情報に基づいて行なわれる。
【０１１２】
図１５においては、左図がロボットアーム２３０の初動時の状態を示す。携帯端末２２０は、ＵＳＢコネクタに接続したロボットアーム２３０のデバイス情報（ディスクリプタ）を取得する。また、カメラ１３６２で温度計／湿度計１５４０や気圧計１５５０を撮像して動作条件映像を取得する。なお、動作条件映像は、計測器の映像に限らない。ロボットアーム２３０の周囲の映像は、事故や災害時の動作条件を表わすことができる。あるいは、窓の外を撮像すれば、動作条件の天気などを表わすことができる。あるいは、ユーザの映像も使用できる。一方、カメラ１３６２でロボットアーム２３０の初期動作を撮像して、動作状態映像を取得する。そして、携帯端末２２０は、取得したデバイス情報と、動作条件映像と、動作状態映像とを、表示画面からのユーザの指示に対応してネットワークを介してクラウドサーバ１５１０に送信する。
【０１１３】
クラウドサーバ１５１０は、動作条件映像や動作状態映像を分析して、動作条件情報と動作状態情報を生成する。そして、受信したデバイス情報と、動作条件情報と、動作状態情報とから、プログラム履歴ＤＢ１５１４、パラメータ履歴ＤＢ１５１５を参照して、ロボットアーム２３０を動作させるデバイスドライバ、アプリケーション、そしてそれらのパラメータを選定する。
【０１１４】
図１５の右図は、ロボットアーム２３０の動作中の状態を示す。携帯端末２２０は、カメラ１３６２で温度計／湿度計１５４０や気圧計１５５０を撮像して動作条件映像を取得し、動作条件の変更を監視する。なお、計測器の映像に限定されないのは、上記と同様である。一方、カメラ１３６２でロボットアーム２３０の動作を撮像して、動作状態映像を取得し、動作変化を監視する。なお、動作状態映像は、ロボットアーム２３０の映像に限らない。例えば、デバイスが製造機器であれば、その製品の映像により製造機器の動作を監視できる。あるいは、発熱状態や発生する光の強さや色などによる監視も映像により可能である。そして、携帯端末２２０は、取得したデバイス情報と、動作条件映像と、動作状態映像とを、表示画面からのユーザの指示に対応してネットワークを介してクラウドサーバ１５１０に送信する。
【０１１５】
クラウドサーバ１５１０は、動作条件映像や動作状態映像を分析して、現在の動作条件情報と現在の動作状態情報を生成する。そして、記憶しているデバイス情報と、現在の動作条件情報と、現在の動作状態情報とから、プログラム履歴ＤＢ１５１４、パラメータ履歴ＤＢ１５１５を参照して、プログラムあるいはパラメータの変更が必要であれば、ロボットアーム２３０を動作させるデバイスドライバ、アプリケーション、そしてそれらのパラメータを選定し直して、変更する。
【０１１６】
（動作手順）
図１６は、本実施形態に係る情報処理システム１５００の動作手順を示すシーケンス図である。なお、図３Ａと同様のステップには同じ参照番号を付して、説明を省略する。また、以下の説明では、携帯端末２２０、デバイス２３０で代表させる。
【０１１７】
ステップＳ１６１１において、携帯端末２２０は、動作条件映像をカメラ１３６２により取得して、クラウドサーバ１５１０に送信する。クラウドサーバ１５１０は、ステップＳ１６１３において、受信した動作条件映像から動作条件情報を取得する。次に、携帯端末２２０は、動作状態映像をカメラ１３６２により取得して、クラウドサーバ１５１０に送信する。クラウドサーバ１５１０は、ステップＳ１６１７において、受信した動作状態映像から動作状態情報を取得する。そして、クラウドサーバ１５１０は、ステップＳ１６１９において、接続されたデバイス情報と、動作条件情報と、動作状態情報とに基づき、プログラム履歴ＤＢ１５１４とパラメータ履歴ＤＢ１５１５とを参照して、デバイスドライバと使用パラメータを選定する。次に、クラウドサーバ１５１０は、ステップＳ１６２１において、接続されたデバイス情報と、動作条件情報と、動作状態情報とに基づき、プログラム履歴ＤＢ１５１４とパラメータ履歴ＤＢ１５１５とを参照して、アプリケーションと使用パラメータを選定する。以下、デバイス２３０の動作が開始されるが、図１６には、本実施形態の特徴部分を示すため、詳細は省略している（図３Ａ参照）。
【０１１８】
そして、デバイス２３０の動作中に、再度、ステップＳ１６１１〜Ｓ１６１７が行なわれて、クラウドサーバ１５１０は、現在の動作条件情報と現在の動作状態情報を取得する。クラウドサーバ１５１０は、取得した現在の動作条件情報と現在の動作状態情報から、ステップＳ１６２９において、選定したデバイスドライバとそのパラメータが適切か否かを検証する。また、同時に、ステップＳ１６３１において、選定したアプリケーションとそのパラメータが適切か否かを検証する。そして、検証の結果から選定のやり直しが必要であれば、再度、プログラム履歴ＤＢ１５１４とパラメータ履歴ＤＢ１５１５とを参照して、選定をやり直す。なお、簡単なシーケンスの前後や、パラメータの調整で済む場合は、プログラムの選定のやり直しまでしないように、構成してもよい。
【０１１９】
《クラウドサーバの機能構成》
図１７は、本実施形態に係るクラウドサーバ１５１０の機能構成を示すブロック図である。なお、図１７において、第２実施形態の図４と同様の構成には同じ参照番号を付して、説明は省略する。
【０１２０】
動作条件映像受信部１７０４は、携帯端末２２０から送信されたデバイス２３０の動作条件に関する映像を受信する。動作条件映像分析部１７０５は、動作条件映像受信部１７０４が受信した動作条件映像を分析して、動作条件情報を取得する。
【０１２１】
プログラム選定部１７１１は、デバイス情報と、動作条件情報と、動作状態情報とに基づいて、プログラム履歴ＤＢ１５１４（図１８参照）とパラメータ履歴ＤＢ（図１９参照）とを参照して、プログラムとパラメータを選定する。さらに、プログラム選定部１７１１は、プログラム検証／変更テーブル１７１１ｃ（図２０参照）を有し、デバイス動作中の動作条件情報の変化や動作状態情報の変化を検証して、プログラムの選定を変更することができる。
【０１２２】
デバイス制御部１７１２は、さらに、携帯端末からの動作状態映像を受信する動作状態映像受信部１７１３を有する。動作状態映像受信部１７１３が受信した動作状態映像は、図１７においては、アプリケーション実行部４０７で実行されているアプリケーションの中で、動作状態情報が分析されて動作状態情報取得が行なわれ、プログラム選定部１７１１に渡される。なお、動作状態映像受信部１７１３は、デバイス制御部１７１２の外にあって、さらに、動作状態映像分析部を得てプログラム選定部１７１１に動作状態情報を渡す構成であってもよい。なお、携帯端末の機能構成は、カメラである動作状態情報取得部と動作状態情報送信部を付加するのみで、図５と同ようなので、図示および説明は省略する。
【０１２３】
（プログラム履歴ＤＢ）
図１８は、本実施形態に係るプログラム履歴ＤＢ１５１４の構成を示す図である。なお、図１８において、図８Ａと同様の構成要素には同じ参照番号を付して、説明は省略する。
【０１２４】
プログラム履歴ＤＢ１５１４は、図８Ａと比較して、動作状態情報１８１５が、使用ドライバ８１６と使用アプリ８１７との選定条件となっている点で異なる。他は、同様であるので、説明は省略する。
【０１２５】
（パラメータ履歴ＤＢ）
図１９は、本実施形態に係るパラメータ履歴ＤＢ１５１５の構成を示す図である。なお、図１９において、図８Ｂと同様の構成要素には同じ参照番号を付して、説明は省略する。
【０１２６】
パラメータ履歴ＤＢ１５１５は、図８Ｂと比較して、動作状態情報１８２２あるいは１９３２が、パラメータやシーケンスの選定条件となっている点で異なる。他は、同様であるので、説明は省略する。
【０１２７】
（プログラム検証／変更テーブル）
図２０は、本実施形態に係るプログラム検証／変更テーブル１７１１ｃの構成を示す図である。プログラム検証／変更テーブル１７１１ｃは、動作条件情報や動作状態情報の変化で、プログラムやパラメータを変更する必要があるか否かを検証し、変更が必要であれば再度、選定し直すためのテーブルである。
【０１２８】
プログラム検証／変更テーブル１７１１ｃは、接続されたデバイスを特定するデバイス情報２００１と、その現在の動作条件情報／動作状態情報２００２とから、検証結果の変更要否２００３を記憶する。そして、変更が必要である場合に、新たに選定された、新ドライバＩＤ２００４、新ドライバパラメータ２００５、新アプリ２００６、新アプリシーケンス２００７、新アプリパラメータ２００８を記憶する。なお、変更がなければ元のデータを記憶するか、変更ナシが記憶される。そして、ユーザが携帯端末から入力したユーザ評価を記憶する。
【０１２９】
《クラウドサーバの処理手順》
図２１は、本実施形態に係るクラウドサーバ１５１０の処理手順を示すフローチャートである。なお、第２実施形態の図１１と同様のステップには同じステップ番号を付して、説明は省略する。
【０１３０】
ステップＳ１１１１において、携帯端末からデバイスのディスクリプタを受信した場合に、ステップＳ２１１４において、携帯端末から動作条件映像と動作状態映像を受信して、動作条件情報と動作状態情報を取得する。そして、ステップＳ２１１５において、本実施形態によるプログラム選定処理を行なう（図２２参照）。
【０１３１】
また、デバイスのディスクリプタ受信でない場合、ステップＳ２１２１において、デバイスの動作中に動作条件映像や動作状態映像を受信すると、ステップＳ２１２３に進んで、受信した動作条件映像や動作状態映像から動作条件情報や動作状態情報を取得する。ステップＳ２１２５において、取得した動作条件情報や動作状態情報からプログラムの変更が必要か否かを判定する。必要なければ何もしない。プログラムの変更が必要であれば、ステップＳ２１２７に進んで、デバイスの接続している携帯端末にプログラムあるいはパラメータの変更を報知する。そして、ステップＳ２１２９において、プログラムを停止してデバイスを停止する。次に、先ほどと同じ手順のステップＳ２１１５において、プログラム選定処理を行なう。新たなプログラムやパラメータが選定されたら、ステップＳ２１３１において、プログラムを起動して、デバイス動作を新たなプログラムによって再開する。なお、デバイスのディスクリプタ受信でなく、かつ、デバイスの動作中の動作条件映像や動作状態映像の受信でない場合、ステップＳ１１３１において、携帯端末からの操作指示の受信か否かを判定する。
【０１３２】
（プログラム選定処理）
図２２は、本実施形態に係るプログラム選定処理Ｓ２１１５の処理手順を示すフローチャートである。なお、図２２において、第２実施形態の図１２Ａと同様のステップには同じステップ番号を付して、説明は省略する。
【０１３３】
ステップＳ２２１３においては、携帯端末から受信した動作状態映像から得た動作状態情報を取得する。次に、ステップＳ２２１５において、デバイス情報、動作条件情報、動作状態情報に基づいて、プログラム履歴ＤＢ１５１４を参照して、合致するプログラムを選定する。そして、選定されたプログラムに好適なパラメータを、動作条件情報、動作状態情報に基づいて、パラメータ履歴ＤＢ１５１５を参照して選定する。
【０１３４】
本実施形態によれば、携帯端末のカメラからの映像取得という、ユーザの簡単な操作によって産業機器の動作条件を取得する。したがって、産業機器の動作条件に適合した、さらに、実際の動きから動作状態を判断して、情報処理装置（サーバなど）から各デバイス制御ができる。
【０１３５】
［第４実施形態］
次に、本発明の第４実施形態に係る情報処理システムについて説明する。本実施形態に係る情報処理システムは、上記第２および第３実施形態と比べると、複数の携帯端末が一方にはデバイスがＵＳＢ接続され、他方にはセンサがＵＳＢ接続されて、センサの検出信号に基づいてデバイスが動作する。このように、複数の携帯端末に接続したデバイスの同期処理をクラウドサーバが行なう点で異なる。その他の構成および動作は、第２実施形態と同様であるため、同じ構成および動作については同じ符号を付してその詳しい説明を省略する。
【０１３６】
本実施形態によれば、１箇所にまとまっていない産業機器の動作をセンサの検出信号に基づいて制御する。したがって、高価な投資無しにも情報処理装置（サーバなど）から産業機器の動作制御ができる。
【０１３７】
なお、本実施形態においては、センサも携帯端末に接続するデバイスであり、携帯端末との関係でデバイスとも呼ぶ。また、本実施形態では、センサとデバイスとの組合せを説明したが、これに限定されるものではない。
【０１３８】
また、本実施形態においては、複数の入出力に対して１つのまとまった処理を行なう好適な構成として仮想ＰＣという概念で説明するがこれに限定されない。
【０１３９】
《情報処理システム》
図２３および図２４を参照して、本実施形態の情報処理システム２３００の動作について説明する。
【０１４０】
（動作概念）
図２３は、本実施形態に係る情報処理システム２３００の動作概念を説明する図である。
【０１４１】
情報処理システム２３００においては、クラウドサーバ２３１０が、携帯端末２２０−１にルータ２３５０を介してＵＳＢ接続する２つのセンサ２３８１および２３８２からの検出信号を受信する。そして、それらの受信信号に基づいて、携帯端末２２０−２にＵＳＢ接続するデバイス２３０の動作を制御する。クラウドサーバ２３１０は、本実施形態においては、１つの仮想ＰＣをサーバ内に生成して、まとまりのある制御を行なう。
【０１４２】
図２３においては、携帯端末２２０−１のカメラ１３６２が、装置全体を撮像することで、１つのまとまりを与え、動作状態の監視を行なっている。なお、携帯端末２２０−１と２２０−２との役割分担は、図２３の例に限らない。また、携帯端末も２つに限定されず、多数の携帯端末が使用されてよい。
【０１４３】
（動作手順）
図２４は、本実施形態に係る情報処理システム２３００の動作手順を示すシーケンス図である。なお、図２４において、第２実施形態の図４Ａと同様のステップには同じステップ番号を付して、説明は省略する。また、以下の説明では、デバイス２３０で代表させる。
【０１４４】
ステップＳ２４１１において、携帯端末２２０−１に対してセンサがＵＳＢ接続される。ステップＳ２４１３において、センサのディスクリプタが読み出される。そして、ステップＳ２４１５において、携帯端末２２０−１からクラウドサーバ２３１０に送信される。クラウドサーバ２３１０は、ステップＳ２４１７において、デバイスＤＢ２１３を参照して、センサを特定する。次に、携帯端末２２０−１は、センサの動作条件情報を取得してクラウドサーバ２３１０に送信する。
【０１４５】
クラウドサーバ２３１０は、ステップＳ２４２１において、センサ情報とその動作条件情報とに基づき、プログラム履歴ＤＢ２１４とパラメータ履歴ＤＢ２１５とを参照して、センサ用のデバイスドライバとそのパラメータを選定する。次に、ステップＳ２４２３において、センサ情報とその動作条件情報とに基づき、プログラム履歴ＤＢ２１４とパラメータ履歴ＤＢ２１５とを参照して、センサ用のアプリケーションとそのパラメータを選定する。
【０１４６】
デバイス２３０およびセンサの動作中は、ステップＳ２４３１において、センサの検出信号が携帯端末２２０−１に取得される。携帯端末２２０−１は、ステップＳ２４３３において、取得したセンサ検出情報をクラウドサーバ２３１０に送信する。クラウドサーバ２３１０（本例では、生成された仮想ＰＣ）は、ステップＳ３４３５において、センサ検出信号に基づいてデバイス制御情報を生成して、携帯端末２２０−２を中継してデバイス２３０に送信する。
【０１４７】
《クラウドサーバの機能構成》
図２５は、本実施形態に係るクラウドサーバ２３１０の機能構成を示すブロック図である。なお、図２５において、第２実施形態の図４と同様の機能構成部には同じ参照番号を付して、説明は省略する。
【０１４８】
プログラム選定部２５１１は、さらに、センサ／デバイス組合せテーブル２５１１ｄ（図２６参照）を有する。プログラム選定部２５１１は、センサ／デバイス組合せテーブル２５１１ｄにより、異なる携帯端末の接続したセンサとデバイスとを１つのまとまった装置として認識し、プログラム履歴ＤＢ２１４とパラメータ履歴ＤＢ２１５とを参照して、互いに適合するドライバとそのパラメータを選定する。また、その組合せに相応しいアプリケーションとそのパラメータとを選定する。
【０１４９】
デバイス制御部２５１２は、本実施形態では、生成した仮想ＰＣとする。デバイス制御部２５１２には、アプリケーション実行部４０７とＵＳＢデバイスドライバ実行部４１０に加えて、ＵＳＢセンサドライバ実行部２５１４を有する。なお、図２５には、ドライバやアプリケーションと接続するデバイス制御部２５１２の他の機能構成部は、煩雑さを避けるため省略している。
【０１５０】
（センサ／デバイス組合せテーブル）
図２６は、本実施形態に係るセンサ／デバイス組合せテーブル２５１１ｄの構成を示す図である。
【０１５１】
センサ／デバイス組合せテーブル２５１１ｄは、デバイスＩＤとデバイス情報と動作条件情報とを含むデバイスデータ２６０１と、センサＩＤとセンサ情報と動作条件情報とを含むセンサデータ２６０２と、を記憶する。そして、このデバイスデータ２６０１とセンサデータ２６０２との組合せに対応付けて、使用デバイスドライバ２６０３、使用センサドライバ２６０４、使用アプリ２６０５を記憶する。最後に、携帯端末からユーザが入力したユーザ評価を記憶する。
【０１５２】
《クラウドサーバの処理手順》
図２７は、本実施形態に係るクラウドサーバ２３１０の処理手順を示すフローチャートである。なお、図２７においては、本実施形態に関連のある手順のみを図示している。その他の処理手順は、図１１などの他のフローチャートを参照されたい。
【０１５３】
ステップＳ１１１１において、携帯端末からのデバイスのディスクリプタ受信であれば、ステップＳ２７０３に進む。ステップＳ２７０３においては、デバイスとセンサのディスクリプタを取得して、それぞれデバイスおよびセンサの特定をする。ステップＳ２７０５において、デバイスとセンサとが組であるか否かを判定する。組でなければステップＳ２７０７に進んで、個々のデバイスに対するプログラム選定の処理を行なう（図１１のステップＳ１１１５〜Ｓ１１１９に相当）。組であればステップＳ２７０９に進んで、デバイスとセンサを組で扱うために仮想ＰＣ生成処理を行なう（図２８参照）。
【０１５４】
（仮想ＰＣ生成処理）
図２８は、本実施形態に係る仮想ＰＣ生成処理の処理手順を示すフローチャートである。
【０１５５】
まず、ステップＳ２６０１において、クラウドサーバ２３１０に仮想ＰＣを生成する。基本的には、関連する入出力デバイスと接続する複数の入出力機能と、入出力情報間の処理をする機能とが、他の処理とは独立に確保されればよい。なお、仮想ＰＣの構成は、本実施形態の特徴ではないので詳細は省略する。
【０１５６】
次に、ステップＳ２８０３において、デバイスとセンサとの組合せに基づいて、デバイス用のドライバを選定する。次に、ステップＳ２８０５において、デバイスとセンサとの組合せに基づいて、センサ用のドライバを選定する。次に、ステップＳ２８０７において、デバイスとセンサとの組合せに基づいて、アプリを選定する。次に、ステップＳ２８０９において、デバイスとセンサとの組合せに基づいて、各ドライバやアプリのパラメータを選定する。そして、ステップＳ２８１１において、生成した仮想ＰＣで選定したパラメータを使用して、ドライバおよびアプリを起動する。
【０１５７】
本実施形態によれば、１箇所にまとまっていない産業機器の動作をセンサの検出信号に基づいて制御する。したがって、高価な投資無しにも情報処理装置（サーバなど）から産業機器の動作制御ができる。
【０１５８】
［第５実施形態］
次に、本発明の第５実施形態に係る情報処理システムについて説明する。本実施形態に係る情報処理システムは、上記第２乃至第４実施形態と比べると、携帯端末に接続されるデバイスが１つではなく、複数のデバイスが関連して動作する生産ラインを、各デバイスの携帯端末をＵＳＢ接続して、クラウドサーバが統一的に制御する点で異なる。その他の構成および動作は、第２乃至第４実施形態と同様であるため、同じ構成および動作については同じ符号を付してその詳しい説明を省略する。
【０１５９】
本実施形態によれば、複数のデバイスからなるライン制御を複数の携帯端末を介して統一的に情報処理装置（サーバなど）から制御する。したがって、高価な投資無しにも情報処理装置から複数のデバイスからなるライン制御を実現できる。
【０１６０】
なお、本実施形態においては、複数のデバイスのライン制御を行なう好適な構成として仮想ＰＣという概念で説明するがこれに限定されない。
【０１６１】
《情報処理システム》
図２９Ａ乃至図３０を参照して、本実施形態の情報処理システム２９００の動作について説明する。
【０１６２】
（動作概念）
図２９Ａは、本実施形態に係る情報処理システム２９００の第１動作概念２９００−１を説明する図である。図２９Ａの例では、クラウドサーバ２９１０−１内に各デバイスに対応する複数の仮想ＰＣ２９１２−１〜２９１２−ｎが生成される。そして、複数の仮想ＰＣ２９１２−１〜２９１２−ｎをタイミング制御部２９１１−１が制御することになる。
【０１６３】
図２９Ａは、自動車組立ラインにおける複数のロボットアーム２３１〜２３４と、溶接ロボット２９３１、２９３２の各々が、携帯端末のＵＳＢコネクタに接続された構成を示す。
【０１６４】
この場合に、複数のロボットアーム２３１〜２３４と、溶接ロボット２９３１、２９３２の各々を、１つの仮想ＰＣに割り当てても、例えば、ロボットアーム２３１〜２３４を１つの仮想ＰＣに割当て、溶接ロボット２９３１、２９３２を別の仮想ＰＣに割り当ててもよい。
【０１６５】
タイミング制御部２９１１−１は、関連するライン内のデバイス間の動作の遅延などを、デバイス間の距離や、使用されているドライバやアプリ、パラメータを考慮して、ズレが起こらないように制御する。なお、図２９Ａには、センサは示していないが、センサが接続されてもよい。
【０１６６】
図２９Ｂは、本実施形態に係る情報処理システム２９００の第２動作概念２９００−２を説明する図である。図２９Ｂの例では、クラウドサーバ２９１０−２内に１つの仮想ＰＣ２９１３が生成される。そして、１つの仮想ＰＣ２９１３をタイミング制御部２９１１−２が制御することになる。
【０１６７】
図２９Ｂは、制御基板製造ラインにおける複数のロボットアーム２３５、２９３３の各々が、携帯端末のＵＳＢコネクタに接続された構成を示す。
【０１６８】
この場合に、複数のロボットアーム２３５と２９３３が１つの仮想ＰＣ２９１３に割り当てられる。これは、複数の仮想ＰＣに分けて割り当てると、仮想ＰＣ間の通信遅延が製造に影響するためでもある。
【０１６９】
タイミング制御部２９１１−２は、デバイス間の動作の遅延などを、デバイス間の距離や、使用されているドライバやアプリ、パラメータを考慮して、ズレが起こらないように制御する。なお、図２９Ｂには、センサは示していないが、センサが接続されてもよい。
【０１７０】
（動作手順）
図３０は、本実施形態に係る情報処理システム２９００の動作手順を示すシーケンス図である。なお、図３０において、第２実施形態の図４Ａと同様のステップには同じステップ番号を付して、説明は省略する。また、以下の説明では、デバイス２３０で代表させる。
【０１７１】
ステップＳ２９１１およびＳ２９１５において、各携帯端末に接続するデバイスの動作条件情報と動作状態情報が取得されて、各携帯端末からクラウドサーバ２９１０に送信する。クラウドサーバ２９１０は、ステップＳ２９１９において、各デバイスのデバイス情報と動作条件情報とに基づいて、プログラム履歴ＤＢ２１４とパラメータ履歴ＤＢ２１５を参照して、各デバイスドライバを選定する。次に、ステップ２９２１において、各アプリケーションを選定する。
【０１７２】
ステップＳ２９２３において、タイミング制御を開始する。ステップＳ２９２５において、選定した各アプリケーションを起動し、ステップＳ２９２７において、選定した各デバイスドライバを起動する。なお、詳細なやり取りなどは、図面の簡素化のため省略している。詳細は、図４Ａなどを参照されたい。
【０１７３】
その後、ラインの動作中に、デバイスの動作条件情報と動作状態情報が取得され、携帯端末からクラウドサーバ２９１０に送信されると、クラウドサーバ２９１０は、ステップＳ２９２８において、タイミング制御の検証を行なう。次に、ステップＳ２９２９において、デバイスドライバの検証を行なう。さらに、ステップＳ２９３１において、アプリケーションの検証を行なう。
【０１７４】
《クラウドサーバの機能構成》
図３１は、本実施形態に係るクラウドサーバ２９１０の機能構成を示すブロック図である。なお、図３１において、第２実施形態の図４と同様の機能構成部には同じ参照番号を付して、説明は省略する。
【０１７５】
プログラム選定部３１１１は、さらに、タイミング制御を行なうタイミング制御プログラムとそのパラメータを選定するためのタイミング制御テーブル３１１１ｅを有する（図３２参照）。
【０１７６】
デバイス制御部３１１２は、第１仮想ＰＣ２９１２−１〜第ｎ仮想ＰＣ２９１２−ｎを有する。個々の仮想ＰＣにおいては、プログラム選定部３１１１で選定された、ドライバとアプリとが実行される。一方、デバイス制御部３１１２が有するタイミング制御部２９１１−１は、プログラム選定部３１１１で選定されたタイミング制御プログラムが実行されて、各仮想ＰＣが制御するデバイス間のタイミングを制御する。
【０１７７】
（タイミング制御テーブル）
図３２は、本実施形態に係るタイミング制御テーブル３１１１ｅの構成を示す図である。
【０１７８】
タイミング制御テーブル３１１１ｅは、ラインに含まれるデバイスについて、デバイスＩＤとライン位置や処理内容を含む第１デバイス情報３２０１〜第ｎデバイス情報３２０２に対応付けて、選定されたタイミング制御３２０３として、プログラムとパラメータとを記憶する。そして、ユーザが携帯端末から入力したユーザ評価３２０４を記憶する。
【０１７９】
《クラウドサーバの処理手順》
図３３は、本実施形態に係るクラウドサーバ２９１０の処理手順を示すフローチャートである。なお、図３３において、図２７と同様のステップには同じステップ番号を付して、説明は省略する。
【０１８０】
ステップＳ３３０１において、複数デバイスのタイミング制御が必要か否かを判定する。個々のデバイス制御であれば、仮想ＰＣ生成処理を行なう（図２８参照）。複数デバイスのタイミング制御が必要な場合はステップＳ３３０３に進んで、タイミング制御処理を実行する（図３４参照）。
【０１８１】
（タイミング制御処理）
図３４は、本実施形態に係るタイミング制御処理Ｓ３３０３の処理手順を示すフローチャートである。
【０１８２】
まず、ステップＳ３４０１において、ライン中のデバイスとその配置を、特定済みか否かを判定する。特定済みでなければステップＳ３４０３に進んで、未知のデバイスとその配置を特定する。そして、図２９Ａのように複数の仮想ＰＣを生成する構成に場合は、ステップＳ３４０５において、新たな仮想ＰＣを生成する。
【０１８３】
ライン中のデバイスとその配置が特定済みであればステップＳ３４０７に進んで、タイミング制御テーブル３１１１ｅに基づいてタイミング制御のプログラムとパラメータを選定する。そして、ステップＳ３４０９において、タイミング制御プログラムを起動する。
【０１８４】
本実施形態によれば、複数のデバイスからなるライン制御を複数の携帯端末を介して統一的に情報処理装置（サーバなど）から制御する。したがって、高価な投資無しにも情報処理装置から複数のデバイスからなるライン制御を実現できる。
【０１８５】
［第６実施形態］
次に、本発明の第６実施形態に係る情報処理システムについて説明する。本実施形態に係る情報処理システムは、上記第２乃至第５実施形態と比べると、携帯端末がクラウドサーバとデバイス間の中継点であるだけでなく、デバイス制御の一部を処理する点で異なる。例えば、クラウドサーバはＵＳＢパケットを送るのではなくて、ひとまとまりのＵＳＢプロトコルのやり取りなどの一連の動作は携帯端末に任せて、クラウドサーバは指示コマンドを携帯端末に送るように構成する。その他の構成および動作は、第２乃至第５実施形態と同様であるため、同じ構成および動作については同じ符号を付してその詳しい説明を省略する。
【０１８６】
本実施形態によれば、携帯端末の資源を有効に使用して、デバイス制御の一部を携帯端末が実行する。これにより、情報処理装置（サーバなど）の付加を低減できる。さらに、情報処理装置とデバイス間の通信遅延をなくした高速処理も可能となる。
【０１８７】
《情報処理システム》
図３５Ａ乃至図３６Ｂを参照して、本実施形態の情報処理システム３５００の動作について説明する。
【０１８８】
（動作概念）
図３５Ａは、本実施形態に係る情報処理システム３５００の第１動作概念３５００−１を説明する図である。図３５Ａにおいては、デバイスとの情報交換における、デバイスからの受信→タイミング制御→デバイスへの返信、という１サイクルを１つの制御単位の制御プログラムとして、携帯端末で処理する。
【０１８９】
図３５Ａにおいては、左から右にデバイスの処理が進むとしている。クラウドサーバ３５１０−１は、制御プログラム送信部３５１１−１を有し、制御プログラムにシリアル番号（ＳＮ）を付けて、携帯端末３５２０にダウンロードする。まず、左端図においては、携帯端末３５２０の表示画面３５２１のように、ハッチングをしたＳＮ＝１の処理が携帯端末とデバイスとの間で行なわれている。ＳＮ＝１の処理が終了すると、次の図の表示画面３５２２のように、処理はＳＮ＝２に移って、ＳＮ＝１は完了したので携帯端末から削除される。この時に、所定のタイミングで、携帯端末３５２０での処理が追いつかなくならないように、制御プログラムがクラウドサーバ３５１０−１から補充される。右端図は、表示画面３５２ｎのように、ＳＮ＝ｎの最後の制御プログラムが実行されている状態である。ＳＮ＝ｎの最後の制御プログラムが終了すると、デバイス処理が終了する。
【０１９０】
図３５Ｂは、本実施形態に係る情報処理システム３５００の第２動作概念３５００−２を説明する図である。図３５Ｂにおいては、図３５Ａよりさらに、携帯端末３５２０がひとまとまりのデバイス制御を分担する。例えば、図３５Ｂにおいては、第２実施形態における１つ１つのロボットアームへの動作指示については、携帯端末３５２０とデバイスとの間で実行する。
【０１９１】
図３５Ｂにおいては、左から右にデバイスの処理が進むとしている。クラウドサーバ３５１０−２は、動作ＩＤに対応付けて、シーケンスと制御プログラム群を記憶するテーブル３５１１−２を有し、携帯端末３５２０にダウンロードする。まず、左端図においては、携帯端末３５２０の表示画面３５２３のように、ハッチングをした“上”への動作（動作ＩＤ＝１）が指示されると、次の図の表示画面３５２４のように、動作ＩＤ＝１の制御プログラム群が実行されて、図２Ａのように、ロボットアームが上方に上がるまで携帯端末３５２０がデバイスを制御する。
【０１９２】
次に、左から３番目の図の画面表示３５２５にように、“右”（動作ＩＤ＝３）が指示されると、右端図の表示画面３５２６のように、動作ＩＤ＝３の制御プログラム群が、右ターンが終了するまで、携帯端末３５２０がデバイスを制御する。
【０１９３】
なお、携帯端末３５２０のデバイス制御の分担は、上記例に限定されない。分担をどの程度割り当てるかは、携帯端末３５２０の処理能力に負うところが大である。
【０１９４】
（動作手順）
図３６Ａは、本実施形態に係る情報処理システム３５００の第１動作手順を示すシーケンス図である。なお、図３６Ａにおいて、第２実施形態の図３Ａと同様のステップには同じステップ番号を付して、説明は省略する。
【０１９５】
ステップＳ３５３４においては、プログラム履歴ＤＢ３５１４に記憶された制御プログラムが、クラウドサーバ３５１０から携帯端末３５２０にダウンロードされる。ステップＳ３５３５においては、ダウンロードされた制御プログラムが携帯端末３５２０のプログラム実行部で実行されて、クラウドサーバ３５１０とは独立にデバイスを制御する。以下、同様である。
【０１９６】
図３６Ｂは、本実施形態に係る情報処理システム３５００の第２動作手順を示すシーケンス図である。なお、図３６Ｂにおいて、第２実施形態の図３Ａと同様のステップには同じステップ番号を付して、説明は省略する。
【０１９７】
ステップＳ３５５４においては、プログラム履歴ＤＢ３５１４に記憶された動作プログラムが、クラウドサーバ３５１０から携帯端末３５２０にダウンロードされる。ステップＳ３５５５においては、アプリケーションがクラウドサーバ３５１０と携帯端末３５２０とで互いに関連付けて分割起動する。また、ステップＳ３５５７においては、デバイスドライバがクラウドサーバ３５１０と携帯端末３５２０とで互いに関連付けて分割起動する。
【０１９８】
ステップＳ３５５９において、クラウドサーバ３５１０からデバイスの動作指示があると、携帯端末３５２０は、ステップＳ３５６１において、ダウンロードされたプログラムを実行して、指示された動作を実行する。そして、ステップＳ３５６３において、動作結果を携帯端末３５２０からクラウドサーバ３５１０に報告する。以下、同様である。
【０１９９】
《クラウドサーバの機能構成》
図３７は、本実施形態に係るクラウドサーバ３５１０の機能構成を示すブロック図である。なお、図３７において、第２実施形態の図４と同様の機能構成部には同じ参照番号を付して、説明を省略する。
【０２００】
プログラム選定部３７１１は、携帯端末３５２０にダウンロードするプログラムやパラメータを選定するためにも使用される、プログラム選定テーブル３７１１ａとパラメータ選定テーブル３７１１ｂとを有する。その際、プログラム選定部３７１１は、プログラム履歴ＤＢ３７１４とパラメータ履歴ＤＢ３７１５を参照してプログラムを選定する。
【０２０１】
デバイス制御部３７１２は、携帯端末３５２０と部分を分け合って動作するアプリケーション実行部（１）３７０１と、ＵＳＢデバイスドライバ実行部（１）３７０２を有する。なお、本実施形態においては、アプリケーションもドライバも役割分担する例を示したが、アプリケーションはクラウドサーバ３５１０で主に実行し、ドライバは携帯端末３５２０で主に実行するなど、他の分担も可能である。
【０２０２】
制御プログラム送信部３７０３は、プログラム選定部３７１１が選定して、携帯端末３５２０にダウンロードすると決まった制御プログラムを携帯端末３５２０に送信する。
【０２０３】
《携帯端末の機能構成》
図３８は、本実施形態に係る携帯端末３５２０の機能構成を示すブロック図である。なお、図３８において、第２実施形態の図５と同様の機能構成部には同じ参照番号を付して、説明は省略する。
【０２０４】
制御プログラム受信部３８０１は、クラウドサーバ３７１０の制御プログラム送信部３７０３から送信された、制御プログラムを受信する。アプリケーション実行部（２）３８０２は、クラウドサーバ３７１０のアプリケーション実行部（１）３７０１と協働して、アプリケーションを実現する。デバイスドライバ実行部（２）３８０３は、クラウドサーバ３７１０のＵＳＢデバイスドライバ実行部（１）３７０２と協働して、デバイスドライバを実現する。
【０２０５】
（プログラム履歴ＤＢ）
図３９は、本実施形態に係るプログラム履歴ＤＢ３７１４の構成を示す図である。なお、図３９において、第２実施形態の図８Ａと同様の構成要素には同じ参照番号を付して、説明は省略する。
【０２０６】
プログラム履歴ＤＢ３７１４には、携帯端末ＩＤ３９１１、携帯端末能力３９１２と対応して、使用ドライバ３９１６、使用アプリ３９１７、ダウンロード用制御プログラム３９１８を記憶する。携帯端末による分担が可能であれば、使用ドライバ３９１６や使用アプリ３９１７も、分割できる構成のものが選定される。最後に、ユーザが携帯端末から入力したユーザ評価を記憶する。
【０２０７】
なお、パラメータ履歴ＤＢ３７１５については、図示も説明もしないが、プログラム履歴ＤＢ３７１４と同様に、パラメータ履歴ＤＢ２１５にデータを追加すればよい。
【０２０８】
《クラウドサーバの処理手順》
図４０は、本実施形態に係るクラウドサーバ３５１０の処理手順を示すフローチャートである。なお図４０において、第２実施形態の図１１と同様のステップには同じステップ番号を付して、説明は省略する。
【０２０９】
ステップＳ１１１において、ディスクリプタの受信と判定された場合に、ステップＳ４０１６において、接続している携帯端末能力を取得する。そして、ステップＳ４０１７においては、本実施形態のプログラム選定処理が行なわれる（図４１参照）。
【０２１０】
また、ステップＳ４０４１の判定でデバイスの動作指示が必要な場合には、ＵＳＢパケットを送るのではなくて、ステップＳ４０４３において、動作指示（コマンド）メッセージを携帯端末３５２０に送信する。
【０２１１】
また、ステップＳ４０５１の判定でデバイス動作完了通知を携帯端末３５２０から受けた場合には、ステップＳ４０５３に進んで、完了通知を分析する。ステップＳ４０５５においては、ステップＳ４０４３で送信する動作メッセージが必要か否かを判定し、必要であれば、ステップＳ４０５７において動作メッセージを生成する。
【０２１２】
（プログラム選定処理）
図４１は、本実施形態に係るプログラム選定処理Ｓ４０１７の処理手順を示すフローチャートである。なお、図４１において、第２実施形態の図１２Ａと同様のステップには同じステップ番号を付して、説明は省略する。
【０２１３】
ステップＳ４１１４においては、携帯端末の能力を取得する。次に、ステップＳ４１１５において、デバイス情報、動作条件情報、携帯端末の能力に基づいて、プログラム履歴ＤＢ３７１４を参照して、合致するプログラムおよびダウンロード用の制御プログラムを選定する。そして、ステップＳ４１１７において、選定されたプログラムに好適なパラメータを、動作条件情報に基づいて、パラメータ履歴ＤＢ３７１５を参照して選定する。
【０２１４】
《携帯端末の処理手順》
図４２は、本実施形態に係る携帯端末３５２０の処理手順を示すフローチャートである。なお、図４２において、第２実施形態の図１４と同様のステップには同じステップ番号を付して、説明は省略する。
【０２１５】
ステップＳ４２６１において、制御プログラムのダウンロードか否かを判定する。制御プログラムのダウンロードであればステップＳ４２６３に進んで、クラウドサーバ３５１０が送信した制御プログラムを受信する。そして、ステップＳ４２６５において、受信した制御プログラムを起動する。あるいは起動可能とする。
【０２１６】
また、ステップＳ４２７１において、デバイス動作指示をクラウドサーバ３５１０から受信したか否かを判定する。動作指示の受信であればステップＳ４２７３に進んで、動作指示を分析する。そして、ステップＳ４２７５において、動作指示に対応する制御プログラム処理を行なう（図４３参照）。動作指示に対応する動作が完了すると、ステップＳ４２７７において、動作完了報告をクラウドサーバ３５１０に送信する。
【０２１７】
（制御プログラム処理）
図４３は、本実施形態に係る制御プログラム処理Ｓ４２７５の処理手順を示すフローチャートである。
【０２１８】
まず、ステップＳ４３０１において、動作指示に対応するルーチンをスタートする。そして、ステップＳ４３０３において、デバイスへＵＳＢパケットを送信する。ステップＳ４３０５においては、デバイスからのＵＳＢパケット応答を待って、応答があればステップＳ４３０７において、デバイスからの応答を分析する。ステップＳ４３０９においては、デバイスからの応答の分析からクラウドサーバ３５１０に通知が必要か否かを判定する。例えば、故障などの非常事態の場合には、通知が必要である。通知が必要であればステップＳ４３１１において、クラウドサーバ３５１０に通知する。ステップＳ４３１３においては、指示された動作のルーチンが完了したかを判定する。完了していなければステップＳ４３０３に戻って、処理を繰り返す。ルーチンが完了すればリターンする。
【０２１９】
本実施形態によれば、携帯端末の資源を有効に使用して、デバイス制御の一部を携帯端末が実行する。これにより、情報処理装置（サーバなど）の付加を低減できる。さらに、情報処理装置とデバイス間の通信遅延をなくした高速処理も可能となる。
【０２２０】
［他の実施形態］
上記実施形態では、スマートフォンのＵＳＢポートを介して通信する方式について説明したが、本発明はこれに限定されるものではない。例えば、スマートフォンと産業ロボットとの間において、Wi-Fi（登録商標）やBluetooth（登録商標）で通信してもよい。
【０２２１】
例えば、産業ロボットとスマートフォンとの間でBluetooth（登録商標）通信を行なう場合、ＵＳＢデータをBluetooth（登録商標）に乗せるデバイスを産業ロボット側に追加すればよい。スマートフォンは、Bluetooth（登録商標）通信内のＵＳＢデータを取り出し、そのデータをクラウドサーバへ送信すればよい。最初からBluetooth（登録商標）で制御を設計している場合、スマートフォンのBluetooth（登録商標）通信を介してクラウドサーバからの制御データを中継し、環境情報を提供してもよい。
【０２２２】
スマートフォンは、Bluetooth（登録商標）やWi-Fi（登録商標）で通信をしているというパラメータを、クラウドサーバへ送信してもよい。また、通信のディレイ、通信の再送率、他の通信品質情報をクラウドサーバへ送信してもよい。クラウドサーバ側は、その情報と動作の達成度を集計し、ＵＳＢからBluetooth（登録商標）通信に変更した場合、端末側で自動応答させる推奨制御範囲を割り出して、端末へ提供してもよい。また、あらかじめ定めた数の推奨制御範囲を端末の利用者に提案してもよい。
【０２２３】
以上、実施形態を参照して本発明を説明したが、本発明は上記実施形態に限定されものではない。本発明の構成や詳細には、本発明のスコープ内で当業者が理解し得る様々な変更をすることができる。また、それぞれの実施形態に含まれる別々の特徴を如何様に組み合わせたシステムまたは装置も、本発明の範疇に含まれる。
【０２２４】
提供製品の評価として、装置の稼働の達成具合だけでなく、最終製品の不具合情報、人の評価、出荷後の運用課題まで、様々な情報を、クラウドサーバに収集してもよい。そのようにすれば、その評価に応じて、デバイスを制御するタイミングを調整することにより、最終利用者の不具合を減らすことができる。
【０２２５】
また、本発明は、複数の機器から構成されるシステムに適用されてもよいし、単体の装置に適用されてもよい。さらに、本発明は、実施形態の機能を実現する情報処理プログラムが、システムあるいは装置に直接あるいは遠隔から供給される場合にも適用可能である。したがって、本発明の機能をコンピュータで実現するために、コンピュータにインストールされるプログラム、あるいはそのプログラムを格納した媒体、そのプログラムをダウンロードさせるＷＷＷ（World Wide Web)サーバも、本発明の範疇に含まれる。
【図１】
0006052576.tif 000002
【図２Ａ】
0006052576.tif 000003
【図２Ｂ】
0006052576.tif 000004
【図３Ａ】
0006052576.tif 000005
【図３Ｂ】
0006052576.tif 000006
【図３Ｃ】
0006052576.tif 000007
【図３Ｄ】
0006052576.tif 000008
【図４】
0006052576.tif 000009
【図５】
0006052576.tif 000010
【図６】
0006052576.tif 000011
【図７Ａ】
0006052576.tif 000012
【図７Ｂ】
0006052576.tif 000013
【図８Ａ】
0006052576.tif 000014
【図８Ｂ】
0006052576.tif 000015
【図９】
0006052576.tif 000016
【図１０Ａ】
0006052576.tif 000017
【図１０Ｂ】
0006052576.tif 000018
【図１１】
0006052576.tif 000019
【図１２Ａ】
0006052576.tif 000020
【図１２Ｂ】
0006052576.tif 000021
【図１３】
0006052576.tif 000022
【図１４】
0006052576.tif 000023
【図１５】
0006052576.tif 000024
【図１６】
0006052576.tif 000025
【図１７】
0006052576.tif 000026
【図１８】
0006052576.tif 000027
【図１９】
0006052576.tif 000028
【図２０】
0006052576.tif 000029
【図２１】
0006052576.tif 000030
【図２２】
0006052576.tif 000031
【図２３】
0006052576.tif 000032
【図２４】
0006052576.tif 000033
【図２５】
0006052576.tif 000034
【図２６】
0006052576.tif 000035
【図２７】
0006052576.tif 000036
【図２８】
0006052576.tif 000037
【図２９Ａ】
0006052576.tif 000038
【図２９Ｂ】
0006052576.tif 000039
【図３０】
0006052576.tif 000040
【図３１】
0006052576.tif 000041
【図３２】
0006052576.tif 000042
【図３３】
0006052576.tif 000043
【図３４】
0006052576.tif 000044
【図３５Ａ】
0006052576.tif 000045
【図３５Ｂ】
0006052576.tif 000046
【図３６Ａ】
0006052576.tif 000047
【図３６Ｂ】
0006052576.tif 000048
【図３７】
0006052576.tif 000049
【図３８】
0006052576.tif 000050
【図３９】
0006052576.tif 000051
【図４０】
0006052576.tif 000052
【図４１】
0006052576.tif 000053
【図４２】
0006052576.tif 000054
【図４３】
0006052576.tif 000055