May 04, 2012

Xperia Active ST17i を買ったよ!

最近のマイブームはAndroidのアプリを作ることなのですが、それのデバッグ用に端末を一台購入しました。Sony EricssonのXperia Active (ST17i) という国内未発売のモデルです。いわゆるSIMフリー端末というヤツですね。電波関係のことはこれ以上書くと(ウワナニヲスルヤメロ)なので、使用感を書いておこうと思います。

ST17i.jpg
ST17iを持って撮影

一番気に入っているのがその小ささです。別に一台所有しているG-shockスマホ(Casio IS11CA)ですと、画面の幅が結構あるので、掴んでいる側と反対側をタップするときに結構親指を伸ばさなければいけなかったり、あるいは別の手で入力、ということで少々大変でした。ST17iでは上記の写真にあるとおり、片手で余裕で操作できる大きさで、そこがとても気に入っています。

防水仕様なのもいいですね。手が多少ぬれていてもタップに対して反応してくれます。IS11CAよりも感度がよいと思いました。

カメラ用のシャッターボタンも気に入っています。普通のカメラと同じ構造で、半押しでフォーカス/AEロック、全押しでシャッターという2段階ボタンなので、構図をいじりやすいです。

使用感はこんなところでしょうか。後はどっちかというとこっちの方が本題だったりするのですが、自分メモとして何をやったか記録を残しておこうと思います。

  • OpenWnnフリック入力対応 を導入。同梱されているPOBoxでは、変換候補まで表示されてしまうと、テキスト入力エリアが十分に映らなくなり、不便。小さいソフトキーボードを探してOpenWnnにいきついた。
  • root化。購入時点で4.0.2.A.0.62というビルド番号だったが、これはroot化が困難らしい。ということで4.0.2.A.0.42にダウングレードしrootをとって、4.0.2.A.0.62にアップデートした。root化は維持されている。いちおうオリジナルの62もバックアップとして取得しておいた。
  • FM Radioを日本の周波数帯にあわせた。/system以下にある設定ファイルを書き換えで対応。
  • フォントをメイリオに変えた。購入時の中華フォントでは漢字が一部異なることに違和感を覚えたため。
  • セルスタンバイ問題の解消。データ専用SIMを使っていてビックリマークのアイコンが気になったことが発端。結果電力消費を抑えることにも役に立つらしいので満足。

バリバリ使っていく予定です。

22:29 fenrir が投稿 : 固定リンク | | このエントリーを含むはてなブックマーク | この記事をdel.icio.usでブックマーク | コメント (0) | トラックバック
このエントリーのトラックバックURL: https://fenrir.naruoka.org/mt/mt-tb.cgi/841

May 11, 2012

DMAとFIFOの難しい関係

オートパイロットシステム TinyFeatherのなかなか再現しないバグが最近ようやく解消したので、どういう問題であったのかということを、自分への備忘録として残しておきたいと思います。なかなか気づきにくい種類のバグでしたが、理屈がわかってしまえばとても納得のいく問題でしたので、スッキリしたついので勢いで記事を書いています。

バグを抱えていたのはDSPのUARTの受信部分でした。DSPのUARTは受信用のハードウェアバッファ(FIFO)を持っており、FIFOに一定量のデータがたまるとDMAが動作するようになっています。本体の計算能力を奪わないためにも、また、FIFOの容量より大きなデータを受信できるようにするためにも、DMAを活用してFIFOの内容をメインメモリに転送することにしました。メインメモリ上にはリングバッファが形成されており、その他のポーリングルーチンなどから任意のタイミングで受信データを読み出せるようにしてあります。図示すると以下のようになっています。

DMA_FIFO_normal.png
正常時

正常に動作している場合は、流れるようにFIFOへの受信、FIFOからメインメモリ上リングバッファへのDMA転送、リングバッファからの読み出しが行えています。

しかし偶発的に計算負荷があがり、リングバッファからの読み出しをサボる事態が発生すると、リングバッファに空きがなくなります。さらにDMAもリングバッファ上の空きがないことを知って、休眠状態に入ってしまいます。ここからいかに回復するか、というところにバグが含まれていました。状態と解決方法を整理した図を以下に示します。

DMA_FIFO_abnormal.png
異常時

リングバッファに新たに空きができても、DMAが動作しないことが問題でした。上から4番目の図に青字でしめしたとおり、DMAを手動で起こしに行く必要があります。今回のDSP(TMS320C6745)の場合、DMAを起こすためには、FIFOを一旦空にして、DMAトリガーが再びかかるようにする必要がありました。

繰り返しになりますが、気づいてしまえばなんということはない問題です。FIFO、DMA、リングバッファと登場人物が多かったのが、解決への道のりを長くしていたのだと思います。

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

May 18, 2012

Super Sylphide 進捗状況(51) -- しまなみ海道 with TinyFeather

先日のゴールデンウィークの前半で、ツイッター仲間で尾道今治間を結ぶしまなみ海道を自転車で漕いできました。とってもいい道ですね! 景色よかったし、温泉や食べ物屋さんなど、周辺観光もとっても充実していました。自転車の旅行記を書きたいところでもあるのですが、僕の残念な文章力と写真では魅力を損なってしまうかもしれない(笑)ので、今回の自転車旅行にお供につれていったオートパイロットシステム TinyFeatherの話を書こうと思います。ええ、またいつもの話です、すいません。

TinyFeatherは航法装置として動作するので、自転車で移動している様子がログできます。ログにはいくつか種類があって、(1): 内蔵しているGPS(u-blox LEA-6T)のデータ、(2): (1)に加速度計やジャイロを足すことでその場で複合演算をしたオンライン版INS/GPSデータ、(3): (2)と同じデータを後処理の複合演算をして得られたオフライン版INS/GPSデータ、の3つをとることができます。よくあるGPSロガーのデータは(1)に相当するものです。(2),(3)にもなると、傾きなどをとることができ、どこで転んだかがわかります(笑)。

動作不良(先日のDMAの話)があったため、一部ログを失ってしまっているのが後からわかったのですが、取れている範囲でログをざっくりと紹介したいと思います。一回激しく自転車からこけたのですが、その部分のログもなくなっていました。はからずも体を張ってしまったのにデータを欠損していてとてもショックです。

では気をとりなおして(1)のGPSデータ。緯度経度を示してみます。

shimanami.jpg

u-bloxのGPSデータは、同社が配布しているu-centerというツールを使うことによって、Google Earthのデータ形式であるKMLに変換できます。上記の画像もGoogle Earth上に表示させたのをとってきました。

そして(3)のデータ。(2)と(3)はほぼ同じものが得られるので、より精度がよいであろう(3)のデータを示してみます。こちらも緯度経度。上のGPSデータのうち、北側に相当する部分です。

shimanami_offline.png

(1)のGPSデータと形がよく一致しています。が、一部を拡大してみると違いがあります。順に(1)GPSデータ、(3)オフラインデータ。

shimanami_ubx_closeup.png
GPSのみ(1)

shimanami_offline_closeup.png
INS/GPSオフライン(3)

GPSが途切れてしまっている中央のところ(上画像で赤点の発生している部分)もINS/GPSだと滑らかにつながっています。(3)のINS/GPSでは補間がちゃんと効いています。このように加速度計やジャイロを搭載してうまく処理をすることでより妥当な結果が得られます。

(2),(3)でとれた姿勢データもあるのですが、これを面白く表示する方法が思いつかないので、今回はパスとさせてください。転んだところのデータが残っていれば…、とっても惜しいです。またのこける機会があるはずなので、そのときにでも…

TinyFeatherの自転車への搭載ですが、料理用の容器に本体とバッテリーを詰め込んで、雨対策をしました。GPSアンテナだけを外部に露出する方法で、雨程度の防水でしたらこれで十分に機能しました。

TF_packed.jpg
外観

TF_packed_open.jpg
中身

ケースには『タケヤ化学 ツイストパック3 TX-18B 270ml』を、バッテリーにはエネループ QE-PL101を使っています。黒いのはホームセンターで買ったウレタンフォーム材で、隙間を埋めるのに使っています。

今回はこの防水状態で本体をサドルバックの中に詰め込み、GPSアンテナをバッグの外に張っておきました。GPSの受信も良好でした。姿勢データを検証するためには本当はもっとしっかりとした固定をしなければいけないので、今後の課題としたいと思います。今のところ、ドリンクホルダーをうまく使えないか検討中です。

Google Earth上でログデータを見れるようにしました。

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

May 25, 2012

Super Sylphide 進捗状況(52) -- TinyFeather のログを Google Earthで見る

オートパイロットシステム TinyFeatherですが、地道なデバック活動を続けています。今では無人航空機のみならず、自転車(僕自身が被験者)、人力飛行機(僕のお友達に協力をお願いしています)など、ターゲットを増やしつつ動作チェックをしています。
今回はそんな中でもデバック活動に役に立つログの表示方法を思いついたので、それを記事にしてみることにしました。タイトルの通りなのですが、TinyFeather (およびSuper Sylphide)のログをGoogle Earthで表示するようにしてみました。

こんな感じです。

fujikawa2.jpg
飛行機の挙動がわかる!

fujikawa.jpg
拡大した様子

データは@HirakuTOIDA くんにTinyFeatherで取得してもらった社会人チーム Team-Fのテストフライトの様子です。機体のモデルは実はTeam-Fさんのではなく、東工大チーム Meisterの大沢さんよりお借りしたものを加工しています。みなさんのPCでも表示できるようGoogle Earthの形式であるKMLファイルを置いておきます。高度について問題が発生しています(後述)が、機体の姿勢はよく見えると思います。

最後に備忘録として、この表示ができるようになるまでに苦労したことを残しておこうと思います。

  • Google Earthの回転座標系は左手系。航空機は一般的に右手系で回転を表すので、値の変換が必要であった。
  • 機体の3Dデータを配置する際は、Sketchup上で+X(赤)が右、+Y(緑)が前方、+Zが上方とする必要がある。
  • 上記の事柄はKML ReferenceのModel要素を読むと書いてある。
  • Google Earthの高さの概念は、WGS84で定められている回転楕円体を基準としてゼロを定めたものではないらしい。前述のKMLファイルはそれを基準として高度を決定しているため、離着陸時においても地面から離れてしまっている。ジオイドを引き算して補正するとそれらしい挙動になった。一部地面に突っ込んでしまっているが補正をしたKMLはこちら

データの可視化ってとっても面白いです。

TinyFeatherの次の企画を練ってみました。

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