こんにちは、B3の小川です。アイトラッカーを使ったプログラムをROSで動かしてみたときの話についてです。
アイトラッカーはTobii Eye Tracker4Cを使いました。TobiiのアイトラッカーはWindowsにしか対応していないものもあるので、注意してください。アイトラッカーからは画面の左上を(0,0)とし画面の右下を(1,1)としたdouble型の視線座標を取得することができます。
ROSで動かすのでTopic通信が利用できるように「視線座標を取得してPublishするノード」と「視線座標をSubscribeしてOpenCVで画面を描画するノード」の2つのノードを作りました。
実行結果としては、右上見たら右上にテキストが描画され、左下を見たら左下にテキストが描画され……といったように意図通りの動作をしてくれました。実行中にROSのrqt_graphというコマンドを使ってノード間のTopic通信を可視化してみました。
左のtobii_publishが「視線座標を取得してPublishするノード」で、右のopencv_subscribeが「視線座標をSubscribeしてOpenCVで画面を描画するノード」です。ノード間の矢印の上に書かれているnumber_yは視線座標のy座標のことです。僕は、number_x(視線座標のx座標)が書かれた矢印とnumber_y(視線座標のy座標)が書かれた矢印があるはずだと思っていたので、この結果は意外でした。おそらくnumber_xのやり取りをnumber_yが上書きするようになってしまったのだと考えています。
僕は現在、シミュレータの中でロボットアームを動かすことを1つの目標にしているので、Gazeboの使い方を勉強しています。Gazeboの勉強がある程度できたら、Unityの勉強をしようかと検討中です。
それでは。