Teraterm
TJ3Bのシリアルポートに出力したテキストなどを確認するためには Teraterm を使う。
- http://sourceforge.jp/projects/ttssh2/
- インストール時の選択肢はとりあえず以下で良い。
- セットアップに使用する言語 →日本語
- コンポーネントの選択 →コンパクトインストール
- 言語の選択 →日本語
- 他は適当に
インストールできたらメニュー「設定」→「シリアルポート」をC-Styleの通信設定と合わせておく。変更後には「設定」→「設定の保存」を実行しておく。保存時ファイル名は、TERATERM.INIのままで保存しておけば、次回起動時にはシリアルポートの設定は不要になる。
Teratermでシリアル出力を確認する場合は、「ファイル」→「新しい接続」でTJ3Bの繋がるシリアルポートに接続するが、Teratermが接続中は C-Style がTJ3Bに接続できなくなるため、必要に応じて「ファイル」→「接続断」でシリアルポートを閉じてから、C-Styleを使う。(同じシリアルポートはどちらか一方のプログラムからしか利用できない)
Teratermでシリアルポートに接続したら、TJ3Bのスタートスイッチを押す。
すると、シリアル出力が確認できる。
上の出力例のプログラムはこんな感じ。「A=B」と「A=Dir(HMC)」の1000回処理に必要な時間を図ってみた。それぞれ1000回分の時間なので、各々1000で割れば1処理に必要な時間が求められる。結果から同じような機能でも速度が3桁違うことが分かるので、より遅くなる機能はなるべく使わないようにし、プログラムの実行速度を上げていく。
[工作]C-Style上での処理能力を上げるためには?(その2)
プログラムのチェックをする場合、このような構成であれば、プログラムの大きなブロック間は変数を使って情報を伝達することになる。
デバッグの時はその変数を都合よく強制的に書き換えることで作業がしやすくなる。無条件ループの一周分の時間を図るならこんな感じか。ロボットが動いていると面倒なので、強制的に止めるなどが簡単に設定できる。動作決定部分までをデバッグしたければ、動作決定部分の直後でシリアル出力するなどいろいろ考えられる。
無条件ループ一周に掛かる時間が100m秒の場合、1秒当たり10回の判断が行われていることになる。
私のオムニ(床センサなし、超音波4つ、ボールセンサ6つ、コンパス、6chもどき)では無条件ループ一周が24m秒まで短縮できた。1個のTJ3Bではこの辺りが限界かと思う。計算では1秒辺り40回の判断が行われていることになるが、そんな感じはしないのはなぜだろう。