圧力センサーの装着とデータ

片足に四個、両足で八個の圧力センサー(FSR402)を足の裏に装着した。生成されるデータは、抵抗値でそれを電圧値に変換して、ADコンバーターMCP3208でデジタルデータにして、ロボット上のRaspberryPIで処理・出力させてみる。

人間にとっても、足の裏の微妙な圧力感覚はすごく大事だ。靴下と足の間に小さな異物があっても、気になって仕方がない。昔、経済学者の間で、博士の学位を取ることを「足の裏の米粒」と表現していたことがある。「価値はないが、取らないと気になって仕方がない」ものというわけだ。

写真のように、ロボットの足の裏とセンサーの間にワッシャーを噛ませた。そうしないと、平たいものに平たいものつけても圧力が出ない。ロボットが、配線のお化けのようになってきた。

足の裏に磁石付き絆創膏を張ったような感じだ。毎秒10個のセンサーデータを10秒間とったデータは以下のようなものだ。

縦軸の出力値は以下のように変換している。

仕様書によれば、ADコンバーターMCP3208の出力値は

V_{out} =\frac{4096\times V_{in}}{V_{ref}}


で出力される。4096は、12ビットで出力されているということだ。前の記事にもあるように、V_{ref}は、3.3Vである。
一方、記事の図にあるように、FSR402には、5.1KΩ(5100Ω)の抵抗をかましている。学校で習ったようにIR=Vを応用する。
流れる電流は、FSRの抵抗値をRとすると、FSRの両端の電圧V_{in}

V_{in}=\frac{5.0}{R+5100}R


である。
これを変形すると、MCP3208のデータ出力をV_{out}として、

R=\frac{16830V_{out}}{20480-3.3V_{out}}


となる。これがΩの抵抗値であるから、それをKΩに変換したものが、上記の縦軸である。

この抵抗値までは、ロバスト(頑健性)な値だが、では実際これがどれだけの圧力かというのは、いろいろな誤差もある値になる。仕様書によればおよそ以下のような関係があるという。
縦軸が抵抗値(KΩ)で横軸が重力加速度で表した力だと思う。その力が幾つだからというのは、あまり関係がない。先の図では、だいたい1kΩから10kΩの範囲の値を示しているので、その間の圧力との関係がおよそ上記のようなものだということを知っていれば良いと思う。縦軸は対数目盛になっているので、原点に対する凸性は、実際の値ではもっと厳しくなっている。

そこまでわかったところで、先の図の8個のセンサーの出力を見てみよう。上に行くほど圧力が弱くなっているので、足が浮き加減になると10に近い値まで跳ね上がっている。

じゃあ、全体として何が言えるの?と聞かれても、私には難しい。そこで、人工知能にこれを捉えてもらって、ロボット自身の姿勢制御に使いなさいとうことなのだ。さらに、加速度センサーも追加するので、そういう、ロボットの感覚情報を、プログラマブルに、外側の人間がああだこうだというのは、意味がない。

さしあたって、加速度センサーを、足のむこうずねと、足のひらに4個追加してみよう。センサーをフル装備させるのだ。