▼ようやく前進?
前回から早1週間が過ぎてしまいました。早いものです。しかし、その分前進しました。前回の続きで、まず実験用マザーボードを新規に作りました。(ただコネクタとH8を繋いだだけの物)このマザーボードを使い、様々な問題点の改善をしていきます。- 動作中に送る信号が止まってしまう現象。
- 足の先端を入力させるだけで各関節の角度を決める方式に移行したい。
- ATAN, ACOS, ASINのヘッダーファイルの作成。
- RCサーボのスピードをコントロールしたい。
- 配線の修復(切れていると思われる箇所)
- ジョイスティックで動かせるようにしたい。
▼原因にされてしまった、マザーボードの判決は?
新しく作り直したマザーボードで信号を送ってみた所、同じ結果が起きました。信号が送られていないのです。別のH8を使ってみたところ、あっさりと動きました。どうやらポートが破損していた模様。原因は分かったものの、通信スピードが(9600bps)なので、遅すぎます。これを(38400bps)の設定をしてあるモニターデバッガに取り替えようとしましたが、書き込むことができません。もう一方は問題なく何度でも書き込めます。うー・・・両方の悪いところを一つのH8にまとめたい気分。仕方ないので、この件は保留。▼計算の前に・・・
逆運動学計算は魅力的ですが、計算をするにしろ何にしろ、突然信号が止まってしまうと思わぬケガ(この場合ロボット)をしかねません。そこで、原因を徹底検証してみました。今回の現象が起こるのは以下の通りです。- 1°ずつ(膝の場合2°ずつ)屈伸をさせている途中に信号ストップ。
- 信号がストップするのは決まって32°の後。
- リセットは掛からない。
- 2°ずつ(膝の場合4°ずつ)屈伸させると問題なく動く。
- 足に接続する信号線をはずした状態でも信号は止まる。
- DMACの機能を停止させた状態だと、問題なくパルスデータを作成してくれる。
- 足首関節だけと腰関節を1°ずつ動かしても問題なく動く。
- 足首関節以外を動かしている時は問題なく動く。
- 腰関節以外を動かすと、信号は止まる。
前回の試作2号機から試験的に使われていましたが、バグだらけでした。今回のはマシなプログラムになっていると思っていたのですが・・・
そんな訳で、まず正常な直立状態から問題の起こる部分のパルスを比較してみることにしました。DMACの機能を止めておけば問題なくパルスを作ってくれますから、データは入手する事ができます。
結果、作成されたパルスに何の異常もなかったのです。しかし、立ち上げた信号をGNDに落とすタイミングにおかしな部分があると気づいたのです。
それは、「20(6.4μsec)」という時間です。他の問題のない信号を見ましたが、最低でも「40(12.8μsec)」以上の時間でした。そこで、「20(6.4μsec)」だったら、30(9.6μsec)にするというプログラムを組み込んだ結果、問題なく屈伸の動作を行えました。この後も、信号が止まる事があったので、今では「35(11.2μsec)」になるようにしています。
動作中に送る信号が止まってしまう現象。【解決!】
▼ジョイスティックで動かせるようにしたい。
これは何とかできるようになりました。プログラム等の内容は後日まとめようと思います。一応、二通りほど動画を用意してみましたので、よかったら見てください。計算による屈伸[1.30mpg(MB)]
計算による動き[1.30mpg(MB)]
計算はかなり荒いです。ATANとも整数までしか計算できず、しかも微妙に誤差が出ています。最低でも、少数第一くらいまでは計算できるようにしたです。(floatを使っていないので、細かく計算できない。)