このページではソフトウェアについて説明します。 この機体にはパソコン用、A3000(Z80マイコン)用 、PIC(16C84)用、E200(ポケコン)用のソフトがあります。
ソースコード公開のスタンス
よくロボットを見ていて「このロボットはどんなソフトで動いている
のだろう?」と興味を持つ事が多いので、自分のロボットの制御ソフト
のソースコードを公開します。前作からの流用部分も多いため、
コメントが嘘になっている部分や、実験の途中で使った後
使われなくなっている部分等ありますが、適当にご覧ください。
今のところ、詳細な説明をする予定はありませんが、これらソースコード
の中に利用可能な部分を見つけられた方は、ご自分の責任の下に、自由に
使っていただいて結構です。
開発環境:DOS上のMicrosoft Quick C Var.2.0にて開発した、前の魚ロボットのソフトを 雛形として開発を始めました。開発の途中からWin95のMicrosoft Visual C++ Var.4.0 に切り替えました。制御波形表示ルーチンなどのグラフィックサブルーチン を切り離し、コンソールアプリケーションとしてコンパイルしたところ、 パラレルポートへのI/O部分まで含めて問題なく動いたため、DOS上で開発した アルゴリズムとCのコーディングをそのまま採用しました。
ソースコードのダウンロード
:zip形式で圧縮したテキストファイルです。6legs.cにmainがあります。
(Program name: 6legs / 61Kbyte)
機能概要:本ロボット用のソフトは、制作途中の要素試験に使用したルーチン、 制御波形を作るルーチン、制御波形でロボットを動かすルーチン、 リアルタイムの軌道計算をしながら、接地センサーなどの情報を 元にロボットを動かすルーチンの 4種類におおよそ分けられます。それらのルーチンの下には、 各種データファイルを読み書きするファイルI/Oルーチン、 逆運動学計算等に使う幾何計算・行列計算ルーチン、 I/Oポートを操作するルーチン等があります。
要素試験用ルーチン:制作途中で各部の試験を行うために作ったルーチンです。 ロボット製作の進行状況に合わせて作りました。主なものに「関節番号を指定して サーボデータ(8ビットの整数)を直に出力」、「足先のX,Y,Z座標を指定して 脚1本だけを動かす。」などがあります。
制御波形作成ルーチン:直進、緩旋回、超信地旋回などそれぞれの歩行 パターンで、歩行ピッチや速度を変えた制御波形を作るルーチンです。 入力として、軌道接地部分の長さ、足先を持ち上げる高さ、軌道分割ピッチ (何mmピッチで接地部分を分割するかを示す値)等を入力します。
制御波形再生ルーチン:制御波形を指定回数繰り返し出力します。
リアルタイム制御ルーチン:足先軌道から制御波形を計算しながら 歩行します。
動作確認ルーチン:制御波形の正しさを確認するために使用します。 制御波形を入力として与えると、画面に6本の脚だけが3次元の ワイヤフレームでアニメーション表示されます。このプログラムによって、 その制御波形を実際にロボットへ流しても、ロボットを破損するようなことが無いか 前もって確認します。
機能概要:有線制御用のプログラムと、無線操縦用プログラムがあります。
有線制御用プログラム:常に各サーボ用の信号を作り続ける ソフトです。パソコンやポケコンから出力チャンネルと出力データを 受け取り、それに沿って信号を作ります。データ受け取りの手順は プリンタと同じようなものになっています。
ソースコードのダウンロード
:mpz80用のソースコードです。(Program name: SAVOCON6 / 6 Kbyte)
無線操縦用プログラム:有線制御用プログラムに制御波形再生機能 を加えたソフトです。RCデコードボードから波形番号を読み取り、 ROMに格納された制御波形のデータを順にサーボへ出力します。
ソースコードのダウンロード
:mpz80用のソースコードです。(Program name: SAVOCON8 / 48 Kbyte)
ソースコードのダウンロード
:PIC16F84用のソースコードです。(Program name: rc_read1.asm / 6 Kbyte)
機能概要:RC受信機の出力信号がハイレベルになっている時間を、 ディレイループを何回実行できたかで計測し、計測結果を以下のような テーブルに沿ってコード化します。
送信機(プロポ)のスティックの状態とバイナリコードの対応の 一部を以下に示します。
左スティック | 右スティック | コード | 動作 |
中立 | 中立 | 0 | 停止 |
前 | 中立 | 1 | 前進 |
後ろ | 中立 | 2 | 後進 |
前 | 右 | 3 | 右旋回 |
ソースコードのダウンロード
:E-200用のベーシックとアセンブラのソースコードです。
zip形式で圧縮してあります。
(Program name: 6legs1.bas & 6legs3.zas / 4 Kbyte)
機能概要:制御波形再生ルーチンとテンキーを読むルーチンからなっています。 ベーシックとアセンブラのプログラムから成り、実行はベーシック の方から始まります。制御波形をRAMエリアにセットして歩かせるので、 無線用のソフトと比べると、簡単にいろいろな制御波形を試せます。
テンキーと動作コードの対応の一部示をいかに示します。
テンキー | コード | 動作 |
− | 0 | 停止 |
8 | 1 | 前進 |
2 | 2 | 後進 |
9 | 3 | 右旋回 |
以下のグラフは直線歩行時の制御波形です。脚1本分、1サイクルの サーボモーターに出力するデータをプロットしました。 Ch.0,Ch.1,Ch2がそれぞれ サーボレイアウト図のサーボ0、サーボ1、サーボ2に対応します。 本ロボットは、このような波形データをくり返しサーボに出力すること によって歩行しています。通常の波形のスタートデータは、足先の中立 位置に相当します。