witchの日記: (ROBO)(進捗) 三歩進んで二歩さがる
日記 by
witch
サーボアサインテーブル修正完了!フィードバック処理修正完了!A/D入力ゲイン修正完了!
各部修正完了確認!システム起動承認!
メインCPUパワーON!MSPスタートアップ!
サブCPUパワーON!CPUリンク確認!
センサーモニタリング正常!ジャイロ、ACCSニュートラル値正常!
アクチュエーターパワーON!
左肩、左脚サーボフィードバック異常解消確認!
サーボ駆動系正常、サーボ制御系正常!
パワー全開!直立姿勢へ!
---
「直立姿勢移行完了!システムオールグリーン!」と行きたかったのですが…
それぞれのサーボの制御には問題がないのに、駆動するサーボ数を順番に増やして行くと急に応答が鈍くなって、角度変更命令が反映されるのに数秒かかるように…
そして全サーボを駆動状態にして直立させると、それ以上の命令を受け付けなく…
んーーー
PICから先の電気系統はいじっていないので、「サーボ制御信号の出力電流が足りない」っていうのはなさそうな感じ。
予想される原因は
- メインCPUからPICへのサーボ制御角情報送信が1サイクル(20msec)内に終わってない」
(駆動するサーボがひとつ増えるごとに送信データが2byte増える) - PICからセンサー値を受け取った後、サーボ制御角を送るように変更したので送信に使える時間が減った
- PIC側にセンサー処理を加えたときに、受信処理が1サイクルで終わらなかった場合の考慮を忘れてたかも…
- LinuxカーネルのTICKがデフォルト(10msec)のままなので、送受信中にタスクスイッチが入って間に合わないのかも
「センサー処理を一時的に無効にする」のと「カーネルのTICKを1msecに変更」の両方を試すしかないかな…
歩行動作を確認してから「ロボファイト6」にエントリーしたかったんだけど…間に合わないかも。
(明日は知人の結婚式に出るので作業できない)
---
参考:
Kernel2.6からx86はTICK=1msec(HZ=1000)になりましたが、ARMはTICK=10msecのまま(HZ=100)です。
(ROBO)(進捗) 三歩進んで二歩さがる More ログイン