ロボカップジュニア
サッカーロボット作成講習会
第三回 ソフトウェア編2

1

岡山ロボット技術子供育成協会
Copyright ORJA All Rights Reserved.

講習会の進め方
第一回 ロボット作成

第二回 ソフトウェア入門編
ロボットを動かす

第三回 ソフトウェア基礎編
外界の情報をロボットに取り込む

第四回 ソフトウェア応用編
試合に勝つ工夫をプログラムする3

岡山ロボット技術子供育成協会
Copyright ORJA All Rights Reserved.

プログラムの保存• ある程度プログラムを修正したら、念のためプログラムを保管する[保存]ボタンを押すと、上書きで内容が保存される

6

岡山ロボット技術子供育成協会
Copyright ORJA All Rights Reserved.

プログラムの保存• しかりと改造できたプログラムが完成したとき– プログラムに新しい番号を付け上書き保存するプログラムの名の末尾に番号を付け、これを増やす

7

岡山ロボット技術子供育成協会
Copyright ORJA All Rights Reserved.

プログラムの保存• 今あるプログラムから、大幅な改造をしようと思ったとき– 最初にプログラムに新しい名前を付け上書き保存するプログラムの名を変え新しい小さな番号を付ける

8

岡山ロボット技術子供育成協会
Copyright ORJA All Rights Reserved.

シリアル通信とシリアルモニタ信号の値を見る

9

岡山ロボット技術子供育成協会
Copyright ORJA All Rights Reserved.

シリアル通信• デジタル信号を1bitずつやり取りすること• デジタルでの最も基本的なデータ取り扱い– ごく簡単な装置でほとんどのデジタル機器についている10

岡山ロボット技術子供育成協会
Copyright ORJA All Rights Reserved.

シリアルモニタ• 1bitずつ送られてくるデータを表示する• 人間が確認できるので装置の状態を知ることが出来る

11

岡山ロボット技術子供育成協会
Copyright ORJA All Rights Reserved.

センサの値を見てみよう

12

岡山ロボット技術子供育成協会
Copyright ORJA All Rights Reserved.

センサの値を読む• センサの値を見るためにArduinoのシリアルモニタまたはシリアルプロッタを利用します– Ardublockでセンサの値をパソコンに送る– ArduinoIDEで送られてくる値を表示する

13

岡山ロボット技術子供育成協会
Copyright ORJA All Rights Reserved.

Ardublockのシリアル通信• 下図のようにブロックを組んでロボットへアップロードして下さい• アップロードできたらシリアルモニタを見てみましょう

14

岡山ロボット技術子供育成協会
Copyright ORJA All Rights Reserved.

ボタンの値を表示する
messageと表示されていた部分をクリックすると黒く反転する。この状態で自由な英数字に変更できる

表示したい文字を設定「_Button20:」

GP20番の値を文字に変換し前の文字につなぐ15

岡山ロボット技術子供育成協会
Copyright ORJA All Rights Reserved.

２つのボタンの値を表示する
２つのボタンの値を表示するプログラムを作ります※ 表示される値が何の値かわかるように、”message”の部分を修正しましょう※ メッセージを表示したあとに、改行するかどうかを「真」「偽」で指定します
16

岡山ロボット技術子供育成協会
Copyright ORJA All Rights Reserved.

ボールセンサの値を表示する「シリアルプロッタ」を使ってみましょう

17

岡山ロボット技術子供育成協会
Copyright ORJA All Rights Reserved.

数字の変化を見てみよう• ボタン– 各ボタンが押された時の値• ボールセンサ– ボールが無いときの値– ボールがロボットの目の前にあるときの値– ボールが30cm前にあるときの値18

岡山ロボット技術子供育成協会
Copyright ORJA All Rights Reserved.

センサの値 よくある質問1「センサの信号を見ると、何もしていなくても、増えたり減ったりして安定していない」

信号は安定しない それが当たり前

19

岡山ロボット技術子供育成協会
Copyright ORJA All Rights Reserved.

センサの値 よくある質問2「センサの数値は何を表している？
距離？単位は何？」

具体的な意味はない
電圧の大小を10bit(1024段階)で表現している
単位は無し

20

岡山ロボット技術子供育成協会
Copyright ORJA All Rights Reserved.

フロー制御121

岡山ロボット技術子供育成協会
Copyright ORJA All Rights Reserved.

基本的な流れ組み込み型ソフトウェア
セットアップずっと実行

22

岡山ロボット技術子供育成協会
Copyright ORJA All Rights Reserved.

条件分岐1

比較
なら〇〇

23

岡山ロボット技術子供育成協会
Copyright ORJA All Rights Reserved.

条件分岐2

ならでなければ比較

〇〇

✕✕

24

岡山ロボット技術子供育成協会
Copyright ORJA All Rights Reserved.

条件文の決まりごと•

プログラミング特有の表現で、条件が成立することを「真/true」、不成立を「偽/false」と表現する•

ArduinoIDEで採用されているプログラミング言語”C/C++”では、条件が「真/true 」の場合には1が、「偽/false 」場合には0が、比較式から値として出力される– 例ではD27(GPIO27)から出力される値が200よりも大きい場合”1”が200よりも小さい場合は”0”が出力される

25

岡山ロボット技術子供育成協会
Copyright ORJA All Rights Reserved.

ボールセンサ
ボールを見つけたらLEDを光らす

26

岡山ロボット技術子供育成協会
Copyright ORJA All Rights Reserved.

ボールとボールセンサの仕組み• 家電製品のリモコンの赤外線発光素子が使われている– ボールが発する信号は40kHzの周波数で変調された赤外線(日本のリモコンは38kHz)• 赤外線LEDが波長940nmの赤外線を出している

27

岡山ロボット技術子供育成協会
Copyright ORJA All Rights Reserved.

ボールとボールセンサの仕組み• リモコン受光素子をボールセンサとして利用– 皆さんのロボットではVishay社” TSSP58038”を利用

電子部品を購入するときはあわせてデータシートも入手する

28

岡山ロボット技術子供育成協会
Copyright ORJA All Rights Reserved.

センサの基本

外部の情報により抵抗値が変化するものをセンサとして利用する
外部環境の変化により抵抗値が変化することで出力される電圧が変化する

29

岡山ロボット技術子供育成協会
Copyright ORJA All Rights Reserved.

準備1 ボールセンサの調整
1. シリアルモニタを表示
2. どちらかのボールセンサについている半固定抵抗を回してみて、おおよそ中央に設定する
3. もう一方のボールセンサの値を見ながら、先程の値とほぼ同じ値になるように、半固定抵抗を左右に少しずつまわし調整する

30

岡山ロボット技術子供育成協会
Copyright ORJA All Rights Reserved.

準備2 ボールセンサ値の確認
1. シリアルモニタを表示
2. ボールの位置によって左右のセンサ値がどうなるか記録する
3. 左右のセンサの値に差があまりないときはセンサの向きを外向きに変えてみる31

岡山ロボット技術子供育成協会
Copyright ORJA All Rights Reserved.

練習問題1
ボールに向かってロボットを前進させ、右ボールセンサの値が300より小さくなったらLEDを光らせましょう

32

岡山ロボット技術子供育成協会
Copyright ORJA All Rights Reserved.

ボールが近いとLEDを光らせるはじめ前に進む

ボールセンサの値が300以下

ならLEDを光らせる33

岡山ロボット技術子供育成協会
Copyright ORJA All Rights Reserved.

練習問題2ロボットをその場で回転させて、右ボールセンサの値が400より小さいときは好きなLEDを光らせ、400より大きいときはLEDを消しましょう

34

岡山ロボット技術子供育成協会
Copyright ORJA All Rights Reserved.

ボールが正面にあるとLEDを光らせる
はじめ

その場でゆっくり回転する

ボールセンサの値は400以下でなければLEDを消す

ならLEDを光らせる

35

岡山ロボット技術子供育成協会
Copyright ORJA All Rights Reserved.

練習問題3ロボットをその場で回転させて、左右のボールセンサの値が両方とも３５０より小さいときはLEDを光らせ、そうで無い時はLEDを消しましょう

ヒント：AND条件(かつ条件)を使います36

岡山ロボット技術子供育成協会
Copyright ORJA All Rights Reserved.

練習問題4ロボットをその場で回転させて、左右のボールセンサの値の差が30以下の場合LEDを光らせましょう
ヒント：計算式を使います37

岡山ロボット技術子供育成協会
Copyright ORJA All Rights Reserved.

練習問題5ロボットをその場で回転させて、左右のボールセンサの値の差がxxx以下の場合、ロボットを前進させましょう

xxxの値は自分で決めましょう

38

岡山ロボット技術子供育成協会
Copyright ORJA All Rights Reserved.

試合に向けて39

岡山ロボット技術子供育成協会
Copyright ORJA All Rights Reserved.

大会の競技種目• サッカーリーグ– オープンクラス– ライトウェイトクラス– ビギナーズクラス (Nipponリーグ)• レスキューリーグ
– メイズ
– ライン
– ライン(Nipponリーグ)• レスキューシミュレーション• オンステージ40

岡山ロボット技術子供育成協会
Copyright ORJA All Rights Reserved.

クラスによるルールの違い
フィールド

ボール

ロボット規格

ゴルフ
ボール

オープン

電源電圧： 15V以下
モータ数： 制限無し
サイズ：
高さ・直径18cm未満
重量：2200g
ボール保持エリアの奥行き：
1.5cm以内

ライトウェイト

電源電圧： 12V以下
モータ数： 制限無し
サイズ：
高さ・直径22cm未満
重量：1100g
ボール保持エリアの奥行き：
3cm以内

パルス発光
ボール

BフィールドAフィールドまたはBフィールド

ビギナーズ

41

電源電圧： 9V以下
モータ数： 2個サイズ：
高さ・直径22cm未満
重量：1100g
ボール保持エリアの奥行き：3cm以内

岡山ロボット技術子供育成協会
Copyright ORJA All Rights Reserved.

ビギナーズクラスレギュレーション
大きさ

直径22cm高さ22cmの円柱に入るサイズ
ボールが3cm以上ロボットに食い込む凹みは禁止

重さ 1100g以下禁止される色 青（ブルー）・黄（イエロー）・橙（オレンジ）
ハンドル

ハンドルは高さは他の部品から5cm以上うえにあり誰でも一目でハンドルとわかること禁止されるセンサ 赤外線を発するセンサ 例：赤外線測距センサ
電源電圧 9V以下 （リチウムイオン二次電池禁止）

大会当日は車検でロボットがレギュレーションに則っているか調べられます42

岡山ロボット技術子供育成協会
Copyright ORJA All Rights Reserved.

試合ルール

中立点

43

岡山ロボット技術子供育成協会
Copyright ORJA All Rights Reserved.

試合ルール• 特殊なルール– ラック・オブ・プログレス（試合進行の停止）• 試合の進展が見られない場合→主審がカウント開始を宣言し3カウントの後、ボールを中立点に移動する。
→それでも試合に動きが見られない場合は、更に3カウントし異なる中立点にボールを移動する→中央中立点にボールを移動しても、試合に進展が見られない場合は「リスタート」となる– リスタートは各チームのロボットをセンターサークル外に置き、主審の合図に合わせ、ロボットをスタートさせる• ロボットがボールを押し合い、動きが無い場合（スタック）→審判はスタックを宣言し、ただちにボールを最寄りの中立点に移動する

44

岡山ロボット技術子供育成協会
Copyright ORJA All Rights Reserved.

試合に必要なこと• 僅かな工夫が勝敗を決める– 小さな工夫を積み上げる– 一人で考えるよりも話し合う• アイディアを出し合う– 人のアイディアに自分の考えを足してみる– 人のアイディアを否定しない– 試合相手のロボットの良いところを見つけマネをする45

岡山ロボット技術子供育成協会
Copyright ORJA All Rights Reserved.