Monthly Archives: January 2018

DCマウス研修[13] 基板設計(4)

こんにちは、nomuraです。
今回はいよいよパターンを引きます。

続きを読む ›

Posted in DCマウス研修


Pi:Co初心者研修-迷路を走らせる-

こんにちは。この記事で3回目のDTP班のBuchikoだよ!

相変わらず研修っぽいことをしていないのは仕方がないんだ。そんなタイミングで順番がくるんだ。

そして今回のBuchikoは撮影班というやっぱり研修っぽいことしていません!(それでも少しはしてるんだホントだよ)

とまぁこんな調子の記事ですが、皆様が楽しんでくれるのなら本望です。

 

さてさて今日の僕は撮影班。色んな角度からカッコイイ写真を撮るのが仕事だよ!
(今回の記事に写真が多いのはカメラでずっと写真を撮っていたせいです)

テーマは【Pi:Coと迷路と研修と】

できれば何人かの作業風景が撮れればいいな!(本日、僕と講師含めて3名だったので断念)

いそいそと良さげな角度を考えてパシャリ☆

・・・・・・迷路が遠すぎてよくわからない
(お見せしている画像は1枚だけど、実際は1角度2枚ずつ撮ってます)


近づけてみました!
(これもまた角度を少しづつ変えて2枚ずつ)

迷路走行してる写真も、もしかしたら使うかもとパシャパシャ連写


まぁ途中で壁にぶつかりましたよね・・・。
(今日の分の調整してないせいです。皆は毎回最初に調整しよう!じゃないと簡単にPi:Coが交通事故を起こしちゃうよ!)

ではこの交通事故。何が原因かというとタイヤの回転が不十分で起こる現象でした。
(自動運転でも起こりそうだ。怖いね)

これはトレッド幅の値を変更する必要があります。
でもどれだけ変えればいいのか、ぱっとはわからなかったので少しずつ変更してみたよ!
最初は+-3、その次が+-1、それでも壁にぶつかるので小数点第一位まで変更して、でもまだ壁に接触するから、すわ小数点第二位まで変更突入か?!
と思っていたら計算式教わりました。総当たり戦は無駄が多いよ。

その時のホワイトボードがこちら!(ばばーん)

数学をとことん苦手としてなければ大体わかるんじゃないかな(その前に画像が小さすぎてわからない人はクリック別窓で拡大画像が出るよ)
真ん中へんの毛玉みたいな絵はタイヤのステップ数の説明だよ!
右下の二つの図はUターンコーナーの説明だね!

こんなかんじで初心者研修は疑問に思った所や時間がかかってる所をわかりやすく教えてもらえるんだ。

というわけで再度数値を修正して、始動!

おぉ~順調順調(なお撮影の為、かなり遅く走らせています)

「あっ」 ガッ!

「ああぁ~っ」ガガッ!

見事に袋小路で躓きました~
Pi:Co難しいね!

続きを読む ›

Posted in Pi:Co Classic3 製作記


DCマウス研修[12] 基板設計(3)

こんにちは、nomuraです。
今回はいよいよパターンを引き回す…

準備です!

続きを読む ›

Posted in DCマウス研修


DCマウス研修[11] 基板設計(2)

こんにちは、nomuraです。
ひと月以上間があいてしまいました。年末は国際ロボット展への出展や、SI2017で発表した新製品のアームロボット開発に夢中でマウスが疎かになっていました。。。
2018年の大会参加を目指しているので、気持ちを新たに頑張ります。

続きを読む ›

Posted in DCマウス研修


マイクロマウス研修 割り込みの構成

マイクロマウス研修、今週のレポート担当の江川です。

前回のレポートからだいぶ間があいてしまいましたが、現在はようやく迷路を走らせる段階まで来ています。

さて、今回はそれまで習った中で、「割り込み」がプログラミングの要となっていながら、少々分かりにくいので、これについてまとめてみたいと思います。

Pi:Co Clasicのサンプルプログラムでは、次の5つのタイマーを使っています。

  • CMT0 (コンペアマッチタイマ0) 走行制御 1ms毎の割り込みを発生
  • CMT1 (コンペアマッチタイマ1) センサ制御 1/4ms毎に
  • MTU0 (マルチファンクションタイマパルスユニット2 ) ブザー音
  • MTU3 (マルチファンクションタイマパルスユニット3 ) ステッピングモーター 右
  • MTU4 (マルチファンクションタイマパルスユニット3 ) ステッピングモーター 右

ここでブザー音用MTU0以外には割り込みが設定されており、走行に密接にかかわっています。

マイコンの直接の割り込みはIDEが用意したintprg.cに書かれた関数群に飛んできますが、さらにそこからinterrupt.cに飛んでその中に実際に処理するルーチンを書くようにしているようです。

interrupt.cには、以下のの4つの割り込みルーチンがあります。

  • void int_cmt0(void) 1ms毎に呼び出され、バッテリー監視、加速処理、センサ制御など走行の細かい制御をします。
  • void int_cmt1(void) 1/4ms毎に呼び出され、4つのセンサを各回1つずつ制御し、sen_l,sen_r,sen_fl,sen_frに記録します。
  • void int_mot_r(void) 右モータが1ステップ進む毎に呼び出され、step_rをカウントアップします。
  • void int_mot_l(void) 左モータが1ステップ進む毎に呼び出され、step_rをカウントアップします。

これらと、run.cの走行メインルーチンが協調して実際の走行を行っています。

続きを読む ›

Posted in 研修