March 03, 2014

Super Sylphide 進捗状況(74) -- もうちょっとすごいロガー Rev.C 設計完了

先日、GPSアンテナ内蔵のもうちょっとすごいロガー Rev.Bが完成したばかりですが、Rev.Cを設計しました。Rev.Cでは使い方に少し配慮して、電源投入してから実際にログを取得開始するまでに任意のタイムラグをつけられるようにしました。電池がたくさん積めればよいのですが、もうちょっとすごいロガーの使われる環境では、あまり大容量の電池を積むのが重さ、大きさ的に難しいと思いますので、少ない電池を持たせるためにも、ログを取得開始するまでの間はできるだけ消費電力を少なく保つようにしました。

Rev.BからRev.Cで下記のように電源の構成を変更しています。

ninja-scan-slim_RevB_RevC_diff.png

ずっとログをとっている状態なら、すべての電源としてLTC4080のstep-down converterから出力される3.3Vを使うRev.Bの構成が最も効率が良いのですが、この構成ではログ取得開始までの待機中にも同じログ取得中と同じ電力を消費されてしまいます。
Rev.Cでは司令塔であるC8051F381マイコンをLTC4080の出力から切り離し、LTC4080についている-ENピンを制御することで、LTC4080の出力をオンオフできるようにしました。加えて待機中に、C8051F381自身も、オシレータを内蔵の高周波数(48MHz)から同じく内蔵の低周波数(80KHz)に切り替えることで、大幅に消費電力を抑えることが可能です。

現在、Rev.C基板を発注したところです。完成したら消費電力を様々な条件で比べてみたいと思います。

※次の進捗はTinyFeatherへのRTKLIBの移植に関してです。

※※もうちょっとすごいロガーはgithubで公開をしています

23:55 fenrir が投稿 : 固定リンク | | このエントリーを含むはてなブックマーク | コメント (0) | トラックバック
このエントリーのトラックバックURL: https://fenrir.naruoka.org/mt/mt-tb.cgi/905

March 15, 2014

Super Sylphide 進捗状況(75) -- RTKLIB探訪 rtksrv.c編

最近、オートパイロットシステムTinyFeatherのGPS機能を充実しようとしています。搭載しているGPS受信機から、できるだけ生情報に近い部分を使うことで、より高精度な測位をすることを目標としてみました。GPSに関連する情報を処理するのは、高須先生がソースを公開されているRTKLIBです。RTKLIBはPCのアプリとして動かすにはとてもよくできているのですが、TinyFeatherはPCとは入出力やスレッドをはじめとしてかなり環境が違いので、組み込むにあたってプログラム構造を理解する必要がありました。今回の記事はある程度理解が進んだので、そのまとめとなります。
なお、高須先生のコードからforkして、TinyFeatherなどの組み込み環境向けRTKLIBを独自に公開しています。記事を書いている時点では、できる限り少ないコード(ファイルやスレッドを使わない)で測位部分のみを抽出したminimal_rtkposが大きな追加部分となっており、その他もファイルやスレッドを使わないような分岐(それぞれWITHOUT_FILE, WITHOUT_THREADというマクロ)が施してあります。

RTKLIBは、共通の部分(ディレクトリでいうとsrc)とそれを覆いこむいくつかのアプリケーション(同じくapp)として提供されているのですが、そのうち注目したのはCUIベースのrtkrcvというプログラムです。GUIがない測位機能中心のプログラムなので、これを解析していくことにしました。

rtkrcvは、RTK測位のサーバ機能を提供するrtksvr.cを中心としたプログラムになっています。この構造は下図のとおりです。

rtksvr.png
rtksvr.cの構造

rtksvrthreadというスレッドの中で無限ループがあるのが特徴で、そのスレッドはrtksvrstartで生成、rtksvrstopで破壊されます。スレッドないの無限ループでは、測位(rtkpos)が行われ、それに付随する入出力、すなわち、搬送波位相などの観測情報をはじめとしたデータの受信(strread)と、解析結果の送信(strwrite)が行われています。つまるところrtkposが一回の測位に相当しますので、TinyFeatherをはじめとした組み込み環境では、rtkposをループで叩き、その入出力をなんらかの形で行ってやればよいということがわかりました。

冒頭で紹介したminimal_rtkposは、rtkposを1回走らせるための最小限の入出力をつけたもので、ファイルやスレッド機構がなくとも動作します。rtkposを動作されるためには、引数となる構造体に対してどのような値を設定し、また出力としてどのような値が返されているのか把握することがとても重要でした。この関係を把握するにあたってはrinexファイルからの読み込みを記したrinex.cや、u-blox受信機の出力をパースするrcv/ublox.cが大変参考になりました。

以後、得られた理解をもとにTinyFeatherへのRTKLIBの移植を進めます。

※次の進捗は、ちょっとすごいロガーにテレメトリを追加した話です。

09:40 fenrir が投稿 : 固定リンク | | このエントリーを含むはてなブックマーク | コメント (0) | トラックバック
このエントリーのトラックバックURL: https://fenrir.naruoka.org/mt/mt-tb.cgi/906

March 29, 2014

ちょっとすごいロガー (NinjaScan Light) 波及効果

運動計測用ロガーであるちょっとすごいロガー(NinjaScan Light)を設計してから時間がたちますが、オープンソースとしたことで、波及効果がありました。ちょっとすごいロガーの販売が最近、いなさま(@ina111)の手によって開始されたようです。開発をした僕との直接の関係は、金銭的な収受を含めて一切ないのですが、他の方に有用と認められ商品化されたことはとても大きな成果だと思っています。

宣伝となりますが、ちょっとすごいロガー(NinjaScan Light)は商用利用も可能なライセンス(ハードウェアはCreative Common 3.0 SA-BY、ファームウェアは3条項New BSD)としてありますので、いなさま以外の方でも、これらのライセンスの元でご利用いただければ、と思います。

今後ともちょっとすごいロガーをよろしくお願いいたします。ちょっとすごいロガーの1次情報は、githubのninja-scan-lightをご覧ください。

※その後、もうちょっとすごいロガー(NinjaScan-Slim)の情報もgithubで公開しました。

15:31 fenrir が投稿 : 固定リンク | | このエントリーを含むはてなブックマーク | コメント (0) | トラックバック
このエントリーのトラックバックURL: https://fenrir.naruoka.org/mt/mt-tb.cgi/907