2023年4月
            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30            

カテゴリー

ブログパーツ

無料ブログはココログ

« 2009年5月 | トップページ | 2009年11月 »

2009年10月

2009年10月31日 (土)

実験用ロボのPCインターフェイスとC#で作るコンソール

PCとロボの通信はシリアルポートを使います。

ケーブルにはタンサーボーグ付属のD-sub9P→3.5miniの変換ケーブルを使います。これはTx,Rx,GNDだけを普通のオーディオケーブルに引き出したもので、他の信号線は引き出してません。したがって無手順(ハンドシェィクなし)で使うことを前提にしているようです。

Dscn0103_2 Dscn0104_3

普通のシリアルケーブルだと、かなり硬いので移動ロボットの動きを阻害します。これはやわらかいので、その心配はありません。

さらに、ダイソーで売っている3mのヘッドホン延長ケーブルで延長できるので、ロボが遠くいっても大丈夫です。延長ケーブルを2本継ぎ足して通信していますが、9600bpsでは何の問題もありません。

タンサーボーグを持っていない人でも簡単に自作できると思います。本当に便利ですよ。

 

さらにC#の肩慣らしというわけで、簡単なコンソールソフトも製作しました。センサーの読み出し値を表示したり、ボタンをクリックしてロボにコマンドを送ることができます。

Photo

SENSOR VIEWというエリアには、PSDで計測した距離がイメージとして表示されます。ロボットの見ているイメージを人間にわかる形で表示するものです。センサーの範囲外が黒、距離が近くなるにつれて明るく表示しています。

この画面だと、前方左に何かあるようです。これがロボットの「見ている」世界なんですね。

次回はコンソールによるPSDの「見える化」についてです。

2009年10月29日 (木)

実験用ロボの電源を考える

電源は電子回路系の5Vとモーター用の4.5Vに分かれています。
モーター用はすでに書いたようにアルカリ単三電池を3本使います。
電子回路用は2セルのリチウムポリマー電池を三端子レギュレータで5Vに落とします。問題はその電流です。PICのマイコン関係だけなら50mAも見ておけばOKですが・・・
問題はこの写真です。

Dscn0050

ロボットの正面から撮った写真です。写っているのはすぺてシャープのPSDです。これだけで9個あります。PSD1個はティピカルで30mAも電流を食うので、270mAも消費してしまうことになります。余裕を見て500mAは供給できる電源が必要です。

結局5V1Aの低損失レギュレータを使用しました。そこそこ発熱するので、手製の放熱器をつけてあります。
これで4時間くらいは継続して実験が出来ます。

次はパソコンとの通信です。

2009年10月28日 (水)

実験用ロボのモーターとドライバ

モーターはキット付属のFA-130モーターです。3V無負荷で200mAくらい、タイヤを回転が止まらない程度に手で押えると400〜600mAくらいです。パワーに比べて走行抵抗が小さいですから、巡航時の電流は300mA程度、加速時に500〜700mAくらいではないでしょうか。この条件でモータードライバを選定します。

 

手に入り易いのはTA7291Pですね。古くからあるデバイス(15年?ほど前に試作に使った記憶があります)ですが今でもアキバのショップや通販サイトでも良く見かけます。丈夫で使い易いデバイスなのでロングセラーなんでしょうね。
ただし、このドライバはHブリッジの飽和電圧か大きく、データシートを読むとモーターに400mA流したときに1.9Vも電圧が落ちます。このため12Vとか15Vとかの比較的電圧が高いモーターの駆動に向いています。12Vで1.9Vの電圧降下なら16%ほどですが、3Vで1.9Vでは63%もの電圧降下ですからね。今回のように電圧の低いモーターの駆動ではロスが大きくなります。

 

これだけなら、本機のように電圧をちょっと高め(4.5V)にしておけば、ロスが多いものの何とか動くのですが、もう一つ問題があります。それは3Vくらいが定格のモーターでは回生ブレーキがかからないことです。ふたたびデータシートを読むと、回生制動電流のルートでの電圧降下は

(回生電流400mAの場合)Vsat L2(0.9V) + VF L1(0.9V) = 1.8V

と、いうことで1,8V以上電圧がないと、回生電流が流れないことになります。つまり、ブレーキがかからない訳です。ちなみにVsatは200mAでも0.8Vとあまり変わりません。ブレーキ電流が減ればこの限界電圧が下がるという訳ではないようです。

実験用ロボのタイヤを手で回して発電電圧を計ると、かなり回して2.3Vとかです。だいたい1V台なのでほとんどブレーキはかかりません。
念のため、ブレットボードで試してみると、4.5Vで駆動は大丈夫ですが、やはりブレーキがかかりません。

 

と、いうことで今回選定したのはTB6552FNGです。2CHが1パッケージに集積されています。ON抵抗1.5オームということなので、同じくモーター電流400mAの場合電圧降下は0.6Vです。ブレーキ時の電圧降下を推測すると

 (回生電流400mAの場合)Vsat(0.6V)/2 + VF(L)(1.0V) = 1.3V

です。さらにこちらのVsatは、電流に比例して変わるので、ブレーキ電流が小さければそれだけ電圧降下も小さくなりそうです。これならいいでしょう。

 

今回は、Digi-Keyで購入しました。25個だと1個100円くらいです。送料は2000円でした。土曜日の朝オーダーして月曜日には国際宅配便で届いてしまいました。早いです。
あとで調べたら、RSコンポーネントでも扱っていました。こちらの方が送料が安いです。

 

TB6552FNGを使うには一つだけ注意したいことがあります。それはこれが0.65mmピッチだということです。ハンダ付けには注意が必要です。比較的簡単なハンダ付け方法はのちほど書きたいと思います。
もう少しハンダ付けし易いのはサンヨーのLB1836Mです。これも2CH入りです。電流容量は少し小さいですが、パラに接続して電流を増やすことも出来るので同じように使えます。これは1mmピッチです。

 

 

次回は電源周りを説明します。

2009年10月26日 (月)

実験用ロボのマイコン

プラットフォームのマイコンは、予定通りPICを採用です。

秋月で買ったPIC16F886を搭載しました。この予備実験ではアナログ入力がたくさん必要なので、これは最適です。28pinのパッケージで11点のアナログ入力が使えます。
IDEはMPLAB、Cコンパイラは手持ちのCCSCです。ちょっと高めのコンパイラですが、便利な組み込み関数のおかげで、スピーディに開発できるので気に入っています。

これまではマイコンを外してPICSTART+で書き込んでいましたが、今回からPicKit2でインサーキット書き込みに切り替えました。すばらしく早いですね、初期のフラッシュPICの頃、自作のインサーキット書き込み機で試したときには、ターゲットの回路にノイズ対策コンデンサを追加したりすると、突然書き込めなくなったりして困ったものですが、そんなことはもうありません。さすが21世紀のPICですねえ。

ただ、ちょっと困ったことが。PicKitはターゲットプラグからターゲットに電源を供給するようになっています。そのため書き込みが終了するとターゲットがすぐにリセット起動してしまうので、リセット後すぐにロボットが走り出すようなプログラムだと、ちょっと慌てることになります。

リセット後、ボタンでスタートするか、ロボットの動作までに数秒時間をおくようにしなければなりません。

Dscn0070今回はブレッドボードにボタンを乗っける場所が見つからないので、初期化後、数秒待ってから目的のプログラムを実行するようにしました。
書き込み後、速やかにPicKitを抜いてUSBからの電源供給を切り、改めて電源スイッチを入れてロボをスタートさせます。
写真のようにPicKitのターゲットプラグはケーブルで延長しています。ケーブルの長さは約60センチです。こうするとケーブルの抜き差しが楽になります。

次回はモータードライバと電源の話をしましょう。

2009年10月25日 (日)

実験用ロボットプラットフォームを作る

今回は対物センサーやジャイロなどの実験をしながらロボットを作りたいので、実験できるようなロボットプラットフォームを作ります。
そこそこのサイズで、手早く作れるもの、ということでアキバの模型店で見つけたのがタミヤの「4chリモコンロボット製作セットDX」です。

Dscn0042_2

モーター、ギアボックスが4個、その他諸々の材料がたっぷり入っているので手っ取り早そうです。ところがレジで値段を聞いてビックリ、5460円もします。3000円くらいかと思っていました。あわてて支払い方法をカードに変更しました。(情けない)

さて、これを使って製作したのが、この移動ロボットプラットフォームです。


Dscn0056

回路用には手持ちのブレットボードを取り付け、電子回路用の電源は7,4V2000mAHのリチウムポリマー電池です。すでに「たくさんセンサー」とマイコン回路は実装してあります。
モーターやギアはキットのものをそのまま使い、モーター用の電源には単三電池を3本搭載しています。裏側はこんな感じです。

Dscn0054

キットにはボールキャスターが支持輪としてついていましたが、今回はキャスターを使用しています。カーペットに乗り上げたりしてもスムーズに走行できます。

 


 


次回はプラットフォームの電子回路について書きます。

2009年10月24日 (土)

「人工知能プログラム」の実装は?

計算型人工知能はパソコン上で実行されます。これをどうやって作るかを決めなければなりません。処理系(言語)の選択です。
人間との対話をチャットやメールなどの文字で実行し、ネットワークを経由してロボットを制御、場合によっては画像認識などのオープンライブラリを使用するかもしれません。
もっと重要なことは、ネットタンサーとの接続のサンプルコードがあるものが必要です。
バンダイロボット研究所のHPには標準的なCでのサンプルが技術情報9にあります。また、同研究所で作成したロボワン用のC#のサンプルコードがここにあります。また、ネットタンサーのCDには付属ソフトのRobotWorks3を経由してネットタンサーを動かすVBのサンプルコードがあります。
いろいろあるのですが今回は無償で使えるVisual C# Express Editionを使用することにしました。

理由は次のとおりです。

1・ロボワン用のC#サンプルコードがわかり易い
ちょっと見ると煩雑なようですが、ネットワークユニットとの接続部分がライブラリ化されているので、トライアルアンドエラーの改造ベースとしては、使い易いように思います。

2・VB同様ユーザーインターフェイスの作成が簡単
これはいうまでもありませんね。画面は簡単に作れた方がいいに決まってます。

3・文字データの扱いが簡単そう
VC++とくらべてどうなのかよくわかりませんが・・・何となく簡単そうです。(雰囲気ですが)

4・OpenCVが使えそう
Cでの利用が前提のOpenCVですが、C#で利用する場合のラッパーがいろいろあるようです。果たして画像認識を使うかどうかはわかりませんが・・・

私はこれを使うのは初めてです。と、いうよりPCで本格的なソフトを作るのは初めてです。制御用マイコンのソフトは仕事でいやというほど作っているのですが、すべて素朴なもので、PCでのオブジェクト指向のソフト製作は余り自信がありません。
と、いうわけで基本からやりましょう。有名な「猫でもわかるシリーズ」を買ってきました。
読んで驚きました。他の処理系でソフト開発の経験があるヒトなら、本当にわかりやすいと思います。ウチの猫もお気に入りのようです。(彼は猫の手アセンブルが得意なようです)

Photo

2009年10月23日 (金)

シェーキーの「人工知能」

このプロジェクトではロボットとパソコンを無線LANで結び、人工知能プログラムはパソコンで実行します。この部分はネットタンサーのネットワークユニットを使う予定・・・なのですが、もうバンダイではネットタンサーの販売をやめたみたいですね。出来れば改造用にネットワークユニットを一台買いたかったのですが、手遅れでした。手持ちのネットタンサーを改造する事にします。

うーん、このブログを読んだ方が追試できるような内容にしたかったのですが、肝心のキーデバイスがデスコンでは残念ですね。代替の方法も検討したいものです。

さて、本題の「人工知能」ですが・・・

ネットタンサーにはロボットワークス3というコントロールソフトが付属し、ボーグスクリプトというイベントドリブン型の簡易言語でプログラムできます。これは、どのセンサーが反応したら、どんなアクションをさせるかを積み上げていく方式です。
全体的にはステートマシンで、うろつくステート→(特定の画像発見)→画像に接近するステート・・・と言う感じでステートの遷移を記述することで、目的の「知能」をプログラムできます。

これはこれでいいんですが・・・

ボーグスクリプトではサブサンプション的(実際のサブサンプションアーキテクチャとは異なっていますが近いものです)な人工知能は実現できるのですが、シェーキーで研究されたような「計算型」の人工知能は実現できません。
今回はオリジナルのプログラムを作って計算型の人工知能を試してみたいと思います。

ということで人工知能の目標は・・・

「メールで命令を送ると、家中を探して飼い猫の写真を撮り、状態を報告する」

ということにします。

これはちょっと説明が必要です。まずこれをご覧下さい。
これは何回もネットタンサーウェブに指令メールを送って操縦し撮影したものです。
本来、知能ロボットですから、「猫の様子を教えて」なんてメールを一本送るだけで「ホンダナノ ウエ ネテイル。ガゾウヲ オクリマス。」という返事が来るべきなのでは?と、いうことでの目標設定です。

ずいぶん難しい目標ですが、何事もチャレンジです。

次回は人工知能の実現方法をもう少し掘り下げます。

2009年10月21日 (水)

移動ロボットを考える(2)

前回の続きです。

■「慣性航法装置」
シェーキーは人工的な環境で(単純化された障害物や壁のある室内で)地図上での自分の位置を特定できていたようです。動画を見ると走行や旋回から停止するときに、細かく動いて位置調整をしているように見えます。車輪の回転角から現在位置を推定しているようです。累積誤差を画像を使って補正しているのではないでしょうか。
今回は前から試してみたかったジャイロと加速度センサを使った「慣性航法装置」の実験をしてみたいと思います。カッコ付きなのは果たして実用になるかどうか、今のところわからないからです。あまり自信はありません・・・
どういう結果が出るにせよ、圧電ジャイロや加速度センサの実用実験としては面白いと思います。

■制御装置
マイコンにはPICか秋月のH8マイコンボードを使う予定です。PICはCCSC、H8はgccで開発します。いずれもオンボード書き込みが出来るので、開発工数を下げることが出来ます。

■構造体
ボディは木材とアルミ板で製作します。自宅で作業をしなければなりませんから、板金作業はなるべく少なくしなければなりません。折り曲げ工具がないですし、ハンマーでたたくような作業は近所迷惑ですからね。デザインはシェーキーを踏襲しつつ、1/3スケールくらい(全高600mmくらい?)でまとめたい感じです。

■予備実験
「たくさんセンサ」や「慣性航法装置」の実験の必要があるので、簡単な移動ロボを使って予備実験をする必要有りです。市販キットかなんかを利用してやってみましょう。

次回は「人工知能」部分の検討をします。

2009年10月19日 (月)

移動ロボットを考える

今回は移動ロボット部分について考えてみましょう。
前回、おおよその仕様を決めたので、もう少し具体化していきたいと思います。
まずはこれからスタートしましょう。

■モーターとバッテリー
モーターは手持ちのタミヤ3633K300ギアードモーターを利用するつもりです。これは、バンダイロボット研究所のネットタンサー改造企画「フラワームーブメント号製作記」を見て、やってみようかなと買ったままお蔵入りになっていたものです。ホイールも同記事で紹介しているレインボウプロダクツの60mmアルミプーリーです。
これだと速度は120mm/secくらいだそうですが・・まあ、こんなものでしょう。
バッテリーは12Vのシールドバッテリーか、3セルのリチウムポリマーを使う予定です。なるべく省エネ設計にしたいとは思います。できれば8時間くらい実験が継続できることを目標としたいと思います。

■障害物(環境)センサー
これはちょっとやってみたいことがあります。それは「センサーをたくさんつける」という大変素朴なアイデアです。
ネットタンサーには前方の3方向に対して、赤外線対物センサーが搭載されています。しかし、このカバーエリアは限定的で、自動操縦で動かすと結構いろんなものにぶつかります。コストの問題で最低限の仕様になっているのだろうと思いますが、対物センサーに頼らなければならない自律ロボットとしては不十分です。
人間は、視覚を使って障害物を認識しています。視覚は眼球運動と脳の画像処理の機能で非常に広範囲の環境を把握します。しかし、この自律ロボットは視覚の性能が低いのでこれにあまり頼ることは出来ません。そこで対物センサーを視覚の補助として使えないか、というのがこのアイデアの根本です。
幸い、昨今レンジファインダーの原理を応用したシャープのPSDが比較的手頃な価格で入手できるようになったので、これを使うことにします。

■カメラ
これは言うまでもなく、ネットタンサーのネットワークユニットを分解して利用します。ホストのソフトはC#で書かれたサンプル「簡易テレオペレーションソフト」のソースコードがここにあるのでこれを改造して使います。

まだ続きます・・・

2009年10月18日 (日)

仕様を決めよう

作るロボットのイメージは決まりました。
製作を始めるために、もう少し細かい仕様を決めていきましょう。
前提となるのは、とにかく手持ちの資金、技術でつくれること、マンションのリビングで実験できることです。

シェーキーは大雑把に次の2つの要素で構成されたシステムです。

1・移動ロボット
実験室内の任意の場所に移動し、カメラなどから外界の情報を人工知能プログラムに送る。

2・人工知能プログラム
外部コンピュータで走っているプログラム。実験室の地図、カメラなどの情報や人間の指示から、移動のための計画を作成し実行。

と、言う感じです。それぞれについてこのプロジェクトでの仕様をもう少し詳しく決めていきましょう。

■移動ロボット部
1・室内を秒速200mmくらいで移動
2・周囲をカメラで撮影し、同時に距離センサーで被写体との距離を測定
3・普通の室内でも一定レベルの位置推定が可能
4・外観がシェーキーに似ている

3番目の項目は、シェーキーがトリップメーターだけで比較的確実に実験環境内で位置を特定できるのに対し、周囲の環境が変化する普通の室内(床に雑誌が落ちていたり、猫が寝ていたりとか)で実験するために必要だと思います。それから4は言うまでもないですね。

■人工知能プログラム部
1・外部のパソコンで実行
2・画像などのセンサーを使って周囲の環境の認識が可能
3・移動計画の作成と実行
4・チャットウィンドウでの人間との対話

これは、さらりと書いてありますが、結構大変な話だと思います。シェーキーの実験では、人工的な環境を使っているので、障害物と壁の識別は当時のコンピュータでも現実的だったようです。しかし、今回は実験環境が、普通のマンションの一室という制限があるので、2は相当に大変かもしれません。何らかの工夫が必要でしょう。

次回は各項目をさらに具体化していくことにしましょう。

2009年10月17日 (土)

どんなロボットを作る?

まずはプロジェクトの目標を作る訳ですが・・・今回は、子供の頃憧れたロボットの実現を目標にすることにしましょう。それがこれ↓です。残念ながら、ガンダムでもアトムでもドラえもんでもありません。

5953f54_19670821_427x800_2

これは1960年代後半から70年代初頭にかけて、スタンフォード研究所(SRI)で人工知能移動ロボットの研究に使われた、移動ロボットプラットフォーム「シェーキー(Shakey)」です。人間ほどの大きさで、カメラやレンジファインダーを搭載、頭部の「へその緒(umbilical cord)」で小型電子計算機とリンクしています。これは後に無線リンクになったようです。

移動は現在の多くの移動ロボットと同じく、左右の動輪をモーターで個別に回転させる「差動ドライブ」で移動します。資料を見る限りでは、カメラ以外のセンサは台車の前部にある猫のヒゲのような「衝突センサ(bump detector)」だけのようです。

バッテリーはどこにあるのかわかりませんが、無線リンクで動いているところをみると、おそらく台車の下にでも搭載されているのでしょう。当時の電子機械を駆動するとなると、自動車用バッテリー位のものが必要だったのではないでしょうか。

シェーキーは初期の人工知能による経路探索などの実験に使われ、実験室の人工的な環境下で、ドアから出入りしたり、物体を押して運んだりすることが出来たそうです。ロボットへの命令はテレタイプから行い、ロボットからの応答も同じくテレタイプに印刷されたそうです。つまり、ロボットと文字でコミュニケーションしていたと言えるでしょう。

このロボットを初めて見たのは小学校6年生くらいの頃、学習図鑑かなんかだと思いますが、こんなロボットが現実にあることにショックを受けたのを覚えています。と、いうことで、今回のプロジェクトはシェーキーを現代風にアレンジして再現することにしましょう。
21世紀の科学力をもってすれば、一介のサラリーマンでも、人工知能ロボットの製作くらい軽いもの、と信じて、プロジェクトスタートです。


シェーキーのもっと詳しい情報はSRIのページにあります。実際の実験の様子のわかる動画もあります。

2009年10月15日 (木)

はじめの一歩

仕事の関係でネットタンサーウェブでのブログ投稿を3ヶ月以上もさぼってしまいました。

今回は新しいカテゴリーでの再開です。
「ロボット作ろう」そのまんまですね。
ネットタンサーをいじっているうちに、これはこれで良く出来ているけど、やっぱりちょっと違うかなという想いが強くなってきました。これでは満足できないんですね。
そこで、思い切って自作してしまいましょう。

家庭で作れる範囲で、どこまで高性能なインテリジェントロボットが作れるかにチャレンジしたいと思います。

これもまた、のんびりしたプロジェクトになりそうですが、さてさてどうなりますか。

« 2009年5月 | トップページ | 2009年11月 »