車両型ロボット(W6)の製作日誌 その1
製作の区切りごとに、古い物から新しい物の順に書いてあります。
2001.11.20
車両型移動ロボット「W6」製作開始
夏休みに「バンダイのロボ研カップ競技」で「ワンダーボーグ」を見て、こんな感じで
遊べて、もう少し自由度と言うか、奥のあるロボットが欲しいなーという
思いから作り始めました。「知能ロボコン」に参加しているロボットをイメージしています。
2001.12.01
仕様と製作の方針
モーター制御ICのテストと検討
2001.12.08
RCサーボの制御ソフト
センサーユニットを動かすソフトを書きました。このソフトではPWMパルスを
必要なときに出すだけで、普段はパルスを止めています。
動作角は左右方向が180度、255ステップ、上下方向が約100度255段階
としました。
使用したRCサーボの機種
左右方向のサーボはサンワのSX−101Zの系統の、ずーっと古い機種で
SM−391と言う70年代製造の機種です。上下方向の機種はJRのNES−305
と言う機種です。可動範囲が狭く、あまり使いやすい機種ではありませんが、使えるものを
捨てられない性格なので使っています。(中学生の頃、RCグライダー用に
7000円以上で買ったたような・・・)
余談ですが、SM−391は普及機にもかかわらず"Made in Japan"でした。手元に
あるその他サーボを見てみると、日本ブランドですが中国、シンガポール、台湾製と
なっています。でも、ERG−WRの様に「高級機」とか言われている、定価が15,000円の
機種はまだ日本で作っているみたいです。
2001.12.16
RCサーボの制御の検討
モーターの出力に比較して、センサーユニットは十分軽く、2足ロボット
に要求されるような、バランスの制御も必要ないため、
今のところ加速、減速パターンを使わずに一定スピードで動かしています。
2001.12.24
反射型フォトセンサの取付(その1)
2002.01.18
反射型フォトセンサの取付(その2)
検出の距離を約3mmに調節した後に、H8のITU3と4に外部クロックAとBの端子を経由して
取込み、走行距離をカウントできるようにしました。
画像取込のトライ
シリアル通信プログラム
いままで長い間、ロボットをパラレルポートやパラレルI/Oボードを経由して動かしてきましたが、
ロボットを自作されている方々のHPを見るとシリアルポートの利用が一般的なようです。
H8にはシリアル通信の機能が使いやすく内蔵されていますので、自分もプログラムのロード
以外にも使ってみようと思い、簡単なサブルーチンを実装しました。
ロボットの状態をモニターするのにとても便利だと思いました。
2002.01.26
カメラのテスト(トレース用ラインの撮影)
はじめに
カメラの映像でライントレースをしたいと考えているので、実際、どの程度ロボットのすぐ前の
ラインを撮影できるものなのか試してみました。
テストの環境
ラインとロボットの位置関係は、左下の写真のようになっています。A3サイズの紙の上に
、幅18mmの黒いビニールテープでラインを描きました。
右下の写真に示すように、超音波センサーの下にカメラが付いています。
テストの結果
左下が128×128ドット、右下が8×8ドットで取り込んだイメージです。
128の解像度ではH8/3048Fの内蔵RAMにイメージを保持しきれませんが、
8ならば保持できますので、内蔵ROMにモニタをセットした状態で多少遊べそうです。
撮影時間は、夜の部屋の天井灯の明かりで撮影した場合に1.2フレーム/秒
程度になっています。現状では、人の感覚で「動いている」と感じられるような対象は
上手く写りません。
今日の結論
W6のナビゲーションに利用する見地から評価すると、
障害物の検知にはPSDと超音波センサーを使い、時々止まってラインを撮影する様な使い方
ならば使用に耐えると結論しました。
2002.01.27
動体の追跡
「視野内で一番明るさ変化が大きかった方向が、フレームの中心に来るように頭を動かす」
というアルゴリズムを試してみました。
(残念ながら、今のところカップ麺を認識しているわけではありません。)
PCのVB6で作成したプログラムで、シリアルポートを経由して
制御しています。
2002.08.25
ソフトの移植
予定
SCB8は1フレーム分の画像を保持できるだけのRAM容量があるので、W6内部で
多少の画像処理をし、移動に反映させるようなプログラムを書いてみようと思っています。
あとは2L1v6用に製作した腕を付け、腕を使ったアプリケーションで遊ぼうかと思います。
2002.09.02
画像取り込みルーチン
画像取り込みに関するサブルーチンを、主に以下のポイントで調整しました。
- 通信モードをアスキーからバイナリに変更
PCへの画像取り込みに関して、通信する総バイト数が1/5程度になりました。
- 通信速度を9600bps−>19200bpsに変更
128×128ピクセルの取り込みで、所要時間が約19.7秒−>約11.5秒と
なりました。
2値化処理
ライントレースに向けて、床に張った黒のビニールテープを分離できるか試してみました。
照明の条件次第では、うまく分離できそうです。
処理前−>処理後
2002.09.08
ラインの抽出
2003.03.30
移動系のマイコンボード(No.1サブCPU)
2L2でシリアル通信で結んだ2つのCPUに機能をわけてロボットに搭載する
やり方が安定して使えるようになったため、W6にも同じシステムを導入する
ことにしました。
とりあえずはH8/3664を1つ載せた移動系マイコンボードにモーターの駆動、走行
距離の計測の機能をもたせるよていで、メインCPUからシリアル通信経由で
受け取った移動に関する命令(例えば30cm前進とか)を実行できるようにするつもりです。
電池などの取り付けスペース
No.1サブCPUのソフトを開発するあいだ、電池や仮のメインCPUを載せておくための
場所を設計しました。気が向いたら2L2の腕と新設計のセンサーヘッド(これも多分
2L2と共用)を付けてテストします。
2003.04.06
テスト
センサーとモーターを簡単なプログラムでテストしました。それぞれを別々に確認した後、
「走行距離カウンタがメインCPUから受け取った値を超えるまで前進、ただしPSDからの入力値が走行中に
一定値を超えたら、いくら走ったかをメインCPUに返して停止」と言うサブルーチンを
作ってみました。
電池などの取り付けスペース
電源
2003.04.13
腕の取り付け
グリップ対象への接近テスト
グリップ対象を正面に捉えた後、腕が届く距離まで接近するという状況を想定したテスト
をしました。対象物手前30cmまで全速で移動し、その後速度を下げてPSDからの
入力を見ながら約4cm手前まで接近します。
テストプログラム
VB6で簡単なテストプログラムを作りました。メインCPUの代わりに
コマンドを発行したり、センサーの値を確認したりという用途に使います。
ハードの製作進捗にあわせて機能を追加してゆきます。
屋外走行テスト
直射日光のもとで走らせて、赤外線を利用したセンサーの動作確認をしました。
PSDセンサーで直射日光が当たっている壁までの距離を計ってみたところ、一応それらしい
結果が出ました。走行距離カウント用のフォトインタラプタは受光素子側が飽和しているせいか
、動作しませんでした。
直射日光が差し込む室内で走らせて見たところ、両センサーともに日陰では正常に動作している
様でした。
フォトインタラプタの方については、「あと一息」みたいな感じだったので
受光素子側回路の感度を調節してみたところ日向でも働くようになりました。
(実際はフォトトランジスタに接続してある、電流を電圧に変換するための10kオームの可変抵抗
を調節しただけです)
ちなみに明るさの目安を手元にある太陽電池の発電電圧(無負荷)で示しますと。
夜間、天井の蛍光灯のみで0.4V、直射日光が差し込む部屋が1.4V、太陽に直に向けた場合
が2.4Vでした。
(太陽光のスペクトル、蛍光灯のスペクトル、太陽電池が効率良く発電する
光の波長、赤外線センサーが感じる波長がそれぞれバラバラなのであくまで「目安」ですが・・・)
W6v2システムの検討
各CPUの機能の分担を検討しました。今のところ
こんな感じ
で考えています。
2003.04.20
タッチセンサーユニットの製作/取り付け
タッチセンサーの必要性
以前製作したW2〜W4までの結果から言うと、移動時に関しては、ロボットの頭に付けた超音波センサー等を
旋回させながら距離を測定し、その結果得られたレーダーチャートに統計処理を施してから
内蔵の地図データベースと照合しながら移動する。といったような移動方法をとっていると
、部屋の中で実際に物にぶつかるということはめったに起きませんでした。
W6は、当時よりずっとコンピュータが進歩しているので、さらに凝ったことをするつもり
です。といったわけで必要性が薄いといえば薄いのですが、サブCPUだけで走らせる時や、
物を押して移動させる時など、距離センサーの死角まで意図的に接近する場合を想定して
装備することとしました。
タッチセンサーユニットの強度
上に書いたように、ここで物を押すつもりであることと、移動ユニットと上半身ユニット
の間にヒューマノイドタイプのロボットの「腰」にあたる関節を増やし、さらに重心を高くする
予定があるので、転倒に備えて他の脚式ロボットの脚程度の強度を持たせるように
配慮しました。
その2へつづく
戻る