開発日誌【ラムダ】その1
トップへ戻る
開発日誌インデックスへ
前のページへ
次のページへ
開発日誌を更新しなくなって1年半が経っていた。
その間何もやっていなかったというとそうではなくて、ロボワンに初めて出場して1歩しか歩かずにフリーズして恥をかいたり意外と最近では無いほどに密度濃くロボット開発をやっていたりしました。
でも、フェイスブックにお手軽に近況を上げたりしていたのですっかりとこちらの方は更新しなくなっていました。
開発の記録としてはフェイスブックよりはこちらの方が良くて、やはり整理のためにも開発日誌をつけていこうと思いなおしました。
最近はやはりロボットは人に媚びるのではなく仕事をやってナンボだ。と強く思い始めて、そうすると2足歩行ロボットってどうなんだろう?と思いました。 まあだからと言ってタイヤとかクローラーとかはたまたクローンに行くのではなく、ボストンダイナミクスのスポットミニみたいな4足で仕事をさせるという道がよかろうと思ったりしています。
また、ディープラーニングの進歩は興味深く、いままで自律ロボットの認識系、ビヘイビアをどうやって構築するのか思い悩んでいた部分への一つの望みが出てきたなと。ここはディープに勉強する価値があるだろうと思ってみたり。
またまた、もうすぐ終わるサラリーマン人生の先の人生を考える上でどういう取り組みを行うのかを考えたりしています。
そういうわけで、ラムダ1本にかかりっきりになるわけにも行かず、いくつかのプロジェクトを乗り換えつつ進めています。
ここではそのプロジェクトをプロジェクト別に記録していこうと思います。
スタイルとしては依然同様失敗上等の開発日誌の体で進めます。つまりここに書いてることは正解とは限りませんのでご了承ください。
このページはラムダの開発を専門に書きます。
トリムをしっかり取るとそこそこきれいに歩くラムダ。でも、ネジを締めなおしたりして少しトリムがずれると途端に不安定になる。
機構が複雑だから緩むネジも多いし、トリム調整も手間がかかる。 なので、オートキャリブレーション機能を実装します。
去年の今頃も同じような事をしてたんですが、その時はうまく行きませんでした。
今回は制御周期を上げて、電源系の見直しをしたりしてハード的には随分改善したはずなので再トライです。
※制御周期を上げた話とか電源系を見直した話は追々追記していこうと思います。
ラムダの足裏センサーは足の4隅に置いた圧力センサー。
足裏センサーのデータを見ると、着地は当たり前だがばらばら 足毎のセンサー値を合計すると足踏みの様子がそこそこ見えるけれど、センサー個別だとあんまりよくわからん。
「まずは計画」
1.予めそれなりにトリム調整を行う。特に足先は揃える。
足先を揃えるってのは現ラムダのセンサーでは無理。カメラで見るとか治具を使わないとダメ。 とりあえずはここはマニュアルで調整します。
2.足首ROLL軸のトルクを抜く。もしくはコンプライアンスを緩くする。
片足で立った時に足裏が路面に完全接地している必要があります。両足で普通に立っていても足裏が歪んでいると片足になった途端にアンバランスになる。
足首PITCH軸のトルクを抜くと立っていられないですが、ROLL軸は両足で立っている分にはトルクを抜いておいても問題ない。
ROLL軸のトルクを抜いておけば常に各足の左右のセンサー部は接地する事になる。
3.足の長さを揃える。
ここからはオートチューンです。
両足の長さを揃えます。基本的なトリムは済んでいる前提なので股関節ROLL軸はまっすぐになっている前提。
この状態で足の長さが違うと胴体のROLL軸が垂直ではなくなります。ですので片足の長さを調整して胴体ROLL軸を垂直に調整します。
4.左右の荷重バランスを調整する。
基本的にシンメトリー構造なんだけど、サーボを裏返して使ったり裏返さないで使ったりしているので厳密には左半身と右半身で重心位置にずれがあります。
これの微調整を行います。 各足の足裏センサーの合計値が左右で同一になるように調整します。調整は胴体の左右並進パラメータを使います。
5.前後の荷重バランスを調整する。
前後はもちろんシンメトリーではないので調整が必要。ラムダは質点モデルを持っているので重心位置を計算できるのだけれど、まぁそんなには合わない。
モデルの微調整が必要なんだけどそれは置いておいて足裏センサーでバランスを取ります。
左右の区別なく、前側のセンサー4個と後ろ側のセンサー4個の合計値が同じになるように調整。 胴体の前後並進パラメータを使います。
同時に胴体のPITCH軸の垂直を調整します。 胴体のPITCH角パラメータを使います。
6.足首PITCHを調整する。
ここまでで全体的にはバランスが取れたはずだが、足首のPITCH軸が左右で揃っていない場合が考えられる。片足になった途端にバランスが崩れる事になるので
両足それぞれの前後バランスを中央に調整する。
7.足首ROLL軸の角度を取得し、計算値との差をトリムに取り込みます。
PIDの関数を作っておいたのでそれをそのまんま使います。
動性能は要らないのでDパラメータはゼロ。Iパラメータだけでもいいかもと思ったが、偏差が大きい場合は発振する場合があるのでPIパラメータを使います。
「やってみる」
動かしてみたところ、6「足首PITCH」がダメ。左右同時に調整するってのに無理があったらしい。
あと、5「前後バランス」はうまく行くんだが、4「左右バランス」が安定しない。 これは多分オペアンプのばらつきの問題かな〜。
左右で別の石を使っていて、それぞれ帰還抵抗値調整できるようにしているのだけど、増幅率が微妙に異なるみたい。
すると左右調整ではセンサー値としてバランスが取れる場所が無い場合があるので永遠に左右にふらふらする。
センサーの変換係数(勾配)を合わせればいいんだけどそれはちょっとおいといて静的な偏差はロボットの体重が変わらない限り固定値なのでオフセットパラメータを与えるか。
横軸は、20msに一度出力しているので、前後は10秒ほどでほぼ誤差ゼロに。左右はこの波形が永遠に続きます。14秒周期くらい?
「見直し」
足首PITCH角の調整はがうまくいかなかったので再考。
まず、胴体のPITCH角調整に胴体のPITCH角パラメータを使うのをやめる。トリム調整の本質から外れるかなーと。
ここは足首PITCH角で調整するように変更。
まず左右のPITCH角を合わせる。これには各足のセンサーを使ってみる。ここにもばらつきがありそうだがまずはやってみる。
その後、足首PITCH角を使って胴体PITCH角の調整。これは5「前後バランス」と同時に行ってみる。
最初、フルオートで、自律したラムダが、「あれ?おかしいぞ?トリム狂ってる?」と思ったら自分でキャリブレーション開始。
STEP1 キリキリキリキリ・・・ チーン
STEP2 キリキリキリ・・・チーン
STEP3 ・・・
というふうにやりたかったんだけど、それは難しそう。もっともっと作りこまないとダメなようです。