2014年04月08日

おひさです

まだ1年経ってないですね…? よーし。 全く良くないですが。

ドロップアウトすることもなく、相変わらず働いてます。
町中でたまに見る弊社の製品ですが、予想外なことに、まっったく国内向けの製品に関わらないという。
どっか海外行って見てきてください。あ、見かけた際はどうぞごひいきに。

--------------------------------

去年書いたとおり、こちらも相変わらず狭い部屋で、更に何か作ることとはずっと離れております。
輪をかけて、最近は残業続きだったりして、休みもいつの間にか終わるとか駄目だこりゃ。

とは言え最近の流れはありがたいもので、ブレッドボードとかmbedとかそういうのがあれば部品を買ってきて遊べる時代なんで、常に机の隅にブレッドボードがあります。

センサで遊んでみたり、SDカードいじってみたり、一部界隈で話題のMPU-6050を触ってみたり、職場が暑いような気がするのに周りは普通の顔して仕事してるんで、疑心暗鬼になってしまい、ついには温度湿度気圧ロガーを作ってしまったり、dipのマイコンのくせにそれなりのスピードが出て、金儲けにはあんま見えない価格で売ってるマイコンをつっついてみたり、お仕事でPLD使う事になったので重い腰を上げて趣味レベルで突いてみたり(そんなことしなくても会社で勉強できるけどさ)、まぁなんかやってます。目立ったことはしてないです。


ところでこのラインスキャンカメラ、国内で買えるのはいいんですが、ちょっと高いですね…。ポケットカメラのコスパにはやはり勝てない…。



何が言いたいのかというと、とりあえず、ものづくりはやめてませんよって事。
いやもう、生業にしちゃったんでやめられないですね。

ぶっちゃけ毎日大変でところどころ辛いですが、元気です。
高校1年の時にたまたま行けたJMCR全国('06)の帰りに買ったアザラシのぬいぐるみに、毎日職場で見つめられてるのできっと頑張れる気がします。
とりあえず現状報告まで。

今日書いたのは気まぐれです。
posted by Tmk at 01:48 | Comment(6) | TrackBack(0) | その他・活動記録

2013年04月24日

ラインスキャンカメラ2

お久しぶりでございます。
ランサーの大会に出て、就職して、毎日研修の日々でございます…。
どっかの情報機器メーカーで働いてます。きっと皆様弊社の製品をちょくちょく使用して頂いてるんじゃないかと。

ランサーの大会は、そういえば報告してないなってのを今気づきました。
とりあえず、決勝にいけたんで満足です。
引越し云々で結局去年と全く同じマシンでプログラムを刷新。前日は良い感じで動いてたんですほんとです。
円柱を狙おうとして、間違ってプログラム上書きしちゃって戻せなくなっただけです。

…正直反省してます。なんであんなことをしちゃったんだ私は。

前日の状態で精度の調整をしたら1500点はとれたのに…。
でも次回以降は出れないかなぁ…。


-----------------------------------------------------------------------
ラインスキャンカメラの話の続き。
実はこちらも、つい実験とかデータ取りとかできないまま卒業しちゃいまして、結局良い感じのデータはあんまりありません。


とりあえず、どんな状態でラインを読み取っているかというと、

CIMG0107_R.JPG

こうです。そして、ラインを読む位置は

CIMG0103_R.JPG

こうなってます。ホイールベースと1:2の関係になっています。
この時、多くのMCRとは違い、ラジコンカーベースなのでカメラは車体に完全に固定されています。(過去の動画を見てね)


で、定かではないですがこの時にどんなデータが出ているかと言うと、

TEK00000.PNG

こうなっております。上がクロック、下が出力データ(アナログ)です。白で出力が大きくなります。

1回めの山は、データとして使用しません。2回めの山をデータとして使用します。
これは、前回のデータ出力終了時点から、次回のデータ出力までの間隔を露光時間としているためです。メインの処理によって露光時間を変えたくないので、わざとダミーの読み込みをしています。

2回めの山から画面右に見切れている山までは、速度制御や操舵の計算などのmain処理を行なっています。
しっかり割り込み処理も作りこめばよかったのですが、なかなかそこまで手が回らず…。

実際、1回の読み込みは4msほどで終了します。ですがクロックを上げたり、カメラのデータ読み出しを割り込みで行うなどすれば、ダミーの読み込みをする必要がなくなります。(2ms以下で1周期読み出せます)
とはいえ、露光時間がかなり短くできるので、恐らくmain処理を行うことができなくなるぐらい頻繁に割り込みがかかるでしょう。


出力値はオシロのデータを見る限り最大2V程度です。ですがこの後、更に露光時間を短くして実装しました。
というのも、回路上に予めオペアンプで4倍される回路も実装されており、最終的に増幅したものをADで呼んで使用しています。なので、ピークが1Vでも十分です。
この場合、ラインがカメラの中心付近であれば照明も必要はありません。(あったほうが安定度は増しますが)
ただ、カメラの端の方に寄ってしまうと、元々の出力が弱いので、ラインと見分けが付けられなくなってしまいます。(まぁマイコンカーでもラインを見失うことはあるので、同じような処理をすれば大丈夫でしょう)

ともかく、全面白をカメラに見せた場合、ライトがあってもなくても、出力は山の形になり、サチらない限り両端はだいぶ暗いです。
こんな特性から、FreescaleCupでは中心部分を照らすライトにリフレクターキットを採用して光をある程度拡散、両端には集光レンズを採用しました。なるべく出力の山の形を平坦にさせるないし、両端の有効範囲を広げることを目的としました。MCRと違い、カメラが操舵と独立していない場合、両端の有効視野はかなり重要なんですよ。



とまぁこんなかんじで、眠い&明日日直なので、超適当になりましたが報告しときます。
想定はしていましたが、やっぱり毎日大変なので、ロボットに当てられる時間は絶対少なくなるなぁ…。
製作環境もないし(4畳のボロ寮じゃちょっと…)、工作器具とかもないし…。うーん。
posted by Tmk at 00:39 | Comment(0) | TrackBack(0) | MCR以外

2013年03月06日

ラインスキャンカメラ

追いコンされたわけですが、ランサー出ます。多分。とりあえずエントリーだけはしました。

ずっと書こうとは思ってんたのですが、あんまり時間なくて今頃書きます。


The Freescale Cupの際は、カメラを使用してライントレースを行いました。
実際はカメラのような1*128画素のセンサです。
画素数からもわかるように、スキャナのようなセンサであることがわかります。
chanさんのラインスキャンカメラのような感じです。
http://elm-chan.org/works/lcam/report_j.html
(このレベルには遠く及びませんが…)


今回はハードウェアに関してのアプローチを書いてみます。
前提として、MCRのように操舵と動機して動くのではなく、車体に取り付けることにします。
Freescale cupのキットでは操舵に付けられませんしね。
さらに、白地に黒線です。そういう規定なので。


このカメラを使用した際に、マシンの方はこのように作りました。
CIMG0602_R.JPG

みんな大好き秋月で売ってるパワーLEDにレンズを取り付けたものです。
http://akizukidenshi.com/catalog/g/gI-03709/
LEDはとりあえず1Wのものを使いました。レンズは…どうだったんだっけ?
まぁこの時は、とりあえずでつけたので深い意味はありません。
カメラが赤色周辺の特性が良かったので、省電力化もできるかなと考えてパワーLEDの赤も試しましたが、白と比べて段違いだったので結局白色にしました。

カメラとLEDの設置位置に関しても、台座を3Dプリンタで作ることを考慮して、作ることのできるぎりぎりの高さという理由です。
実際の高さはこの時161mmでした。
LEDを取り付けたほうが、白線の部分と黒地の部分との差がより大きくなるため、取り付けています。

というのが予選の状況。
で、予選を行なってよくわかったのが、カメラの取り付け位置が低いらしい。
→高いほうがより広角を見れるため、ライン取りの幅が広がる。
  他チームのほうが、よりINをいっている。
  (FreescaleCupのコース60cmとは比較的広いです。)

ということなので、もっと広げようと。

hi.jpg

こうすれば読み取り範囲が広がるわけです。

ですが、いくつか問題が出てきます。

・必然的に検出しているラインが細くなる
・カメラ両端の光ムラが顕著化する。
 →ソフトウェアではある閾値を超えたかどうかで白と黒と判別している(スタート前にキャリブレーションをする)
 →反射が弱い両端は黒として判別されてしまう
・重心位置の変化による慣性モーメントの増大
 →決勝大会中に実感した。重すぎる。
・カメラ位置の変化で照明の反射具合が変化し白と黒の差が弱くなる。

などの問題が出ました。それに対応するため、照明の数を増やしてます。
CIMG0636_R.JPG
4個にして、両端はパン・チルトどちらも調整できるようになっています。

こうなると消費電力が増えます。
バッテリーは、ニッケル水素電池6セル、2200mAhです。それほど性能がいいようには見えなかったので、パワーLED2つを直列に接続して、1オームだかそんぐらいの抵抗を通してバッテリーにつなげています。
制御を何もかけていないので、電池の電圧降下で照明の強さが若干変わりますが、今回は諦めています。
4つにするときは2直列を2並列にしてつなげてます。そんだけです。
4並列にすれば、明るさを固定できる(電流値を固定できる)すべはあったのですが、単純にロスがやばいので却下。昇圧して降圧するのも、電流が強すぎて部品が揃えられない関係から却下。
ちなみに電流はLED1個あたり0.4A流しています。

ちなみにですね、最終的に決勝でラインを読み込んでいた位置は、ホイールベースの2倍の位置(400mm)です。多分LED消してもそれなりにいける。
前に書いた東大チームなんかは照明なんて一切ないです。しかも多分うちのチームよりだいぶ先の位置をカメラで見てる。はず。

というのも、カメラの読み出しはクロックを与えるとアナログで出てきます。
照明なしで決勝大会でのカメラ位置で電圧を計測すると、電源電圧5Vでピークでも1V切ります。(確か)
このままであれば結構厳しいですが、デフォルトで4倍のオペアンプ回路が乗っているので、それを使って増幅させた後の値を使っています。
こうすることで、照明なしながら短い露光時間(0.4ms以下)で読み取ることが可能です。
まぁ、実際のデータを読み出す処理で1.7ms持っていかれて、ライントレースのもろもろの処理でで4.5ms持っていかれるので、せっかくの高速読み取りの工夫があんまり生かされてないですが。


このへん、現在あんまりデータがないので、後日オシロスコープのデータと一緒にもう少し詳しく書いてみようと思います。
(明るさのムラに関しては特に)



ちなみに、MCRみたくデバッグにはログをとって色々やってました。
時間がなくて、内蔵RAM上に領域をとったので電源を消す前にログを読み出さなきゃなんないんです。
内蔵EEP-ROMはあったんですが、データシート読む時間がなかった…。
log.jpg
posted by Tmk at 00:38 | Comment(0) | TrackBack(0) | MCR・活動記録

2012年11月07日

The Freescale cup 2012 日本大会 決勝戦


現実逃避のあれです。

ということで、そういえば書いていなかったなぁ…と思い出したので、FreescaleCup決勝戦のレポートです。

東京都港区のザ・プリンスパークタワー東京で開催。

いやぁ、学生が行くにはとても場違いなところでして…。

CIMG0663_R.JPG
こんな受付があったあとに


CIMG0650_R.JPG
こんなところ。パーティー会場みたいなところ。

そんなところに
CIMG0679_R.JPG CIMG0681_R.JPG

なんか色々展示してあるわけですよ。

おっかなびっくりで迷いながら到着。

コースはこんな感じ。40メートルちょい。
CIMG0648_R.JPG

決勝戦に出たのは東大、阪大、大阪電通大、函館高専、立命館大、うちの6チーム。
ただ、予選の段階でなんとなく東大と阪大とうちの決戦になるかなという感じだったので、とにかく東大に勝とうという1点だけを考えていたわけです。

2回走ったうちのベストタイム比較ということで、上位3チームの動画。

大阪大 Robohan



千葉工大 RDCLab



東大 坂村研究室



結果は以下のとおりです。


順位学校名1回目2回目結果
1位東京大学19.0117.3617.36
2位千葉工業大学18.5418.4118.41
3位大阪大学18.4518.5618.45
4位大阪電気通信大学-22.6822.68
記録なし函館工業高等専門学校---
記録なし立命館大学---



そうなんですよ、1回目で阪大が暫定1位。逆に東大はゴール後停止しきれず、更にコースアウトしたという判定でプラス2秒のペナルティを受けてしまっているんです。
その直後の第2走できっちり持ち直して、かなり減速して停止。もうそれで1秒以上差があるとか、もう完敗です。やっぱすげぇや。
あの有名な坂村研究室の方々は全員M1の人で、3人中2人が外国の方でした。
絶対勝って来いと厳命されたとか…。


阪大とは結局0.04秒差。でもポテンシャルは阪大のほうがあると思う…。
2走目では設定を上げすぎてしまって、ふらふらし過ぎてた感じ。
3チームとも、ライン取りとか操舵の仕方とか全然違って、同じベースキットなのにここまで違いが出るものなのかと。

IMG_1780_R.JPG
ということで、2位でした。
応援して下さった沢山の方々に御礼申し上げます。
太っ腹なのことに、写真のトロフィーはメンバー3人に1個ずつ!


--------------------------------------------------------------------------

そうなんですよ!Freescaleまじ太っ腹なんですよ!
ホテルの雰囲気からして、すげぇ高そうだなと思っていたんですよ。

まさかね、無料で参加できる展示会なのに朝昼晩飯が食べられるとか聞いてないですよ!
日本じゃ展示会で立食パーティーなんてまず無いですよね。

CIMG0793_R.JPG  CIMG0791_R.JPG

特にですよ、2日間あるうちの2日目夕食は、ワインが出るとかなんなのもう。飲んだ感じ、それなりなお値段するよ。飲みやすかったもん。


それと、2日目にあったゼネラルセッション。
CIMG0757_R.JPG  CIMG0769_R.JPG

雰囲気がもう日本じゃなくてですね…(全席同時通訳の通信機があります)


目の前で社名を出してベンチマークするとかね。
CIMG0771_R.JPG  CIMG0772_R.JPG

CIMG0777_R.JPG  CIMG0778_R.JPG

これ絶対ルネサスを目の敵にする勢いの結果で…。


とかなんとかで、とっても新鮮で、貧乏学生にはとってもお得(そりゃあたくさんご飯をいただきお勉強させてもらいました)なんじゃないでしょうか。

来年度以降も開催される予定らしいので、気になる方は参加するといいと思います。
posted by Tmk at 07:31 | Comment(0) | TrackBack(0) | その他・活動記録

2012年10月04日

The Freescale Cup 日本予選

9/30に東海大学高輪キャンパスで,The Freescale Cup(Japan) Preliminary Raceが開催されたので参加してきましたー

外資系だとこういう車って普通なのかしらん.RedBullのイメージが強いけど.
CIMG0445.JPG

とりあえずもう一回ルールを説明すると,カメラでライントレースしろ!っていう大会です.
キット支給で,大掛かりな改造はできません.プログラムで勝負しなさいよって趣旨の大会です.

もともと,2月頃にこの大会の存在を知った私と研究室の奴らとで,この大会に出ようかー?っていう感じに話が進んでいって,とりあえず出てみようかという運びに.

今回の大会は予選大会で,予選を通過したチームが10/22にある日本決勝大会の権利を獲得することができます.

コースはこんなかんじです.
CIMG6191.JPG

全長は30M弱.路面に凹凸があるバンプがあります.
本来なら,坂道とトンネルも存在しますが,今回の大会では無いことが明言されていました.


15校の大学・高専の17チームが参加しました.

結論から言うと2位です.

1位東大,2位にうち,3位に阪大という結果.

CIMG6227.JPG


1走目↓
CIMG6208.JPG

2走目↓
CIMG6219.JPG

本来なら1走しかチャンスは与えられないのですが,今回は2回というルールになりました.
また,ゴール通過後,3M以内に止まれない場合はペナルティ1秒,3メートル通過後,コース3枚分以内に止まらない場合は更にペナルティ1秒というルールもあります.
スタート位置には,線が交差するところとは違うラインが引いてあります.
ランサーロボットで言うと,カーブの入り始めとカーブ終わりにあるあのマーカみたいな感じ.

上に貼ったホワイトボードの結果は,ペナルティ込みの結果です.

ちなみに東大は終始突っ走り.止まることは考えていなかったようです.
対してうちは1走目1秒ペナルティ,2走目ペナルティ無しでした.

あ,すいませんが今回は動画なしです.決勝大会迄おあずけってことで.


-------------------------------------------------------------------------

実はですね.大会まで何ヶ月かあったわけですが,意外とメンバーが時間取れないこともあって,実質2週間強で作り上げた機体です.

いやー,何が大変って,Freescaleのマイコン使ったことないもんで,設定をどうやってやるか分からず色々苦労してました.んでマニュアルもちょっと読みにくくて…(レイアウトとか翻訳ミスなどを除いても)

で,エンコーダ読めないとか割り込みできないとか結構直前まで切羽詰まってたんです.勝てないじゃね?ってぐらいに.


ついでにバラすと,速度制御は私がダウンしかけながら大会当日の早朝に動作確認しました.
更に,ゴール後3M以内で止まる必要があるかどうかのルールは,当日の状況を見てFreescale側が決めるとか言っていました.
が,結局当日配られたルールブックに「止まらない場合ばペナルティ」とか書いてあって,「おいマジかよなんかの間違いだろこれ」と思ってました.
その後開会式のルール説明で,「あぁ,なんか止まる流れだぞ」と私以外のメンバーが悟った時には既に私は停止プログラムをとりあえず作っていて(判断基準はエンコーダで)調整の時には動作確認….なんというやっつけプログラムだよ….

どちらも無事実現したおかげで2位になれたって感じです.どちらかでも出来てなかったら確実に3位だったところですよ.


とりあえず目指すべきは東大超えですが,かなり差を付けられています.
とはいえ,改善するべきところは色々見つかったので,負けないように開発するだけです.


お暇な方は是非決勝大会に観戦にどうぞ.
当日はFreescaleの展示会「FTF-Japan」も行なっていますよー.
まぁ,平日なんですけどね.事前登録制ですんでお気をつけて!


最後に一つ.
えー,決勝だけでなく,予選でもトロフィーと賞金を貰えるという話でしたが,トロフィーは別にいいんですが,

賞金の話はどこ行ったし!


あー,決勝で勝たないともらえないわけですか.


CIMG0459.JPG

posted by Tmk at 07:07 | Comment(0) | TrackBack(0) | MCR以外