17
1 ソソソ USB ソソソソソソソソソソソ ソソソソソ 2004 年 12 年 24 年 年年年年年年年年年年年 4 年 年年年年年 年年年年

ソフト USB デバイスの提案とその有益性の検証

  • Upload
    lieu

  • View
    25

  • Download
    0

Embed Size (px)

DESCRIPTION

ソフト USB デバイスの提案とその有益性の検証. 2004 年 12 月 24 日 九州大学電気情報工学科 4 年 岡村研究室 中川和久. 発表内容. 背景 VRPN 対応 VR 機器 手法提案 - ソフト USB デバイス - 目的 進捗報告 課題と今後の予定. 1. 背景. VR (Virtual Reality) コンピュータグラフィックスや音響効果を組み合わせて、人工的に現実感を作り出すことを指す。 VRPN (Virtual Reality Peripheral Network) - PowerPoint PPT Presentation

Citation preview

Page 1: ソフト USB デバイスの提案とその有益性の検証

1

ソフト USB デバイスの提案とその有益性の検

証2004 年 12 月 24 日

九州大学電気情報工学科 4 年岡村研究室

中川和久

Page 2: ソフト USB デバイスの提案とその有益性の検証

2

発表内容 背景 VRPN 対応 VR 機器 手法提案 - ソフト USB デバイス - 目的 進捗報告 課題と今後の予定

Page 3: ソフト USB デバイスの提案とその有益性の検証

3

1. 背景 VR (Virtual Reality)

コンピュータグラフィックスや音響効果を組み合わせて、人工的に現実感を作り出すことを指す。

VRPN (Virtual Reality Peripheral Network) 仮想実現システムで使用されるデバイスのアプリ

ケーションプログラムとネットワークを透過的に(距離を全く意識することなく)実行できるように設計されたライブラリである。

Page 4: ソフト USB デバイスの提案とその有益性の検証

4

1. 背景 VRPN の本質

様々な VR 機器に対して一律のソフトウェアインターフェイスを提供する。

素早い応答で VR 機器にネットワーク的に透過なアクセスを実現を可能にする。

VRPN での問題点 入力情報が限定される。 ライブラリに沿ってデバイスの開発が行われてい

る。

Page 5: ソフト USB デバイスの提案とその有益性の検証

5

2. VRPN 対応 VR 機器 一律のソフトウエアインターフェイス

VRPN のドライバは多数の機能を備えた VR 機器を、 Device type という形で細分化させて捉える。

vrpn_Tracker_Remote

vrpn_Button_Remote

vrpn_ForceDevice_Remote

Internet

vrpn_Connection

Poses( 位置 ) 、 Pose velocities( 速度 ) 、 Pose accelerations( 加速度 ) を報告する。

1 つ以上のボタンに対して press とrelease のイベントを報告する。

Server 側から送られる情報で、 Client側が表面を特定し、反力を起こす。

Page 6: ソフト USB デバイスの提案とその有益性の検証

6

2. VRPN 対応 VR 機器 Device type の存在

VRPN 対応 VR 機器のインターフェイスは Client側のライブラリに準じたものになってしまう。

ライブラリに属さない VR 機器を VRPN に対応させるときはどうするのか? VRPN である以上、ライブラリに属さないような新し

いデバイスの可能性が生まれない。 多種多様な USB デバイスも VRPN に組み込むことは

出来ないだろうか?

Page 7: ソフト USB デバイスの提案とその有益性の検証

7

3. 方法提案 - ソフト USB デバイス -

ソフト USB デバイス デバイスドライバとして実装しており、 OS やア

プリケーションからはローカルで一般的な物理的USB ハブと認識されるため、透過的に(全く意識することなく) USB を使用することが出来る。

Internet

PC1 のユーザーアプリケーションは、 遠隔にある PC2 に接続されている外付け HDDが、あたかもローカルの PC1 に接続されているかのように認識し使用できる。

PC1 PC2

外付け HDD

USB 接続

Page 8: ソフト USB デバイスの提案とその有益性の検証

8

3. 方法提案 - ソフト USB デバイス -

ソフト USB デバイスの提案と考察 /dev/usb_remote の作成

ユーザーアプリケーションからは遠隔の計算機に接続されているデバイスのスペシャルデバイスファイルが、ローカルの計算機にマウントされているように見えるようにする。

ユーザーアプリケーションからはデバイスの位置を考慮することなく、そのデバイスに対してシステムコールを発行し、データの読み出しや、パラメータの変更をすることが可能になる。

Page 9: ソフト USB デバイスの提案とその有益性の検証

9

4. 目的 ソフト USB デバイスを導入することにより、

VRPN 対応の新たなデバイス実現への有益性を検証 デバイスを操作するプログラムシンタックスの

比較を行う。 システムコールを直接 /dev/usb_remote に送る方法 VRPN でのライブラリに沿った方法

VRPN に沿った ioctl システムコールの提案を行う。

Page 10: ソフト USB デバイスの提案とその有益性の検証

10

4. 目的 Linux のファイルシステムに則ったデバイス

操作 VRPN では server-client 間のアプリケーションレ

ベルでのデバイスの操作を行っている。 どのような機器でも入力デバイスとして VRPN

に組み込むことが出来るようになるのが目標である。

ライブラリを新たに記述する手間を、システムコールの定義・再利用という形で省く。

Page 11: ソフト USB デバイスの提案とその有益性の検証

11

5. 進捗報告 VRPN ライブラリの制約

それぞれの Device type に分類された入力データは、 Device type が指定した関数により送られ、 Device type が指定したメモリ先に格納される。 vrpn_Button_Remote

ボタンの識別ナンバーは button に格納される。 そのボタンの状態は state に格納される。 vrpn_BUTTONCB でボタンの情報をコールバックする。

/* button のメッセージを出力させる関数 ( コールバックハンドラー ) */void handle_button(void *userdata, const vrpn_BUTTONCB b) { printf("Button %d is in state: %d \n", b.button, b.state);}

Page 12: ソフト USB デバイスの提案とその有益性の検証

12

5. 進捗報告 VRPN ライブラリを用いたプログラミング

例 (1/2) VRPN デバイスの更新を 10 回分表示するプログ

ラム。 遠隔の client 側( myhost )に機器がある場合を

考える。

int main() { int count; vrpn_Tracker_Remote *tkr; vrpn_Button_Remote *btn; tkr = new vrpn_Tracker_Remote("Tracker0@myhost");/* Tracker を開く */ tkr->register_change_handler(NULL, handle_tracker); /* Tracker の callback handler をセット */ btn = new vrpn_Button_Remote("Button0@myhost"); /* Button を初期化 */ btn->register_change_handler(NULL, handle_button); /* Button の callback handler をセット *//* 10 回分表示させる while loop */count = 0;while(count < 10){

tkr->mainloop();btn->mainloop();count++; }}

Page 13: ソフト USB デバイスの提案とその有益性の検証

13

5. 進捗報告 VRPN ライブラリを用いたプログラミング例

(2/2)int main() { int count; vrpn_Tracker_Remote *tkr; vrpn_Button_Remote1 *btn1; vrpn_Button_Remote2 *btn2; vrpn_Analog_Remote *ana; tkr = new vrpn_Tracker_Remote("Tracker0@myhost1"); /* myhost1 の Tracker を開く */ tkr->register_change_handler(NULL, handle_tracker);   /* Tracker の callback handler をセット */ btn1 = new vrpn_Button_Remote1("Button0@myhost1");/* myhost1 の Button を初期化 */ btn1->register_change_handler(NULL, handle_button); /* Button の callback handler をセット */ btn2 = new vrpn_Button_Remote2("Button0@myhost2");/* myhost2 の Button を初期化 */ btn2->register_change_handler(NULL, handle_button); /* Button の callback handler をセット */ btn = new vrpn_Analog_Remote("Analog0@myhost2"); /* myhost2 の Analog を初期化 */ btn->register_change_handler(NULL, handle_analog); /* Button の callback handler をセット *//* 10 回分表示させる while loop */count = 0;while(count < 10){

tkr->mainloop();btn1->mainloop();btn2->mainloop();ana->mainloop();count++; } }

Page 14: ソフト USB デバイスの提案とその有益性の検証

14

5. 進捗報告 システムコール

vrpn_○○○_remote 関数の機能をを ioctl システムコールで処理できるよう実装する。 ネットワークに透過的な VR 機器を実現させるのは

ソフト USB デバイスである。 ボタン入力に関するデータの取り扱い方を定義する。

ボタンの識別ナンバーとそのボタンの入力データを格納するためのメモリ領域を確保する必要がある。

Page 15: ソフト USB デバイスの提案とその有益性の検証

15

5. 進捗報告 システムコールを用いたプログラミング例

int main() { int count;Int fd1;Int fd2;fd1=open=(“/dev/usb_remote0”);fd1=ioctl(fd1, GET_INPUT_DATA, parameter); /* 遠隔 myhost1 のデバイスについて必要な情報をメモリから選択 */fd2=open=(“/dev/usb_remote1”);fd2=ioctl(fd2, GET_INPUT_DATA, parameter);/* 遠隔 myhost2 のデバイスについて必要な情報をメモリから選択 *//* 10 回分表示させる for loop */for(count=0; count<10; count++){

read(fd1,”r”);read(fd2,”r”);printf(); /* 適宜表示する */ }close(fd1)close(fd2)}

Page 16: ソフト USB デバイスの提案とその有益性の検証

16

6. 課題と今後の予定 VRPN 対応機器の研究

既存の機器についての報告を行う。 それらがいかにシステムコールでデータの入出力

が出来るのかを考察する。 既存の VRPN では対応しきれない機器、もしく

は既存の USB 機器について、ソフト USB デバイスを用いるときどのように実装するのかを研究する。

ソフト USB デバイスの実現方法についての具体的な考察

Page 17: ソフト USB デバイスの提案とその有益性の検証

17

6. 課題と今後の予定 12 月下旬

VR meeting に参加(大分大学) 1 月

VR 機器についてのプログラミング的考察 ソフト USB デバイス実現のためのアプローチ 卒業論文の執筆

2 月 2 月 14 日に卒業論文締切 口頭試問の準備 2 月 18 日に口頭試問