cvl-robot's diary

研究ノート メモメモ https://github.com/dotchang/

(メモ)Linuxで接続したjoystickが抜けてしまったことを検出する方法

Linux上のプログラミングでjoystickの情報を取ることは、joystick-apiを使って大体全部簡単にできますが、ひとつだけ、取り外されたことだけは通知してくれません。
ゲーム用途なら途中で抜けてしまっても、たいした問題にはならないと思いますが、ロボットやドローンの制御をしている際にコントローラが抜けてしまうと、暴走の原因にもなりかねません。
そこで、ちゃんとコントローラが刺さっているかどうかをチェックしたい、という需要があると思います。
ここでは、その方法のメモをまとめます。

結論としては、時々sys/stat関数を使ってデバイスの存在を確認する、です。

#include <sys/stat.h>
#define JOY_DEV "/dev/input/js0"

int joy_connection_check()
{
  struct stat buf;
  int ret = stat(JOY_DEV, &buf);

  return ret; // 0: connected, -1: disconnected
}
Linuxでjoystickを使えるようにするまでの設定

簡単ですが、忘れてしまうのでメモ。

> sudo apt-get install joystick
> sudo apt-get install jstest-gtk
> jstest-gtk