パッケージ
キットと無線機(プロポ)、バッテリー、充電器をセットで買いました。選んだプロポセットには、電子式のモーターコントローラー
(今のラジコン用語ではESCと呼ぶようです/昔の通称「アンプ」)が付いているので、コレを使うとマイコンからRCサーボを制御する要領で540
クラスのモーターを回せます。
シャーシ
小学生の頃に遊んでいた田宮の「カウンタック」のシャーシはとってもシンプルで、ラジコンカーと言えば
ああいったメカの印象があり、すぐ組みあがるだろうと思って取り掛かったら、二日半かかり、ネジを締めるのに、手が疲れました。
樹脂製の部分が多いので、大きさの割りに軽かったです。(約2.3kg)
材質と言えば、大きな力がかかるプロペラシャフトまで樹脂製なのには驚きました。ギアの類が樹脂製のケースに密閉されていることと、 稼動部分に樹脂性部品が多用されているせいか、昔のラジコンカーと比べると、動作音がすごく静かでした。その他、樹脂の自己潤滑性を 期待した設計の様で、稼動部分が多い割には組立て途中で注油の指示のある場所が少なかったです。
そして、mini9の載せ方を検討しました。左の写真の方向で載せたほうが、重量のバランスが
良かったので、こっち向きにしようと思いました。ちなみに、PCを載せるのはシステムが安定稼動
したあとで、それまでは5mほどのケーブルでロボットとPCをつなぎ、後ろをついて歩きながら
テストをしようと考えています。
やはりH8/3052Fのボードは全くダメで、H8/3664Fのボードはけっこう良かったです。
写真に写っているPSoC 評価ボード(CY8C29466付き)の影響が一番小さかったです。
やっぱりCY8C29466を使おうか・・・と迷いましたが、I/O点数が足りない気が
したのでAKI-3664フラットマイコンキットを使うことにしました。
H8/3664Fでもやはり受信感度は落ちるのですが、マイコン周りに特別シールドを
しなくても、まあなんとか使えそうな感じです。
野外を走行することによる太陽光の影響と、ほこり等に対する対環境性を重視して、ホール素子 を利用した磁気近接スイッチを選びました。機種はPanasonic製AN9027で データシート上の検出距離は2.5mmです。磁石は大きさが5mmほどのネオジウム磁石です。
センサと磁石の取り付け状態
車軸のガタがけっこうあるので、センサの検出距離を越えないけれど、磁石とセンサがぶつかることも無い
ような位置に調整するのが大変でした。
基板等の位置決め
デッキに載っているものは@電源ユニット、AUSB−シリアル変換ボード、Bマイコンボード、
CESCです。電源ユニットはUNIからの流用品です。
車輪の回転をとりこぼし無く拾えるか、少し心配でしたが、簡単に時速10km程度まで、テストベッド の上で車輪を空転させて計測してみましたが特に問題ありませんでした。
はじめはSP233ACPはインバータなので、反転したままではいけないと思い、74LS04で信号をもう一度 反転させて元に戻していましたが、テスト時にLS04は不要と分かり外しました。その後特に問題なく 使えるようになりました。
私のPCの場合、マザーボードに付いているCOM1の他にUSB−シリアル変換ケーブルを何箇所かの USBコネクタにつないだり、Bluetoothの擬似シリアルポートを付けたりと、沢山シリアルポートが あるので、FT2232Dモジュールは COM9と10になりました。H8/3664のキットに付属のフラッシュROMライターは COM4までしか使えないので、FT2232Dモジュールを経由せず、COM1から直に接続するための コネクタも付けました。
前から見る
今日のところは、プラ板で簡単に作ったステーに取り付けてあります。後日センサーヘッドを作る時に、
W6同様、カメラの間にレイアウトする予定です。
距離の測定はうまくいかないケースはいろいろありますが、障害物までの距離が測れたとして、 時速4kmでの移動時には、ラジコン状態と比べて倍以上の重量になったとしても、最高速度を1/3 に抑えるので、なんとか衝突する前に止まれるだろうと考えています。
家に帰ってからGPS関係のプログラミングのため、エアコンの効いた27℃の部屋と、日陰だけれど35℃の ベランダを往復しながら動かしていると、部屋では正しく測定できても、外に出すと157mmになることに 気がつきました。どうやらPINGは動作温度の上限が低いため夏場の屋外では使えないようだと思いました。 他の搭載機器は機器は35℃程度はOKなので残念ですが、別のユニットに変えようかと思いました。
角度指定で旋回する機能のキャリブレーションがまだで、走りが不正確なため余計に時間が かかりましたが、だいたいそれらしく走りました。
試験の様子
アースローバーの電源でW6の頭部ユニットを駆動し、ベランダに置いたアースローバーまで部屋の中から
シリアル通信ケーブルを延ばして測定しました。
PCで制御すると、こういったことも簡単に出来て非常に便利だと思いました。
@090822230114N3502394E13653865G003+00003E0000N0000U0004 処理開始 現在位置取得 @090822230207N3502386E13653860G003+00006E0000N0000U0002 目標地点の距離と方向を計算&終了条件判断 目標までの距離:29.2(m) 方向:57.99° ループ初回例外処理(8m直進)開始 ループ初回例外処理(8m直進)終了 現在位置取得 @090822230235N3502381E13653859G004+00006E0000N0000U0003 目標地点の距離と方向を計算&終了条件判断 目標までの距離:44.3(m) 方向:65.22° 直前の移動距離と方向を計算 <実績>移動距離:15.8(m) 方向:-101.31° 移動計画 作成 旋回中(角度:167°) 旋回完了 直進中(距離:7.1m) 直進完了 現在位置取得 @090822230316N3502377E13653863G003+00007E0000N0000U0005 目標地点の距離と方向を計算&終了条件判断 目標までの距離:52.9(m) 方向:83.29° 直前の移動距離と方向を計算 <実績>移動距離:17.5(m) 方向:-45.00° 移動計画 作成 旋回中(角度:128°) 旋回完了 直進中(距離:7.8m) 直進完了 現在位置取得 @090822230339N3502378E13653869G003+00007E0000N0000U0010ボディーの設計
基礎的な部分が出来たので、つぎは複数のポイントを記録して辿る機能を作ろうと思います。あわせて 現在の「止まってGPS測定をして、走って」の間欠的な移動方式から一歩進めて、走りながら連続的に GPS測定して目標座標を目指せるように変えようと思います。
走行テストの途中で、一緒の電源からとっているRCサーボは動くのに、走行用モーターが動かない・・・という 状態になりました。過熱を避ける保護機能が働いたのかと思ったのですが、RCカーの暴走防止のためにある、 バッテリーの電圧が一定レベルを割ったら走行用モーターの通電をカットする機能が働いたものの様でした。
ここで初めてESC(サンワ BL−FORCE)のマニュアルをダウンロードして目をとおしたところ、この機種には 過電流、過熱、低電圧の保護機能が付いていることを知り、小学生の頃に使っていた電動アンプに比べると、 ずっと安心してロボットに使えるものだと感心しました。
どうやら、走行用に積んでいるNi−MHバッテリーからマイコンなど制御系統の電源をとっても平気そうな 感じがするので、ボディーが出来て、配線をやり直す時に試してみようと思いました。
ついでに2秒間止まってGPSからのデータを読み込んでいた方式を変えて、別のスレッドが 常にGPSからのデータを読み込み続け、メインのプログラムに最新のデータを提供する方式に 変えました。
実は速度を下げる別の方法として、ラジコンショップに寄った時に衝動買いして置いてあった、 最高回転数が低い130Tのモーターも付けてみましたが、こちらは最高速度が2km/h 程度になってしまい低すぎでした。
GPSからの絶対座標を用いて移動の制御をするので、20度の誤差があってもそのうち目標地点の 近くまで辿りつけていましたが、制御精度が上がると、より早く辿り付けるようになります。
GPSの受信が良い状態でeTrexHの画面にはAccuracy 3mと出ます。画面を見ていると確かに止まっている 時も3m程度の範囲で測定結果が動いています。こういった測定結果なので5mピッチくらいで走りながら 測定した2点間より、ロボットが走っている方向を求める方式をとっていると、途中で目標から 大きくそれた方向に走り出すこともありましたが、最終的には目標から5mくらいの範囲には容易に たどり着けました。
実は7月に 第3回GPSロボットカーコンテスト の案内を頂いたので、11月までにGPSベースで走行する機能が出来上がったら参加する方向で、不景気で いささか暇だということをいうことを考慮しても(笑)、急いで走行関係の製作を進めてきました。
こういうロボットを作るのは初めてなので、ハンディGPSだけでの誘導がどの程度の精度になるのか 感覚がありませんでしたが、ここ何回かのテストの結果、第2回コンテストのコースの様に目標地点の 間がどこでも走れるならば、今のアース・ローバー01でも、コース完走はOKで、ある程度の確率で 得点も入りそうだと分かりました。しかしながら、第3回コンテストのコースの様に幅数メートルの道を 8の字に走るのは、今のままでは不可能だと分かりました。
地図とランドマーク情報や、加速度とオドメトリからGPSの誤差を補正する機能、 障害物回避の機能など、諸々の機能を持たせようと思った場合、あと何回週末があるか数えて 「大会当日までには出来上がらないな〜」と思いました。
というわけでコンテスト参加は怪しくなってきましたが、ロボットの機能・性能に目標があることは 良いことなので、当面は第3回GPSロボットカーコンテストのレギュレーションを目標に製作を続けようと 思いました。
ラジコンカーとしてガンガン走らせる訳ではないので、たぶんRCサーボのギアを壊すこともないでしょう。
ネットで調べてみると、GPSのフィルタといえばカルマンフィルタの様です。資料が沢山あったので 読んでみました。(そういえば、海上の一点に留まる機能がある船でも使っていました。) ・・・式の読み方をすっかり忘れてしまったというか、勉強したかどうかの記憶も 定かではない状態なので、コンセプト的にこういう感じのものを入れようと思いました。
RobotWatchの こちら で記事になっています。学生の頃、同じ研究室でPC9801を使いシミュレーションしていた ニューラルネットワークの印象しかなかったのですが、それに比べると学習も認識も非常に・・・ というか比較にならないくらい早く、ボードもコンパクトで「コレは使える」と感じたので、 「アースローバーに是非搭載したいです」ということで割引販売してもらってきました。
認識ボード - RT-01-003-1
アースローバーに搭載予定のWebカメラの画像を、搭載PCのOpenCVで処理した後、
このチップ「CogniMem」に学習/認識させようという構想で、チップのみのボードを購入しました。
ぼちぼちドキュメント類に目を通したり、インターフェイスの設計をしたりを進め、GPS関係の 後、12月から作業を始めようと思います。
画像に限らず、ビット列にモデル化できて、パターンがあるものならば何でも学習・認識の 対象になるので、別のものにも使ってみたいと思っています。
赤外線距離センサを直射日光の下で使うのは良くないと思いますが、数年前W6v2で少し試して みた時は、それらしく動作していたので、また使ってみることにしました。
キットは1秒間に約15回測定する様に組んであったので、RCサーボの信号を作る合間に 測定結果を拾いやすいように、約40回測定する様に、測定周波数を決める抵抗を交換しました。
センサーヘッド
超音波距離センサの取り付けが完了しました。カメラはまだです。
首は3軸にしようかな〜と思っていたのですが、視野の広いカメラを積むし、W6の様に
手元を見る必要もないので、しばらく1軸でいくことにしました。
PCをロボットに内蔵してしまうと、走行開始の操作に画面を使うことが 出来ないので、あらかじめ画面の操作で待機状態にしてから蓋を閉め、タッチセンサを 触ることによって走行開始できる機能をつけました。動かしてみた感じ、どうもロボットの 状態が分かりにくいので、操作パネルや簡単な画面、もしくは音声出力でも付けようかと 思いました。
PCを載せて走らせてみました。ゆっくり走るし、サスペンションも柔らかいので、衝突 でもしない限りは今のPCの固定方法で良さそうでした。
W6と違ってアースローバーは、ロボットの大きさと比べて十分広いところを走らせるので、バックはしないつもり でした。そのため後ろ向きのセンサを付けていません。積極的にバックを使う様ならば、後ろ向きのセンサも増やす必要 があるなと思いました。
1km/h程度で360度旋回しながら0.2秒おきに測定し、赤外線距離センサ(PSD)について直射日光の影響を見てみました。 センサの光軸からずれていれば、センサ本体が日向に出ている状態でも大丈夫では?と期待していたのですが目測で 40度くらいの範囲に入ってくると物があるかのように反応が出てきました。今のマウント方法で、晴れの日は 障害物回避のトリガとしてはあてにできないことがわかりました。センサに直接日光が当たっていなければ、測定対象 に日光が当たっていても、表面の状態によっては正しく測定できるようなので、マウント方法を工夫して使い続ける 方向としました。
最後に加えた機能は、ロボットを実家に発送した後で作ったものだったので、うまく働くか心配でしたが、 設計どおりに機能して良かったです。 持ち時間の間に2回走らせ、2回とも積んでいるGPSの精度と、制御ソフトの機能から予測される程度の正確さで WayPointを巡り、完走しました。競技結果はエントリー8台、当日参加6台の中で2位でした。
GPSの受信状態
周囲に高層ビルがあるせいか、意外と補足できる衛星の数が少ないと思いました。
走行ログ
WayPoint(画鋲マーク)と走行ログをGoogleEarthにプロットしてみました。
1回目の走行の記録です。「4GPS mode1」のポイントで2回コーンにぶつかり回避動作を行ったせいか、
次のポイントにうまく近づけませんでした。
このテニスコート周辺については主催者提供のデファレンシャルGPS
による座標データとGoogleEarthのイメージが、テニスコートの白線の幅程度に合致していました。
既知座標による補正機能もうまく働き、思ったよりも正確に走りました。
総括ですが、一人で進めていたら、これほど短期間に、GPSによるナビゲーションの精度にこだわって製作することも なかったと思うので、自分以外の視点が性能アップに役立って良かったと思いました。また、たの参加者の方々と 情報交換もできて有意義でした。参加者および、主催者の方々、みなさんお疲れ様でした。
学習/認識させるにあたり、チップとやり取りしなければならない情報量は少ないので、PCからはH8/3694を経由しUSB <->RS232<->I2C
という経路でアクセスすることにしました。H8/3694のボードを使うにあたって、H8/3664のキットについてきた開発ソフトをそのまま使えるように
クロックを20MHzから16MHzに変更しました。CコンパイラのヘッダファイルはH8/3664と一部異なるので、HEW4のH8/3694用
の物に若干手を入れて流用しました。
ほんとうならばHEW4を使いたいところですが、Vistaで動かないので、これまでどおりH8/3664のキットについてきた古い
Dos窓で使う日立の評価版Cコンパイラを使いました。
CogniMem I/Oボード
基板は、アースローバーのサイドボックスの空きスペースに収まるようなサイズに作りました。
立っているのがCogniMemのRT-01-003-1(CM-PM1K)ボードです。
試しに作ってみたソフトからRTC-8564NBにアクセスできているみたいな感じなので、これをベースにCogniMemの説明書を よく読みながらソフト制作にかかろうと思います。
すると、動きませんでした。簡単にチェックしてみたところCM-PM1K用の3.3V電源ラインの電圧が出ていません でした。そして、3端子レギュレータが過熱していました。「ショートだー」ということであわてて電源OFF にして、もう一度念入りに見直しました。
結果は手元にあるCM-PM1Kと、自作基板設計時に見た この資料 は、J4コネクタの電源ピンの配置が、VccとGNDで逆でしたorz
チップが壊れてしまった可能性は低くないですが、とりあえず続けようと思います。