2018年10月
  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 31      

カテゴリー

ブログパーツ

無料ブログはココログ

« 2010年3月 | トップページ | 2010年5月 »

2010年4月

2010年4月30日 (金)

iPhoneのインターフェイス方法を考える

リモートブレインの夏休み:iPhoneロボ

さて、どうやってロボットとiPhoneを接続しましょうか。

考えられる方法は、こんなところでしょうか。

1:無線LANを使用する
2:音声入出力を利用する
3:画面の画像とタップを利用する
4:画像認識を利用する(入力のみ)

1の無線LANはかなり自由度高そうですが、ロボット側に無線LANの機能が必要です。ハードの敷居が高いですね。ネットタンサーを改造するか、最近出たヤツだと、近藤科学のこれなんか使えそうですが、ちょっと高いですね。
それに、3G回線でインターネットに接続した状態で、無線LANが使えるのかどうかが不透明です。これが出来ないと、インターネット経由のリモートブレインが実現できません。

2はなんとかなりそうですね。
学生の頃、手作りコンピュータの外部ストレージと言えば、カセットテレコでした。FSKやトーンバーストで低周波信号にデータを乗せ、プログラムのセーブやロードに使っていました。安物のテレコでは300bpsくらいがいいところでしたが。
iPhoneでは、任意のサウンドファイルを連続的に出力できますし、マイク音量のプロパティがあるようですので、振幅変調でのデータ入出力は出来そうです。ただし、その時のビットレートは、やってみないとわかりません。

3は最も素朴な方法です。
見つけられなかったのですが、マインドストームの光センサでiPhoneの画面を読み、移動ロボットを動かしている画像があるそうです。
タップはちょっと難しそうですが、電気的に人体をシミュレートした回路で実現できるのではないでしょうか。
ただ、通信速度はそんな高速ではないでしょう。

4は入力のみなので、他の方式と併用することで、入力チャネルを広げるために用いることになるでしょう。これはあとで考えればいいと思います。

例によって、実験用ロボットを手っ取り早く作ってiPhoneプログラムの肩ならしをするために、最も簡単な3の画面方式をテストすることにします。

それも、タップの方はまだノーアイデアなので、ともかく画面を光学的に読む方法を試してみようと思います。

2010年4月29日 (木)

iPhoneでロボット制御は出来るの?

リモートブレインの夏休み:iPhoneロボ

さてやるぞと参考書をそろえたのが今年の2月。
こんな本をそろえました。

Dscn0620

もう十年以上前になりますが、当時の職場のスタッフに、「何かを始めるなら、なるべく多くの参考書を用意した方がいい」と、アドバイスをもらいました。
実際にやってみると、本が異なれば文章表現も違うので、Aの説明ではわからないけれどBならわかる、なんて事が多くて、なかなか有効でした。
それ以来、新しいことを始めるときには、先ず本屋に行って、入門書からちょっと難し目のものまで、何冊か参考書を買うことにしています。

「あー、こんなに買っちゃったな、ちゃんとやらなきゃ」という、プレッシャー効果もありますしね。

閑話休題。

ぼちぼちとiPhoneでのソフト開発を検討していくと、ロボットの制御装置としては、ちょっと問題なことがわかりました。

それは、「I/Oがほとんど使えない」ということです。

Docコネクタにはシリアルポートもあるし、ブルーツゥースも搭載になっとるのになんで? と言うことですね。
Apple標準の開発環境とライセンス範囲では、これらのポートを自由に使えないということなんです。

うーん困りました。

「Jail Break」という、Phoneのシステムを改造して、この辺の制限を取り去る方法はあるのですが‥‥
プログラマーではありませんが、ソフト関係で生計を立てている身としては、出来ればライセンスの範囲内でやりたいですね。

2010年4月28日 (水)

というわけでiPhoneです

リモートブレインの夏休み:iPhone

と、いうわけでiPhone始めました。

Dscn0533

実はこれ、昨年末にドコモの古い携帯から乗り換えました。

私は、仕事でもプライベートでも、ほとんど携帯電話を使わないので、iPhoneにもあまり興味がなかったのです。ところが、ドコモの古い携帯のサービスを終了するという通知が来てしまい、ならばiPhoneにするかな位の気持ちでした。

しかし、よく考えてみると、インターネットへの接続環境、GPS、カメラ、加速度センサなんかが、ひとそろい小さなパッケージに収まっている訳で、しかもプログラミング可能。こりゃあいいんじゃないですか?

2010年4月27日 (火)

始まりました

リモートブレインの夏休み:はじまりです

新しいカテゴリ始めました。このブログのタイトルからすれば自然なカテゴリー名ですが……

リモートブレインロボットにも、アウトドアでの夏休みを楽しませてやろう、という企画です。本家花岡ちゃんのように、ステキな出会いがあるかもしれませんからね。

そもそものきっかけは「つくばチャレンジ」でした。アウトドアでの自律ロボットの競技というのは、初耳だったので、2008年だったかな、学園都市まで見物に行きました。

その時の競技自体は、それほど面白いとは思いませんでしたが、野外型のロボット競技という、大きく言えば「自然を相手にしたロボットのチャレンジ」というのは興味深かったですね。

大体のロボット競技は人工の環境が舞台で、その上、ルールでがんじがらめに縛られているように思います。まあ、だから競技が成り立つのでしょうけれど、反面、大胆なアプローチを試し難いのではないでしょうか。

「タイレル」騒ぎのあとのF1みたいなもんですかねえ。技術の水準が一定レベルを超えると「正解」が見えてきて、みんなその正解を目指すようになる。その結果、レースカーのコンセプトやデザインが、似通ってくるようなものかもしれません。……ちょっと脱線し過ぎかな?

話を戻しましょう。

ともあれ、野外型自律ロボットには、いろいろと可能性があるように思います。さらにインターネット接続で、「世界とつながって」いるとしたらどうでしょう? 

2010年4月24日 (土)

PSD GP2Y0A21YKの電源回りを調べる(その2)

ロボット作ろう・シェーキー製作記

前の続きです。

■ハッキリしないこと その2
「平均電流 30mA」だけど、どんな電流の平均なの?

つまり、このセンサはどんな風な電気の使い方をするのか、ということです。
ほぼ一定の電流を常時消費するのでしょうか? はたまた、パルス的に電流を消費し、その平均が30mAなんでしょうか? パルス的に電流を消費するなら、そのピーク電流はいかほどなんでしょうか?

■実験方法:
PSDの電源に1オームの抵抗を入れ、この両端の電圧をオシロで読み、電流の時間変化を観察する

Dscn0606

■結果:
まずは全体が見渡せる波形写真を。電源は安定化電源から5Vを供給しています。電圧軸100mV/div時間軸10ms/divです。

Dscn0600

これを見ると、40msくらいで一計測周期になっているのがわかります。また、細かいパルス状に電流を消費、それ以外の部分ではほぼ電流0です。1オームの抵抗両端のピーク電圧は220mVくらいなので、ピーク電流はI=E/R=220mV/1=220mAという計算になります。

結構ピーク電流は食ってますね。時間軸を200us/divに広げるとこんな感じです。パルス状に大きな電流を消費し、それ以外はほとんど電流を消費しないという、かなりエキセントリックな電気の使い方です。普通のアナログ回路の発想で電源を設計するとちょっと危険かもしれません。

Dscn0603

細かく測定すると、パルス幅が128us、繰り返し周期が1024usくらいです。デューティが1/8となり、大雑把に(測定周期に休止期間がありますが、それは無視するとして)平均電流を計算すると、220mA/8で、27.5mAということになります。これはデータシートの値とそこそこ合致しますね。
この測定では回路に1オームの抵抗が入っているので、5V直接なら、もう少し電流は流れているはずです。

これからわかることは、14個のPSDを使うと、短い時間ですが、3A近いパルス電流が流れる可能性がある、ということです。素子ごとに10uFの電解コンデンサを入れるようデータシートに指示がありますが、元々の電源も余裕のあるものが必要なようです。

幸い、電源ラインのノイズはPSDの精度にあまり影響を及ぼさないのは「その1」でわかっています。しかし、その電源を、他のセンサやADの参照電圧に使うのは考えものです。

PSDはセンサなどとは別の電源ラインから給電した方が安心のようですね。モーター電源を別にするような感じだと思います。

2010年4月22日 (木)

PSD GP2Y0A21YKの電源回りを調べる(その1)

ロボット作ろう・シェーキー製作記

移動ベースにはPSD GP2Y0A21YKを最低14個使います。実験用ロボでは、9個のPSDから電源ラインにノイズが乗り、ジャイロセンサのAD変換に影響が出ました。14個ともなると、問題はもっと深刻です。ここで少しPSDの電源回りについて調べておこうと思います。

思えば、PSDを初めて使ってから10年近くになりますが、「供給電圧4.5〜5.5V」「平均消費電流 30mA」というデータだけで設計し、大体の場合は問題なく動いていました。安定で信頼性の高い部品なんですね。
でも、電源をきちんと設計しようとすると、どうもハッキリしないことが出てきました。これを今回はテストしてみようと言う訳です。

■ハッキリしないこと その1
電源電圧が変動したら、PSDの距離検出出力はどれくらい変動するのか

つまり、電源電圧がふらついた時に、距離が正しく計れるかどうか、と言うことです。

■実験方法:
PSDの正面50cmくらいに白い紙を置き、電源電圧を変えながら、検出出力の変化を見る

■結果:
4.5〜5.5Vの範囲では、電源電圧が変化しても距離検出出力はほとんど変わりません。4.5Vより下がると出力電圧も下がってきます。つまり、PSDの電源電圧は多少ふらついても(定格内なら)距離検出出力に影響は出ない、と言うことになります。そんなに電源の安定度に気を使わなくても良い訳ですね。

もう一つハッキリしないことがあります。それは「平均消費電流」です。実際の電流波形はどんな風になっているのでしょう。次回はこれをハッキリさせましょう。

2010年4月19日 (月)

ドライブサーバとセンササーバ

ロボット作ろう:シェーキー製作記

ドライブサーバとセンササーバのソフトがほぼ出来上がりました。

バスコンフリクトからのリカバーにちょっと手こずりましたが、まあ何とかなっているようです。

移動ベースを塗装してから、PSDやセンササーバ、ドライブサーバの基板の取り付け、配線の予定です。塗装が一番大変ですねえ。どうしましょう。段ボールハウスみたいなもんを造って、ベランダでやりましょうか。

サーフェーサーを吹いてペーパーがけの繰り返しなので…… 木材だから手間かかりそうですね。

ともかく、外周部へのPSD(合計14個)を取り付けてしまったら、PCソフトでマップ作成の実験です。
ロボットを障害物にそって自動操縦で動かしながら、障害物や壁のマップを描くアルゴリズム(の模型かな?)を作ってみたいと思います。

以前、実験用ロボでテストしたルックアップ・ルックダウンセンサは、しばらく実装予定はありません。当面、側面センサだけの単純な構造で、特性を試すつもりです。

2010年4月13日 (火)

ベースのPSDの配置を考える

ロボット作ろう:シェーキー製作記

基本的な障害物計測に使うPSDの配置を試して見ました。

PSDはベース部分の側面に写真のように配置します。まだ検討用なので、左前の部分だけ仮止めしました。

Dscn0587

特にPSDが二つ並んでいる部分は、相互に干渉が出ないかどうかを、オシロをXYモードにして確かめました。赤外線スポットをレンジファイダーの原理で読み取る訳ですから、隣センサーの赤外線スポットを誤認識するかもしれません。

いろいろな物体でテストしてみましたが、このように並べても相互干渉は見られませんでした。

GP2Y0A21YKはかなり個体差があるようです。同じ距離でも出力電圧に1割くらいの差が出る場合があります。電圧から距離への変換式は個体ごとに係数を変えた方が良いようですね。

頭部レンジファインダーの中には、超音波センサを検討中です。

もう20年ほど前になりますが、ロジックICで超音波測距センサを作ったことがありました。秋月でも超音波測距センサのキットがありますが、アレよりもっと簡単で8bit、1ms単位で計測できるものでした。センスアンプはトランジスタ2石でしたけど、3mくらいは(ビット数の関係もあり)計測できたように思います。
いろいろと使い勝手があったように思うのですが、忘れてしまったので、もう一度チャレンジしてみようと言う訳です。

ただし、もう21世紀ですから(こればっかし)モジュールとして販売しているソナーを使ってみようと思います。

選んだものがこれです。
いくつかモデルがあって、それぞれソナーの検出特性が異なるのと、アナログ出力があることで採用しました。特性がよくわからないので、とりあえず評価用セットを買ってみました。
近日中に実験してみたいと思います。

Dscn0588

2010年4月12日 (月)

頭部カメラのハウジングを作る

ロボット作ろう:シェーキー製作記

ネットタンサーのカメラをシェーキーの頭部におさめるのに、良いハウジングを見つけました。
「ダミーカメラ」です。アキバの監視カメラなどを扱っている店で980円で購入しました。

Dscn0576   Dscn0578

左の写真のように見かけは監視カメラですが、右側の写真のように中身はがらんどう(ところで、近頃吉祥寺で「ぐわらん洞」というとスープカレーですが、あのフォークの聖地「ぐゎらんどう」とは違うんですよね。高校のとき一度だけ行ってみたことがあります。おそるおそるだったですが)です。ここに乾電池を入れると、レンズ脇のLEDが点灯して、いかにも監視カメラが作動しているように見える訳です。カメラ後部にはちゃんとBNCコネクタがついていて、ダミーの同軸ケーブルを接続するようになっています。たいしたもんですね。そうそう、「監視カメラ作動中」のステッカーもついていました。

Dscn0584

不要なリブやポストをニッパーで取り払って、このようにカメラ基板をおさめました。基板の四隅を1mmほど切り落とすとぴったり収まります。レンズ部分には穴があいていなかったので、これも適当にあけました。

カメラ後部のスペースには、レンジファインダー部分に搭載するセンサのセンササーバ基板を組込みます。タッピングビスで簡単に開け閉めできるので、メンテナンスが容易です。

仮組するとこんな感じです。カメラが本物っぽいので、模型としてのクオリティが上がりますね。

Dscn0589_2

2010年4月 6日 (火)

Coronの電源問題まとめ

ちょこっとCoron:ねずー製作記

前の記事がちょっとごちゃごちゃしていたので、ここでいったんまとめておこうという訳です。

まず、かかえていた問題点を整理すると

●モーターの回り出し時にセンサの値がおかしくなるようだ

という事になります。この時の状況を計測すると次の事実が出てきます。

●センサの値をオシロで読むと、特に異常な値は出ていない
●モーターの回り出し時にモーター電圧(レギュレータの入力電圧)が2.7Vほどにまで下がる
●そのためマイコンやセンサの3.3V安定化電源が100msほどの間、電圧低下する

Coronの安定化電源は低損失の三端子レギュレータのようで、3.3V出力するには少なくとも入力に3.5V位は必要ですから、電圧降下は無理からぬことです。
マイコンにはADコンバータが組込まれ、それでセンサの電圧出力を読み込んでいます。そしてその参照電圧(Vref)はマイコンの電源電圧と同じです。これから、次の事実が導かれます。

●モーターの回り出し時にADコンバータの参照電圧が3.3Vより下がる

ADコンバータの参照電圧が下がるとどうなるか、参照電圧を変えた場合のADの値はこんな風に変わります。

ADの入力電圧1.5V、分解能12bit(4096)の場合

■参照電圧3.3V 読み出し値=1.5/(3.3/4096)=1862
■参照電圧3.0V 読み出し値=1.5/(3.0/4096)=2048

これを見てもわかるように、同じ入力電圧で読み出し値が200近く変わります。電圧が下がっているのに参照電圧3.3Vのつもりで値だけを見ると、入力電圧が1.65Vに跳ね上がったように見える訳です。

したがって対策は

●ADコンバータを使うならモーター動作時に3.3Vの電圧が下がらないようにする

ということになり、今回取った具体的対応策が

●バッテリー部のダイオードをバイパスし、レギュレータの入力電圧を0.8Vほど高くする

ということでした。

実際、システムの電圧マージンを考えると、4.8Vでは今回取った対策でもぎりぎりです。バッテリの電圧をあげるか、もっとバッテリ周りの電気抵抗(内部抵抗や電池ボックスとの接触抵抗)を低くする工夫をしたほうが安心だと思います。

ダイオードをバイパスしないで使うなら、電源電圧は最低でも6〜7.2Vが必要です。この場合モーター電圧は5.2〜6.4Vくらいになります。

Coronボードとサーボを使って自律ロボットを目指す方は、電源に気を配らないと、おかしな反応に悩まされることになります。気をつけましょう。

2010年4月 5日 (月)

ジャイロ問題再考?はたして真犯人は…

ちょこっとCoron:ねずー製作記

通勤電車の中でつり革につかまりながら、今回のトラブルを考え直してみたところ、次の事実に思い当たりました。

1・衝突検出の加速度センサがすぐ反応してしまうんでハンドラをコメントアウトしたっけ
2・そういえば最近ねずーを充電してなかったなあ

そうですね。モーターが本気で回るようになって電池の電圧降下が顕著化、それがセンサやADコンバータの電源である安定化した3.3Vにも影響を与えているのでは?

帰宅後、早速シンクロで電圧をモニタしてみました。シンクロは久しぶりの登場で画面が猫の毛だらけですが。
左が3.3Vのライン、右がモーター電源のモニターです。電圧軸は1V/div、時間軸は100ms/divです。

Dscn0548  Dscn0549

本来変動してはイケナイ左側の3.3Vのラインが、モーター回転と同時に2.5Vくらいまで落ち込んでいます。
ただし、写真はありませんがジャイロセンサや加速度センサの出力には何も影響は見られませんでした。これらのセンサの動作下限が2.7Vなので、これくらい下がっても正常に動作しているようです。

となると、どうでしょう。ADコンバータの基準電圧も3.3Vから取っているので、これが下がるとセンサの電圧が上がったように見えるはずです。加速度センサの場合で考えると、衝突時の加速度で電圧上昇するように取り付けられているので、

モーター起動→ADコンバータの基準電圧降下→相対的に加速度センサの電圧上昇→衝突加速度と誤認識

と、いう現象のようです。ジャイロも同じ理屈で方向が狂うようです。

前にも書きましたがCoronの電源回路にはUSB、DCジャック、バッテリいずれからの給電にも対応できるよう、電流合成のダイオードが入っています。これが0.8Vくらいの準方向電圧降下を引き起こしており、ねずーのように電源が4.8Vと比較的低い場合は問題になります。
前の写真右側を見てもらうと、ダイオードを通ってきているモーター電源は無負荷でも4Vくらいしか出ていません。ダイオードの準方向電圧降下が影響しています。

ということで、ダイオードをショートすることにしました。ねずーはDCジャックから給電しているので、そこのダイオードをショートします。条件によってはバッテリーにいくらか電流が流れ込む可能性もありますが、トリクル充電程度なので問題はないでしょう。
Photo

これをすることにより、電圧波形はこうなりました。ダイオードをショートしたのでモーター電源=バッテリーです。無負荷で4.8V、最低でも3Vくらいの感じです。測定時はバッテリーが大分へたった状態ですが、電源コンデンサの効果もあり3.3Vラインには影響は出なくなりました。右側の写真はショート改造の様子です。

Dscn0553  Dscn0552

その後、走行テストをしたところ、きちんと直進するようになりました。すぐにバッテリーを充電してしばらく走行させましたが、問題は見られませんでした。

ジャイロではなく、電源が真犯人だったのですね。通勤電車も役に立つものです。
ただし、まだ十分な電圧マージンがあるとは言えないので、もう少し検討が必要のようです。

2010年4月 4日 (日)

またまたジャイロのノイズ!

ちょこっとCoron:ねずー製作記

ねずーのギア比を落とし、割り込みを使ったプログラムに変更しようとしていじっていると、どうもなんか変です。

ジャイロの値がぶれるようです。最初はソフトを疑って割り込み周期を計測したりしてみたのですが、コレは問題ありませんでした。タイマーでの割り込み周期は正確です。少なくともジャイロセンサの積分結果に影響の出そうな誤差はありません。

最初のころのテストプログラムに戻って、ジャイロで直進補正しながらの前進をさせてみると…モーターパワー50だときれいに直進しますが、90くらいにすると、加速時に右に15度くらいカーブし、あとはそのまま直進することがわかりました。

減速比を落としたためモーターの立ち上がりがよくなったためでしょう。電気的な問題なのかそれとも機械的な振動が影響しているのかはまだわかりません。

現在の回路は何も考えずジャイロセンサの出力をAD変換機にいれているので、ここにCRの積分回路を入れて、10Hzくらいから上を減衰させてみようかと思います。

2010年4月 2日 (金)

オドメトリによるナビゲーションのまとめ

ロボット作ろう:シェーキー製作記

ナビゲーションのテストがほぼ終わったので、この辺で一度まとめておきましょう。
試作ソフトは、地図上の座標(ウェイポイント)をいくつか指定すると、それを順番にたどって移動する機能の実験をするためのものです。
画面は相変わらずこんなものです。クリックすると拡大します。

Photo

マップ上のバツ印がウェイポイント、その他は前と同じです。マップ上の表示は、この↓動画の実験結果です。

動きやナビゲーションの様子、誤差などが動画でわかると思います。
直進時に二つのモーター音が共鳴していますね。回転数がそろっているからです。双発プロペラ機のようにうなりが出る時もあります。そうなるとかっこいいですねえ。マニアックですが。
動画では音が大きいように思えますが実際はそれほどではありません。

基本的に
1・次のWPへ狙いを定める
2・次のWPまでの距離だけ前進する
という、単純なアルゴリズムなので、WPとの距離が離れるほど、誤差が大きくなるのはやむを得ません。遠距離射撃みたいなもんです。

テストで行った三角軌道走行を10回繰り返した結果は、基準点となる動輪が直径30cmの円内に収まる程度でした。
ただ、角度が10度くらい深くなるようなので、おそらくオドメータから旋回角度を計算する式にわずかな誤差があるではないでしょうか。右旋回ばかりなのでその誤差が累積している可能性があります。
左右の旋回角度の総計をそろえるなどの工夫が必要かもしれません。

いずれにせよ、センサによる自己位置の補正の必要があります。

ということで、そろそろセンササーバーの製作に取りかかろうかと思います。

« 2010年3月 | トップページ | 2010年5月 »