# よくある質問 (FAQ)

## ソフトウェアー

#### RoBIOSのバージョン

> - 現在、３つバージョンのRoBIOSがリリースされています。（例えば、rob51q.hex、rob51e.hex、rob51f.hex）
> - どのRoBIOSバージョンもASCII形式ファイル(.hex)バイナリー形式ファイル(.hx)で提供されています。
> - EyeBotコントローラーにインストールされているRoBIOSの バージョンを接続している カメラに一致させる必要があります。：

> > - rob51q.hex 白黒QuickCam用 (提供中止)、約20フレーム／秒(fps)
> > カラーQuickCam V2用 (提供中止)、約5fps
> > - rob51e.hex EyeCam C1用 (提供中止)、約3fps
> > - rob51f.hex EyeBot基板上にFIFO拡張メモリーが装着されている場合：
> >   EyeCam C1用、約10fps
> > EyeCam C2用、約3fps

#### ホスト用システム

- Linux: 完全パッケージとrpm (RedHat)をftpにより提供しています。
- Windows 98/2000/NT/XP: 完全パッケージとインストールツールをftpにより提供
- Solaris: クロスコンパイラーをftpにより提供しています。
- SGI: クロスコンパイラーをftpにより提供しています。
- Macintosh: 基本的には使用できますが、現在コンパイラーをftpにより提供していません。
ダウンロードのためにはMac用Din-8からDB9への変換アダプターが必要です。

注意：　BDM (バックグランド・デバッガー用モジュール)はPC/DOS上でのみ実行できます。 BDMはアセンブリレベルでのデバッグ時あるいはデータの壊れたFlash-ROMにデータを転送しなおす場合に使用されます。

#### グローバル変数

> - グローバル変数をひとまとめにして使わないようにしてください。
> - 下記のように宣言時にグローバル変数を初期化しないでください。
> int i=7;
> 同じプログラムを２度実行するときに、この命令は実行されません。下記を推奨します。
> int i;
> int main()
> { i=7; ... }
> - グローバル変数名に"start"を使わないでください。この名前はシステムに予約されています。
> - EyeSim: グローバル変数はシミュレーションプログラムEyeSim使用時に問題を生じます。スレッドの使用によりすべてのロボットから見ることができるためです。

#### 複数のアナログ入力からの読込み

サンプリング時間間隔を変えてアナログ信号を切り替えると読み込まれるデータが異なります。(例えば、OSWait())
解決方法：測定しているアナログ信号のもつ内部抵抗を最大で5KΩにしなければなりません。理想的には小さいほどよくなります。もしもこの値を満足できない場合にはアナログ入力チャンネルを切り替えるごとにOSGetAD()を２回呼び出してください。
解決例：

> `int OSSetADChannel(int channel)`
> `{`
> `int dummy = OSGetAD(GlobalChannel=Channel);`
> `OSWait(1);`
> `}```

> `int OSReadAD()`
> `{`
> `return OsGetAD(GlobalChannel);`
> `}`

#### 無線通信

無線通信を使う場合には予めソフトウェアーキーを使って初期化する必要があります。
<I>/REGを順に押して登録コードを設定または確認してください。

#### EyeBotに設定されている構成状況を調べる方法

Hrd/HDTを順に押してください。ハードウェアー記述テーブルに設定されているすべての周辺装置を知ることができます。もし１２個のサーボが登録されているときには、EyeBotの背面にあるコネクターに１２個までのサーボモーターを接続することができます。サーボの特性を変えたいときには、"hdt"ファイルを編集、コンパイル(gcchdt)、転送してください。
詳細はhttp://robotics.ee.uwa.edu.au/eyebot/ftp/ROBIOS/docs/HDTを参照してください。

## ハードウェアー

#### 誤ってEyeBotのFlash-ROMを消去した場合

> - EyeBotのFlash-ROMにRoBiOS (Robot Basic Input/Output system)を書き込みます。ソフトウェアーを使って更新も可能です。ハードウェアー記述テーブル(HDT)もまたFlash-ROMに書き込むことができます。ユーザープログラムと同様に、シリアルケーブルを使って新しいHDTやRoBiOSの新しいバージョンを転送することもできます。
> - 滅多にありませんが、例えば壊れたRoBiOSを転送すると現在のRoBiOSが壊れてコントローラーを起動できなくなることがあります。そのときには、実行可能な新しいRoBiOSを転送するだけでは修復することはできません。
> - この場合には、バックグランド・デバッガー(BDM)を使用しなければなりません。付属のケーブルを使って"BDM"と書かれているEyebotのソケットとパソコンのパラレルポートを接続します。Flash-ROMを書き換える以外に、パソコンを使ってEyebot上のプログラムをデバッグしたり１ステップずつ実行したりすることができます。
> 注意： 付属ケーブル(MK3以降)には"モトローラ標準BDMケーブル"のように回路はついていません。EyeBotコントローラー自体に回路が組み込まれていますので、そのような回路は必要ありません。
> - DOS上でBDMを実行する方法はEyeBotオンライン説明書の中で解説されています。新しいBDMのバージョン群(例えば、1.22)とWebで提供されているFLASH.*プラグインを使用してください。BD32.CFGを編集することでBDMを設定することができます。このファイルにはパソコンの速度に応じた値を設定するようにしてください。プログラムは古く、現在の平均的なパソコンでは値を大きくする必要があります。配布されている説明書の中に設定値の一覧表があります。さらに、プログラム／接続は割込みに対して非常に感度が高いという別の問題もあります。そのため、DOSのリアルモードで実行することを推奨します。
> - BDMを使ってRoBiOSを再インストールすると、設定されている無線通信用のライセンスコードが消去されます。その場合には、新しい無線キーを取得するために、取扱先にコントローラーのシリアル番号を添えて電子メールで連絡ください。このコードは<I>/REGを順に押すことによって設定できます。

#### 電源投入時やリセット時にEyeBoが起動しない場合

- リセットを押すときに画面に縦じまが表示されますか？
もし表示されるのなら、おそらく誤ってflash-ROMからRoBIOSオペレーティングシステムが消去されています。
バックグランド・デバッガーを使ってRoBIOSを再インストールする方法についてデバッグの章を参照してください。
- 場面上にまったく何も表示されませんか？
表示されない場合には、電源の極性を間違えたり、大電流（例えば、回路をショート）を流したりして、コントローラーのヒューズが切れているかもしれません。 電源を入れたときにEyeBotに電流が流れているかどうかをテスターで確認してください。 もし電流が流れている場合には、上述のバックグランド・デバッガーを使ってRoBIOSを再インストールしてください。もし電流が流れていない場合には、 ヒューズの交換方法を参照してください。

注意： バージョン3.12以降はヒューズが自動復帰スイッチ(例えば、Farnell 131-724)に置き換えられています。もしも大電流が流れた場合には、スイッチが電源を遮断します。約５分後にスイッチは通常の状態に復帰します。ヒューズを交換する必要はありません。

#### EyeBotとパソコンのシリアル通信接続がうまくいかない場合

Transhex (Windows)あるいはdl (Unix) でコントローラーを検出しないとき

- Windows

- transhx32.exeというツールを使ってください。
- パソコンのBiosの中で、シリアルポートアドレスが"自動的に割当てる（to be automaticly assigned）"に設定されているかもしれません。これを固定にして標準アドレスに変えてください。

- Unix

- "dl"というスクリプトを使ってください。
- シリアルポートのアクセス許可をすべてに対して"rw"にする必要があります。
  chmod a+rw/dev/tty* /dev/cua*
  とキー入力してください。

- EyeBotのCPUの周波数を33MHzに設定してください。これによりずれが最小になります。通信速度のメモを参照してください。
- EyeBotとパソコンのシリアルポートCOM1（設定が変更されている場合にはそのポート）が正しく接続されていることを確認してください。
- EyeBotとパソコンの通信速度が一致していることを確認してください。(EyeBotの標準は115,200です。古いパソコンではこのような速い設定では動作しません。)
EyeBotのシリアル設定の変更方法についてはダウンロードの章を参照してください。

それでも解決しない場合には別のホスト用パソコンを使ってみてください。

#### EyeBotのBDMとパソコンの接続がうまくいかない場合

- EyeBot(1番ピンと印付けされている)とパソコン(パラレルポート)が正しく接続されていることを確認してください。
- パソコンのパラレルポートが"EPP"モードに設定されていることを確認してください。パソコンを起動するときにシステム設定ボタン（通常は起動中に"Del"）を押すと、パラレルポートの設定を変更／確認することができます。

#### EyeBot無線通信デモがうまくうごかない場合

- オプションの無線通信モジュールが挿入されていることを確認してください。
- EyeBotのメインメニューの"< I >"を押し、次に"REG"を押してください。
これにより"Register Radio"画面が表示します。LCD画面に表示されているシリアル番号を取扱先に連絡(email)し、システムに入力するためのセキュリティーキーを取得する必要があります。
この手続きによって無線通信機能が有効になります。

#### EyeBotのLCD画面が見にくい場合

- LCDの裏側に可変抵抗器があり、画面のコントラストを調整することができます。

#### デモで録音した音が小さい場合

- これは単なるデモです。マイクは音の検出のために使います。音声解析用ではありません。
- もしEyeBotで音声を再生したいときには、パソコンで音声を録音し、Robiosサウンドツールを使ってパソコン上で音声用ファイルを変換した後、EyeBotに転送してください。音質が改善されます。
- RoBIOSサウンドツール（ http://robotics.ee.uwa.edu.au/eyebot/ftp/ROBIOS/pc-appl/audio/）を参照してください。".wav"形式からEyeBot用バイナリーデータに変換するのに使用します。
- スペースの関係でEyeBotには圧電スピーカーだけが装着されています。音質を改善するために８Ωの外部小型スピーカーを接続することができます。

#### ３Ａ以上のサーボを一緒に駆動する場合

- 基板を保護するために3Aのヒューズまたはスイッチ(バージョン3.12以降)によってEyeBotに流れ込む電流が制限されています。
- たくさんのパワフルなサーボを接続するときには、3A以上使うことになります。そのため、EyeBotにサーボを直接接続することはできません。
- その代わりにサーボ用に別の電源を使うか、あるいは同じ電源から電力だけを供給してください。このとき、サーボの正極と電源の正極を接続するようにし、EyeBotの３端子コネクターを使わないでください。
- 各サーボには３つの端子があります。：

- GND (EyeBotのGNDに接続します)
- Vcc (約6V、電源に直接接続します)
- 信号 (EyeBotのTPU出力端子に接続します)

#### カメラの画像がちらつく場合

- コントローラーが35MHzで動いていることを確認してください。
- かなり多くの場合、研究室の蛍光灯（ちらつかないと書かれていても！）がちらついていることに起因していることがあります。これはカメラの問題では ありません。
実験設備が自然光または電球を使っていることを確認してください。

#### サーボがジッターを起こす場合

EyeBotに多くのサーボが接続され一定の負荷が作用しているときにサーボがジッター（ジリジリとした小さな振動）を起こします。

この問題はサーボモーターの非常に大きな電力消費によって起こっており、次のように解決することができます。：

1. コントローラー (7.2V)とサーボ (4.8Vまたは6.0V)の電池または電源装置を別々に分けて使います。
2. コントローラーとサーボの電源スイッチを別々に取り付けます。サーボよりも先にコントローラーの電源スイッチをオンにしてください。
3. すべてのサーボを同時に初期化すると、周期的に同じ時間間隔（20msごと）に電力が消費されます。これを避けるには、SERVOInit関数を呼出すときに個々のサーボごとに小さな遅延時間(約1ms)を挿入します。一般的にこれによってサーボのトルクが増加します。
4. すべてのサーボを同時にオフにするためにSERVORelease関数を呼出すときも同様に個々のサーボごとに小さな遅延時間(約1ms)を挿入します。

#### EyeBotで１２個以上のサーボモーターを駆動できますか？

EyeBotには全部で１６個のサーボを接続することができますが、タイマーやサウンドのような機能を失ってしまいます。したがって、最大で１４個というのが妥当な線です。 直接接続できる１２個のサーボ用コネクター（TPUチャンネル2〜13）があり、２個の追加のサーボについては、DCモーター用コネクター（モーター A、モーター B）に変換ケーブルを使って接続することができます。サーボ用コネクターにはGND、Vcc、PWM信号の端子があります。追加のサーボを接続する前に、オシロスコープを使ってMotor+端子またはMotor-に必要な信号が出ているかどうかを確認してください。（これはHDT設定ソフトウェアーに依存します）

注意： 多くのサーボを接続すると結果的に全電流がEyeBotの制限値である3Aを超えるかもしれません。もしその値を超えると、リセット可能なヒューズによってコントローラーが一時的にシャットダウンします。

重要： もし大電流を消費する多くのサーボを接続する必要がある場合には、EyeBot背面にあるコネクターを使うべきではありません。その代わりに、電源とサーボの端子（Vcc、GND）を別々のケーブルで直接接続し、EyeBotのコネクターにはサーボの信号端子のみを接続してください。

#### EyeBotで１２個のサーボと２個のDCモーターを同時に使用できますか？

これはフィードバック用のエンコーダーを使用しない場合についてのみ可能です。 標準的なFaulhaber製モーターのようなエンコーダー付きDCモーターを２個使うと、TPUチャンネルの0〜6が使用され、サーボ用の最初の４つのTPUチャンネルと重なってしまいます。この場合にはサーボ用コネクターの１〜４が使用できなくなります。

#### ２系統の電源を接続できるようにEyeBotコントローラーを改造する方法（コントローラーとモーターを別電源化）

1. 主電源からサーボ電源を切り離すために、部品R20（SW1の隣にあるフェライトのチップ）を取り除きます。
2. R3に近い方のR20の穴にピンを挿入してハンダ付けします。（ピンは基板の裏側から突き出すように差し込みます）
3. そのピンに新たに追加する電池の正極をハンダ付けします。追加する電池の負極はこれまで使っていた電池の負極に接続します。

注意： 過剰な電流や回路のショートから保護するために、ヒューズまはたリセット可能なヒューズを装着しなければなりません。

## そのほか一般

#### RoBIOSソースコードの入手

> - RoBiosのソースコードは公開していません。よほど低次元のシステムルーチンを書きたいとき以外には、本当にソースコードは必要ありません。

Thomas Bräunl 2003