前回、一応安定して自立できる倒立振子ロボットを作ることができました。
一方で、なんとなく実験的に、これがこのロボットの限界で、ここからセンサやらロボットアームやらを積み増せる感じではない気がしました。
今回はその辺をまとめて一旦このシリーズを終わりにしようと思います。
すぐ次の倒立振子ロボット(改)の話を始めますが。
まとめ
なぜ重心を上げたりペイロードを増すと立たなくなってしまうのか
自分の掌の上で傘を立てようと思うと、少なくとも重心が高い方がやりやすいような気がするのですが・・・この辺は運動方程式をきちんと解かないと解析的には理解ができなさそうです(後日やってみようと思います)
不具合の原因究明という観点では、仕事だったりするとフォルトツリー解析(FTA:Fault Tree Analysis)を使ったりします。正確には単なる原因究明だけでなく、各種の要因が不具合事象の発生確率にどのように影響するかを解析する手法ですが・・・
ja.wikipedia.org
折角なので試しに使ってみようとやってみたのですが、あまりうまく行きませんでした。
docs.google.com
ただ、恐らくまあこれだろうというのがあって、上のスプレッドシートにもありますが、モータの最大回転数が足りないのではないかと。
厳密には最大回転数が足りない事自体が直接の原因ではないのですが、最大回転数にキャップがかかっているため、「車輪を加速し続けられる時間」が足りないのではないかなと考えています。
本来は解析的に分析したいところですが・・・
倒立振子ロボットと一緒に地面の上を平行移動する座標系から見れば、倒立振子ロボットを倒立させる力はその座標系の加速度に比例した慣性力(+モータの反トルク)だけだと思うのです。
座標系の加速度=ロボットの対地加速度ですから、その加速度の最大値だったり、その加速度を維持できる期間というのが姿勢の維持力にかかってくるものと思われます。
ロボットの加速度の最大値自体は、FTAにも書きましたがトルクの強いモータを使っているため問題ないと思うのですが、それを発揮できる時間となると、最大回転数でキャップがかかるために非常に短い期間となってしまいますから、それが原因なのではないかと。
実際、ロボットを動かしながらモータの電流値を見てみると、ほとんどトルクを使っておらず、一方で回転数はすぐ最大値付近(約270[deg/sec])に達しており、最大トルクが過剰で逆に最大回転数が足りていないということが見て取れました。
他の人はどれくらいのモータを使っているのか
最初にこちらを調べておけよという話ですが、安定して立っている、ペイロードに余裕がありそう、不整地でも安定して動きそう、などの特徴を持つ世間の倒立振子のモータスペックを調べてみました。
(トルク、回転数は概算だったり、停動トルクと定格トルクが混ざっていたりします)
ロボット名 | モータ最大トルク[N・m] | モータ最大回転数[rpm] | 備考 |
---|---|---|---|
whipbot | 4.0 | 46 | 私が作って今回うまく行かなかったロボット。 |
RED | 1.4 @stall | 330 | 本家サイト |
Self-Balancing Autonomous Arduino Bot | 0.85 | 290 | モータ諸元 |
Self Balancing Robot | 0.85 | 540 | モータ諸元 |
半日で作る倒立振子 | 0.08 | 115 | モータ諸元 |
最後の半日で作る倒立振子は、私のロボットのコンセプトからすると小型過ぎる気がしなくもないですが、倒立振子ロボットを作ろうと思い立った際に最初に閲覧したサイトで印象に残っていたので一応掲載してみました。
この表を見てみると、感覚的にも私が使っているモータはいくらなんでも回転数が低すぎるのでは、という疑念にとらわれます。
相対的に低いからと言って直ちに絶対的に不足していることを意味するわけではないですが、先述の自分で動かしてみた感触とも合致すること、単純によりハイスペックのモータを使ってみたいということから、ここはモータを換装し、ロボット全体を再構築しようと思います。
次からは倒立振子ロボット ver.2とかそんな名前で開発記録をつけていこうと思います。