noanoa 日々の日記

micro:bit、Scratch、Minecraft @小学生向けプログラミング教室(三鷹)

ETロボコン2009

[ETロボコン] 本「初めてのロボコン―WRO公式ガイドブック」

ETロボコンとは兄弟イベントの WRO の公式ガイドブックが出ました

WRO は LEGO Mindstorms NXT というET ロボコンと同じ素材を使った、高校生以下の学生向けのロボコンです。

こちらはハードの組み立ても含めた競技なのが、ハードは共通の ET ロボコンとは違います。

WRO は、すでに世界的なイベントで、日本大会で優勝すると世界大会に出場できるのが羨ましい

どちらも、大会の運営はボランティアベースで、メンバーもかなり重なっているようです。

WRO ロボコン → ET ロボコン という参加者の流れができるといいですね。


初めてのロボコン―WRO(ワールド・ロボット・オリンピアード)公式ガイドブック (日経BPムック)
初めてのロボコン―WRO(ワールド・ロボット・オリンピアード)公式ガイドブック (日経BPムック)
著者:NPO法人WRO Japan/WRO J
販売元:日経BP社
発売日:2009-08
クチコミを見る

[ETロボコン] 反省会

地区大会が終わったので、今回の自分の ETロボコンを振り返ってみました。(ちなみに、自分の参加した日の大会の印象ですが。)

・意外に完走率が低かった。
NXT は今年が初めて、というのもあったのでしょうが、リタイア続出でした。もちろん、果敢に難所に挑んでリタイア というのも多かったけど、スタート直後や、コース走行早々にコースアウトするのが、続出!
完走率2割(?) って、声が聞こえたような...

実際何割かは、まだ詳しい結果が発表になってないので、分かりませんが、(なにしろ自分のコースタイム、順位すら分からない)半分以下だった印象が...

ということは、ウチの堅く完走狙いっていうのもそんなに悪くなかったかも?

ただし、それだけじゃあ、優勝できないのは、事実。
特に、初年度だから、っていうのもあったんで、来年以降はハイレベルな戦いになるのでしょう。


・PID制御は必須
NXT の半数以上のチームは、PID制御(PD制御)をしていた感じ。
かくいう、ウチもそうだし
実際、そんなに難しいプログラムではありません。
ただ、パラメータを決めるのは、大変。
これって、ワークショップでも質疑があったけど、どうやらみんな試行錯誤で決めてたみたい(ウチもです)。


・ドルフィンジャンプは封印?
参加した地区大会だけかもしれないけど、当日のコースはドルフィンジャンプするルート上には、スポンサー広告板がずらりと。

できるもんならやってみろ!っていう主催者の意志を感じました。
少なくともドルフィンジャンプは、当日コースを見て、できそうならやる、くらいのノリじゃないと、準備が無駄になるかも。


・それにつけてもキャリブレーション
やっぱライントレースの基本の、白と黒、あと灰色の数値をいかに的確に決めるかが、完走に大きく影響していました。

ふつう、何点か白、黒の数値を読み込ませて、自動で計算させてるみたい、だったけど、結構うまく設定できなかったみたい。

で、ウチは?
2回とも完走したんで、恥ずかしながら公表しますが、手動ですよ

それも、なんの工夫もしてないで、白、黒、灰色の数値を何ヶ所かで目で読んで、ノートに書き付けて、人間が数値を決める。で、その数値を入れ直してコンパイルして、プログラムを転送し直す。

...って、普通はしないよね

でも、結果的には、人間の判断が入った方が的確な数値になったみたい。
一応、1回目と2回目の試走でずれた数値を考慮して(日光の影響?)、本番の数値を入れ直したから。

だから、本番直前はキャリブレーションなし!
急に、日が射してきたらアウトだけどね...


・ゴール後停止しないのはもったいない
結構、ゴール後停止しないチームがいました。
なんかもったいないなと。タイマーか、走行距離ででも停止できるのに...

まぁ、難所に挑戦して走行距離、走行タイムが変わることを考慮すると、ゴール前に停止してリタイアという結果よりは、っていうところですよね。ある意味、ウチから比べると羨ましい悩みです


・倒立制御はまだまだ調整の余地あり
ワークショップでの講演で、倒立制御のパラメータを変えるだけで、スピードが60%アップ可能とのこと!

今年は、このパラメータをいじったチームほとんどなかったけど、来年は重要ポイントになりそう。

この倒立制御。ライブラリになってて、中身を検討しないで使っちゃえるんだけど、パラメータいじるだけでもいろいろ調節できそう。
例えば、高速走行時は倒立よりやや前傾に、とかってできるんでしょうかね?
ジャイロオフセット値を動的に変えてたチームがいたらしいんですけど、どうだったんでしょうか?

ジャイロセンサーが読み出すのは角度じゃなくて、角速度なんで、NXT の傾きを算出するのはむずかしい、っていう話しでしたが。


・まだまだ新しいアイデアが
NXT にはまだまだ新しいアイデアが出てきそうです。

今年出てきたのでは、モータの回転角から現在位置を計算する、LEDランプを点滅させて外光の影響を少なくする、などなど。

来年も斬新なアイデアが出てくるでしょう。

特に、LEDランプを点滅させる方式は評価が高かったようです。


・実物大コースを持ってると絶対有利
もし、置ける場所があればですが、紙で印刷したのでも、実物大コースがあったら絶対いいよね


・来年のトレンドはマルチタスク?
これはワークショップで言われたことですけど、まだ今年は少数派でした。
光センサの読取りと、走行制御で分ける、さらにタスクが多くなったら...そうなりますよね。


・OS は多彩になるか?
今回、公式OS ではない、μITRON を使いました。使いこなせたとは、全然言えませんが、来年以降、公式OS 以外の採用チームは増えるでしょうか?

必ずしも優位性は発揮できないかもしれなくても、普段使い慣れている OS だと開発がやりやすい、っていうのも優位点かな?

せっかく動くんなら、いつもの OS で、あるいは、お気に入りの OS で開発する。っていう、心意気でもいいかも。


・本番には、やっぱり魔物が棲んでいる
モデルもすごいし、しっかり難所もクリアできるはずのチームも、リタイアしてました。
やっぱ、物事ってやってみないとわからないですよね 

[ETロボコン] 夏は終わった

20090905124748

地区大会、終わりましたぁ〜

結果は、予想通り予選敗退

しかし、IN コース、OUT コースとも完走 という、当初の目標はクリアしました

これで、ロボコンの夏は終わりです。


でも、参加してホントよかったです。
とくに、大会の緊張感っていうのは、参加した人でないと味わえないです。
「スタートのボタンを押す手が震える」って言うのを聞いてたけど、まさにその通りでしたよ。 

再レースになったときは、一瞬 NXT が反応しなくて、ボタン押し損なってかと思いました

NXT でいきなりコースアウトしちゃったチームのいくらかは、そういうことも関係してたでしょうね。

とにかく、全国大会へ進出されたチームはおめでとうございます
これからも頑張って下さい

[ETロボコン] マインドマップ使ってみた

技術教育の講習会や、去年の参加チームのモデリング資料でやたら出てきたマインドマップ。

UML を使う前段階やアイデアをまとめるのに使えそうでした。


で、せっかくならとマインドマップも使ってみました。

ほんとは手書きが基本らしいけど、モデル提出にも使うんで、まずソフト探し。
(正式にはマインドマップ公認じゃないから、マインドマップ風に作れるソフトね
 
JUDE でもマインドマップ使えるんだけど、フリーだと描けないんで、JUDE/Professional か JUDE/Think! を買わなきゃいけない

JUDE/Think! は Mac 正式対応だし、3150円と比較的安価だけど...
javaアプリだし、Mac ネイティブなフリーを探索。
(提出期限が近いのに

条件は、例によって;
・Mac で動く(できればネイティブアプリ)
・フリー 

すると見つかったのは;
MindNode(Macネイティブ、日本語HP)
Xmind(java、Eclipse プラグイン版もあり)
FreeMind(java、日本語版活用ページあり)

さんざん悩んだけど、一番シンプルな MindNode をにしてみました

使い方は超簡単!
簡単に使うには、キレイだし充分
(使いこなすなら、Xmind も...)

これで、作ったマインドマップを貼り付けて、モデルの提出にも活用しましたよ
 

[ETロボコン] UML 学習記

ETロボコン2009もいよいよ地区大会が迫ってきました

といって、試走会でパラメータも決めたんで、いまさらプログラム変える予定もありません
本番用のプログラム(Bluetooth を無くした)を準備するだけでしょうか。

あとは、地区大会を完走を目指すだけ!

で、一番苦しかった、モデル審査の提出についての備忘録です

やっぱ、最大の難関は UML
これを使わなきゃいけないんで、いろいろ勉強しました。
まぁ、UML ?? てな状態からなんで、未だによく分かってませんが...


ま、いろいろ本にも投資しました

基礎からはじめるUML2.1基礎からはじめるUML2.1
著者:株式会社テクノロジックアート
販売元:ソーテック社
発売日:2008-06-14
クチコミを見る

ほんと、基礎からっていうんで、これ読みました。
分かりやすかったです。ただ、実際にクラス図なんかを描く時には、ちょっと説明が簡単過ぎだったかも。



UMLワークブック (オブジェクトテクノロジーワークブックシリーズ)UMLワークブック (オブジェクトテクノロジーワークブックシリーズ)
著者:山田 健志
販売元:翔泳社
発売日:2003-03
おすすめ度:4.0
クチコミを見る

ワークブックで演習問題を実際に解いていきました。
UML の図に少し慣れたかも?



JUDEで学ぶシステムデザイン (oop Foundations)JUDEで学ぶシステムデザイン (oop Foundations)
著者:細谷 泰夫
販売元:翔泳社
発売日:2008-11-06
おすすめ度:3.0
クチコミを見る

UML を描くモデリングツールが JUDE。Mac のフリー版を使いました。使い方のマニュアルかと思って買ったら、全然マニュアルじゃありませんでした
でも、後半に出てくるモデリング例が、ETロボコンそのもの!(ただし、RCX だったけど。)その意味で、お世話になりました。



ロボットレースによる 組込み技術者養成講座ロボットレースによる 組込み技術者養成講座
著者:ETロボコン実行委員会
販売元:毎日コミュニケーションズ
発売日:2008-08-26
おすすめ度:4.0
クチコミを見る

本家の教本です!これも、モデリングの所、あわてて読んでずいぶん参考にしました。(でも、RCX. . .)



そして、ETロボコン2009 の技術教育1と2 の資料 
一番よく見たかも。 講義のときはサッパリだったけど、後から読むとよく出来てます。さすが〜



最後に、去年の優秀チームのモデリング資料
すばらしい出来に、少しでも近づけようと....
せめてデザインだけでもきれいに...ってオイ


いろいろ、講習会、資料がもらえるっていう点でも、参加はお得ですよ

[ETロボコン] 試走会2 終了

試走会2 に行ってきました

本番まで2週間ということで、いまさら新しいこともできず、ひたすらパラメータの調整に費やしたのでした。

後半は、本番と同じ計測方法で模擬レースも行いました。

ドルフィンジャンプ、点線ショートカット、トレジャーハントに華麗に成功するチームもあり、レベルの高さを感じました。ツインループはどうだったなぁ?1週2分以内という時間制限に引っかかってしまったチームもありました。

まぁ、ウチは出来ることをやるだけですね 

しかし、実物大コースが欲しいなぁ 
配られたミニコースとは、走行条件が大分違うので、細かい調整や難所チャレンジだと役立たないことが多いんで。
 

[ETロボコン] A3の紙に印刷するには

急遽、モデル審査の提出物を印刷しなければならなくなって、ひとつ問題が...

ウチのプリンタ、A4までしか印刷できません 
で、提出物はA3サイズ。

困った... 


で、困ったときはちかくのコンビニ 
いまどきのコンビニのコピー機は、メモリに入ったデータもプリントしてくれるのでした 

ちなみに、ローソンのコピー機は、USBメモリも挿せて、A3用紙にカラー印刷OK (データは、PDF か JPEG)

だだ し、一枚カラーだと80円
6枚セットを指定セット分プリントすると....結構な金額
い、いたい

さらに、A3の紙を送る封筒、ダブルクリップ、折れ曲がらないようにする厚紙。....郵送するとなると、いろいろかかりますね

ま、ここまで来たらやるしかないです

[ETロボコン] モデル審査の提出、迫ってきました

そろそろ、ETロボコンのモデル審査の提出です。

おかげで、今年のお盆休みすべてつぶれてしまいました 


なんとか、目処が立ったところで、重大なお知らせが届きました

提出物は、電子データをアップロードするとともに、印刷したものも郵送で送るとのこと

てっきり、どちらか一方でいいのかと思っていました

、危ない危ない
あやうく、電子データだけ提出するとこでした

気をつけなきゃ。

[ETロボコン] JUDE/Community 5.5 for Mac 非公式リリース をインストール

ETロボコン では、分析・設計モデリングも提出しなくてはいけません。

で、改めて登録情報を見ると;
モデリング言語 :UML
モデリングツール:JUDE

となっていた。 (って自分の登録情報を今頃確認...

UML は技術講習会でさんざん講義受けたけど、
さて、JUDE とは、なんでしょう?

とあわてて調べると、UML をきれいに書くソフトらしい
(まさか、手書きじゃ提出できないしね) 

で、その JUDE です。 
JUDE/Community というのがフリー版とのこと。
ただし、Windows 用 
(Java だから Mac でも動くだろうが。)

できれば、Mac 用はないかと探してみたら...
なんと

Mac OS X用 JUDE Pro/Com 5.5の非公式リリース」 

というのを、開発者ブログ に発見
バージョンも最新版です。

さっそく、インストール。
これで、Mac で普通にアイコンをダブルクリックで起動するアプリとして使えます

使い方は...

こんなの注文しました

JUDEで学ぶシステムデザイン (oop Foundations)JUDEで学ぶシステムデザイン
(oop Foundations)

著者:細谷 泰夫
販売元:翔泳社
発売日:2008-11-06
おすすめ度:3.0
クチコミを見る


(2009.8.27 追記)
上記の本は使い方のマニュアル、じゃあなかったです
ただ、モデリング例として、ETロボコンそのもの(ただし、RCX)が出てくるので、参考になります。

使い方のマニュアル、チュートリアルはオンラインの
JUDEで体感 UML設計ツール」で充分でした


[ETロボコン] 試走会1 に行ってきました

20090726113428


あっと言う間に試走会1 です。

とりあえず、出来たとこまでのプログラムで臨みます 

まず、いきなり Bluetooth が接続できない というトラブルに見舞われて、データのログが取れないじゃん、と焦りました。

が、いつまでやっていてもキリがないので、Bluetooth はあきらめて実際に走らせる事に。

まず、白と黒のライトセンサーの値をコースあちこちで測定するも、ほとんど同じで安定した会場でした。それはそれで、助かるんですが、本番の大会会場が別なのがちょっと心配。

今の段階で出来ているのは、左エッジトレース&ゴール後停止と右エッジトレース&ゴール後停止。

要するに最低限です 

なぜなら、外回りコースを左エッジ、内回りコースを右エッジトレースすると、難所はすべてパスしてでも一周できるからです。

で、結果は...
あっさり一周しました 
案外、PD 制御が効いてるみたい。安定して走るじゃん。

ただし、唯一の難所というか、坂道の入り口の灰色マーカーで大きく振れて、コースアウトする事も....

灰色マーカーになったと同時に坂道の段差もあるので、ライトセンサーの値がぶれてるみたいです。今回は、段差の所の灰色マーカーの値を測って、調整することで、なんとかクリアさせたけど、NXT が振れるのは振れます。

このままにするか、なにか対処するかなぁ 

あと、一番簡単そうなボーナスポイント狙いのゴール後停止。
突貫なんで、ただのタイマー式です...
でも、意外に NXT の走行って安定してるんで、それでも一応止まってはくれました 
が、それ以上工夫するかどうか、が考えどころ。

PC を再起動させることで、Bluetooth も接続でき、(パスコードも変えてみた)、ログも取る事ができるようになりました
って、それだけの事だったのか
(機器検索すると、Bluetooth の電波、会場中飛びまくってました。
全チーム使ってるから当たり前ですが。)

また、当初はなぜか右エッジトレースに切り替わらなかったプログラムも、そのとき同時に、変更をsave してないことに気づくというおまけまであって
ほんと、実際に会場へ行くと、何が起こるか分かりません

で、当初の目標はなんとかクリアできたので、試しにスピードアップにチャレンジ。
今んとこ forward = 70 で外回り90秒。
ここで、エイヤッと forward  = 100 と最大値にしたら...

直線はいいけど、やっぱカーブでコースアウト 

で、地道に forward = 80 に上げても、やっぱり同じカーブで毎回コースアウト。どうやら、ラインの外側に外れたときの復帰が間に合っていない様子。

時間も迫ってきたので、とりあえず D 制御のパラメータを上げたりしても、変わらず。
これで最後!と思って P 制御のパラメータを上げたら、なんとか一周してくれました 
これで、タイムの短縮は数秒...

まだまだ、PD 制御は改善の余地がありそう...

後は、直線は全速で、カーブは減速してとか、ですよね、普通考えると。

そもそも、難所にチャレンジするかどうかという、戦略もあるんで。

(同じ回のチームさん達も、難所にチャレンジしてなかったような...
でも、難所をクリアしたチームもあるようです。)

う〜ん、時間が... 

次に迫ってるのは、モデル提出なんで、そっちに力注がねば 
 

[ETロボコン] PD制御

NXT 走行体は二輪倒立振子になってるので、ステアリングというのがありません。

で、ライントレースはどうしてもガタガタしがち。
やっぱ、比例微分制御(PD 制御)を入れないとうまくないようです。

で、すっごく安直に  PD 制御を入れたみました

(こちらのページなどを参考に → 「風兎の種明かし4. PD制御」)

結果は、おっ スムースになったじゃん

パラメータは超テキトーなんで、まだまだですが、
安定走行してくれる分、forward の値を上げて、スピードアップ 

でも、70 くらいまでかな? ちなみにこれでミニコース1周 15秒くらい。
ここで、壁に当たってます。

カーブでトレースが追いつかなくなってるし、そんなにスピードも設定より上がらない。灰色マーカーで、コースアウトすることも。

さて 


(これも ↓ ちゃんと読まないとね...

シミュレーションで学ぶ自動制御技術入門―PID制御/ディジタル制御技術を基礎から学ぶ (計測・制御シリーズ)
シミュレーションで学ぶ自動制御技術入門
―PID制御/ディジタル制御技術を基礎から学ぶ


 

[ETロボコン] 本あれこれ

ロボコン関連で読んだ本あれこれ;

ロボットレースによる 組込み技術者養成講座ロボットレースによる 組込み技術者養成講座
著者:ETロボコン実行委員会
販売元:毎日コミュニケーションズ
発売日:2008-08-26
おすすめ度:4.0
クチコミを見る

教典!


新C言語入門 ビギナー編 (C言語実用マスターシリーズ)新C言語入門 ビギナー編 (C言語実用マスターシリーズ)
著者:林 晴比古
販売元:ソフトバンククリエイティブ
発売日:2003-12
おすすめ度:4.0
クチコミを見る

Cの入門。


新C++言語入門 ビギナー編 (C++言語実用マスターシリーズ)新C++言語入門 ビギナー編 (C++言語実用マスターシリーズ)
著者:林 晴比古
販売元:ソフトバンククリエイティブ
発売日:2001-03
おすすめ度:3.0
クチコミを見る
 
C++の入門。
ただし、クラスとかの使い方は、シニア編へどうぞ、だった。

C++入門
ネットで読める。クラスやオブジェクト指向などが最初から説明される。
こういうことが知りたかった。


基礎からはじめるUML2.1基礎からはじめるUML2.1
著者:株式会社テクノロジックアート
販売元:ソーテック社
発売日:2008-06-14
クチコミを見る
 
これ読んで、技術教育1、2 はこういうことだったんだと、少しつかめるように。


μITRON準拠TOPPERSの実践活用―製品開発にも学習教材にも使えるフリーのOSプラットホーム (TECH I Embedded Software)μITRON準拠TOPPERSの実践活用―製品開発にも学習教材にも使えるフリーのOSプラットホーム (TECH I Embedded Software)
販売元:CQ出版
発売日:2007-03
おすすめ度:5.0
クチコミを見る
 
これみて、μITRON の書き方が、少し分かった。
C でも main が無くていいんだね
さすが、組込み 


シミュレーションで学ぶ自動制御技術入門―PID制御/ディジタル制御技術を基礎から学ぶ (計測・制御シリーズ)シミュレーションで学ぶ自動制御技術入門―PID制御/ディジタル制御技術を基礎から学ぶ (計測・制御シリーズ)
著者:広井 和男
販売元:CQ出版
発売日:2004-09
おすすめ度:4.5
クチコミを見る
 
PID 制御の勉強に。こんなに本格的じゃなくてもよかったかな 

 

[ETロボコン] Blutooth でデータログ

NXT 走行体のデータを取得する方法が、nxtOSEK/JSP には備わっている。

この Bluetooth 接続で データロギングするという、NXT GamePad を入れてみた。

まず、 説明の通りに WindowsXP にNXT GamePad をインストール。

次に、NXT に Bluetooth を使ったプログラムを転送して、実行させる。
(nxtOSEK 付属の nxtOSEK/samples_c/datalogging を使ったみた。)

NXT のプログラム実行中に、WindowsXP で;
コントロールパネル>プリンタとその他のハードウェア>Bluetooth デバイス>デバイス 追加

ここで、NXT が Blutooth デバイスとして見つかったら、パスキーの設定を行う。

ってここで、つまずく。

パスキー入れても、どうしてもつながらないので、「パスキーを使用しない」を選ぶと一見うまくいくようだが、NXT の液晶画面に出るはずの「BT」と言う表示がでない!

そのまま、WindowsXP の NXT GamePad.exe を実行して、COMポートを適当に選ぶと Connect したかのように表示される。
でも、データロギングはうまくいかない。

さんざん悩んだところ、こちらのページを見て、
やっとパスキーを分かってなかったと気づいた

dataloggig.c では
ecrot_init_bt_slave("LEJOS-OSEK")
となっているんで、パスキーは LEJOS-OSEK
と入力しなければいけなかったのだ!

おまけに、勝手に "LEJOS-OSEK" から、" で囲わないでただの数字に書換えていたので、パスキーにその数字を入力してもダメだったのだった

ECRobot C API リファレンス」を見ると;

ecrobot_init_bt_slave(const CHAR *pin)
と書いてありました。


分かってしまえば、Bluetooth で接続確立でき、データロギングも出来るようになりました。

で、NXT の走行プログラムに組込んでも(nxtJSPでも)大丈夫

ちなみに、WindowsXP は MacBook の VMware Fusion 上で動かしています。MacBook 内蔵の Bluetooth で接続できました。

(VMware Fusion 上の WindowsXP では、 Blutooth は最初は使えないです。この記事を参考に。)


あと、これをやっている過程で、NXT のデータロギングソフトを他にも見つけました
NxtLogger
NXTモニタリングシステム

[ETロボコン] sample.c プログラムを nxtJSP(μITRON)で動かす

ETロボコンの参加者用 sample.c プログラムは公式開発環境の
nxtOSEK (Toppers/ATK) でしか動かない。

nxtJSP(Toppers/JSP、つまりμITRON)で動かすのは、非競争領域なんだそうで、各自で行って申請せよとのこと。

どうせなら、μITRON を使いたんだけど、非サポートということなんで、自分でやってみた。


参考にしたのは;
・「マインドストーム活用のエンジニア教育」のコード

・sample.cpp を nxtJSP に移植したすねいるさんのコード
 (コードは参加者メーリングリスト内)

μITRON準拠TOPPERSの実践活用―製品開発にも学習教材にも使えるフリーのOSプラットホーム (TECH I Embedded Software)μITRON準拠TOPPERSの実践活用―製品開発にも学習教材にも使えるフリーのOSプラットホーム (TECH I Embedded Software)
販売元:CQ出版
発売日:2007-03
おすすめ度:5.0
クチコミを見る
 
って、コンフィグレーションファイル (.cfg)、ヘッダ、Makefile はほとんどそのまんま 

◯sample_jsp.cfg
#define _MACRO_ONLY
#include "../../toppers_jsp/systask/cxxrt.cfg"
#include "sample_jsp.h"
INCLUDE("¥"sample_jsp.h¥"");
CRE_TSK(TSK0, { TA_HLNG | TA_ACT, TSK0, tsk0, 1, 1024, NULL });
#include <at91sam7s.h>
INCLUDE("¥"at91sam7s.h¥"");
DEF_INH(IRQ_PWM_PID, { TA_HLNG, jsp_systick_low_priority });
 

◯sample_jsp.h
#ifndef SAMPLE_JSP_H_
#define SAMPLE_JSP_H_
#include <t_services.h>
#ifndef _MACRO_ONLY
extern void tsk0(VP_INT exinf);
#endif /* _MACRO_ONLY */
#endif /*SAMPLE_JSP_H_*/

◯Makefile
# リアルタイムOSにTOPPERS/JSPを指定
TOPPERS_KERNEL = NXT_JSP
# nxtOSEKルートディレクトリ
NXTOSEK_ROOT = ../../nxtOSEK
# ターゲット実行形式ファイル名
TARGET = sample_jsp
# インクルードパス
USER_INC_PATH= $(NXTOSEK_ROOT)/ecrobot/nxtway_gs_balancer
# ライブラリ
USER_LIB = nxtway_gs_balancer
# Cソースファイル
TARGET_SOURCES = balancer_param.c sample_jsp.c
# TOPPERS/JSP設定ファイル
TOPPERS_JSP_CFG_SOURCE = ./sample_jsp.cfg
# 下記のマクロは変更しないでください
O_PATH ?= build
# Cビルド用makefile
include $(NXTOSEK_ROOT)/ecrobot/ecrobot.mak
 

あと、sample.c をから、sample_jsp.c で変えたのは;
void user_1ms_isr_type2(void){}
をまるまる入れ替え;

//*****************************************************************************
// FUNCTION : jsp_systick_low_priority
// ARGUMENT : none
// RETURN : none
// DESCRIPTION : 1msec periodical ISR
//*****************************************************************************
void jsp_systick_low_priority(void)
{
if (get_OS_flag()) /* check whether JSP already started or not */
{
isig_tim();          /* cyclic task dispatcher */
check_NXT_buttons(); /* this must be called here */
}
}
あと、
TASK(TaskMain)
{
の表現の書き換えだけ;
 
//*****************************************************************************
// タスク名 : Task0
// 概要 : メインタスク
//*****************************************************************************
void tsk0(VP_INT exinf)
{


あんまり分かってないけど、これで動いた(ように見える)んで、
よいのかな?

〈追記 2009.10.5〉
上記のコードは、ETロボコンの利用申請その他に、自由に使用して構いません。リンクもご自由に。
ただし、使用した際の不利益等についての責任は一切負いません。

 

[ETロボコン] NXT を μITRON で動かす

ETロボコンに使う OS には nxtOSEK とnxtJSP が選べる
んだけど、sample など、どうも nxtOSEK の情報ばかり。

(2009.9.2 追記;
公式OSは、nxtOSEK だけでした。nxtJSP は申請すれば使えます。)

でも、nxtJSP を、つまり μITRON(TOPPERS/JSP)を
使いたいんだよねぇ。

いろいろ、調べていたら;
LEGO Mindstorms NXT をμITRON (nxtOSEK)で動かすと
いうタイムリーな記事を発見
μITRONでロボットが動く

毎週水曜連載です。
これで、勉強しよう。

C 言語使ってるんだけど、C++ でも少し解説して欲しいなぁ

[ETロボコン] C サンプルプログラム勉強中

なんとか、sample.c プログラムでライントレースするようになった
ET くん。

でも、もらったサンプルプログラム、理解してないじゃない 

これじゃいけない とサンプルプログラムを勉強です。

って、C 言語もよく分かってないじゃない

勉強、勉強  

[ETロボコン]技術教育1 →ETくん立った!!

いよいよ「技術教育1」に行ってきました。

午前は開発環境の解説。

NXT走行体でまだ立ってない人に、という話しがありました。

これってまさに該当者


その時は、ちらっとスライドが出ただけだったので、
個人的に聞きに行っていろいろアドバイスもらいました。

帰宅後、そのアドバイスを元にしたら、NXT走行体があっさり
立ちました いや感動


サンプルCプログラムでそのまま立ってライントレースした、
っていうブログ記事が結構あったので、組み立て方の誤りや
ジャイロセンサーの不良、スタート時の手の放し方などが悪
いのかと、ずっと悩んでました。

しかし、案外センサーの個体差があるもんだ、ということを
アドバイスされました。

その上で;
#define GYRO_OFFSET  610
/* ジャイロセンサオフセット値(角速度0[deg/sec]時)  */

の 610 の値を適宜変更してみるようにと。

また、ライントレースを見失っている場合は;
#define WHITE  500 /* 白色の光センサ値 */
#define BLACK  700 /* 黒色の光センサ値 */

の値を。


その際に参考になるのが、
\nxtOSEK\samples_c\helloworld\helloworld.c のプログラム。
単なる動作確認のデモプログラムだと思っていたけど、
センサー1、2、3、4 の値を液晶画面に表示しているそうです。

そこでジャイロセンサの値(自分のではセンサ4)を読み取ると、
NXT 走行体を水平に置いても、垂直に立てても大体 597。

GYRO_OFFSET をその値に近い 600 にしてみたら、
あれだけ立たないでいた NXT走行体が、あっさり立ったばかりか
初めてライントレースまでしてくれた

よちよち動いてるとこなんか、赤ちゃんみたいで、かわいい

これだけで、技術教育に参加した甲斐があったね。


ちなみに、ライントレースしない場合の白黒値の測り方は;

helloworld.c 実行中の液晶画面で、光センサの値(自分のだと
センサ3)を見ればいいのだけど、光センサのLEDを点灯させる必要
があるので;

void ecrobot_device_initialize(void)
{
ecrobot_set_light_sensor_active(NXT_PORT_S3);
}

を追加したら、LED が点灯


いまになって、改めてサンプルC プログラムの README.txt
を読むと;

#define GYRO_OFFSET  610
/* ジャイロセンサオフセット値(角速度0[deg/sec]時) */
#define WHITE  500 /* 白色の光センサ値 */
#define BLACK  700 /* 黒色の光センサ値 */
これらのパラメータはセンセ個体およびテスト環境に依存します
ので、テスト時には適宜調整してください。

と書いてあったのは、そういう事だったのね

組込みプログラムって、最初はこんなところでつまずく、という
教訓

これで、やっとスタートラインに立てたね
頑張るぞ 
 

[ETロボコン] 開発環境をアップデート+eclipse を導入+暴走 !?

ETロボコン2009
しばらく放置気味でしたが、「技術教育1」に向けて、あわてて
環境整備しました。

まず、ETロボコン2009 参加者向けの公式開発環境が配られた
ので、改めてチェック。

ロボット(走行体)の組み立て方も、すご〜く丁寧な説明になっ
てます
名前も NXTway-ET となりました。
見比べると、車輪の取り付け方だけが変更の様子。
作り直すと、うん、車輪がしっかりしたみたい

次は開発環境。
以前構築した開発環境に比べ、nxtOSEK が 2.09 になってます。
他は同じみたい。

これを入れ換えなくては。最新版は、さらに 2.10 になっている
ので、こちらを上書き。

さらに、今回は統合開発環境にまでしていきたい、という野望が
あります

これは、公式の開発環境には書いてないけど、nxtOSEK のサイト
に載っている
ので、チャレンジ。

要するに、Eclipse + CDT をインストールするんだけど、
まず Eclipse のバージョンをどれにしようか、日本語化はどうし
ようかで迷う。

だって、nxtOSEK のサイトでは
・Eclipse 3.2 と CDT 3.1.1の組み合わせでのみ動作確認済み
 (英語版みたい。)
・Eclipse CDTの入手およびインストール方法については、Web
 上または雑誌等で多数紹介されていますので参考にしてください

としか書いてないんだもん

でも、それ以降のバージョンでもいいみたい。
例によっていろいろな方のサイトを参考にさせていただくと
こちらとか、こちらとか、こちらとか、こちらとか、こちらなど
など)...

却ってどうしたらいいか分からなくなっちゃいました


いろいろ考えて、
・なるべく、nxtOSEKのサイトのバージョンに合わせる。
・でも、日本語化はしたい。
という方針を立てて、「ETロボコン活動記録」さんの方法を参考に
インストールしてみました。m(_ _)m
(注;WindowsXPでの構築です。)

1.Eclipse SDK「eclipse-SDK-3.2-win32.zip」のダウンロード。
2.Eclipse SDK ランゲージパック(日本語)
 「NLpack1-eclipse-SDK-3.2-win32.zip」のダウンロード。
3.Eclipse CDTプラグイン「org.eclipse.cdt-3.1.1-win32.x86.zip
  のダウンロード。 
4.CDTプラグイン ランゲージパック(日本語化)
 「CDT 3.1.x Language Pack」 のダウンロード。
5.それぞれ解凍する。
6.Eclipse SDK のフォルダに SDK ランゲージパックを上書きする。
7.さらに、 CDT を上書きし、次に CDT ランゲージパックを上書き。
   どんどん上書きしていきますが、この順番が重要らしいです。
 (それまで、eclipse.exe は実行しないこと。)
8.ここでまでが、nxtOSEK のページに書いてある、
   Eclipse CDTの適用の「ステップ 1」
9.次は、「ステップ 2」。Windows の環境変数のパスの設定。
   こちらを参考に;
   [コントロールパネル]→[パフォーマンスとメインテナンス]→
   [システム]→[システムのプロパティ]→[詳細設定]→[環境変数]
   まで来たら、
   [新規]で「変数名」を Path、「変数値」をc:¥cygwin¥binと
   入力。
10.いよいよ「ステップ 3」。eclipse.exe の実行。
   起動すると、まずワークスペースの場所を決めろ、といわれる。
   適当に、C:¥eclipse¥workspace とでもしておく。
11.あとは、「ステップ3」の指示通り。
   まずは helloworld サンプルを選択。プロジェクト名は適当に。
   ただし、nxtOSEK 2.10 だと helloworld のディレクトリは、
   指示のと違っているので、自分で探して指定する。
12.メニュー→ プロジェクト→すべてをビルド。
   ここで、「スキャナ情報生成中」というエラーが出てしまい、
   悩む。
   そこで、
   メニュー→プロジェクト→プロパティ→
   C/C++ Make プロジェクト→ディスカバリーオプション→
   スキャナー情報生成コマンドを使用可能にする
   のチェックを外すことで、エラーがでなくなったので、
   理由はわからないがよしとしよう
13.「ステップ4」プログラムのアップロードの設定は、指示の
   通り;
  「nxtOSEKアプリケーションの拡張NXTファームウェアを
   使用したアップロード機能」を設定すればいいでしょう。
14.いよいよ、helloworld をNXT にアップロード。
   USB ケーブルをつないで、NXT の電源を入れてから、実行
   すれば...無事成功
15.さ〜て、次はいよいよ、ETロボコン2009から配られた、
   倒立振子ライントレースのサンプルCプログラム。
   このプログラムの置き場所は README.txt に書いてあった
   けど、最初勘違いしてしまいました。
  (これでまたビルドでエラーが出て悩んだ。)
   良く読むと分かるけど;
   C:¥cygwin¥sample¥sample_c
   の様なディレクトリにします。
  (C:¥cygwin¥nxtOSEK の場合。)
16.これでビルド、アップロードが出来た
   NXTway-ET に sample プログラムが入ってます。
17.おもむろに実行。
   NXTway-ET を立たせて、反時計回りに黒線内側
   エッジに配置。左右の車輪を接地。
   タッチセンサーをON

   ET くん(名前変わりました)、暴走 

   なんで〜 


(つづく...)

[ETロボコン] ETロボコン2009 そろそろ技術教育

メーリングリストも始まり、技術教育の日程が迫ってきました。

しばらく手が回らなくて、放置でしたが、改めて正式版資料をDL。
ロボットも少し組み直さなきゃいけないみたい。

そろそろ、やるぞ! 

[ETロボコン] GS 大地に立つ!!

GS くん、暴走中!」と書いたら、
なんと有り難いアドバイスを頂きました。
kantaさん、有り難うございます。)

どうやら、恐々と手でいつまでも支えていたのがいけなかったようです。

スタートスイッチを押すと同時に手を放したら、なんと倒立 
初めて立った姿に感激 

ただ、まだまだサンプルプログラムだと、不安定です。
手を放すタイミングと角度により、たびたび失敗します 

うまく立たなくてなって、動画撮れなかった

あと、ライントレーサのラインを見つけられないみたい
くるくると円を描いたり、ふらふら前進したり。

これから、だね。

 

[ETロボコン] GS くん、暴走中!

20090323002312
ETロボコン2009 用の LEGO Mindstorms セットが届いた。

まずは、ロボットの組み立て。
NXTway-GS(2輪型倒立振子ロボット)の組み立て法を見ながら組み立てる。
ちなみに、タイヤはMotorcycle tires で、ナロータイプです。
コードが長過ぎて気になるけど、無事完成

次に、開発環境のインストール。
nxtOSK/JSP の拡張NXTファームウェアにインストール法のページを見ながら、ひたすらインストールしていく。

サンプルプログラムを NXT へアップロードしてみた。
無事、液晶画面に「Hello, World!」が表示された!

ここまでは、説明も丁寧に書いてあったので、そんなに問題なさそう。

次に、いよいよ倒立振子ライントレーサーのサンプルプログラムをアップロード。プログラム、run!


GSくん(←こう命名)、暴走
倒立振子の制御入っているはずが、立つ気配もなく、モーター全速
直立からそっとスタートさせると、ちょっと立つ気配を一瞬して、あとはモーター回りっぱなし

おかしいなぁ
ブロックの組み立て? ...でもなさそう。
コードのつなぎ方?  ...も合ってるみたい。
センサー部品の不良? ...チェックの数値は来てるみたい。
プログラム?     ...やっぱこれかなぁ。
 
検討中 

[ETロボコン] 教典届いた

ETロボコン2009 の準備を始めた。

とりあえず、LEGO Mindstorms NXT の ETロボコンキット を注文。

・開発環境の準備。

・教典の注文。
ロボットレースによる 組込み技術者養成講座
ロボットレースによる 組込み技術者養成講座
クチコミを見る

(ETロボコン2009 参戦記を書いている「品川UML研究会」 さんの命名による。着々と準備している様子。参考にさせていただいてます。)
 
いろいろあって、なかなか進まないが、
とりあえず、教典は届いた。

ざっと目を通した。
メインの章はあとでじっくり読まなきゃ。 

少し残念なのは、走行体が RCX の説明なこと。
今年から始まった NXT は、自分で調べなきゃ。
 

[ETロボコン] ETロボコン2009 実施説明会

20090304152631
ETロボコン2009の
3月4日の南関東地区の実施説明会の様子です。

会場は補助イスが出るくらい満員でした。
参加者は約80名。
その内、初参加が 2/3 位なので、今年の参加者はかなり多くなりそう。

正式な事は4月発表とのことです。
説明会の資料はダウンロードできるので、説明会に参加できなくても大丈夫でしょう。

ただ今出場募集中で、先着100チームには;
ETロボコン実行委員会監修の 
「ロボットレースによる 組込み技術者養成講座」をプレゼント! 
だそうです。

ロボットレースによる 組込み技術者養成講座
ロボットレースによる 組込み技術者養成講座
クチコミを見る


今年から始まる LEGO Mindstorms NXT による二輪倒立振子のロボットは、なにしろかわいいです。

[ETロボコン] ETロボコン2009 の発表ありました

ETロボコン2009 の発表が2月5日にすでにあったんですね。
説明会は、東京はもう終わってる
LEGO Mindstorms を使った、ロボット競技会です。
興味ある方はぜひ

[ETロボコン] ETロボコン2009 面白そう!

LEGO Mindstorms RCX をポチポチいじってるが、これを使って出場できるロボコン大会として、ETロボコンっていうのがある。

「組込みソフトウェア技術者教育をテーマにした」なんて書かれていて、ちょっと敷居が高そうだけど、個人でも参加できるらしい。

今年の ETロボコン2008 は無事終了して、来年の ETロボコン2009 の概要が発表された。

なんと、来年からは

LEGO Mindstorms NXT による二輪倒立振子ライン・トレーサロボットによる競技に移行!
(RCX での競技も継続。)

動画を見ると、この二輪倒立振子ロボット、かっかわいい

実行環境もそれに合わせて μITRON 系も選べるようになったし、 来年チャレンジしたいなぁ

再来年からは LEGO ブロック以外のボディも検討中なんだそうで、 そうなると μT-Engine/ μT-Kernel だったりして...



LEGO Mindstorms NXT による二輪倒立振子ライン・トレーサロボットが動いてます! かわいい!!


(追伸)
ETロボコン2009 のサイトがオープンしましたね。

プロフィール
薬剤師なのにコンピュータが好き、鍼灸マッサージ師なのにプログラミングが好き。小中高校生向けのプログラミング教材を作るのが現在の日課。micro:bit、Scratch、Minecraft、Rubyなどで作成中。 FIREして2019年に世界一周クルーズしました。














月別アーカイブ
カテゴリ別アーカイブ
記事検索