しろうさぎのblog

元ロボカッパー(Bオープン)で現在はレスコンに参加しています。気が向いたときにいろいろ書いていきます。

疑似的なトルク制御について

どうもしろうさぎです。

去年はレスコンのロボットにJY901を用いた姿勢制御を導入しました。去年度は1台だけでしたが今年は4台にこの機能が搭載してあります。

まぁこの話はどうでもよいのですが、今年はトルク制御をしてみることにしました。せっかくMaxonのRE40を積んでいてエンコーダーもついているモーターを使っているのでこれを使ってやってみようと思います。

最初に結果から。

左がトルク制御ありで右がなしです。

瓦礫をメカナムで乗り上げるときにトルク制御無しの場合引っかかってしまっているのに対してトルク制御ありにした場合すんなり乗り上げて超えることができるのがわかります。

制御方法は、エンコーダーの値の微分値をそれぞれのモーターで取得します。(実際はモーターを動かす関数に入れtて呼び出されるごとにエンコーダーの値を読みだしてコピーをしたのち初期値に戻してあげるということをしています。このモーターを動かす関数はかなり高速に呼び出されているので微分値に近いものと考えてよいと思います。)この、微分値(この微分値をDX0~DX3とする)の最大値を求めて、(この値をDX_MAXとする)それぞれのモーターで誤差率を求めます。ここで、モーター0が最大値であったとして例を示します。実際には、誤差率
X_error0=0
X_error1=(DX_MAX-DX1)/DX_MAX
X_error2=(DX_MAX-DX2)/DX_MAX
X_error3=(DX_MAX-DX3)/DX_MAX
で求めることができます。これらすべてに1を足すことで、
X_error0=1
X_error1=(DX_MAX-DX1)/DX_MAX+1
X_error2=(DX_MAX-DX2)/DX_MAX+1
X_error3=(DX_MAX-DX3)/DX_MAX+1
によってそれぞれどのくらいの加算割合でトルクを増してあげるのかを計算します。このX_error0~X_error3をそれぞれのモーター出力に掛け算をしてあげることでトルク制御を行うという寸法です。

私たちはモーターに人間の制御的には最大デューティー比50%までしかかけていないので(スピードが速すぎてカメラでの操縦がほぼ無理になるのでこのくらいに落としてある)トルク制御で1つのモーターに2倍まで出力が加算されても大丈夫なようになっています。

ここでメカナム等でベクトル計算により360度自由に動くように計算しているのであれば、それぞれの出したいパワーの変数に先ほどのX_errorを掛け算してあげた後でベクトル計算をすれば問題なく使えるはずです(これはまだ未確認)。

RE40の分解能が高く、差動で出力が出ておりノイズはほぼないという仮定のもと制御させているので本来はローパスフィルタ等フィルタを通してから使う方が望ましいとは思います。

トルク制御は本来電流センサなどから行うものらしいですが、今回エンコーダーの値のみでおこなってみました。それでも疑似的にトルク制御を行うことは十分できることがわかりました。これは段差の乗り上げなどのレスコンなどの制御だけでなくてもその他多くのものに応用することができると思います。RCJなどでは衝突検出→適正トルクをかける、などにも使うことができると思います。

最後に、このトルク制御を入れて操縦者には使ってもらいたいのですが結構これらの制御をOFFにして使われることが結構あるんですよ。操縦者からすると違和感になったりしてしまうことが多いようです。操縦者に違和感なく操縦者の補助をするような補正制御を行えるようにしていく必要があると感じています。

それでは今日はこの辺で。


レスコン愛知予選に参加してきました

どうもしろうさぎです。今年も大学のサークルからレスコン愛知予選に予選に参加してきました。

結果から言いますと、予選1位通過です!!!!!!!!!!

やったね。

神戸、愛知をあわせても1位での通過です。

とりあえずここで競技中の写真を載せます。
スクリーンショット (189)
全体

スクリーンショット (194)
瓦礫除去中

スクリーンショット (186)
棒瓦礫除去中

スクリーンショット (190)
床ダミアン救助中

スクリーンショット (188)
ジャッキ動作中

スクリーンショット (191)
家ダミアン救助中

IMG_6396
ロボットたち

5台見えるのに試合には4台しか見えないのは、コートが狭いため出すと邪魔になる&通信帯域的につらいということで予選は出さないで行くことにしました。時間的には4分41秒ということでしたが大学で練習していた時よりも大幅に遅れてしまったのですべてが完璧に動いていたら(あとでその話書く)もっと点数伸びていたと思うと若干悔しいです。

私はもちろん電気系部分の製作と組み込みソフトを担当しました。試合に出していない1台はほかの部員に作らせたのですがそれ以外はすべて私が作りました。とりあえず何事もなく動いてくれたので良かったです(PC側とコントローラの間でいろいろあって試合中やばいやばい言いながら操縦していたようです。特に3号機の足回り操縦用のコントローラのアナログスティックが使えず、PCのキーボード入力による超低速移動モードしか使えなかったためロボットがものすごい遅い動きしかできなかった)

今年は結構はやくロボットが上がってきたので長期間デバッグの時間がありバグ修正がかなりできていたのでちゃんと動いてくれたという感じです。また、去年度は分散処理をしていたのを今年はF7 1台の中央集中処理に変えたところ一つのマイコンのみデバッグするだけで済むので楽でした。(ただこれには1つが死ぬと全部死ぬという怖いところがありますが分散処理をしたところでどこかかけると大抵ダメになるので関係ないかなとか思ったり)

会場で運営(審判)の人に個々のチームは要注意チームだからといわれかなり注目をはじめから浴びていたようです。まぁ、Twitterやらなんやらで写真上げまくったうえに去年もレスコンであまりやられいなかったようなことをいろいろ導入して、でかいアームでダミアンをダイナミックに救助したりいろいろしてますし・・・・。

とりあえず1位通過ということで、何かしらのプレッシャーがあったりなかったりしますがとりあえず「期末テスト」というとんでもなく大変なものが待ち構えているのでロボットのさらなる向上のかたわら勉強のほうもちゃんとやろうと思います。

それでは今日はこの辺で。

どうもお久しぶりです。

どうもしろうさぎです。

お久しぶりです。

レスコンやらなんやらかんやらと多忙な生活をしています。とりあえず元気にやってます。

最近新しい基板は特には作っていませんが、TPIP2のカメラ切り替えが効かないって言われ無理やり外部で切り替えてあげることにしました。

それがこの基板です。
IMG_6657
載ってはいませんがAtTinyで入力を2byteで受けて、それをアナログスイッチで切り替えて出力につないでるだけです。これのβ版がすでに実装されてロボットに載ってます。いい感じに使えてるらしいです。

んでもってレスコン愛知予選に来週の日曜に出場します。とりあえずロボットのほうはちゃんとうごいていますし、去年ほど謎のバグとかはなく大丈夫だと思います。あとは本番ロボットがちゃんと動いてくれて、ダミアンを救助して帰ってきてくれることを祈るだけです。(私は今年操縦者じゃないんです。キャプテンという立場で統括するってことになってます。)

それでは今日はこの辺で。
アクセスカウンター
  • 今日:
  • 昨日:
  • 累計:

記事検索
ギャラリー
  • 疑似的なトルク制御について
  • レスコン愛知予選に参加してきました
  • レスコン愛知予選に参加してきました
  • レスコン愛知予選に参加してきました
  • レスコン愛知予選に参加してきました
  • レスコン愛知予選に参加してきました
QRコード
QRコード