2009年12月 5日 (土)

Engineer Award 2009 Beautoロボコングランプリ 最終話

エンジニアが集まるSNS「エンカフェ」
http://encafe.jp/

そのエンカフェが主催するEngineer Award 2009
http://www.engineeraward.jp/about/

ロボットコンテストや電子工作コンテストが開催されました。

ここではその中のロボットコンテスト「Beautoロボコングランプリ」に出場した話です。

 

最終話 ~奇跡・・~

2009年12月5日 全国大会当日です。

もうすべきことはやった(何もやってない)
覚悟を決めて、全国大会が開催される東京大会と同じエンカフェイベントスペース
に向かいます。

全国大会では各地方大会(大阪、福岡)で優勝したロボットと2位、3位のロボット
総勢8台のロボットのトーナメントで優勝を競います。

そして東京大会よりもかなりコースが複雑です。
結局、東京大会から何もいじれなかったのでとりあえず完走をできればいいかな
と思ってました。

さすがに全国大会どのロボットもいい走りをして、当然のようにゴールします。
(東京大会ではゴールできないロボットも多々居た。)

そんな中、私は準々決勝、準決勝と勝ち進むことができ、いよいよ優勝を決める決勝戦・・。

それまでのタイム的に1秒ほど負けていたマシンとのバトル!

初めから最大スピードのモードで戦っていたのでもう打つ手がありません。

試合開始1分前になって突然閃いて、プログラムを変更!

その結果・・・。

奇跡的に優勝!!
Victory

その様子がこちら↓

結果的には私のロボットは寸前のプログラム変更が効いて0.5秒ぐらいスピードアップし
相手はスピードを上げるために行った変更がスピードダウンになって3秒ほど遅くなって
しまったようです。

結局、ほとんど運で勝ったような勝負でしたが、優勝という結果がうれしかったです。

来年も開催されるようなので更なるスピードを求めて精進したいと思います。

全7話でEngineer Award 2009 Beautoロボコングランプリに出場した話を
紹介してきました。
じぇーけーそふとのブログ「じぇーけーそふとな話」では、これからも作ったものや
コンテストや大会などに出場した記録などを紹介していきたいと思います。

| | コメント (2) | トラックバック (0)

2009年11月28日 (土)

Engineer Award 2009 Beautoロボコングランプリ 第6話

エンジニアが集まるSNS「エンカフェ」
http://encafe.jp/

そのエンカフェが主催するEngineer Award 2009
http://www.engineeraward.jp/about/

ロボットコンテストや電子工作コンテストが開催されました。

ここではその中のロボットコンテスト「Beautoロボコングランプリ」に出場した話です。

 

第6話 ~全国大会に向けて~

全国大会に向けてさらにロボットを早くするため、いろいろ試行錯誤中です。

その中の一案でできた試作機がこれです。
Kassindcd04_2 ちょっと横幅が増えて不恰好になっていますが、それには秘密があります・・。










Kassindcd05 それがこれです。
裏に吸引パットをつけました。
理由は滑らなくすることです。
この試作機はギア比を下げて、スピードが上がっているため直角カーブなどはラインを検知してからブレーキをかけても滑って止まれないからです。















Kassindcd06 そしてさらに無線のコントローラーで操作できるようにして吸引の効き目を確かめました。
ん~いい感じ。

・・でも吸引のファンがうるさすぎる・・。
ロボットの調整はいつも子供が寝てる早朝に行っているため、これでは近所迷惑だ・・。






そんなこんなで、2ヶ月が経ち全国大会が直前に迫ってしまいました。
結局、仕事が忙しかったのとエンジニアアワード2009のもうひとつのコンテスト
である電子工作コンテストの作品を作ってて、こっちは手付かずになってしまいました。
試作機の調整も終わらず、ロボットは東京大会の時のままでいくことになりました。
優勝してるのだからこのままでいいはずだけど、他の地方の優勝ロボットの走り
を見ているとかなり自信がないです・・・。

次回へ続く・・・。

| | コメント (0) | トラックバック (0)

2009年9月26日 (土)

Engineer Award 2009 Beautoロボコングランプリ 番外編

エンジニアが集まるSNS「エンカフェ」
http://encafe.jp/

そのエンカフェが主催するEngineer Award 2009
http://www.engineeraward.jp/about/

ロボットコンテストや電子工作コンテストが開催されました。

ここではその中のロボットコンテスト「Beautoロボコングランプリ」に出場した話です。

番外編 ~KASSIN DCDスペック~

今回はKASSIN DCDで使用した、ライントレーサーロボットの目となるラインセンサー周りの回路とプログラムを紹介します。

Line_sence01
これが実際の回路図です。(回路図は1つのセンサー分で実際には5個あります。)

KASSIN DCDではラインセンサーの値を回路でデジタル化して黒いラインを検知していました。
センサー周りは5Vで動かして、NOTゲートIC(74VHC04)で3.3V化&デジタル化をしてます。
センサーの反応ぐあいはVR(半固定抵抗)で調整できるようになっています。
あとフォトリクレクタのLEDには若干多めに電流が流れるよう(発光量増やすため)をに抵抗R1を決めています。

センサーはマイコンのP50~53、P62につなげて、プログラムではセンサー値をビットに割り付けて読む込むように定数テーブルで変換してます。
(使ってるプログラムをそのまま載せてます。 ちなみにUBYTEはunsigned charです。)

const UBYTE hw_sence_chg[5][2] = /* センサー値変換テーブル */
{
#if 0 /* High Active */
    { 0 , 1  },    /* 0bit目 */
    { 0 , 2  },    /* 1bit目 */
    { 0 , 4  },    /* 2bit目 */
    { 0 , 8  },    /* 3bit目 */
    { 0 , 16 }    /* 4bit目 */
#else /* Low Active */
    { 1  , 0 },    /* 0bit目 */
    { 2  , 0 },    /* 1bit目 */
    { 4  , 0 },    /* 2bit目 */
    { 8  , 0 },    /* 3bit目 */
    { 16 , 0 }    /* 4bit目 */
#endif
};

UBYTE getLineSence(UBYTE masc_ub) //センサー状態読み込み
{
    UBYTE x=0;

    /* 各ポートより読込み */
    x  = hw_sence_chg[0][IO.PDR5.BIT.B0];
    x |= hw_sence_chg[1][IO.PDR5.BIT.B1];
    x |= hw_sence_chg[2][IO.PDR5.BIT.B2];
    x |= hw_sence_chg[3][IO.PDR5.BIT.B3];
    x |= hw_sence_chg[4][IO.PDR6.BIT.B2];

    /* 必要分だけマスク */
    x &= masc_ub;

    return x;
}

このあとセンサー値を数値化してモーターを制御するプログラムに入力してます。

読み込んだセンサー値をモーター制御値にするプログラムではPD制御っぽいことをやってます。
PD制御とは比例、微分制御の略です。
これに積分を足したPID制御というのは有名だと思うので詳しくはネットで調べてみてください。
私もこういう制御の知識には乏しいのでネットでいろいろ調べた結果、PD制御に至りました。

実際のプログラムでは15ms周期でセンサー値を読み込んでPD制御の計算をしてモーターを制御
してます。
プログラムの流れは下記の様になってます。

センサー値読み込み
   ↓
センサー値を合せたいセンサー値(つまり真中が反応してる状態)を0として±20の値にする。※1
   ↓
今のセンサー値と過去2回分のセンサー値からPD計算をする。※2
   ↓
PD計算結果を±40の値にする。
   ↓
±40の値を左右のモーター制御値(±127)にする。※3

という感じです。
(±20とか±40とかは感覚的に作った段階の数値でその範囲に制御的な意味はありません。)

※1の部分を例を挙げて説明しますと・・。

○:センサー反応無し
●:センサー反応有り(黒線検出)

としまして5個のセンサーを使っていたので
合せたいのは真中のみが反応している状態の下記になります。

○○●○○

このときの数値を0として、
たとえば一番外れてるとき

●○○○○

は20としてます。
その逆

○○○○●

は-20。

数値は左方向が+、右方向が-です。
実際の処理ではセンサーの値から定数テーブルで変換してます。
ビットのパターン的には32パターンしかありませんが、
外向きに向かって重みをつけてます。

※2の部分では下記の様な計算です。

X0:今のセンサーの値
X1:1回前のセンサーの値
X2:2回前のセンサーの値

P:比例定数
D:微分定数

PD計算結果= P×(X0-X2)+D×((X0-X1)-(X1-X2))

PD計算結果も左方向が+、右方向が-です。
実際の処理ではもうちょっと効率がいい計算式にして計算してます。
比例定数と微分定数は実際に走らせながら決めてます。
もっと論理的な決め方があるのでネットを参照下さい。

※3でも定数テーブルで変換してるだけです。

たとえば PD計算結果=40 ⇒ 左モーター:-40、右モーター:127

モーター制御値は±127で+方向が前、-方向が後です。
つまりこの場合は、左の方にずれているので左のモーターを逆転させて
センターに戻す方向に動きます。
ただ直角カーブや線を見失ったときはこれとは別な処理フェーズに
遷移するようになってます。

定数や定数テーブルの値は計算がめんどくさくなって、すべて非論理的
に決めてるので処理の流れだけ参考になればと思います。

| | コメント (0) | トラックバック (0)

2009年9月19日 (土)

Engineer Award 2009 Beautoロボコングランプリ 第5話

エンジニアが集まるSNS「エンカフェ」
http://encafe.jp/

そのエンカフェが主催するEngineer Award 2009
http://www.engineeraward.jp/about/

ロボットコンテストや電子工作コンテストが開催されました。

ここではその中のロボットコンテスト「Beautoロボコングランプリ」に出場した話です。

第5話 ~いよいよ東京大会~

いよいよ明日、東京大会!

結局、納得のいく調整はできませんでしたがプログラムはフィックス。
仕事が終わったらエージング&バッテリー充電&準備!。

トーナメント形式なので1回負けたら終わり。
完走&1回戦突破ぐらいは狙いたい!。

自分のロボットを走らせるのも楽しみですが、他の方のロボットを見るのが楽しみだ。

そして東京大会当日・・。
場所は高円寺にあるエンカフェのイベントスペース。
早めに着けば、トライアルコースで調整できるということなので、
ぴったり開場時間に到着!

参加者が8人になったということなので、トーナメントではなく総当りのリーグ戦
になったことを知らされ、これで1回で終わりという残念なことにはなりません。
しかしバッテリーが足りるかが心配。

そして早速、トライアルコースで試走・・・ぜんぜん走らない・・・。
コースアウトしまくり・・・。ヤヴァイ・・・。

大会が始まる時間まであと1時間程度・・・。必死で対策を考えます。
あっ!と思いついたのはバッテリー・・。
そういえば試走用のバッテリーのまま、しばらく交換してなかった!!
大慌てでバッテリーを交換し、トライアルコースを走らせたら普通に走った・・。
原因はバッテリーの電圧低下でセンサーが線をまともに捕らえてませんでした・・・。

そんなこんなでドタバタ(自分だけ)で始まった大会。
ドキドキしながら自分の出番を待ち、いよいよ初戦!
私のロボット名はKASSIN DCDです。↓

初戦はみごとに勝利!
そして・・総当りのリーグ戦
順調に勝ち星を取っていきます。
そしたらなんと優勝してしまいました。!!!
よし次は全国大会だ~!!

東京大会の様子はRobotWatchの記事になっています。
詳しくはそちらでどうぞ(自分で書けよ・・)

エンジニアアワード2009「ヴイストン Beautoロボコングランプリ東京大会」レポート

全国大会に進むことができたので次回へ続く・・。

| | コメント (0) | トラックバック (0)

2009年9月 5日 (土)

Engineer Award 2009 Beautoロボコングランプリ 第4話

エンジニアが集まるSNS「エンカフェ」
http://encafe.jp/

そのエンカフェが主催するEngineer Award 2009
http://www.engineeraward.jp/about/

ロボットコンテストや電子工作コンテストが開催されました。

ここではその中のロボットコンテスト「Beautoロボコングランプリ」に出場した話です。

第4話 ~故障~

目標は最大のスピードでコースアウト無く走らせることということで
まず前回(3話)での最大スピードのコースアウト理由を分析しながら
プログラムの改良を加えていきます。

しかし、どうしても直角カーブや線がクロスするところでコースアウトしてしまうので
それを正確に検出するためにラインセンサーを加えました。

Kassindcd02 前回の写真 を見ていただくとわかるとおもいますが、前の両サイドにセンサーを追加してます。

いい感じに直角カーブ、クロスラインを検出して走ってくれます。
ただ、まだ最大スピードにするとコースアウトすることがあるので、
ひたすらプログラム調整。

そんな中、2009年8月29日に最初の予選である大阪大会が開催されました。
この大会はインターネットとのコラボレーションも特徴であり、ロボット送って
大会当日にその場所に居なくても参加が可能で、大会の状況もUSTERAM
で見ることができます。

ロボットを送って、ためしに大阪大会に出場することも検討しましたが、
ロボットが完成状態に無いのであきらめました。

大会の状況をつかむため、USTREAMの中継を見ながら、やるぞ~っと
燃えながらロボットの調整をしていましたが、突然動かなくなりました・・。
最初はプログラムミスかなと思いましたが、どうやらCPUボードに付いてる
モータードライバが逝ってしまったようです。

大会を見ながらノリにノって居たのでショックが大きかったです。
出場予定の東京大会まで2週間なので凹んでもいられず。
解決案をいくつか考えました。

1.予備のCPUボードに取り替える。
2.違うモータードライバICを別に付ける。
3.前に作った、モータードライバ↓を付ける。
Motor_drive01

とりあえず案を考えて、検討します。
1は一番手っ取り早いですが同じことになる可能性がある。
2はちょっとスペックが上のを使えばいい感じかも。
3は定格的にはオーバースペックで、ゴテゴテしくなる。

最終的には2番を選んで、即、電子パーツ屋さんに走りました。

選んだのは東芝のTA8440HというモータードライバICで耐電流的にも
CPUボードのモータードライブより上です。
ただドライブの為の入力が5V以上なので3.3Vで動いてるCPUの
出力では直接つなげられません。
なのでフォトカプラを間に入れて回路を組みました。

そんなこんなでロボットはこうなりました。
Kassindcd03_2 ちょっとゴテゴテしくなりましたが、割とコンパクトにまとめられたと思います。

モータードライバを変えることによってモーターの応答性も上がったので
結果的に走りはよくなりました。
CPUボードのモータードライバは正転と逆転を切り替える際にデットタイム
というモーターに流す電流をOFFにする時間が自動で入るようになってます。
これはモータードライバの素子を保護するためには必要なのですが、
安全マージンも考慮されていて時間の調整もできないので、応答性の
低下につながっていた様です。

TA8440Hは単純なモータードライバなのでその様な機能は入ってません。
その辺、プログラムで調整可能なのでベストな値で動かすことができます。
逆に言うとモータードライバの素子を壊してしまうリスクもあるわけですが・・。

その走りは↓こうなりました。

まだ直角カーブがいまいちです。

東京大会まで1週間を切って、広いコースで走らせたくなりました。
いままでは自分の部屋の床を使っていたのですが、大会のコース
と比べると小さいので、本番と同じぐらいのコースで試さないと
納得がいかない・・。

ということでダイニングルームの床にコースを作成。
床にビニールテープを貼れば簡単にコースが作れるのもこの大会
のいいところです。

さらにプログラム調整をして大会直前の走りがこんな感じです。

そして、いよいよ大会当日です。
次回へ続く・・。

| | コメント (0) | トラックバック (0)

2009年8月29日 (土)

Engineer Award 2009 Beautoロボコングランプリ 第3話

エンジニアが集まるSNS「エンカフェ」
http://encafe.jp/

そのエンカフェが主催するEngineer Award 2009
http://www.engineeraward.jp/about/

ロボットコンテストや電子工作コンテストが開催されました。

ここではその中のロボットコンテスト「Beautoロボコングランプリ」に出場した話です。

第2話 ~プログラム調整中!~

1から作ったロボットがある程度形(2話参照)になって、プログラムを調整~。
回路のミスもあり、いろいろ手間どりましたが、センサーの読み込みとモーターの制御ができるように!
ここまでくれば後は以前作ったプログラムモジュールを移植、パラメータ調整、とりあえず走った♪

2009年8月22日に再び勉強会が開催されるというので、トライアルコースで試走もできるということもあり今回も参加。
今回は参加者も多く、勉強会!って感じです。
走れる状態のロボットを持ってきたのは私ともう1人でコースは使い放題でした。
若干のプログラム調整をしながら走らせて確認。
最大スピードにするとコースアウトします。

↓なんとか走るスピード

↓最大スピード

黒い線がクロスしているところはまっすぐ行くのが正解です。

そんなこんなでまだまだ調整が必要そうです。
次回へ続く・・。

| | コメント (0) | トラックバック (0)

2009年8月22日 (土)

Engineer Award 2009 Beautoロボコングランプリ 第2話

エンジニアが集まるSNS「エンカフェ」
http://encafe.jp/

そのエンカフェが主催するEngineer Award 2009
http://www.engineeraward.jp/about/

ロボットコンテストや電子工作コンテストが開催されました。

ここではその中のロボットコンテスト「Beautoロボコングランプリ」に出場した話です。

 

第2話 ~作り直し~

標準ロボットキット改造版(1話参照)を調整していくうちに、やっぱり一から作り直し
たくなり、気付いたら図面を書いてました。
昔を思い出して、CADの使い方をおさらいしなんとか書けた図面。

Cad ロボコンではマイコンボードとモーターのみが指定されているので、大きさが直径220mmの円に入ればOKだったので、いろいろ形が浮かんできます。

やっぱり完成図を頭の中で思いつつ、あれやこれやと考えるのは楽しいです。

Body01






そして、図面を元に家にあった5mmのABS板でシャーシを作りました。

Body02








指定のCPUボードと指定のモーターを使用したギアボックスを配置。

ん~いいかんじです。♪






さて次はバッテリーをどうするかです。
最近、ロボット向けでは流行のLi-ionを検討しましたが、妻子持ち29歳お小遣い制の私
にはLi-ionと専用充電器を買うほどお金の余裕がありません。

Battery01

しかしある日100円ショップで1本100円のニッケル水素充電電池に出会ってしまいました。
ここは性能を気にせずコストパフォーマンスでいきましょう。
単3型もありましたが、単4型のニッケル水素 750mAhを5本組みでロボット用にすることにしました。

Battery02

端子をヤスって半田を乗せて、電池をつなげていきます。写真だとわかりにくいと思いますが、接続には半田吸い取り線を使ってます。もちろん半田ののりは最高なのと銅のあみ線なので電流の通りもいいと思います。 電池の半田付けのポイントは60~90ワットの半田ごてで素早くやることですね。

Battery03_2

 

完成!

Kassindcd01_2

センサー周りを作って、とりあえずハードはほぼ完成。。

Line_sence01

ラインセンサーはロームのRPR-220を5個使用してます。センサーの電源を5Vにして、ロジックICで3.3Vにしてからマイコンに入力してます。

このままでは、何もおきないので次はソフトの作成です。

次回へ続く・・・。

| | コメント (0) | トラックバック (0)

2009年8月15日 (土)

Engineer Award 2009 Beautoロボコングランプリ 第1話

エンジニアが集まるSNS「エンカフェ」
http://encafe.jp/

そのエンカフェが主催するEngineer Award 2009
http://www.engineeraward.jp/about/

ロボットコンテストや電子工作コンテストが開催されました。

ここではその中のロボットコンテスト「Beautoロボコングランプリ」に出場した話です。

第1話 ~ひさびさのロボコン~

私は高校、大学とロボット作りにハマってさまざまなロボット大会に出場してましたが、
工作機械が使えなくなったのと暇な時間がなくなったこともあり社会人になってからは
さっぱりでした。

そんときエンカフェのロボコン開催の記事を見て、これだ!と即、エントリー。
その場でロボコンの標準ロボットキットであるVSTONE社製「BeautoChaser 」が
家にあったので早速改造!

その結果がこれ↓

Beautochaser01 標準のBeatoChaserそのままではライントレーサーにならないので秋月電子通商で買ったセンサーを取り付けました。
センサーは5V動作なので5Vトレラント入力対応のロジックICをかませてマイコンボードへ。5Vも単三充電池を考慮して4.5V入力まで5V出力してくれるDC-DCコンバータを使いました。

 

プログラムはPID制御で適当に作ったらとりあえず線を辿って進んでくれました。
直角カーブや急なカーブはだめなのでいろいろカスタムが必要です。

Beautochaser02 確認用のLEDに高輝度の青LEDを使用したので見にくかった・・。w










そして・・。
2009年8月2日にBeatoChaserを題材としたロボコン向け勉強会があるというので
行って来ました。ロボコンの楽しみは人との出会いもあります。
ほかの出場者と話せると思って、参加した勉強会。

ちょっと早めに会場に到着し、すでに4名の方が居ました。
と思いきや全員スタッフ。結局、参加者は私一人でした。
しかも教えてくださる先生はBeatoChaserの仕組みをあまりわかってない様子・・。
私の方が詳しかったので逆転してました。w
まぁ結果的にスタッフの方とも仲良くなり、それはそれで楽しめました。

この後は・・・。 次回に続く・・。

| | コメント (0) | トラックバック (0)