GNU GLOBAL と gtags.elをインストールする

インストール

http://www.gnu.org/software/global/download.htmlからパッケージをダウンロードする。

$ tar -zxvf global-6.5.4.tar.gz
$ cd global-6.5.4
$ ./configure
$ make
$ make install

途中でcurses libraryがないと怒られる場合は、 apt-getでインストールする。

sudo apt-get install ncurses-dev

インストール箇所を確認する。

$ which gtags
/usr/local/bin/gtags

emacsの設定

(require 'gtags)
(global-set-key "\M-t" 'gtags-find-tag)
(global-set-key "\M-r" 'gtags-find-rtag)
(global-set-key "\M-s" 'gtags-find-symbol)
(global-set-key "\C-t" 'gtags-pop-stack)

使い方

ソースコードのトップディレクトリで gtags コマンドを打つ。

FlaskでAddress already in use errorとなったときの対処法

Flaskでアプリを起動しようとして,
OSError: [Errno 48] Address already in use とエラーが出る原因は
前回起動時のプロセスが死んでないこと.

対処法としてはプロセスを探して殺す事を行う.

ps -fA | grep python

または

sudo lsof -i:8080

としてでてきたプロセスを殺す

CHI2018で発表された視触覚錯覚系システムのメモ

CHI2018に出ていた視触覚錯覚に関連する論文を読んだメモ&所感.

視覚情報をいじって重さのメタファを変化させる

Breaking the Tracking: Enabling Weight Perception using Perceivable Tracking Offsets
(ACMライブラリリンク)

f:id:yusuke_ujitoko:20180429115139p:plain (引用)

上に引用した画像は論文の1ページ目に載っているもの。
ユーザの実際の手の位置とバーチャル手の位置の動きに比率をかけて視覚提示することで,
擬似的な重さを表現しているように見えて、
よくあるpseudo-haptics研究の一つかなというような印象を一見受ける。

しかし読んでみると、既存の方式(pseudo-haptics)の枠を超えた提案であることに気づいた. 簡略化してまとめると、実際の手の位置とバーチャル手の位置のズレ(offset)をユーザが気づくのは前提とした上で、「重さのメタファ表現としてそのズレをユーザが受容できる」うちは使ってしまおうというものだ。
(表題のoffsetとperceivableは本研究の重要なキーワード)

既存方式(pseudo-haptics)の枠組みでは、 ユーザの実際の体の動きに対応する視覚情報を変化させる際に、 「ユーザに対して視覚情報をイジっていることを悟らせないこと」が制約条件であった。 そのためのテクニックとして、「ユーザの実際の体を視覚提示画面から分離した配置とする」ことなどが提案されてきた。 しかしながら、上記の制約条件の範囲内で設計できる視覚情報の変化というのは小さく、その効果も結果として微小なものに留まってしまうという問題があった。

本方式では大胆にその制約条件を取り払い、ユーザに重さを提示するという本来の目的を直接めざしている。 User studyの中で示されているように、また容易に予想がつくように、 「ユーザが気づくズレ量」<<「ユーザが重さを許容できなくなるズレ量」 とできるため,システムの設計は容易になる.

本研究の背景には,視覚情報変化させるときに制約条件の厳しさに応じて方式を変えるべきという問題意識がある(と思う).

  1. システムが介入していることをユーザに気づかせない
  2. システムが介入していることをユーザに気づかせてもよい(本研究はこちら)

あとは実際の効果のほどは如何ほどかというところだが、これは本当に体験してみないとわからない。 例えば、先日のIEEE Hapticsでみたタッチパネル上でのpseudo-hapticsは、見た目ほどの効果は感じられなかった。

ピンアレイ型 形状ディスプレイの高解像度化

Visuo-Haptic Illusions for Improving the Perceived Performance of Shape Displays
(ACMライブラリリンク)

f:id:yusuke_ujitoko:20180429212116p:plain (引用)

ピンアレイ型の形状ディスプレイにおいても視触覚錯覚を使うことで,
この類のディスプレイに付随する問題を解決する研究が発表されていた.

ここではその中の1つの問題を取り上げて紹介すると...,
ピンアレイ型の形状ディスプレイでは, 各ピンを駆動するアクチュエータのサイズがピンのサイズ設計に反映され, ピンアレイによって提示できる解像度を現状大きくできていないという問題がある。
実際デコボコしているピンアレイで滑らかな形状を提示するのが難しいことが想像できる.

そこでこの問題に対して本研究では,
(1)redirectionと(2)control/display ratioの制御による方式をそれぞれ提案している.

(1)redirectionによる高解像度化

たとえば軸に対して斜めに指でなぞる場合には次のようなデコボコ形状が提示されてしまう. 画像処理ではアンチエイリアス処理を施してこれを解決するが,本ディスプレイでは不可能.

f:id:yusuke_ujitoko:20180430133943p:plain (引用)

そこで,軸上をなぞる軌道を触らせておいて,視覚刺激としてはredirectして提示することで,高い解像度の触感を提示することを狙っている.

f:id:yusuke_ujitoko:20180430133958p:plain (引用)

f:id:yusuke_ujitoko:20180429213004p:plain (引用)

(2)control/display rationの制御

また別の高解像度化の手法として, 実際の指の動きに対するバーチャル指の動きの設定比を小さくしておく手法も提案されている. こうすれば,バーチャル指のいち動作中に接触するピン数を増やすことができ,解像度としては大きくなるという.

f:id:yusuke_ujitoko:20180429213021p:plain

この研究ではピンアレイ型形状ディスプレイの他の問題(提示空間のサイズ,ピンの動作速度)に対しても,錯覚による解決案を提示しており,とても盛りだくさんの研究だ.

触覚提示のために音響を振動に変換する方式

触覚提示のための振動を用意するには、
(1)手作業で作る方法と(2)音響から変換して作る方法(と他にも色々あるが割愛)がある.

(1)手作業で作る方法は,immersionとかが出してるエディタで行う(のかな).
一方,(2)音響から変換する方法にも色々な方式があるようで、
今後需要もありそうだしまとめてみた.
CHI13のこの文献を出発点として整理.

方式をざっと分類

これだけではないと思うが、ざっと分類

# 方式 文献
1 そのまま変換 -
2 バイス特性を考慮して変換 [2-1]
3 人の音響や振動に対する知覚特性を考慮して変換 [3-1], [3-2]

1. そのまま変換する方式

特に信号処理せずそのまま変換する方式.
何も考えない.
自分が昔作ったシステムでも雪を踏んだ音を触覚提示としても使いまわしている.

2. デバイス特性を考慮して変換する方式

この論文では, デバイスとして使っているMotorola e380, e398, e680の特性として,

  • 100-300Hzの信号を出力すると振動として現れる
  • 300Hz以上だと音響として現れる

ことを考慮して,
音響の低周波を強調して変換することで振動刺激として使おうとしている.

こういったデバイス特性に考慮して変換する必要はあるはず.

3. 人の音響や振動に対する知覚特性を考慮して変換する方式

波形を人の振動知覚範囲に収めるような変換を施す方式

人の聴覚周波数の知覚範囲が20Hz~20kHzであるのに対し,
振動知覚の知覚範囲が0~1000Hzであるため,
単純に音響波形を変換すると大部分を振動として知覚できずロストしてしまうことになる.
そこで波形をN分周(周波数を1/N倍)して変換する方式が提案されている.

音響の強度・粗さ知覚と振動の強度・粗さ知覚をマッピングする方式

人の音響と振動に対する強度の知覚と粗さの知覚をマッピングするモデルを構築し,
このモデルで変換してやろうという研究
結構面白かった.

まとめ

さて,いざどの変換方式を使おうと思うと, これらの方式を俯瞰した評価がないので、どれが優れているかを一概に言えない. ベンチマークテストが欲しい.

関係ないが、google scholarで検索していくと、
この辺の特許はほんとにimmersionが強いな...という感想を抱く.