2013年06月一覧

クロウラーのXBeeを取り替え(トランスペアレントモードへ)

 クロウラーの自律モード時の動作確認が簡単にできるように、
 手持ちで開いているXBeeS2(B)を1セット設定した。水槽のろ過器のモニターを止めたのでXBee1つ空いたし。設定はZIGBEEのATモードで、通信速度は57600bps。

 要はPCとクロウラーのマイコン間のシリアルケーブルがXBee通信に置き換わります。フロー制御してないけど。フロー制御も含めてうまくやれば、リモートプログラミングもできるでしょう。が、XBeeがシリーズ2だと面倒だかも。インセクト用に買ったシリーズ1のXBeeが1ペアあるのでそっちも試してみようかな?Lady Adaのページにネタはある。

 なんて、XBeeのシリーズ2じゃ面倒かな?と思ってましたが、フロー制御に陥る様な電波不良状況じゃなきゃいけるんでない?とまず試してみた。もちろんXBeeはシリーズ2のまま。要はマイコン側でプログラムローダが適切なタイミングで動くようにリセットボタンを押せば良いわけです。無事に成功しました。まぁ、まだタイミングが把握できてないので失敗もしますけど、IDE側が「書き込んでいます」になったら速攻リセットくらいで良い感じ。(なんかPIC系のUSBプログラミングの様だ)

 今回リモートのプログラムされる側(クロウラー側)も手元における環境だけども、シリアルラインの配線をつなぎ替えるのがめんどくさい状況なので、この成功はテスト効率のアップになります。問題点は、プログラム転送も無線なのでリモート側の電池を消耗することですかね。

 さて次なる課題は、

 課題1・まっすぐ走るには。
 課題2・壁に近づいた時の挙動。

 ですね。
 課題1は結構微調整ありですね。ライントレーサみたいなジグザグ走行なら簡単なのですが。PWMでのモータコントロールが肝。


クロウラーに距離センサを仮付け

クロウラー先頭の部分に超音波レンジセンサ

 マイクロブレッドボードに、HT7750A使用の5V昇圧回路とレンジセンサからの5V信号を3.3Vに落とす分圧抵抗を設置して、テスト。
 まぁ、なんというか、まっすぐ走らなくて曲がってしまうがな。左のモータの方が速い様です。これは方位センサを用いてモータのPWM値をリアルタイム調整する事で何とかしたいと思います。
 レンジセンサも意外と間違いデータが発生するので、n回の値を取らないと旨く止まりませんでした。レンジセンサも障害物との距離が遠いと1回の測定に時間がかかる。超音波っても音だからか。近いとエコーがすぐ帰ってくるので速い。

 実際に作って動かしてみると色々と改良ネタが出てきますね。


ProcessingでXBee操作

 2ヶ月に1回の土曜日当番なので出社。
 帰宅後、リモコンのコードテスト。昨夜途中まで書いやつをデバッグ。動くようになりました。あとは肉付けしていくだけですね。動画でボタンを押してみてますが未実装なのでその部分を・・・。

 クロウラーの肉付けとしては、
PololuのGP2Y0D810Z0F
 スイッチサイエンスさんで、ロボット系ショップPololuの10cm近接センサーを買ったので要検討。これ電源電圧が2.7~6.2Vなので使いやすそう。
 使用用途は、クロウラーが狭いところに入り込んだ場合に無駄にグリグリ動かないように左右の障害物との距離を測ろうかなと。まぁ、無駄が多い四輪車とは違って無限軌道なので超信地旋回して脱出もできますからね。その超信地旋回もできない左右だったら動作を止めて圧電ブザーでも鳴らせようかな。
 ハッ、そんな時なら単純にバックすれば良いのかw。


ひさびさにスカパー!...か?

 BSのスカパー!のjsportでドーフィネとジロの録画でダブルの誘惑を受けてから、ツール・ド・スイスは観られないという今ココ状態。今年はTDFが100回目だし。

 月曜にお試しに、「お試し二週間視聴」を申し込んでみたら、今日は見られるようになってました。うちマンションのCS,BS引き込みで中間にケーブルテレビが噛んでいるのでケーブルテレビを介さずに観られるか試してみたわけで。

 ケーブルテレビのチャンネルって抱き合わせが多かったり、そもそも見たいのが組み込まれていなかったりというイメージが昔からあったので。今、そのケーブルテレビ会社のページを見たら、今でもJsportsの1-3と4が切り離されて売られていたり。逆にスカパー!の方はパックセットが少なくて、単品買いになっている。

 ちょっと様子見しつつ、久々に加入してみようかと思う。ツレに見たがってるディスカバリーチャンネルも打診してみたが、そればっかり見ちゃうからやめとくとな。


バージョンのはざまで翻弄される

 4月もPICのコンパイル環境ですったもんだしてました。今回はProcessing。最近Ver2.0が出たみたいでそれでXBeeラジコンのコントロール側アプリを書こうと思ってます。ゲームコントローラとの接続は何とかなってます。が、Xbeeが。昔のコードを持ってきたら動かない。ちょいと遊ぶだけなので根本的にVer2.0の対応をする程でもない。
 試しに、Processing1.5.1にしたら動くじゃん。
 
 1.5環境で作るか、2.0対応にするかどうしたもんやら。PCの画面上に走行状況を表示したいのでArduinoやmbedでやるのは置いておきたい。Arduinoやmbedのほうが楽なのだけど。java系のXbee-APIは凝ったものが多くて。単純なXbee-Arduinoライブラリみたいな方がわかりやすい。


机が届きました

 お昼過ぎに西濃運輸で中古オフィスデスクが届きました。ドライバーと一緒に部屋に運び込み。

中古オフィスデスク

 退避してあったものを戻すとこんな状態。

中古オフィスデスク2

 奥行がいままでより10cm長くなったので良い感じ。奥側に電源などのケーブルを下へ落とす溝もある。
モニターを2枚に戻そうかとも思ったけど、作業スペースが広いほうが良いので1枚のまま。27インチのWQHD(2560×1440)に乗り換え検討だろうか?
→DS61 V1.1だとDisplayportはないので、DVIのDualportを期待したいが、「1920×1080 までが限界」という記事を見たので冒険はやめておこう。


Processingでゲームコントローラ

机の届く前に実験。
 ProcessingでUSBゲームコントローラのテスト。
 proCONTROLLというライブラリを使うのだが、いきなりエラー。Processing2.0のx64版だからか?x86版をインストールしなおしたらエラーはなくなった。
 そして、自分の持ってるゲームコントローラであるBUFFALOのBGCUCF1206の各種ボタン、ジョイスティックを探っていく。どのボタン・ジョイスティックがどこに割り当てられているかがわかったので、それでProcessingのスケッチを書いてテスト。


机周りの掃除

20130610_01

 どうやら、発注してあった中古ビジネスデスクが明日届くようなので、明日は今週末の土曜出勤の振替休日にあてた。そして机の周りの物品を一旦別の部屋へ移動した。肝心の机は西濃運輸なので明日のいつ届くか不明。PCが無いと待ち時間の生活ができないのでPCは残してある。Nexus7?あれはPCが無い環境用であって、PCの代わりにはならない。スマフォやiDeviceと同じく。例外はMSのSurface Proくらいかな。Surface Proが自力WWANを持たないのは残念。
 昔だったら、もう手に入れてると思う。今は、ちょっと吟味する時間が必要。筐体に隙間があればUSBのWWANなら入れる工作くらいはできるのだが、USBのWWANって商品が最近減ってるきがする。


距離センサーのテスト

 超音波による距離センサが届いたのでテスト。HC-SR04という、パララックス社の「PING))) Ultrasonic Distance Sensor」のパチもん?みたいな奴。ググろと1個150円で手に入れた人もいますが、自分はAmazonで790円。これでも半値。

 まず5VのArduino UNOにLCDシールドを載せたものでテスト。サクッと動作確認完了。

 つづいて、ブレッドボード上に3.3V動作のArduinoProMiniを使ってのテスト。5V電源のセンサへの供給は3.3VをHT7750で昇圧して供給。
 まずは、シャープの赤外線距離センサGP2Y0A21YKにてテスト。事前にそれほど出力シグナルの電圧は5Vフルとかは出なさそうなことを検索して得ていたので強行。3.3VArduinoのADCのぎりぎりのとこまでしか出ない様だ。直結でも使えそう。

 つぎはHC-SR04のテスト。以下の画像の感じで。
DSC_0471

 センサからの出力側は分圧抵抗で下げておいて、センサへの入力は5Vレベルのロジックでも3.3Vの信号はHIGHと認識するであろうという期待から直結。で、動作確認できました。どちらも消費電力が同じようなのでどっちを採用しても良いですね。HC-SR04はオシロで出力の最大値を見ておいたほうがいいかな。

 リモコンのソフトウエア面は、小改造。黄色いボタンに機能を割り当てました。自律モードへの導入および解除。
クロウラー側はまだいろいろ検討ちゅうなので、とりあえず自律モードにはいったら2秒間時計と逆回り、自律モードからぬけたら2秒間時計回りをするようにしてみた。
 今後は、距離センサをつかった障害物避け。あと、方位センサで方位を意識した動作(特定角度を維持しつつ床を塗りつぶす的な)を検討。

 そして、リモコン側は使いやすさを考慮してゲームコントローラに切り替えます。
 ただし脳みそ部分は、

  1. Arduino&USBホストシールド
  2. PCでProcessingにてjavaのgame API
  3. PCでC# & DirectInputで

のどれにしようかね?あえて三番目?

 というか、方位センサと距離センサで部屋の地図作れるかも。塗りつぶし方式ですけど。それをProcessingでリアルタイムに可視化すると。だと二番目にしておこうかな。そもそもC#にする必要性は全くないし。職場もjava系になりそうであるのでリハビリとして。どんな言語でもライブラリとかフレームワークとか決まってるのならそれで作るだけですし。フレームワークや言語の好き嫌いはありますが。


とりあえずクロウラー完成...?

20130608_01

 午前中でアルシオーノの二階部分を作成完了。無事に動作するかと思ったら、プログラムと実基板のピンが合っていない部分があってソフトウエアにてピン修正して完了。開いてるソケットは2軸コンパスを使う時用。

20130608_02

 その後リモコンの改良。秋月からスライド抵抗を買ったので、これでモータの回転を可変にする為のPWM値のベースとした。でも、マブチのFA130ブラシモータだからか、知識が無くてよくわからないのだけど、細かい速度調整は達成出来なかった。リニアには行かないようです。微調整してみようかな。秋月で売ってる日本電産コパル株式会社のステッピングモータも手に入れたので、いつかステッピングモータードライブのおもちゃも良いかと思う。
 リモコンに付いている黄色いボタンはユーザ操作モードと自律モードの切替に使う予定。

20130608_03

 で、自律行動の基本として、前方に障害物があったらバックしつつ回転して新たな方向へ向かうプログラミングでもしようと。近接センサーとしてVCNL4000を持ってますが、もともとノートパソコンの蓋が開いてるかどうかのセンサなんで距離的に微妙。手持ちのシャープのGP2Y0A21YKという10cm~80cmが測距できるセンサ(上記画像)を利用しようかと。こいつ電源が5Vなんですよね。昇圧電池ボックスを使うかね。試してみたら一応3.3Vでもなんか動いてはいましたけどね。距離が急変した時に値が激しく変わる現象はあるようです。

 「カメラで状況を解析して」なんて事はしたくないので、距離センサや明るさセンサで状況を解析しつつ移動する感じに仕上げたい。お助けとして赤外線LEDで灯台を作るのも良いかもね。

 まぁ、色々試していけば良いかなと。ロボコンに出るわけでもないので自律行動に目的はない。逆に操作モードで動かしてると楽しいので、アーム類のギミックを搭載するほうが良いのかも。