盲ろうの方のコミュニケーション手段として点字や指点字や指文字が用いられます[1]。情報機器が利用できるようになれば、遠隔でのコミュニケーションや情報の入手に大きな進展が期待されることからさまざなま検討が行われています。
ここでは、指文字表示装置を使ったコミュニケーションツールを検討してみました。
指文字表示装置が実現すれば、遠隔地の方との指文字コミュニケーションや、インターネットからの情報入手などが可能となります。いくつかの表示装置が開発され[2][3][4]、特にTATUM[4]は完成度が高いように見受けられます。
これまでの指文字表示装置は、実際の手の形や動きに近づけるために、多くのサーボモーターを使っていて(例えばTATUMでは15個)、結果、大きく重くそして複雑な装置となっています。ここでは、5指に対応する5個のサーボモーターを使い、簡素な指文字表示装置を試作しました。「符号化」に着目し、指文字をなるべく模擬しつつ、互いに識別できるような指文字の形にしました。正確には「指文字符号表示装置」と表現した方がいいのかもしれませんが、ここでは「指文字表示装置」とします。装置本体の重さは56gです。モバイルバッテリーで動作し、ポケットに入る程度の大きさです。
なお、指文字とは別に指点字があり、指点字も支援者との間で指に直接触れながら用いられます。指点字の入出力装置はグローブを用いたものが複数開発されており、一部実用化されているようです[5]。
まず、親指~小指の5指のそれぞれを伸ばすか曲げるかで文字を表現することを考えます。図1左は「あ」の指文字ですが、親指を伸ばし(0)人差し指~小指を曲げる(1)ので、「01111」と2進5桁の符号語で表現することができます。各指の伸ばし(0)と曲げ(1)の組み合わせで表現できるのは、2進5桁では00000~11111の32通りにとどまります。

これを拡張するひとつの方法は、手の向きなどもう1桁増やすことで、そうすれば64通りの文字を表現することができます。6点で構成される点字に相当する表現能力となります。
ここでは桁を増やさずに、親指~小指の5指のそれぞれを3つの曲げ角度、すなわち指を伸ばす(0)、指を小さく曲げる(1)、指を大きく曲げる(2)のいずれかをとるように拡張することを考えます。図1左の「あ」の指文字は、親指を伸ばし(0)、人差し指~小指を大きく曲げる(2)ので、「02222」と3進5桁の符号語で表現することになります。図2右の「か」の指文字は、親指を小さく曲げ(1)、人差し指と中指を伸ばし(0)、薬指と小指を大きく曲げる(2)ので、「10022」となります。各指の曲げ角度の組み合わせで、3進5桁では00000~22222の243通りの表現が可能となります。
このように、指文字の形ををなるべく模擬するように、あいう..., ABC..., 012...のそれぞれの文字の符号語を作成しました。これをここでは指文字符号と呼びます(付録1)。指文字には、手の向きや動きなど、指の曲げ角度だけでは表現できない文字が多数あり(表中の * 印)、同様のことは[2][3]にも記載されています。試作した表示装置では、これらの文字に付録1の表のような符号語を割り当てていますが、これは暫定的なものであり、今の段階では検討の対象外とします。
上記の考えのもとに、5個のサーボモーターからなる指文字表示装置を作り、Webアプリで制御するシステムを開発しました(図2)。
図左は、指文字表示装置とパソコンをUSB接続し、パソコンのWebブラウザで操作する様子を表しています。図右は、スマートフォン(Android)とBLE(Bluetooth Low Energy)接続した様子を表しています。パソコンやスマートフォンでは、Webサーバに置かれた指文字表示Webアプリをブラウザで表示して操作します。

Webアプリ(fingercode.html)はサーバではなくパソコン上に置いてもよいので、利用者がアレンジすることも可能です。
試作した指文字表示装置の1号機と2号機は図3のようなものです。5個のサーボモーターで各指の曲げ角度をコントロールしています。指はサーボモーターのホーンにビニールチューブを固定した簡素な作りになっています。

主な仕様を表1に示します。また、回路図とケースの加工図は付録2に記載します。
| 項目 | 1号機 | 2号機 |
|---|---|---|
| 外観 | ![]() |
![]() |
| サーボモータ | GWS servo PICO 5個 (重さ5.4g トルク0.7kgcm) |
DM-S0020 5個 (重さ2.1g トルク0.2kgcm) |
| ケース | PET樹脂板に固定 | Takachi SW-95 |
| 本体の大きさ | 18cm×13cm×1.8cm | 15cm×12cm×1.8cm |
| 本体の重さ | 62g | 56g |
| 指 | サーボモータのホーンに6mmφ長さ4~6cmのビニールチューブを固定 | |
| スマートフォンやパソコンとの接続 | USB接続またはBLE(Bluetooth Low Energy)接続 | |
| 電源 | USB接続の場合はパソコンより供給 BLE接続の場合はモバイルバッテリー | |
| 指の曲げ角度 | アプリ上で設定 | |
| 指文字の表示速度 | 1文字の保持時間をアプリ上で設定(0.5~1.5秒) | |
| 制御用マイコン | Seeeduino ESP32-S3 | |
| 開発環境と制御プログラム | Arduino IDE 2.3.7, Adafruits TinyUSB, Arduino-BLE-MIDI, ESP32servo 3.0.9 webio2_ESP32.ino(WebIO2のプロトコルは付録3) ArduinoIDEで[ツール][USB-Mode]をUSB-OTG(TinyUSB)にして書き込む。 | |
(注意) BLE接続の場合、現時点では接続が途切れることがあり、動作が多少不安定でした。また、ESP32servoは新しいバージョンではdetachがうまく動作しないので3.0.9を使用します。
指文字表示装置に指文字を表示するアプリを作成しました(表2)。
| 項目 | 内容 |
|---|---|
| Webブラウザ | WebMidiAPIを利用できるブラウザ BLE(Bluetooth Low Energy)接続の場合はWebBluetoothAPIを利用できるブラウザ (Can I useで確認できる) 動作の確認はパソコン(Windows11)のChromeブラウザとスマートフォン(Android)のChromeブラウザで行った |
| 操作用Webアプリ | fingercode.html, wordlist.js, webio2.js(WebIO2のプロトコルは付録3) |
| 指文字符号 | 付録1に記載 |
| 操作対象 | ブラウザが動作しているパソコンやスマートフォンに接続した装置 |
| 指文字表示の速さ | 1文字の保持時間 0.5~1.5秒 |
| 指の曲げ角度のプリセット機能 | 各指 伸ばした状態(0)と大きく曲げた状態(2)それぞれについて0~180度で設定 小さく曲げた状態(1)はその中間値とする ホームポジションは伸ばした状態から1/4曲げた位置とする |
このページ冒頭のボタンを押すと、指文字表示アプリが起動し、USB接続の時は図5左の画面が現れるので、「許可する」のボタンを押します。画面左上に接続された装置の名称が
BLE接続の時は、画面上のボタンを押すと、図5右の画面が現れるので、装置を選択し「ペア設定」のボタンを押します。画面左上に接続された装置の名称が
装置はパソコンからはMIDIデバイスとして認識されるようになっています。もしも図の接続許可の画面が現れない場合は、ブラウザの設定を確認します。Chromeの場合は[設定][プライバシーとセキュリティ][セキュリティ][サイトの設定][koyama.verse.jp][MIDIデバイスの操作と再プログラム]が「ブロック」になっていれば「確認(デフォルト)」または「許可」に変更します。


接続後のブラウザの操作画面は図6左のようになります。
初回はサーボモーターの動作角度を設定します。ページ末尾のボタンを押すと、図6右の表示になり、各指の伸ばした状態(0)と指を大きく曲げた状態(2)の角度を画面のスライダーで調整します。小さく曲げた状態(1)とホームポジションについては、表2のように自動的に決まります。各指の調整を終えたら、ボタンを押します。設定は異なる装置の接続を考慮しデバイス1~デバイス3の3パターンを登録できます。設定値はブラウザに保存されるので、別のパソコンやスマートフォンで使う場合は改めて設定する必要があります。

入力欄に文字を入力し(図では「あいさつ」)、ボタンを押すと、指文字表示装置は1文字ずつ指文字の形に変化し、利用者はこれを触って読み取ります。ブラウザ画面にも、指の動きに連動して指文字の形が表示されます(図7)。

指文字表示の速さ(1文字の保持時間 0.5~1.5秒)はスライダーで調整できます。途中で停止する場合はを押します。
指文字の形と画面表示は図8のようになります。全部の文字を表示し終えると、装置はホームポジションの位置になります。
| (1号機) | ![]() | ![]() | ![]() | ![]() |
| (2号機) | ![]() | ![]() | ![]() | ![]() |
![]() | ![]() | ![]() | ![]() | |
| 02222 「あ」 | 02220 「い」 | 02220 「さ」 | 11000 「つ」 |
以下は動作の様子です。
市販のSainSmart社製の5フィンガーでも試してみました。回路もソフトも共通なので、サーボモーターを配線しなおすだけでそのまま動作します。指の動きは多少リアル感がありましたが、手で触れた時に形を保持できませんでした。
5フィンガー以外にも指の動きをコントロールできる装置はいくつか市販されているようですが、指文字の「識別」を優先して考えた場合は、リアルさを追及する必要はないと考えています。
練習用、あるいは評価用に、有意味の単語1語および10語をランダム表示する機能を設けました。登録されているのは「あいさつ」「えき」「きいろ」など2~4文字からなる193語で、付録1の*印の文字は含まれず、1語中に同じ文字も重複していません。また、濁点や半濁点や「ー」は含まれず、「っ」「ゃ」「ゅ」「ょ」の拗音はそれぞれ「つ」「や」「ゆ」「よ」としました。
ボタンを押すと、入力欄にランダムに1語が表示され、再生が開始します。ボタンを押すと、連続して10語が表示されます。語と語の間はいったんホームポジションに移動します。
TATUM[4]では毎秒1文字程度が想定されているようなので、ここでも保持時間を0.5~2秒で設定できるようにしました。
他の方式と比較したものが表3です。比較といっても実際に実験したわけではなく、計算値や文献に紹介されている値を並べてみただけなので、目安にすぎません。
| 方式 | 読み取り速度 | 備考 |
|---|---|---|
| 指文字装置 | 毎分60文字 | 保持時間を1秒とした時 |
| モールスバイブレーション | 毎分25文字 | dotを 200ms とした時の「あ」~「ん」の単純平均 (モールス通信は毎分50~150文字程度) |
| 点字バイブレーション | 毎分18文字 | dotを 200ms とした時 |
| 点字 | 毎分100~300文字 |
今はようやく表示装置やアプリが動作するようになった段階です。私自身、これまで盲ろうの方と接することはなかったので、今後、当事者や支援者の方々のお話を伺いながら、改善していきたいと思っています。
(1) 指文字表示装置の改良
装置は、指文字の形を読み取りやすいように工夫を重ねる必要があります。
その際、指文字の特徴を認知しやすいような工夫が重要です。形状や動きの忠実さを追及すると、装置が複雑になり高価になってしまうので、現状(5個のサーボモーター)の範囲で検討したいと思っています。一方で、5フィンガーのように安価な装置も市販されるようになったので、今後利用できる装置が増えてくれることを期待しています。
なお、現在は指の曲げ角度を大きく変化するように設定していますが、実際の使用時には「識別できる程度に」小さくしても構わないように思います。
(2) 符号語の割り当て
実際の指文字は手の向きや回転や動きなど複雑ですから、5指の曲げ角度だけで忠実に表現できるわけではありません(付録1の表中*印)。この表では、*印の符号語を「指文字となるべく近い形」になるように暫定的に決めています。一方で、「他の符号語となるべく違う形」になるように符号語を決めて識別しやすくするという考え方もあります。
この表は十分に検討したものではありませんので、今後検討を重ねて、変更すべき箇所は変更する必要があります(特に*印)。
(3) 指文字入力装置
ここに記載したのは「指文字表示装置」ですが、今後は「指文字入力装置」も検討したいと思っています。3元符号化で指文字の表現を簡素化することで、指文字を模擬した入力装置も作れるのではないかと考えています。
入力装置と出力装置を合体できれば、盲ろう当事者同士が指文字を使って遠隔でコミュニケーションをとることも可能になります。
...
検討課題はたくさんありますが、いつか、このような装置をポケットに入れて、移動先でメールを読んだり書いたりできる日がくるといいのですが。
(謝辞) このページおよびWebアプリでは、ちびむすドリルさんで公開されている指文字のイラスト[6]を許可を得て使用しました。ご快諾に感謝申し上げます。
[1] 河村(編): 盲ろう者と触手話, 国立リハビリテーションセンター, 2005
[2] 關, 森, 横井: ろうベースの盲ろう者の自立した情報獲得を目指した触指文字ロボットの開発, WIT2016-87, 2017.
[3] 安, 濱, 中津, 村岡: ホビー用ロボットハンドを用いた指文字表現, IPSJ Vol.2018-AAC-8 No.6, 2018.
[4] S.Johnson, et.al, An Adaptive Affordable Open-Source Robotic Hand for Deaf and Deaf-Blind Communication Using Tactile American Sign Language, IEEE EMBC 2021.
[5] 山蔦: Ubitone~盲ろう者用携行型生活支援・コミュニケーションデバイス, 新ノーマライゼーション, 2023.
[6] 手話の指文字表, ちびむすドリル, https://happylilac.net/sk1805311413.html
親指~小指の5指のそれぞれが3つの曲げ角度(0,1,2)のいずれかをとるとすれば、00000~22222の243通りの表現が可能です。これを符号語と考え、指文字の形ををなるべく模擬するように、あいう..., ABC..., 012...のそれぞれの文字をあてはめたものが下表です。手の向きや動きなど、指の曲げ角度だけでは表現できない文字が多数あり、表中の * 印は暫定的に割り当てたものとなります。


(2) ケース加工図

(3) 回路図
| 機能 | send(PC → I/O) | receive(I/O → PC) | JavaScript関数 | 備考 | ||||
|---|---|---|---|---|---|---|---|---|
| byte1 | byte2 | byte3 | byte1 | byte2 | byte3 | |||
| analogWrite servo motor |
11110000(F0) 01111111(7D) 01101111(6F) |
00pppppp 0vvvvvvv 0vvvvvvv |
11110111(F7) | analogWrite(pin, val) servo(pin, val) servo(pin, val, t) |
pin 0~63 を 0-255 に pin 0~63 のサーボモーターを 0-180 に tを指定した場合はt[ms]後に停止 | |||
| analogRead | 11110000(F0) 01111111(7D) 01101111(6F) |
00pppppp 0vvvvvvv 0vvvvvvv | 11110111(F7) | analogRead(pin) | pin 0~127 の値 0-1023 (20ms毎に更新) | |||
| pinMode | 11110000(F0) 01111111(7D) 01110000(70) | 00pppppp 0100mmmm |
11110111(F7) | pinMode(pin, mode) | pin 0-63 のpinModeをmode 0-15 に | |||
| digitalWrite | 11110000(F0) 01111111(7D) 01110000(70) | 00pppppp 0000000v |
11110111(F7) | digitalWrite(pin,val) digitalWrite(pin,1,t) |
pin 0-63 を 0/1 に tを指定した場合は t[ms] 1に | |||
| digitalRead | 11110000(F0) 01111111(7D) 01110000(70) |
00pppppp 0000000v | 11110111(F7) | digitalRead(pin) | pin 0-63 の値 0/1 (20ms毎に更新) | |||
| SystemReset | 11111111(FF) | ioreset() | SystemReset | |||||