ARUMO-SiR07M・手抜き逆運動学のヒザダブルサーボ化
すいません m(_ _)m、本記事はブログ引越時に書式が崩れました。順次修正中です。
さてっと、いよいよソフトウェアの方へ行きます。CPUは今回もH8/3694Fを使いますので、基本部分は以前のソフトウェアを使い回しますが、サーボドライブやジャイロ信号取り込みの合わせ込み、手抜き逆運動学計算部分のヒザダブルサーボ化をしなくてはいけません(他にも対応サーボ数を30ch化しないといけないことに今気づいた…○| ̄|_)。
そんなわけで、今はサーボドライブ部分を作っているところですが、マイコンのデバッグばっかりやってたら飽きてきたのでちょっと中断し、手抜き逆運動額計算の方のヒザダブルサーボ対応をすることにしました。
最低限動かす、という意味では、手抜き逆運動学計算(って言っていいのか?)は無くてもいいんですが、これがあると、機体を動かすのがすごく楽になりますので、優先度高で対応。実は、初代G-Tuneからずっとこのロジックは載せていて、初代G-Tuneに載せていたものが一番高性能だったんですが、今はディスククラッシュと共に記憶の彼方です。アレは良かった。モモピッチ距離とスネピッチ距離が違っていても、ちゃんと計算できました。
で、どの辺が手抜きかといいますと、「ピッチ軸だけ計算」しているのと、「胴体と足裏が必ず平行になる」というあたりです。同じような情報を既に公開されている方も多いので、細かくは解説しませんが、この条件を付けると計算がググっと楽になります。
これぐらい手を抜いてやれば、H8/3664やH8/3694でも、手抜き算術計算と組み合わせれば十分計算できますので、SIPHA COREでは、マイコン側でリアルタイムに計算させて、TERM側からは座標情報(高さ、奥行き)を指示しているだけです。
というわけで、まずはうーん、うーん、うーん、とがんばってダブルサーボ化完了。
計算結果を元に、CADで描いてみました(ここらへんが超ローテク)。いい感じです。たぶん大丈夫でしょう。
で、コントローラ自作派の方には、いつもこの機能を実装することを勧めているのですが、その理由が上の絵に現れています。足先を前から後に平行に移動する場合、「黒、青、赤、紫、緑」と移動していくわけですが、この時の各サーボの角度に注目してください。例えば「モモピッチ軸サーボ」。見ていただくとわかるのですが、まず、「黒⇒青」にて上方向に回転し、次に「青⇒赤」にて下方向に回転しています。このように、脚を平行に動かす場合、サーボはいつも同じ方向に回っているのではないのです。
これを角度制御だけでやろうとしたら大変なので、やっぱりマイコンくんにがんばってもらうのが良いかと思います。
手抜き逆運動学計算、いくら軽いといっても算術計算がH8/3664やH8/3694Fだと、さすがにパワーが足りなくて、結局、三角関数や平方根処理は、テーブルやニュートン法を使って自前でプログラムしてしまいました。SH2やATmega128だったら計算が速いので、そのまま算術ライブラリが使えます。たぶん、ARM7も大丈夫だと思います(ちなみに次のSIPHA COREはEZ-SERVOでARM7です)。
こんにちは、ご無沙汰しています。
いよいよ完成が近づいて来てますね。
本物を見れるのが楽しみです。
計算歩行プログラムやってましたが今は中断中で、SISOさんの記事を見ていると「早く復活しなきゃ忘れそう」とあせってます。
次回はARMですか、それもまた楽しみです。
また、読ませてもらいます。
それでは