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

2010年6月

2010年6月30日 (水)

iPhoneの環境光センサでロボからデータ受信

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

ロボットボディへのデータ送信は、点滅ドット方式でやりましたが、ロボットボディからのリプライの問題が残っています。

手軽さや転送レートを考えると、データ転送にオーディオ入出力を使うのがいいのはわかっているんですが…… やっぱりロボットですから、喋らせたいですよね。そのためにも、iPhoneのスピーカーとマイクは、生かしておきたいと考えています。

そこで、こちらもiPhone搭載の環境光センサ(近接センサ)を使って、光通信することにしました。
この動画で、光センサの状態を、明るい状態をOFF、暗い状態をONと表示するアプリをテストしてます。(ちょっと画像がピンぼけで見難いですが)

センサを起動しておくと、暗くなったときに自動的に画面のバックライトが消えます。ソフトで状態を読んで、ON/OFFの文字を表示させています。短時間暗くして元に戻すと、センサは反応していますが、画面は消えません。

この辺の事情を考慮しながら、点滅パターンでロボットボディからの、データを受信することにします。環境光センサの上に白色LEDをかぶせて、これをロボットボディのマイコンで点滅させればいいでしょう。

「iPhoneの画面点滅で、ロボットボディに旋回などのコマンドを出す→実行終了したら、LED点滅でiPhoneに知らせる」と、いうのが、基本の使い方になると思います。

2010年6月27日 (日)

ツィッターを(ちょっとだけ)あきらめる

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

残念ながら、画面をメカでタップしてメールを送信するのは、あまりにもマンガみたいなのでやめることにしました。ブログのタイトルからすれば、マンガもアリかなという感じですが、そんなメカを開発しても、それほど将来性もなさそうですね。

かといって、メールクライアントを実装するにも、知識が無いので大変そうです。オープンソースのコードはあるようですが、初心者向けのサンプルコードではないので、たぶん、相当ちんぷんかんぷんでしょう。

と、いうわけで、今回は、写真などのフィードバックを、レンタルサーバにFTPであげることにしました。10年ほど前に取得し、そのまま放置されているドメインとレンタルサーバの出番です。

FTPは比較的簡単に実装できました。ツィッターで「写真」というキーワードのあるツィートを投稿すると、カメラ起動→写真撮影→FTPでアップロードを自動で行います。
その結果がこれです。

最初から、サーバを利用すれば良かったですね。phpはダメみたいですが、Perlは使えるので、webだけで完結したシステムが出来ますからねえ。でも、流行りのツィッターにちょっと乗っかってみたかったんです。

ともあれ、試作モデルは、「アウトドアに居るロボットにツィッターで命令し、あたりを探検させることが出来る。レスポンスはカメラ画像などで、専用webサイトにアップする」という仕様になりました。

2010年6月24日 (木)

iPhoneの自動タップメカは作れますが……

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

メールを送るには、あと、タップするだけのところまできました。

で、タップメカの実験(本気ですか?)ですが、静電容量式なので、こんな感じです。

まず、写真のような「装置」を作ります。

Dscn0767

アルミフォイルを何回か畳んでアンテナ(電極)を作ります。これをiPhoneの下に敷くので、大きさはiPhoneと同じくらいにします。
割り箸(絶縁体)の先に、アルミフォイルを丸めて、1cm角くらいの「ダミー指先」を接着剤で取付けます。
これとアンテナをクリップコードで結べば出来上がりです。

アンテナをiPhoneの下に敷き、割り箸の端っこを持って、画面のボタンをタップするとこのように反応します。(青く色の変わっているボタンがタップされているボタンです)
ダミー指先と人間は絶縁されているので、この割り箸を、人間ではなく機械で動かしてタップしても反応するはずです。

Dscn0768

iPhoneのタッチパネルは、人体でタップしなければ反応しないのはご存知の通りです。タップペンも人間が持ってタップしないとだめです。
メカで安定にタップするには、このようにアンテナをiPhoneに近接させて設置しなければなりません。アンテナはもっと小さくとも(iphoneの半分以下)でも動作しますが、とにかくこれがないと動きません。

ちょっと考えると、このケーブルを切ったりつないだりすることで、機械的に動かす必要がなさそうに思えます。
ケーブルの途中にスイッチを入れて試してみると、接続→タップはうまく行くのですが、切断→タップオフはうまく行きません。どうしても「ダミー指先」を画面から離す必要がありました。
チャタリング防止のため、タッチパネルの感度を動的にコントロールして、ヒステリシスを持たせているようです。

ともあれ、こんな仕掛けをモーターで動かせば、タップできそうです。
タップした結果、画面が変化したかどうかは、データドットを監視している光センサでわかるでしょう。

でも、これを使うんでしょうか?(自問自答)

2010年6月23日 (水)

ロボットからのフィードバック(ツィッター編)

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

いろいろと使い勝手の問題はありますが、ツィッター経由で、リモートブレインロボットに指令を出せることは確かめられました。
現在はリモートブレインというよりは、テレオペレーションとでもいうべきでしょうが、とにかくナントカはなります。

送る方はいいとして、うける方をどうしましょう。短いテキストだけだとわかり難いので、カメラ画像や、環境の計測値を画像データの形にまとめたものを、受け取りたいところです。

またまた、付け焼き刃で調べたところ、twitpicというツィッター連動型の画像サービスを見つけました。これは、ツィッターのアカウントを持っていれば、Eメールに画像を添付して送るだけで、画像の掲載と、ツィートが出来てしまいます。ちょっと文字化けしていますが、日本語コードの問題です。

ややこしい認証も必要ないので、とても簡単です。

また、iPhoneでのアプリもMessageUIフレームワークをインポートするだけで、画像添付のメールを簡単に送信することが出来ます。

やったー、ということでテストしてみました。
こんな感じです。

Img_0104

うーん、残念。このフレームワークはあくまでもメール送信のユーザーインターフェイスを開くだけ、送信するには、sendボタンをタップしなければなりません。

同じようなUIで、カメラで撮影するものがありますが、これにはシャッターを切るメソッドが組込まれているので、自動撮影は可能です。
でも、このMessageUIには、ヘッダファイルをくまなく読んでも、そのようなメソッドはありません。あくまでも、ユーザーの送信許可を必要とする仕様のようです。

なかなかうまくは行きません。

2010年6月22日 (火)

リモートブレインの通信手段としてのツィッター

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

ロボットとコミュニケーションする、という視点で、ツィッターをおさらいしてみました。○がいい点、×がちょっと困った点です。

○命令の受信は意外と簡単
特定のアカウントからのツィートを受信するのは、大変に簡単です。認証の必要もありません。アカウント名だけがわかっていればOKです。
反面、「誰の言うことでも聞くようにする」のはちょっと大変です。パブリックのタイムラインに流れるツィートを引き込むことは同様に簡単ですが、大量の新しいツィートがあると、取りこぼすことが多いようです。

×通信路としてはちょっと頼りない
前の投稿にも書きましたが、APIの利用には単位時間当たりの回数制限があります。「1時間当たり150回」と思っていましたが、APIによっては他の条件の場合もあるみたいです。
普通に使っていても、クジラの絵が現れて「今混んでるから、後にして」と言われたり、ツィートを投稿しようとすると、「技術的問題があって投稿できない、後でやり直せ」と言われてしまうこともありました。
なんか、調子の悪いラジコンみたいな感じです。

×同じ言葉を連続的にツィートできない
一つ前のツィートと全く同じ文章は、投稿できないようです。「右」の次に出すコマンドは、「右に進んでください」とかにしないとダメです。機械的に投稿する場合は、タイムスタンプを追加する方法なんかが考えられますが、手入力の場合は、少々うっとおしいですね。

2010年6月15日 (火)

iPhoneからデータ転送のテスト(ツィッターでね)

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

ぼちぼち作っていた「ツィッターからキーワードを検出して、対応する8ビットのコードをドットの点滅で送信するアプリ」がテストできる状態になりました。やれやれです。

Img_0090_2

画面はこんな感じです。いつもと同じですね。


このアプリは、私のツィートをタイムラインから抜き出して、最新のものを評価するようになっています。この方式だと認証の必要がありません。つまり、ロボットにアカウントを持たせなくともいいわけです。表示されている「もっと前進してください!」が、最新の私のツィートです。


アプリは、このツィートに対し、"前"、"右"、"左"というキーワードがあるかどうかを評価して、それぞれに割り当てられた9bitのバイナリを、画面左下のドットの点滅で送信します。9bitなのは、スタートビットも含んでいるからです。


このあたりの情報が、かわいいメイドさんの左隣に表示されています。このイラストもおなじみのこの本からの出張です。


データ転送速度は、安定な10bpsを選びました。基礎実験で確認した最も遅いボーレートです。昔のテレックスでも50ボー(bps)くらいありましたから、とてつもなく遅いですね。1バイトの送信に1秒かかります。
基礎実験の感じでは、倍の20ボーはいけそうです。それでも十分遅いですが。


今回の実験では、このバイナリコードを、iClimberで試作した光センサとマイコンで読んで、ボード上のチップLEDに表示させてみました。この様子は動画で見てください。
なお、実験に使ったマイコンボードは、PicKit2,Debug Expressセットに付いていた、PIC16F887の評価ボードです。


タイムラインの取り込みの頻度は、この実験では、15秒ごとにしています。
この参考書によると、APIのアクセスは1時間当たり150回に制限されているそうなので、これだと1時間運転するとオーバーしてしまいます。
現実的には、30秒に1回くらいがいいところのようです。


実際にツィッターを使ってアプリのテストをしてみました。命令のツィートは、パソコンを使って、Webサイトから投稿しています。

オペレーションの様子は、この動画をご覧下さい。詳しい解析は、のちほど投稿します。

2010年6月10日 (木)

SH2-Tiny(7125)でびっくりする

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

前に書いたように、シェーキーのクライアントにはSH2-TinyのSH7125を使うことにしました。

ということで、開発用にこれを買ってきました。このマイコンを使うのは初めてなので、開発ボードがあれば、それを使うのが安心です。このマイコンも、H8同様、簡単な回路でシリアルポートからフラッシュの書き換えが出来ます。

使ってみてビックリしました。
本式の組込みマイコンです。(当たり前ですか?)

よく使っていたH8/3052は、古典的なワンボードマイコンをチップ化したような構成でした。なんというか、牧歌的なアーキテクチャとでもいうのでしょうか。

それに比べると、SH2-Tinyは本格的な組み込み需要を狙っているようです。(知らないのは私だけ?)

一番それを感じたのは、モジュールのパワーマネジメントです。マイコン内部のタイマやシリアル通信のモジュールが、リセットスタートではオフになっており、必要に応じてプログラムでONするようになっています。

おかげで、タイマーが動かなくて、しばらく考えてしまいました。

他社の、バッテリ動作向け組込みマイコンではおなじみなんですが、SHって、なんとなく産業機械とか、あまり消費電力なんかを気にしないアプリ向けかなと思ってたので、ちょっと意表をつかれました。
ルネサスさんゴメンナサイ。

でも、動作時の最大電流が50mAもありますから、ちまちまモジュールを遮断して、どれほどの省エネ効果があるんでしょうか。

ローパワーで知られる、東芝の組込みマイコン(いわゆるLLマイコン)などでは、低速クロックに切り替えたうえ、必要なモジュールだけを活かすことで、電流を10uAくらいに押えることが出来ます。リチウム電池でのバッテリバックアップのためです。7125ではがんばってもmAオーダーですから、遮断で多少倹約できたとしても、電池でバックアップは無理ですねえ。


2010年6月 8日 (火)

IPhoneロボットの近況報告

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

最近まとまった時間がとれないので、ソフトのスタディがなかなか進みません。
1時間くらいの作業でも前に進む、シェーキーのハード製作がもっぱらです。でも、6月30日がデッドエンドなので、もう少しがんばらないとダメかもしれません。

その上、今月は土日に用事が結構多いのです。有休とってやらないと間に合わない?

現在、この本のツィッタークライアントの記事を元にして、私のツィートからコマンドを読み取るソフトを試作中です。
Dscn0757

Objective-Cに限ったことではありませんが、最近の高級言語では、クラスライブラリを活用するのがスタイルです。ライブラリの使い方は、それぞれにややこしい約束ごとがあるので、ほとんど呪文です。
魔法使いに弟子入りしたような気分です。デュカスの名曲をBGMにかけましょうか、それともさだまさし?

現在、取得したタイムラインのXMLをパースして(この辺の用語も怪しげだなあ)発言者と内容のテキストを取得(ここまでは本にあるサンプルそのままです)、ロボットへのコマンドになる、キーワードの切り出しまでが出来ています。

これから、移動ロボット部分へのコマンドを作成し、ドットの点滅で送信するプロセスの実装すれば、何とかなりそうですが、どんなコマンドにするのかをまだ決めていません。
ちょっと色気をだして、キャタピラ式の移動ベースを作り直そうかなと思っていたのですが‥‥ どのみちハンパになりそうなので、今のままで行こうかなと思っている昨今です。

2010年6月 6日 (日)

センササーバを組み立てました

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

センサーサーバの基板を組み立てて、移動ベースに組込みます。

しばらくぶりですが、センササーバのソフトは、バラックセットで確認済みなので、何も考えずに基板を作るだけです。今回は2枚作ります。

最近の作法だと、P板ドットコムなんかでプリント基板を作るのでしょうが、何せ、作る基板が簡単なので、あまり食指が動きません。古典的な方法でやりましょう。

Dscn0745

猫が邪魔しなければ、2枚で、のべ2時間くらいの工数です。

こんな感じの基板が出来上がりました。

Dscn0740

写真で、基板の下側にある白いコネクタは、PSD用の電源コネクタです。PSDの電流消費の特徴から、モーター電源のようにロジックとは別電源にして、ADやアナログ回路へのノイズの回り込みを回避しています。

コネクタの隣にある、変換基板にのったSOPの部品は、このNch MOS FETです。これでPSDの電源をON/OFFします。PSDは消費電力が大きいため、待機時にOFFすることで、バッテリーの寿命を延ばすのが目的です。

移動ベースの裏にヒノキ棒の切れ端を接着し、短い木ネジで基板を止めます。

Dscn0753

ドライブサーバなども取付けてしまいます。あとは、コネクタでセンサを接続すれば完成です。

Dscn0754

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