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年4月 | トップページ | 2010年6月 »

2010年5月

2010年5月31日 (月)

なるほど、これがツイッターなのだ

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

最近あまり進んでいないですが‥‥
この本を追加して、ツィッターからロボットに命令するテストプログラムを作っています。

Dscn0713


Objective-Cでのプログラミングは、あまり深く考えなければ、結構簡単です。サンプルもたくさんありますし。

誰かのツィートのリスト(タイムラインでいいんでしたっけ?)を取得するのは、認証も必要なく、NSURLで、実に簡単に出来ます。

現在の目標は、私のツィートでロボットをリモコンするという、ネットタンサーウェブの「メールで留守番」アプリみたいなものを作ることです。

画像のフィードバックは、ちょっと後回しにしていますが。

ところで、最近わかったことは、「ツィッターってプッシュ型でないんだ」ということです。
ツィッターが話題になって、もう1年以上なのに今更? といわれそうですね。

TVのワイドショーなんかで、コメンテーターの「ワタシがちょっとアイデアをつぶやくと、たちまち何人ものフォロワーから、具体的な提案があるんですよ」なんてなハナシをたくさん聞いていたので、当然、つぶやいたとたんにフォロワーに配信される、携帯メールみたいなプッシュ型のシステムだと思い込んでいたのでした。

まだまだ、謎は多そうですね。(大丈夫か?)

2010年5月25日 (火)

ツィッターのテストを急ぎましょう

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

ちょっと前の書き込みで、次の目標はGPSにしましたが、ここで急遽変更です。ツィッターでのロボットコントロールの予備実験を先にすることにしました。

と、いっても唐突でわかんないですね。説明しましょう。

今考えているiPhoneを使ったリモートブレインロボットは、iPhoneをインターネットへのゲートウェイとし、インターネットに接続したパソコン上の人工知能や人間(!)を、リモートブレインとして使うことを考えています。

ということは、ロボットとパソコンなりブラウザなりをつなぐ、インターネット上の仕掛けが必要です。

ピアツーピアでつなぐ、レンタルサーバに専用のシステムを構築する、メールなどのポピュラーなインターネットサービスを利用するなどなど、いろいろなレベルでの実現が可能ですが‥‥ 最近の傾向からみると、何らかのインターネットサービスを利用するのがスジのようです。

ネットタンサーでは、ブログとメールを使って、人間をリモートブレインとする、ロボット制御を実現していますが、ブログAPIは一般には公開されてない(少なくともココログのサポートHPでは見つかりません)ですし、メールはクライアントが結構難しいので、ちょっとアマチュア向きではありません。

流行りのツィッターは、APIが公開されているし、basic認証を使っている分には、意外と簡単にアクセスできそうです。
また、流行りだけあって、パソコン以外の端末のクライアントも充実しており、「どこからでも簡単にロボットに命令を出せる」というユビキタス性も確保できそうですしね。

ツイッターなんて、自分では使うつもりは無いですが、ロボット制御に使うという目的でもあれば、試してみようという気になるかも‥‥ ということもあって、これでやってみよーかなと思っていた矢先、ちょっと困ったことがわかりました。

それは、ツィッターがbasic認証のサポートを、6月末で打ち切ると言う情報です。
あちゃーと言う感じです。ツィッターに興味を持っているアマチュアデベロッパーの皆さんは、すでに自明のことのようですが、付け焼き刃でツィッタークライアントを開発しようとしている私には、ちょっとショックでした。

他の認証の方法を調べましたが、残念ながら、ちょこっと出来るような内容ではなさそうです。

と、いうことで!

「6月30日までに、ツィッターでのロボットコマンドのプロトタイプをテストし、良さそうなら、その後、本格的にクライアントを作る」

という作戦でいきましょう。

ツィッターでのロボットのリモートブレイン化は、iPhoneロボだけでなく、シェーキーにも応用可能ですから、ここでやっておくのもいいですね。

2010年5月24日 (月)

iPhoneインターフェイス再考

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

iClimberでは、左右のモーターのON/OFFを、画面上のドットの点滅でコントロールしています。これはとても簡単ですが、もうちょっと複雑な制御をしようとすると、なんとかしてデータ転送をしたくなってきます。「90度右旋回」なんてコマンドを送りたい場合ですね。

そこで、ドットの点滅を使って、データをシリアル転送できないかの予備実験をしました。

今回はiClimber同様、画面にドットを出して、一定周期で点滅させ、iClimberの光センサの出力を、シンクロで観察します。左の写真がドットの様子、右がセンサをかぶせた様子です。

Dscn0712  Dscn0711

まずは、100ms白、100ms黒の繰り返しのときの波形です。パルス幅100msですね。ここではドットの点滅は1、0の繰り返しですが、実際は送信するデータのビットに対応して点滅する訳です。

Dscn0704

波形がなまっているのは、センサがcdsだからです。見たところ、きちんと波形は伝達できているので、このレートでのデータ転送は問題ありません。
この時の転送レートは10bpsです。

次に50msにパルス幅を縮めた場合の波形です。

Dscn0705

波形のなまりはともかくとして、これでも波形は伝達できてます。これでの転送レートは20bpsです。

次はパルス幅30msです。

Dscn0710

そろそろ液晶のリフレッシュ周波数との干渉が見られるようです。波形が乱れているのは、ドットの表示時間にばらつきがあるからです。この程度のばらつきなら、データ転送できるかも?です。この時のレートは33bpsです。

ソフト的にはパルス幅をもっと短く出来ますが、表示としてはこの辺が限界のようです。

次はこれでデータ転送のテストをしてみましょう。あ、その前にセンサをもっと高速のものに変更する方がいいですね。

2010年5月23日 (日)

シェーキーの近況報告です

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

なかなか進まない感じですが‥‥ 現在システムダイアグラムを一部修正して、頭部をのぞく部分のハード製作をぼちぼち進行中です。

Photo

以前書いたダイアグラムとは少し変更があります。

・ベース部分のセンサーサーバの数を減らしました。
・ジャイロ関係をクライアントに接続することにしました。
・頭部を動かすサーボの制御をクライアントから行うことにしました。
・頭部にもベースと同じセンササーバを搭載することにしました。

主に過剰な仕様の「仕分け」と、製作工数の見直しの結果です。
それからクライアントは現在H8/3052ですが、これをより高速のSH74125Fに変更しようかなと思っています。浮動小数点演算で、オドメトリの計算をこちらでやってしまおうかと考えているからです。
ネットタンサー改造の無線シリアル通信が、9600bpsとあまり早くないので、リモートブレインから外せるところは、なるべくロボット本体でやってしまおうという考えです。
こうすると、ロボットには移動先座標を与えるだけでよくなります。通信量はぐっと少なくなるでしょう。

とにかくクライアントまで製作しないと、マップ作成のテストもできません。じっくり取り組んでいくしか無いでしょうね。

2010年5月20日 (木)

次のミッションはiPhoneでGPS

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

iClimberがすんなりミッションクリアしてしまったので、次の目標を、GPSでのナビゲーションにすることにしました。

ここで問題なのは、テスト用のキャタピラプラットフォームのスピードです。現在、時速換算で0.36Kmしか出てません。GPSのテストなら、少なくとも数百メートルは走行させたいところです。これだと1時間くらいかかりそうですね。

と、いうことで別のテスト用プラットフォームを用意することにしました。工作好きとしては、ぜひとも自作したいところですが、シェーキーの仕掛かりも抱えていることで、ここは、市販のラジコンおもちゃを簡単に改造することにしました。

大型のラジコンバギーなら、トイザラスなんかでいろいろありますが、それらはステアリング方式です。出来れば、差動ドライブの戦車のようなものがいいんですが‥‥なかなか適当なものがありません。
タミヤのRC戦車は、とても良さそうですが、ちょっと高いですね。

それで!ヤフオクで見つけたのがこの巨大なムシです。(送料込みで5000円くらいでした)

Dscn0691

ラジコンで左右の足を素早く動かして、戦車式に走行・方向転換します。なおかつ背中からは、ガトリング式のミサイル発射機がせり上がり、ナーフミサイルを8発、連射します。

これはすごいですね。トイコーで製造し、マテルブランドで販売したもののようですが、なんと言ってもでかくて不気味です。

肝心の走行速度は、時速1kmくらいです。ちょっと遅めですが、適当な速度ではないでしょうか。

これを改造することにしましょうか?

2010年5月 9日 (日)

移動ベースの塗装完成

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

外周部の黒い部分を塗り分け、塗装が完了、環境測定用のPSDも取り付けました。
結局、それほどピカピカの仕上がりではないですが、まあ我慢できる程度です。

Dscn0669

GP2Y0A21YKは、外周部に14個配置しました。電源は前に検討した通り、他のロジックとは別系統にします。今後の拡張も考慮して、5V2AのDC-DCコンバータを用意しました。

Dscn0671

それから、外装部分も作り足しました。フロントパネルの部分です。これは、アルミで作ろうかと思っていましたが、お座敷では工作が大変なのと、プラ板が余っていたので、プラスチック製になりました。

Dscn0674

この写真では、後期のシェーキーのように、カメラを本体前部に置いてみました。この配置だと、カメラを下に向けて、ロボットの足下を見ることが出来ます。

2010年5月 6日 (木)

合板の塗装は難しい

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

移動ベースを組上げるには、まず塗装をしなければなりません。

このゴールデンウィークは遠出の予定が無かったので、塗装を進めることが出来ました。

合板のように肌の粗い木材の塗装は、中学の頃のバルサ工作以来です。当時は、下地仕上げもろくにしないで、豆ラッカーをはけ塗りですから、もうなんというか、ガサガサの仕上がりでした。

それ以来、模型にしろ、家具にしろ、木工品の塗装などしたことがありません。
はたして、うまく行くのでしょうか。

ともかく、定石どおり、砥の粉で木目を押えてみました。初めての作業です。どうも加減がわかりません。

乾燥させてから、プラモデル用のサーフェーサーを吹いて、800番でペーパーがけの工程を、2回やりました。
その状態がこんな感じです。

Dscn0655

写真ではわかり難いですが(クリック拡大します)、かなり地肌がでちゃってます。が、サーフェーサーが無くなってしまいました。

次に、シルバーを吹いて、ペーパーがけをこちらも2回繰り返しました。
これくらいすると、だいぶ地肌が隠れます。

Dscn0667

ここでタイムアップ。あと仕上げにもう一回シルバーを吹き、シャーシのふちを黒く塗り分ければ完成です。

2010年5月 4日 (火)

iClimberの再チャレンジ

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

アプリの設定画面を作りました。実行画面(女の子のイラストがある画面)右下の、小さなアイコンをタップすると、画面が裏返ってこの設定画面が現れます。

Img_0083

SENSITIVITYでは加速度センサの閾値を調整します。
画面では0.03Gになっているので、左右に傾いた結果、0.03Gより大きいか、-0.03Gより小さい値のとき、舵取りをするように設定されています。
数値が小さいほど、感度が良くなり、わずかな傾きに反応するようになります。
今回の実験では0.015Gくらいに設定しました。

OFFSETはロボットを水平面に置いた時の、加速度センサの値を補正する目的で設けました。
本来、水平に置いたら加速度センサの左右成分は0になるはずですが、実際は少し傾いた値を示します。試作機では、-0.02Gくらいになることが多いようです。少し左に傾いた状態です。
このまま平らなところを走行させると、振動などで、確率的に右へ曲がろうとするアクションが出易いため、右回りにカーブして走行してしまいます。

これを補正するために、加速度センサの読みに、-0.05〜0.05を加算するようにします。平らな路面で右へ曲がるようなら、スライダをセンターから左方向へ動かせばいいようになっています。

これらの値は、実行画面で参照出来るよう、アプリ共通のプロパティに保存されますが、このプロパティをどこに置くのかは、結構謎でした。
結局、デリゲードファイル(そういうのかな? アプリ名Delegate.hとかです)に置くことで何とかなりました。


さて、今日も青葉若葉のにおう中、前回と同じ坂道にチャレンジします。
マンションの車寄せのスロープで足慣らしをしたところ、調子が良さそうなので、坂道の登り口からスタートすることにしました。前回は、傾斜が比較的大きい、坂道の中央部分でテストをしています。

今回は実験アシスタントなしなので、ちょっとスタート時の画像が切れてます。最初の画像の2mほど手前が登り口、今回のスタート位置です。

かなり長い(10分くらい)動画ですが、無編集で掲載することにしました。iClimberの奮闘をご覧下さい。

結果は、ご覧の通り完走です。走行距離は60mほど、坂道の入り口からてっぺんまで、約10分で走行しました。
カメラを止めた後もiClimberは走行を続け、最後の画像で坂道の左側に見えていた茂みを越え、さらに数メートル走行後コースアウトしました。その辺りはすでに平らな路面なので、無理からぬことだと思います。

坂道は途中でカーブしていますが、iClimberは、きちんと道に沿って走行しています。道の中央部が水はけのために少し高くなっているのか、はたまた何かの偶然なのか、これから検討の必要がありそうですね、

ともあれ、おめでとうiClimer! 今夜は「キヨハラさんちの点心の定番」イカ数の子をツマミに祝杯をあげましょう。

2010年5月 3日 (月)

青葉若葉のにおう中

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

「花岡ちゃん」ですから、このタイトルも使いたいですね。

出来上がったiClimberとカメラを持って、奥さんと近所の公園に出かけました。

その公園には、芝に覆われた小高い丘があり、その斜面をテストコースにと思っていたのですが、まさに季節は新緑で、芝や雑草が伸び放題、華奢なiClimberは乗り上げてしまって走行できません。

そこで計画変更、丘を登る小道をターゲットに設定しました。

テスト結果は動画でどうぞ。

iClimberは、けなげに山頂を目指しますが、残念ながら失敗でした。走破距離は高々20mくらいでした。
撮影の後も、何回かテストしてみましたが、同じようなコースをたどり、側面へ出てしまいます。キャタピラが外れ易いのも気になります。

そもそも富士山のように円錐形の山を登るアルゴリズムなので、坂道のように横方向には平坦で幅が狭いコースは苦手です。
また、現場で、加速度センサの閾値やオフセットを、調整出来るようにした方がいいようです。

キャタピラが外れてしまうのは、ロードホイールの支持部を止めている木ねじが緩んで、キャタピラにテンションがかかると、外側に開いてしまうからでした。

ちょっと手直しして、再チャレンジしようと思います。

2010年5月 2日 (日)

iClimber試作シャーシを作る

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

このプロジェクトで作るロボットをiClimberと命名、手持ちの部品を利用して、こんなシャーシを作りました。

Dscn0623  Dscn0626_2

主な構造体は、シェーキーで使った合板の残りです。実験用ロボのギアボックスに、タミヤのキャタピラセット‥‥じゃなかった「トラックアンドホイールセット」を使いました。

とても華奢なキャタピラなので、あまり過酷な環境は無理ですが、レンガ敷の歩道や、短い芝の上でもちゃんと走行します。

iPhoneはシャーシの上部デッキにゴムバンドで取り付けます。光センサの箱も、同様にゴムバンドでiPhoneの画面に押さえつけます。
このようにしっかり遮光しても、iPhone画面のむき出しになっている部分に直射日光があたると、光ファイバーのように反射を繰り返して、センサーに回り込むようです。センサーの感度を電気的に調整できるようにしておいて、現場で感度合わせをする必要があります。

光センサはトランジスタ二石をダーリントン接続した「光リレー回路」で、モーターを駆動します。白いドットが点灯したときにモーターが回るよう設計してあります。基板上の半固定抵抗が感度調整です。実験前にドットが点灯していないとき、モーターが停止するよう調整します。

Dscn0639

電源はエネループを4本、モーターはおなじみの130タイプの省エネモーターです。

試作iPhoneアプリと光センサ

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

何とか出来上がったのが、このアプリです。

Img_0082

iPhone SDKやObjective-Cについては、ネット上で若手の先輩諸兄が、様々な評論・解説を展開しておられますので、そちらをご覧いただくとして(こればっかり)、このブログでは説明を省きます。

Objective-Cのような人工言語は、論理的に構築された上、プロダクトアウトの視点で製作されています。マーケットインの視点で、ユーザー調査を重ねて作った言語というのは、私は知りません。
ですから、言語の設計者が考える「プログラムの作り方」を理解できるかどうかが、好き・嫌いのポイントになると思います。人付き合いみたいなもんですね。

Objective-Cを人間に例えると「自己主張の強い正義漢」ですかねえ。思考パターンは単純だが行動力はある、友達にすると心強いのではないでしょうか。

脱線しました。アプリの解説です。

x,y,zの数字は、加速度センサの読み出し値、単位はGです。約100mSごとに更新しています。

その隣のかわいい女の子のイラストは、この本から出張してもらいました。画像ファイル表示の練習ですが、殺風景な画面がちょっとだけ暖かくなるという効果も狙っています。この画像は、シーケンサでアニメーションします。

画面下の二つの大きなドットが、光センサを通してロボットの進行方向をコントロールする「コマンド・ドット」です。

現在のアルゴリズムでは、右に傾くと右のドットが点灯、左に傾くと左のドットが点灯、水平(傾きが閾値以下)の時は両方のドットが点灯するようになっています。

このドットを読んで、ロボットは常に山側に舵を取るように走行する訳です。

光センサは、この写真のように、プリント基板と、EVAと呼ばれる固めのスポンジで外装を作り、5ΦのCDSを2個取り付けました。EVAスポンジは、ダイソーで防振パッドとして売られていたものです。これを裏返してiPhoneの画面にあてがいます。

Dscn0607  Dscn0608

光センサは、こんなふうにアプリのドットの部分にかぶせます。センサの外装は、黒いビニールテープをぐるぐる巻きにして、しっかり遮光します。

Dscn0638

これで準備OKです。次はロボット本体を作ります。

2010年5月 1日 (土)

iPhone実験用ロボのミッションを決める

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

と、いうことで、半月ほど前に、10800円を払ってiPhoneのデベロッパ登録を済ませました。

あとはiPhoneロボでどんな実験をしてみるかです。この企画の趣旨が「アウトドアロボット」ですから、実験用ロボもアウトドアをテーマにしたいと思います。

子供の頃読んだ「鉄人28号」のマンガで、世界各国のロボットが性能を競うために、エベレストのような高山に登るという話がありました。悪者が作ったロボットが、他のロボットを転落事故に偽装して破壊してしまい、その調査のために正太郎と鉄人が呼ばれる、というようなストーリーだったように思います。

なんか、その頃話題になっていた、ナイロンザイルの切断事件が下敷きになっているような話ですね。井上靖の氷壁でしたっけ。

ロボットが山に登って帰ってくる、しかもリモコン操縦ではなくて、自律的にです。自社ロボットの帰りを待つ人々の緊張感が、ページから伝わってくるような、力作だったと思います。(うろ覚えですが‥‥)

実験用ロボは、これで行こうと思います。「山に登るロボット」です。
加速度センサを使って、高い方に進行するロボットを作ってみようと言うことです。別にiPhoneでなくとも良さそうですが、iPhoneソフトの肩ならしですから、がんばってやってみましょう。

近所の公園には、丘があり、適当な斜面があるので、実験場所には事欠きません。

« 2010年4月 | トップページ | 2010年6月 »