2010年03月22日

ETロボコン2010参戦記(番外編:サウンドセンサ続き)

前回の続きで、びっくりモードのを実装し、サウンドセンサ反応時にまず左右をきょろきょろしてから走りだそうとしてみた。
しかし、その場回転が動き出すまでに時間がかかり、動くスピードも遅いため思ったほどシャープでないのでびっくりモードはとりやめ。

その代わりに、脱走モードでは超音波センサ反応時に右回転するので、
サウンドセンサ反応時には左回転するようにしてみた。

とりあえず完成かな。
今後、番外でも本番でも、暴走(転倒)時のモータかジャイロセンサの値から暴走(転倒)を検知して停止する機能を盛り込みたいな。
posted by 岩永 at 03:24| Comment(0) | TrackBack(0) | ソフトウェア | このブログの読者になる | 更新情報をチェックする

2010年03月21日

ETロボコン2010参戦記(番外編:サウンドセンサを使ってみる)

先日、子供の通う保育園にロボットを持っていったところ好評だったので
もういちど子供たちに見せびらかす科学少年魂を植え付けるために新たなプログラムを構想してみた。

要求事項
・ライントレースはしない
・通常は静止状態で、目の前に手をかざしたら後退する
・手を叩いたり、大きな音を出したらその場から逃げだす
・しばらくしたら静止する
・逃げている最中に前方に障害物があったらよける、または静止する

仕様
・光センサは使用しない
・サウンドセンサを使用する
・超音波センサを使用する
・静止モードと脱走モードを持つ
・静止モードでは走行しない
・静止モードでサウンドセンサに一定以上の入力があったら脱走モードに移行する
・静止モードで超音波センサに入力があったら後退する
・脱走モードでは一定速度で走行し、n秒継続して静止モードに移行する
・脱走モードで超音波センサに入力があったら左右どちらかに曲がる、またはUターンする、または静止モードに移行する

追加仕様(可能なら実現する)
・静止モードから脱走モードに移行する際に、左右をきょろきょろする
 (驚いて周りを見回すイメージ)
・脱走モードでサウンドセンサに入力があった場合、左右どちらかに90度カーブする
 (この場合、超音波センサの入力では静止が望ましい)

センサの確認
というわけで、まずはサウンドセンサにどういう入力値が入るのかをチェック。
ロボットの背中にサウンドセンサを取りつけて、光センサの配線をサウンドセンサに持っていく。
で、nxtway_gsを起動する。
静止状態でのセンサ値は1000前後を示している。
手を叩いたり、大きな声を出すと600〜700程度を示す。
ということでサウンドセンサの入力閾値は700ぐらいかな。

設計する
状態を二つ、静止状態と脱走状態とする。追加でびっくり状態(左右をきょろきょろする)を追加するかも。
脱走状態は3秒継続、サウンドセンサの閾値を700に設定。
脱走状態での超音波センサの検知(30cm)で右に回転する。
回転の継続時間を200ms継続する。

実装する
再びnxtway_gsをベースに改造することで実装する。
サウンドセンサ検知処理は超音波センサ検知処理と同様に OSEK_Task_ts2 で40msおきの起動にしてみた。
また、グローバル変数の定義と実態宣言を別ファイルで行うようにしてみた。

テストする
ロボットにダウンロードして実行してみると、いきなりぐるぐる回り出す。
なんとなく、起動時のサウンドに反応しているようだ。
また、脱走中のモータ音でサウンドセンサ値が500前後を指している。
これは閾値を400に下げておこう。
センサ値チェック時は揺れているだけだったから、モータ音が小さかったらしい。

と、コーディングミス発見。
サウンドセンサチェックの式のはずが、超音波センサチェックの関数を使用していた。単純なコピペミス。
超音波センサの返り値の最大値は255なのにそれが700以下で判定しているから、常に脱走モードになってしまってた。

もうひとつ、静止モードで超音波センサが反応した際に後退するようにしたまま、値をクリアしていなかった。
これじゃ超音波センサが反応しなくなっても後退しっぱなし。

ということで、修正して設計通り動くようになりました。

posted by 岩永 at 00:00| Comment(0) | TrackBack(0) | ソフトウェア | このブログの読者になる | 更新情報をチェックする

2010年03月19日

ETロボコン2010参戦記(ちょっとだけソースを改造してみる)

昨日は去年の説明資料に書いてあったライントレースのサンプルソースが動いたので安心して寝た。
そして今日、nxtway_gs(ゲームパッドからBluetooth通信で操作し、超音波センサで障害物をよける)を改造して
ゲームパッドからの操作の代わりにライントレースするようにしてみた。

が、動かない。
動かないというより暴走する。
何かミスコーディングしたんだろうか?
息子の保育園に持っていって子供たちに見せびらかすつもりだったのに。

ソースにおかしな所はないのは確認した。
こけたりしたときにセンサが壊れたのだろうか?
しかし、nxtway_gsはちゃんと動いて倒立するので、センサが壊れているわけじゃない。

試しに昨日のライントレースを動かしてみたが、同じように暴走する。
なんだろう?
ふと思いついて、LCD画面のセンサの読み取り値を確認してみた。
読み取り値がデフォルトの値とずれてるようだ。部屋の明るさのせいか?

ということで、サンプルソースの左右回転制御の閾値を (白の値+黒の値)/2 から (白の値+黒の値)/2.5 にしてみたところ、ちゃんと動いた!
なるほど、キャリブレーションって大事なのね。と実感した次第。
さらに、摩擦によるものか何か分からないけど左右のモーターの回転具合が異なるのも発見したので、その補正もしてみた。

いろいろ試行錯誤するのと、その成果を動きとして目で確認するのは楽しいね。
だけどこれからは、現場の試行錯誤ではなくて設計で試行錯誤しなければ。
どのように構想してどのようにモデリングするか。
悩むなあ。

ちなみに、完成したロボットを保育園でお披露目したらとても喜ばれました。
勝手に動くのと、超音波センサのおかげで手を出すとロボットが後ずさりするというのが受けたみたい。
posted by 岩永 at 00:00| Comment(0) | TrackBack(0) | ソフトウェア | このブログの読者になる | 更新情報をチェックする

2010年03月18日

ETロボコン2010参戦記(動いた!)

3月18日
2009年の資料などを検索して、ライントレースのサンプルプログラムをコンパイルする。
そしてNXTへダウンロード。実行してみると…動いた!
けどパラメータがしょぼいのか、環境が悪いのか分からないけども
すぐにラインを見失って迷走する。
あさっての方向に走り出した後は、障害物に衝突して全速力でバックする。
これはどうにかならないのかな?
まあOSの資料とか調べていろいろ試してみよう。


【追加】
サンプルソースを探してこちらに来られる方がいらっしゃるようなので、ご紹介。
私は2009年の資料(PDF注意)のソースコードを使いました。
ただし、次の日の記事にも書きましたが、部屋の明るさなどによりライントレース判定のパラメータに調整が必要な場合があります。
posted by 岩永 at 00:00| Comment(0) | TrackBack(0) | ソフトウェア | このブログの読者になる | 更新情報をチェックする

2010年03月17日

ETロボコン2010参戦記(環境構築その2)

3月17日
インストールした環境を全部削除して再度試す。
cygwinのダウンロードからやり直したが、状況は変わらず。
sgのパス指定がおかしかったので修正するが、今度はkernel_cfg.cがないといわれる。
なんだこりゃ。ETロボコンのMLかコミュニティにでも入って質問するしかないだろうか。

ふとnxtOSEKのREADMEを読んでみると、新バージョン(2.12)からsgを削除したと書いてある。
知財の輸出規制か何かの関係でsourceforge.netがなにかいろいろあったと聞いたことがあったが、
その影響だろうか。

ということで、会社でsg.exeを入れてみたらちゃんと動いて、コンパイルが通った。
NXTへのダウンロードはしていないけど、これで一安心。

とりあえずエントリーをしてしまおう。
他のメンバーはどこかから探せばいいさ。
posted by 岩永 at 00:00| Comment(0) | TrackBack(0) | ソフトウェア | このブログの読者になる | 更新情報をチェックする

2010年03月14日

ETロボコン2010参戦記(環境構築その1)

3月14日
環境一式をダウンロードしてコンパイルを試すが、helloworldのコンパイルが通らない。
sgのパス指定がおかしい?
cygwinのインストールでgccを入れかけてgccと名のつくモジュールを全部キャンセルしたのが原因?

MacbookへのWindowsのインストールは、Windowsの領域を確保するのにディスクのまとまった空きがなく、
データの全バックアップ→領域書き戻しが必要らしい。
ちょっとペンディング。
posted by 岩永 at 00:00| Comment(0) | TrackBack(0) | ソフトウェア | このブログの読者になる | 更新情報をチェックする

2010年03月13日

ETロボコン2010参戦記(LEGO MINDSTORMS NXT購入)

3月13日
注文していたMINDSTORMS NXTが届いた。
子供たちと一緒に組み立て。
どうやら競技用の設計図は入っていないようなので、とりあえずワイドトレッドのロボットを作成する。
タッチセンサーの取り付け方が書いてなかったので適当にくっつける。
細かいところは参加申し込みしてちゃんとした設計が手に入ったら修正しよう。
コンパイル環境を作らなきゃ。

posted by 岩永 at 00:00| Comment(0) | TrackBack(0) | ソフトウェア | このブログの読者になる | 更新情報をチェックする

2010年03月09日

ETロボコン2010参戦記(プロローグその5)

3月某日

ETロボコンの申込受付が開始されている。
ぽつぽつ申込みがされているようだ。

ロボコン参加を打診した知り合いから、諸般の事情により不参加と言う返事が来た。
んー、どうしようかな。

ということで事務局に問い合わせたところ、あとからメンバー数などの変更はできるらしい。
とりあえず申込しちゃって他の知り合いを誘ってみるか。でも誰を?
posted by 岩永 at 00:00| Comment(0) | TrackBack(0) | ソフトウェア | このブログの読者になる | 更新情報をチェックする

2010年03月08日

ETロボコン2010参戦記(プロローグその4)

3月某日

Bluetoothで通信できるというのを見て、MacBookにWindowsを入れればリアルタイムログ取れそうだな、と考えてみたり。

久しぶりに出社したが、相変わらずの社内失業状態なので勉強するふりをしながら
過去のETロボコンの参戦記を読む。モデル設計?PID制御?

一人で参加は厳しそうでもあり、楽しそうでもある。
公式サイトにも「できるだけ2名以上での参加を」と書いてあるしね。
ということで子供の学校つながりの知り合いにお誘いメールを出してみた。
posted by 岩永 at 00:00| Comment(0) | TrackBack(0) | ソフトウェア | このブログの読者になる | 更新情報をチェックする

2010年03月04日

ETロボコン2010参戦記(プロローグその3・説明会)

ETロボコン説明会に参加してみた。
地区大会は9月か…長丁場だな。

ロボット自体はLEGO MINDSTORMSを使うのか。
ロボットの改造はなし。色を塗るのも遠慮してほしそうな感じ。
ハードではなくプログラムで勝負のようだね。

ロボット本体4万円、参加費が個人で4万円?
会社はこんなのにお金出さないし、万一出してもらったら途中で辞めずに
出場しないといけないし参加レポート書かされるはず。
厳しいな、いや、今ならなんとかなるのか?

大学時代にお世話になった方がスタッフとしていらっしゃったので少しお話をする。
この時点でかなり心が傾いていた。
先月までの残業代で何とかなるんじゃない?知り合いを誘ってみればいいし。
などと思いながら、ETロボコンキットの注文メールを送る。
posted by 岩永 at 00:00| Comment(0) | TrackBack(0) | ソフトウェア | このブログの読者になる | 更新情報をチェックする
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。