« 2008年9月 | トップページ | 2008年11月 »

2008年10月31日 (金)

AC100V電源を確保する

気がつけばもう10月も終わりです。仕事は、今週はたまたま飛び込みで「納期は今週中」なんてのもありましたが、それほど忙しいわけでもなく、ぼちぼちやってます。

で、さっき気づいたんですが、ここ2週間くらいロボット関連のことを何も書いてませんでした。意図的に書いてなかったわけじゃなくて、2週間前のつくばチャレンジ試走会のあとちょっと風邪をひいて調子が悪かったとか、マヒソンさんにプログラムを任せっきりにしてしまっていて私の方は何も進捗がないから書くこともなかったとか、そういうわけでロボット関連の日記を書いていなかっただけ。今日は思い出したのでちょっとだけ書きます。

前回の試走会での反省ですが、AC100Vの電源を自前で用意していかなかったのが非常にまずかった。これは、メーリングリスト等で大会事務局側で電源を用意できない旨の連絡がすでにまわっていたのに用意していかなかったので、現地でデータ収集やプログラムの修正をしている間にノートPCのバッテリが空になってしまい、作業を続けられなくなったというもの。幸い、兄に作業場所と電源を提供してもらえたおかげで何とかロボットを走らせてデータ収集できました。

そこで。近所のホームセンターでDC/ACインバータを買ってきたので、今週末の試走会には自動車用の鉛蓄電池と、DC/ACインバータを持って行って、ノートPC用の電源やロボット用バッテリの充電に使う予定です。

友人の消息は芋蔓式にわかるらしい

大学時代の友人とか、旧ニフティサーブ時代の友人とか、しばらく連絡を取り合っていなかった人がけっこうblogを書いていたりして、またblogのリンクやmixiのマイミクをたどったりして、ここしばらくでいろいろ発掘しております。

大体、親しい人たちは同じような場所にグループで生息しているので、一人みつかりゃ、あとは芋蔓式。

心当たりのある方、blogにリンク張らせてね。

2008年10月26日 (日)

こんにゃくゼリー報道におけるマスメディアと市民の意識のズレ

先日のこの日記とも関係する話ですが、いわゆる「こんにゃく入りゼリー」に関するマスメディアの報道を見ていて、マスメディアの報じ方とmixiの日記やblogに書かれる市民の意識にだいぶ差があることが気になって、なぜそのようなズレが生じているのか考えてみました。

で、私の仮説は、「TVのニュース番組(特に一部のTV局)はエンターテイメント化しており、危機感を煽ったり権力者側をバッシングすることで視聴率を稼ごうとしている」というもの。コメンテイターやタレントを起用して何か一言入れている番組は特にワイドショー的要素が強いように思います。

ん~で、ここに書く内容をいろいろ考えたんですが、堅苦しくなりすぎるし素人が実態を知らずにあれこれ書くのも何なんで、ぐたぐだ書くのをやめます。

いろんな意見を見た中で、藤代さん@ガ島通信のこの記事が一番適切だったと思うので紹介しておきます。

■IT+Plus 10/17付:こんにゃくゼリー規制論にネットはなぜ反発するか

繰り返しになるが、報道の現場には「公務員や大企業はバッシングしても当然、叩き得」といった考え方すらある。その一方で、国家に対する弱者である「市民」を批判することはタブー視されている。

消費者の責任だろ!と、マスメディアは言えないのでしょうか。

今回の件は、報道のあり方を考えると同時に、消費者(市民)の意識がマスメディアの報じ方に踊らされない程度にレベルが上がっていることを私に教えてくれました。

2008年10月22日 (水)

ちょっと風邪

今週は月曜日の夜からちょっと体調悪いなぁと思っていたら、火曜日の朝は鏡を見ると「顔色悪いです」と顔に書いてある状態だったのですが、この日は、打ち合わせ×2+提出する書類があって頑張って出勤しました。なので、今日は年休消化の意味を含めて休みを取りました。一日中、ゲームをしたり仕様書を書いたり(?)ネットサーフィンをしたりと、典型的な何もない休日の過ごし方でした。

季節の変わり目は風邪をひきやすいので、みなさんもご注意ください。

喉にパンを詰まらせたとか

いちいちTVで取り上げて校長先生を追い回すほど社会的にインパクトのある事故だとは思えません。給食の食べ方で無茶をしてパンをのどに詰まらせたのは本人の責任で、これに関しては担任の先生の責任でも学校の責任でもないでしょう。それでも学校側の責任を問いたいなら、のどに詰まらせた後の応急処置がどうだったかくらい。あとはご両親の感情のやり場がないというだけの話で、メディアが校長先生を追い回すのはナンセンスだと思います。

それにくわえて、どこの局の報道を見ていてもマンナンライフの「蒟蒻畑」と比較していないのはなぜでしょうか? マンナンライフを悪者に仕立て上げて解決したつもりになっている消費者庁が今回の事故をどう見ているのか、マスメディア各社にはぜひインタビューしていただきたい。

2008年10月17日 (金)

朱に交われば赤くなる

先日友人との会話で出てきた話です。

私:「チャンスがあったらGoogle社で働いてみたいと思う?」
友:「当然、思うよ」
私:「Googleの何が魅力?」
友:「Googleは今世界一給料がいいからね。それに、社員のために必要なものがなんでもある。だけど、最も魅力的なのは世界中の優秀な人が集まっているということさ。賢くなりたいと思ったら賢いヤツと一緒に仕事をするのが一番だろう?」

そういう思考ができる時点でその友人は賢いと思うのですが。

転職しなくても、仕事を通して自分のレベルアップを図るには、優秀な先輩に張り付いて知識でも考え方でも仕事の仕方でも見て盗めるものは何でも盗むのが一番早いかな、と思いました。

2008年10月15日 (水)

IEEE 754形式のfloatをCCS PCMのfloatに変換する

掲題の件、何が悪かったか判明しました。簡単に言うと、「シフト演算子とビット演算子の優先順位を私が間違えていたことにより、仮数部が正しく変換されていなかった」というのが原因でした。

参考までに、その変換を行う関数のソースコードをUpしておきます。

/**

    CCS-PCMのfloatフォーマットに変換する。
   
    @note CCS-PCMのfloatフォーマットが一般的なIEEE 754とフォーマットが異なるので
    この変換関数を作成した。
*/

float convertToCCSFloat(unsigned char d[4])
{
    // IEEE Std 754-1985 float format (big endian)
    //
    // 31............24...23............16...15.............8...7..............0
    // S E E E  E E E E   E F F F  F F F F   F F F F  F F F F   F F F F  F F F F
    //
    // where
    //     E : 8bit exponent with bias of 7F
    //    S : Sign bit
    //    F : 23bit Mantisa
    // Number = (-1)^S * 1.F * 2^(E-127)   
   
   
    // CCS-PCM float format
    // (Reference: CCS-PCM C Compiler Reference Manual, Common Questions and Answers)
    //
    // 31............24...23............16...15.............8...7..............0
    // E E E E  E E E E   S F F F  F F F F   F F F F  F F F F   F F F F  F F F F
    //
    // where
    //     E : 8bit exponent with bias of 7F
    //    S : Sign bit
    //    F : 23bit Mantisa
    // Number = (-1) ^S * 1.F * 2^(E-127)

    float number = 0;
    unsigned char *ptr;

    ptr = (unsigned char *)(&number);

    *(ptr + 0) = ((0x7F & d[0]) << 1) | ((0x80 & d[1]) >> 7);
    *(ptr + 1) = (0x80 & d[0]) | (0x7F & d[1]);
    *(ptr + 2) = d[2];
    *(ptr + 3) = d[3];

#if 0
//    printf(" data = %02X%02X%02X%02X \r\n", d[0], d[1], d[2], d[3]);
//    printf(" conv = %02X%02X%02X%02X \r\n", *(ptr), *(ptr+1), *(ptr+2), *(ptr+3));

    printf(" number = %f \r\n", number);
#endif   

    return number;
}

バグがあったのは、上記のコードの
    *(ptr + 0) = ((0x7F & d[0]) << 1) | ((0x80 & d[1]) >> 7);  // 正しい
の部分です。これを
    *(ptr + 0) = ((0x7F & d[0]) << 1) | (0x80 & d[1] >> 7);  // これじゃ駄目
こう書いていました。下の書き方では、>> が先に評価されてしまうため、0x08 & d[1] >> 7 は常に0になってまう、というのが不具合の原因でした。

2008年10月13日 (月)

コンパスの出力は正しいようだ

8/30の日記で書いたデジタルコンパス(V2Xe)のheadingデータが連続変化せず飛んでしまうという件。日曜日に屋外でway pointを追従する走行実験をしていたら、また問題として出てきました。前回はコンパスモジュールからの出力をXc,Yc (calibrated X, calibrated Y)にして、PC側でatan2をとって逃げたつもりだったのですが、atan2を使って求めた角度を見ていると、角度が0~180°までしか出ていません。本来は0~359°まで出るはずなのに。

V2Xeの出力はPIC16F876Aを使って読みだしてPCに送っているのですが、V2Xeから読みだしたIEEE 754形式のfloat型データを CCS-PCMのfloat型に変換するところで、なんかしくじってるんじゃないかという一抹の不安があります。これを確認するためにV2Xeから読みだしたfloatデータを何も変化せず32bitのデータとしてPCに送信してPC側でfloatに戻したところ、な~~~んにも問題なく、非常にきれいなheadingデータが表示されました。値が飛んでしまうこともありません。ということは。やっぱり私のfloat型変換が悪いということ?

そこでじっくりCCS PCMのマニュアルを読み返してみて、Lowest Byte の位置が私が考えていた位置と違うことに気付きました。私はこのコンパイラがビッグエンディアンを使っているものだと勝手に思っていたのですが、もしかしてリトルエンディアン? そう思ったので、MPLABのシミュレータデバッガ上で32bit長のデータの書き換えを試してみたら、リトルエンディアンっぽい値の変わり方をしているではありませんか! コンパイラのマニュアルにはエンディアンについて何の記載もないので気づきませんでした。googleで検索してみたけど、CCS PCMのエンディアンがどっちかという情報は少ないみたいです。やってみた結果からすればリトルエンディアンでした。

リトルエンディアンに合うよう修正したプログラムはまだ動作を確認していないので、確認したらまた結果をここにUpします。

そういうわけで。V2Xe、すごく使えそうです。これだけ安定してたらジャイロいらないかも。

ジャイロも付いたよ

10/10(金)は年休を入れて自主的に体育の日にしました。でも、運動しないで、先週秋葉原の千石で買ってきたジャイロ(司21)をロボットに載せる作業を進めました。ジャイロの出力はSH2のADコンバータから読み取って、ADコンバータの値をそのままPCに送ることにしました。どれくらい零点電圧がドリフトするかまだ計測していないのですが、動かしてみた感じではかなりドリフトが小さそうです。

とりあえず付けてみたかったから付けたというだけで、どう使うかは未定。

2008年10月 6日 (月)

久しぶりの秋葉原

日曜日は久しぶりに秋葉原まで部品の買い出しに行ってきました。この日はつくばチャレンジの試走会で参加申し込みをしていたのですが、先週の日曜日の段階で自律走行できていなかったため「自律走行できないまま車で3時間もかけてつくばまで行く意味あるの?」って感じで試走会参加を見送りました。

秋葉原では私の巡回コース(ツクモロボット王国、千石、秋月)をさらっと流して、駅の反対側にあるスーパーラジコンにも足を延ばして、ストックが底をついた部品やモータドライバIC、E-Savage用の黒スプリング(スーパーハード)などを仕入れてきました。で。今までロボットに非常停止スイッチが付いていなかったので、いわゆる「キノコスイッチ」を秋葉原で探したのですが、これを置いているお店がなかなか見つからず苦労しました。最終的には、JR秋葉原駅の電気街口を広場側に出て中央通りに辿り着く間にある田中無線電機(パーツ店)でお目当てのものが見つかりました。値段は\1,491-でした。

ついでに書いておくと、今回私がロボットの台車に使っているHPI E-Savageはタイヤの直径が13.5cmくらいあって結構大きいのですが、スーパーラジコンには直径が16cmくらいあるさらに大きなタイヤがありました。エンジンカー用なのだと思いますが、屋外用ロボットのタイヤに使うにはいいんじゃないでしょうか。

そんなわけで。今日の写真は「いかにも」なキノコスイッチをつけたロボットの姿です。
Otsukai_20081006

« 2008年9月 | トップページ | 2008年11月 »

最近の写真