Hatena::ブログ(Diary)

熊工房 ohgumaの腹凹ませたい日記

2004 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2005 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2006 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2007 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2008 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2009 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2010 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2011 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2012 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2013 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2014 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2015 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2016 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2017 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |

2017-03-08

[]ロボットの三要素(SCA)「S(Sensor) センサ:感じて知らせる!」(その2)

C-Style上ではセンサ値を使った演算もできる。


あるセンサから別のセンサ値を引き算した結果が0より大きいか小さいかで、どちらのセンサが強く反応しているか判断もできる。

f:id:ohguma:20170309011231p:image

ここで、引き算の注意点。

変数Dのようにセンサ値どおしを直接引き算すると意図しない結果が出る。これは、C言語データ型の問題であるが、一旦センサ値を変数(A,B)に入れてから演算(C)することで回避できる。


また、前回ループ時の値を変数に保存しておき、今回の値から前回の値を引き算した結果から近づいたか、遠ざかったかなどの判断もできる。

f:id:ohguma:20170309005733p:image

(1行目のE=0はE=CN3とすべきかも)

これらを踏まえると、2つのセンサの値の差の前回ループの値を保存しておき、今回の2つのセンサ値の差との差を求めて、..などと様々な分析方法が考えられる。

数少ないセンサでも処理の仕方で様々な分析ができ、腕の見せ所と思う。

(つづく)

2017-03-07

[]ロボットの三要素(SCA)「S(Sensor) センサ:感じて知らせる!」

ダイセンのボールセンサのように状態(例:ボールまでの距離)に応じて出力される値が異なるセンサを使う場合、「しきい値」で状態判断できる。

f:id:ohguma:20170308081545p:image


先日の C-Style サンプルプログラムと同様にすると、次のように「ある」か「ない」かの判断になる。

f:id:ohguma:20170308081917p:image


しきい値」は1つである必要はない。

elseif と複数の「しきい値」を使うことで、「近い」「遠い」「ない」などの複数状態判断できる。

f:id:ohguma:20170308081916p:image

(つづく)

2017-03-05

[]ロボットの三要素の続き デバッグ

C-Styleでプログラム作成したら、実際にロボット動かして動作確認し、プログラムデバッグしていく。


ただし、動きからプログラム状態判断すると、勘違いも起こりやすく、LED表示を併用するにしても情報量が少ないので、確実にデバッグするには変数の値を実際に画面で確認するとよい。ロボットの3要素に分けてプログラムができていると、それぞれの要素ごとにデバッグができ、問題解決がしやすい。

デバッグの例がこちら。

f:id:ohguma:20170305064258p:image:w640

先日のプログラムに19〜24行をデバッグ用に追加した。デバッグプログラムはif文中に書くと作業が楽になる。

  • (19行目)if文の条件をC-Codeにし、C-CodeにTRUEを入力と常に条件成立し if 文内が実行される。デバッグを止めるときは C-Code をFALSE にすると常に条件成立せずに if 文内けで済む。また本番プログラムにする場合はこの行を削除するとif文内もまとめて削除できる。
  • 20行目)変数Aの値を「A:」に続けて出力し、その後半角スペースを出力する。
  • (21行目)変数Bの値を「B:」に続けて出力し、その後改行を出力する。
  • (22行目)変数表示が見やすくなるように待機(0.1秒)
  • 23行目)continue を実行すると以後の処理を無視して、4行目の無条件ループに戻る。この部分までのデバッグをする場合、以後の処理を無視できる。以後の部分も引き続きデバッグする場合は continue を削除する。

実際に変数の値を画面に表示するには、センサーモニターを開き、「センサモニタ&出力チェック」の部分(マウスカーソルがある辺り)をダブルクリックする。すると、センサモニタ画面の下部に表示エリアが追加される。この状態プログラムをスタートさせると、上の20,21行目の出力が次々に画面に表示される。

センサ値がいろいろ変わるようにロボットの周りの環境を変化させ、それぞれの状態場合変数値が意図する値になっているかどうか確認する。

2017-03-02

[]ロボットの三要素

ロボット作成時にプログラムは三要素 S・C・Aを分けるとよいと思う。

分けることで、センサ構成変更や足回りの変更(オムニだと4輪→3輪など)の際にプログラム全体を直す必要がなくなり、またデバッグもしやすくなる。


三要素については、こちらのScene7を勧める。SCA!SCA!


C-Styleにあるサンプルプログラムを例に考える。

  • C:\Daisen\C-Style for TJ3B V161219\User_TJ3B\DirSensor\10_3Ball with HMC6352 soccer sample.Csy

f:id:ohguma:20170303044547p:image:w360

ボールセンサ3個とコンパスセンサを持つ2輪ロボットプログラムだが、SCAがごちゃまぜの状態で、個人的には好みではない。


これをSCAで分けるとこんな感じに。

f:id:ohguma:20170303051313p:image:w360

f:id:ohguma:20170303051312p:image:w360

C-Codeのコマンドは、メニュー「オプション」→「Setupボタンを表示」で<Setup>ボタンを表示し、「Advanced Mode」をオンにし、<OK>ボタンを押すと使える。

ここでは、コメント記述用にだけ使っている。


デバッグの際は、変数の値を C-Code の printf などでシリアルモニタに表示し、意図する状態になっているか確認する。


また、Sのセンサー部分のみデバッグする場合は、Cのコンピュータ部分の直前に「continue」を入れることで、以後の処理をスキップできる。

2017-02-20

[] Google翻訳

Google翻訳で「RoboCupJunior Soccer - Rules 2017」訳してみた。

参考にされる場合、間違い等あるかもしれませんので、原本を確認してください。

翻訳結果について本サイトは何ら責任を負いません。

更新:2017-02-17版

https://drive.google.com/file/d/0BzFoKYiCZtMrZ1NtOS0yYnEwZFE

▼原文はこちら。

http://rcj.robocup.org/rcj2017/soccer_2017.pdf


外国語文献の翻訳には、Google翻訳が便利だが、今回は一手間かけて使ってみた。

https://translate.google.co.jp/

原文のPDFからテキストコピペすると、PDF上の改行部分で改行されたテキストが張り付き、そのまま翻訳するとおかしな翻訳になることがある。

f:id:ohguma:20170221031257p:image

翻訳したいテキストを一旦テキストエディタ(以下はサクラエディタ)にコピペし、「改行」を半角スペースに置換する。正規表現が使えると、改行などの制御文字も置換も容易になる。

f:id:ohguma:20170221031258p:image

改行がなくなったテキスト翻訳すると良い感じになる。

f:id:ohguma:20170221031255p:image

正規表現は複雑なテキスト操作可能でとっつきにくいかもしれないが、いろいろなプログラム言語テキストエディタなどでサポートされているので、部分的にでも覚えるとテキストの整形などで重宝する。

反復学習ソフト付き 正規表現書き方ドリル (WEB+DB PRESS plus)

反復学習ソフト付き 正規表現書き方ドリル (WEB+DB PRESS plus)