新しい物から古い物の順で書いています。
ギアボックス新旧比較。
左が元々付いていたもので、右が新たに組んだ方です。ミニモーターのギアボックスは2連タイプが無いので、軸の長さ等が
同じになるように調整してプラ板で作ったベースへ両面テープで貼り付けました。
走らせてみたところ、音が静かになり、モータードライバの過電流トリップも起きなくなって、とてもいい感じになりました。
NP-F570
19.4whから15.8whに容量が少なくなりましたが、約90g軽量化できました。動作には特に問題ありませんでした。
スナップ写真。
XBeeで無線通信してエラーが出た時の処理の実装を面倒に思い、
部屋で動かすとき同様、ネットブックとロボットを長めのUSBケーブルでつないで動かしています。
マッピング結果の例
初めて外に持ち出したときは、マッピングする境界のクリッピングに関する部分に考慮不足があり動作しません でしたが、それを直した後はそれなりに動くようになりました。
カバーと基板のユニットをロボットから下したところ(表面/裏面/基板分離状態)
物理的にもシンプルになり、軽量化したのはよかったのですが、ラフな制御をすると安定化後の電源電圧が下がり、 マイコンにリセットがかかるようになってしまいました。
とはいってもシンプルなのは魅力的なので、最高速度を少し下げつつ、加減速を滑らかにして、このまま使うこととしました。
移動できる場所を調べるため、超音波センサで測定済の既知エリア(最近「マップ・タイル」と呼んでいる、青い正方形で 埋まっているエリア)を、2値化イメージの画像処理と同じ要領で境界を求めたり、オセロゲームの戦略アルゴリズムで、 盤面を評価する関数のように、タイルに重み付けをしてルートを選んだり・・・などをやっていました。
その他、部屋がどの程度の誤差で測定されたかや、超音波センサでいつも正しく測定できない場所があれば分かりやすいように、 CADで部屋の家具や壁のシルエットを描いて作ったDXFファイルを重ねて表示できるようにしました。
というような感じで処理していますが、今日のところは、障害物として置いてある屑籠等の位置を変えるだけで、行けていた目的地に 行けなくなったりしています。
走る様子はこんな感じです。
マップタイルの処理方法を変えると、いろいろな反応が見られて面白いので、しばらく続けようと思っています。
1.移動距離の検出用エンコーダ搭載
具体的には、車輪の裏側に、白と黒に塗り分けた円盤を接着し、これを反射型のフォトインタラプタで検出します。
w6では車輪に付けた手作りエンコーダの精度の低さに対して嫌になっていたので、初めはモーターの軸に付けようと思って
いたのですが、マイコン内蔵カウンタの空きが2個無い様だったので、次善策として遅いポーリング周期でも読める、車輪の
エンコーダでとりあえず我慢することにしました。
車輪に付けた円盤の写真です。プラ板から切り出して、黒い部分はプラモデル用の塗料で塗装しました。左は
45°で白と黒のエリアが切り替わり、車輪の1回転を8分割で検出できるタイプの塗装途中の写真です。
少し動かしてみて、粗すぎるような気がしたので、この後すぐに22.5°のタイプと交換しました。右の写真は、
交換前の比較です。
反射型フォトインタラプタ(ローム RPR-220)の取り付け状態の写真です。2001年頃W6v1で使ったものを転用しました。
45°タイプの場合、直進時は車輪の外形が約16mmなので、1カウントあたり約12.6mm進みます。信地旋回の時は、キャタピラの 間隔(トレッド)が88mmくらいなので、11〜12パルスで90°±8°旋回します。
初めは白紙の地図の中で測定し、既知になった(ウインドーの中で、青いタイルの表示になった)場所をマウスでクリックし、
そこを次の移動目標にする・・・というやりかたで、自分の部屋を描いてみたのが下のイメージです。
タイルの大きさは一辺10cmの正方形です。ロボットが移動可能なエリアを調べるのを目的としているので、ロボットの大きさより 少し小さめできりの良い数字と言う事で10cmにしました。移動(特に旋回)時の制御誤差が大きいので、進むにしたがって 地図が曲がってきています。赤いタイルがロボットのいる場所で、黄色い線の方向を向いているつもりです。
この時はw6v4の時に作った、左右の車輪のエンコーダのカウント数を同期させるという考えの直進制御プログラムで動かしました。
6m程の距離で、気持ち的に許容できない誤差が出ていると感じたので、2l5v1からジャイロ(角速度センサ STマイクロのL3GD20) を移設し、角速度センサの積分値(いわゆる慣性航法)で走らせて同じ場所の測定をしてみました。
ずっと前にPG-03で試した結果が今一つだったので期待していませんでしたが、I2C経由で来る値の単位が、物理的に分かりやすく°/秒 となっていることや、出力の精度や安定が良いので、前の性能が低すぎるとはいえ、けた違いに良くなりました。
写真中央にあるのが、2l5v1から移設した「モーションセンサー基板」です。
1.RCサーボ SG92R 使用感
負荷がかかった時の発熱の多いこと、サーボの出力軸とサーボホーンの位置をきめるセレーションの形が はっきりせず負荷がかかった時に滑ること、無通電時に出力軸を手で動かした時にギアの歯が欠けている 訳では無いけれども滑って位置が動くこと、位置決め分解能が、SX−101の様な、一番 安価だったクラスのRCサーボよりもだいぶ低く感じること、今回作ったグリッパー程度の負荷でハンチングしやすいこと、 等々の面から不向きだと感じました。
超音波距離センサなど、指向性の鋭くないセンサーの向きを変える用途などに使うと良いのかな、と思いました。
2.走行用モーターの交換
DRV8830のより広い出力範囲が使えるようになると共に、過電流トリップになりにくくなりました。
走りがスムーズになり、こっちの方がドライバICと相性が良かったです。
3.屋外テスト その2
4.超音波距離センサ
少し使ってみた感じでは、屋外で、測定レンジ内に何もない時に、測定結果がきちんとレンジオーバーを示す値に なるところが気に入りました。
移動時の加速・減速など、動作時間を短くする方向のチューニングは無しで、とりあえずボタン一つで「近づいて 缶を持ち上げる」までの動作を出来るようにしました。このままだと、完全に操縦した時よりかえって時間がかかる くらいなので、もう少し作りこもうと思いました。
自分で見てみた結果は、周囲40mに何もない、グランドの真ん中にロボットを置いて40m離れたような場合は 通信出来ました。(距離はトレッキング用のGPSで計測)写真の様な生垣の傍や、少しでも物の影になるような場合は、 状況に応じて距離が短くなりました。
屋外走行の様子
ギアボックスくらいはカバーを付けた方が良さそうです・・・
グリッパーの操作をXBox360のコントローラーに割り付けた後、ロボコンの課題のように空き缶を運んでみました。
これまた、なかなか楽しく遊べました。
ロボットのメカ的には、こんなもんかな〜と分かったので、次は買ったきり使っていないPSD距離センサー等を評価の意味で 付けてみて、マニュアル操縦だと時間がかかりがちな、近づいてから缶を持ち上げる一連の動作をボタン一つでできるように、半自動化 してみようかと思っています。
操縦してみた感じでは、それなりにスムーズにモーターをコントロール出来、動画のように八の字に動かせました。
意外と楽しかったので、もっと遊べるように、簡単なグリッパーを付けてみる事にしました。
現在の重量は543gです。少し動かしてみた感じでは、この重さならば旋回時にキャタピラが外れるような
事も無さそうで、調子よく走りました。
後ろから見た写真です。モーターの軸にエンコーダーを付けようと思っているので、モーターは現行ミニ4駆
用の、ケース両端に軸が出ていて金属製のピニオンギアが付いているものと交換しました。
とりあえずは、電子部品を現行のものに刷新したW6v1みたいな移動ロボットにする方向で考えています。
シャーシはW6v1に使っていた「楽しい工作」のショベルドーザーキットを整備して使いました。
電池と電源ユニットはW6から流用してそのまま使う予定です。