ロボカップジュニア
サッカーロボット作成講習会
第二回 ロボット制御プログラム1

1

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

講習会の進め方• 第一回

ロボット制作• 第二回

ロボット制御プログラム1– ロボットを動かす/センサから外部の情報を取り込む• 第三回

ロボット制御プログラム2– プログラムのテクニック3

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

第二回の予定• 10:00〜10:30

導入 ロボットとは• 10:30〜11:30

LEDの点滅/プログラムの管理（昼休憩）• 12:30〜13:30

モータを動かす• 13:30〜14:30

センサの値を読む• 14:30〜15:15

課題演習• 15:15〜15:30

質疑応答/連絡事項• 15:30〜

解散(フィールドで自由にロボットを動かしてみてください)4

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

ロボカップの目的• 目標– 「 FIFAルールに従い2050年までにワールドカップチャンピオンチームに11台のヒューマノイドロボットで勝利する」• 目的– この過程で開発される多くの技術が様々な分野に応用されることにより、より豊かな社会が実現されることを期待する

5

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

ロボカップジュニアの目的• 最終目標に向けた次世代研究者の育成• ロボカップを通じたものづくり教育– 次のことを期待• 科学知識の習得• 科学的、論理的な考え方を身につける• 自ら工夫し挑戦する• だれとでも（大人・外国人）会話できる

6

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

本講習会の目的
ロボカップジュニアの大会に出場するために
1. ロボットの基本的なしくみを理解する

2. ロボットを思いどおりに動かせるようにプログラミング

3. ロボットの改造
4. ルールと戦略(どう戦えばいいか)を理解

7

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

学習のポイント1• メモする– 目的、目標– やること、やったこと(計画)– 観察したこと（事実）– ひらめいたこと、思いついたこと（思い）– 聞いたことなど 何でも8岡山ロボット技術子供育成協会
Copyright ORJA All Rights Reserved.

学習のポイント2
ひらめく/予想を立てる

修正
する

やってみる

重要
どうだったか考える9

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

お願い 子供たちに質問があるときは手をあげて自分で質問して下さい

10

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

お願い 保護者の方へ• 子供は要領よくできませんが、できるだけ見守ってやってください– コツを教えてあげてください– 力が足りないときは手伝ってやってください• スタッフを呼ぶのはお子さんにさせてください11

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

サッカーロボットのしくみ

13

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

ロボットとは?
• 人間に類似した形態をもち、自動的に作業を行う機械装置• 感じる、判断する、動くの三つがそなわっている人工物• 環境に溶け込み人の役に立つもの(見えないロボット)– 例：エアコン、洗濯機、テレビ、車※出典
14

東嶋和子著『ロボット教室』光文社
岡山ロボット技術子供育成協会
Copyright ORJA All Rights Reserved.

ロボットって?
こっち「Dr.スランプ」より「PLUTO」より「機動戦士ガンダム 水星の魔女」より

15

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

自律行動
まわりがどうなってボールの位置を調べる

いるかを知る
指示された通り移動する

進むべき方向と速度を決める

何をする

動くか考える16

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

ロボットに自律行動をさせるには?
• 課題を解くための手順を考える⇒アルゴリズム• 手順をロボットにわかる言葉に書きかえる⇒

プログラミング17

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

ロボット工学
Wikipediaより

18

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

ORJAロボ
コントローラボード
Arduino互換機

ボールセンサ

ギアードモータ

19

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

Arduinoとはイタリア生まれの教育用マイコンとプログラミング環境– デザイン科の学生向けに作られたのでプログラムしやすい– ハードウェア/ソフトウェアとも誰でも使用料なしで勉強できるようになっている• 知りたいことがインターネットで見つかる• たくさんの増設ボードが販売されている

20

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

コントローラボード
ご か ん き• Arduino互換機 DFRobot社RomeoV2– Arduino Leonard互換• Arduino用のプログラム・増設ボードを使える– 標準機から追加されている機能• モータを動かす回路（２個）• ボタン（5個）• センサー接続ピン– 各信号線に5V/GNDを増設– I2C用専用ピン増設（3セット）• 無線通信増設口

21

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

コントローラボード
デジタル入出力ピン
0〜13

アナログ入力ピン
0〜5

22

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

準備 LEDとボタン
デジタル13番ピンにつながった
LED

電池の電力を電子回路に使うかどうかのスイッチ（ONに設定）

アナログ0番ピンにつながるボタン
アナログ0番ピンとボタンをつなぐかどうかの切替スイッ
チ(ONに設定)
23

リセットスイッチ

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

アルゴリズム24

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

アルゴリズムとは?
• コンピュータで計算を行うときの「計算方法」• 何か物事をやるときの「やり方」• 「やり方」を工夫して、よりよいやり方を見つけていきます

国立情報学研究所のホームページ
http://research.nii.ac.jp/~uno/algo_3.htm
25

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

より良いアルゴリズムとは星形にんじんを30枚作るには、何回包丁を使う?

国立情報学研究所のホームページ
http://research.nii.ac.jp/~uno/algo_3.htm
26

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

より良いアルゴリズムとは30枚作るには?

輪切り :31回包丁をいれる

合計

331回

星型切り:
1枚づつ10回包丁をいれる

包丁をいれる(31回+10回×30枚)
27

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

より良いアルゴリズムとは30枚作るには?

星型切り:
10回包丁をいれる

輪切り:
31回包丁をいれる

合計41回 包丁をいれる(10回 + 31回)
方法1(331回)に比べ、290回少ない
28

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

パソコンの使い方とロボットへのプログラムを入れる準備29

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

マウスの使い方
クリック : 左ボタン(人差し指)を押してすぐに離す
ダブルクリック : クリックをすばやく2回する
ドラッグ : 左ボタンを押したままマウスを移動する

マウスカーソル30

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

ArucuBlockを動かす1••

パソコンの画面を“デスクトップ”といいます
デスクトップにある「ORJA講習会」フォルダのなかのArduino.exeをダブルクリックします.exeが表示されていないパソコンもあります•

ArduinoIDEが動き出します– “IDE”とはIntegrated Development Environment(統合開発環境)の略称です31

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

ArduBlockを動かす2•

ArduinoIDEのメニューから[ツール]-[ArduBlock]を選びます•

ArduBlockが動きます32

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

プログラム実行までの流れ
1. パソコン上でプログラムを作成–

人がわかる言葉・図形で表現

2. コンパイル ・リンク–

ロボットがわかる言葉に変換–

あらかじめ用意されているプログラムと合体

3. ロボットへダウンロード（アップロード）–

パソコンからロボットへプログラムを送る

4. ロボット上でプログラムを動かす
33

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

プログラム実行までの流れ
プログラム

コンパイル

機械語ダウンロード

34

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

ロボットにプログラムを書込む準備1• ロボットとパソコンをUSBケーブルで接続してください– ケーブルをつなぐ前にロボットの電源がオフになっていることを必ず確認してください
ロボットが急に動き出し机から落ちることがあります36

岡山ロボット技術子供育成協会
Copyright ORJA All Rights Reserved.ロボットにプログラムを書込む準備2
ArduinoIDEのメニュー[ツール]-[ボード]から“Arduino Leonard”が選ばれていることを確認します

Arduinoメニューの[ツール]-[シリアルポート]から“COMx (Arduino Leonard)”が選ばれていることを確認します37

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

プログラミング
LED点滅 (Lチカ)38

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

LED• LED(Light Emitting Diode)：発光ダイオード

39

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

LEDの原理• 励起発光• エネルギー変換効率– ろうそく– 白熱電球– 蛍光灯– 高電圧放電管– LED照明– 蛍～0.04%
～5％
～15％
～25%
～40％
～40%
40

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

プログラムを作ってみよう
プログラム

コンパイル

機械語
ダウンロード42
いらすとや

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

LEDを1秒明るくするアルゴリズム• 動きを細かく分析、分解する
はじめ

LEDをつける

一秒間時間を測る

LEDを消すおわり

43

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

LEDを点灯するプログラム• LEDを1秒間点灯するプログラム
はじめ

LEDをつける

一秒間時間を測る

LEDを消すおわり

44

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

LEDを点灯するプログラム
LEDを一秒間点灯するプログラム

処理の流れ

プログラムは上から順番にひとつずつ実行される

45

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

プログラム解説
13番デジタルピンをHIGHに設定
1000ミリ秒待つ

13番デジタルピンをLOWに設定『デジタル回路』は“0ボルト”と“電源電圧値”の2つの電圧値だけを扱う
0ボルトをLOW、電源電圧値(RomeoV2は5ボルト)をHIGHと呼ぶ

46

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

単位の接頭辞について• セント• %(パーセント)– cm(センチメートル)– 100分の1– パーとは割ることを意味している– セントで割る→百で割る• ミリ– mm(ミリメートル)– mg(ミリグラム)– 1000分の1(1/1000)• ‰(パーミル)– 千で割る• マイクロ– μm(マイクロメートル)– μg(マイクログラム)– μ秒(マイクロ秒)– 100万分の1（1/1000000）
47

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

コンパイル・ダウンロード
プログラム

コンパイル

機械語ダウンロード

48
いらすとや

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

ロボットにプログラムを書込む[Arduinoにアップロード]ボタンを押します「ボードへの書き込みが完了しました。」と表示されたら、正しくロボットにプログラムが入っています

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

動作確認

自分の思ったとおりの動きをしましたか？

50

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

デバッグ
自分の思いとは違う動きをした場合はプログラムを修正する→ これを「デバッグ」というArduinoはプログラムを繰り返し実行する

51

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

LEDを点滅するプログラム• LEDを1秒ごとに、つけたり消したりするプログラム
はじめ
LEDをつける
1秒間時間を測る
LEDを消す1秒間時間を測る
おわり

52

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

プログラムの管理53

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

プログラムの管理• 最初にプログラムの置いておく場所を決める– ここではデスクトップに”robot” というフォルダを作ることとします（名前は好きな名前でもOK）• デスクトップ上でマウスを右クリックし[新規作成]-[フォルダー]を選択• フォルダが出来たら名前を「robot」に変えます54

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

プログラムの保存1• 最初にプログラムの保管する場所をするときウィンドウタイトルが「ArduBlock untitled*」(プログラムに名前が付けられていない)[保存]ボタンを押す

robot
フォルダを表示

名前をつけて[保存]ボタンを押す
保存が完了するとウィンドウタイトルが変わります55

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

プログラムの保存2• 保存しているプログラムを修正し保存をするとき– プログラムの保存後、内容を少しでも修正すると、ウィンドウタイトルの末尾に”*”マークが表示される– ある程度プログラムを修正したら、念のためプログラムを保管する[保存]ボタンを押すと、上書きで内容が保存される

56

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

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

57

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

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

58

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

プログラミング
ロボットを走らせる59

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

モータ

60

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

モータの回転を制御するには

モータ
電池

63

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

モータの回転を制御するには64

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

モータの回転を制御するには65

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

Hブリッジ• モータの回転方向を制御する

66

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

トランジスタとは信号によって電気を流したり、止めたりっする

小さな信号を何倍にも大きくする※「20世紀最大の発明」といわれているIC（集積回路）には無数のトランジスタが入っています67

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

PWM
Pulse Width Modulation68

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

モータドライバ
モータを強く駆動するための電子回路
コントローラの出力では電力が足りずモータを強力に駆動できないモータドライバを用意する必要あり

70

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

ORJAロボ

左モータ
(M2)

右モータ
(M1)

71

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

前進させてみよう• 1秒間前進して3秒止まるアルゴリズム例
はじめ
左右のモータを100の力でまわす
1秒間時間を測る

モータを止める

3秒間時間を測る

おわり

72

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

• ここからは資料をみて問題を解いてみてください。
（あせらなくても だいじょうぶです）• 質問がある人は手を挙げて下さい• 質問するときは、自分は何をどうしたいのか今どうなってしまうのか説明をして下さい• できた人は近くの先生に見せて下さい73

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

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

74

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

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

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

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

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

76

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

センサの基本

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

77

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

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

78

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

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

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

シリアルモニタ/シリアルプロッタ• 1bitずつ送られてくるデータを表示する• 人間がロボットの取り込んだ情報を知ることが出来るシリアルモニタシリアルプロッタ80

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

センサの値を見てみよう

81

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

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

82

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

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

83

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

Ardublockのシリアル通信
下図のようにブロックを組んでロボットへアップロードして下さい

アップロードできたらシリアルモニタを見てみましょう

84

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

Ardublockのシリアル通信
下図のようにブロックを組んでロボットへアップロードして下さい

アップロードできたらシリアルプロッタを見てみましょう

85

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

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

86

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

準備2 ボールセンサ値の確認
1. シリアルモニタを表示
2. ロボットの位置によって左右のセンサ値がどうなるか記録する

87

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

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

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

88

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

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

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

89

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

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

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

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

条件分岐を使うもし○○なら△△する

前に進む

ボールセンサの値は80以下?
いいえ
はい
LEDを光らせる91

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

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

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

ボールが近いとLEDを光らせる
条件分岐を使う
はじめ

もし○○なら△△する
そうでないときは××する

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

いいえ ボールセンサの値は はい100以下?

LEDを消す

LEDを光らせる93

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

練習問題3ロボットをその場で回転させて、左右のボールセンサの値が両方とも100より小さいときはLEDを光らせ、そうで無い時はLEDを消しましょう
ヒント：AND条件(かつ条件)を使います94

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

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

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

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

96

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

練習問題6
左右のボールセンサの値の差が100以下のとき、ロボットを前進させましょう
そうで無いときはボールのある方向にロボットを回転させましょう

97

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

次回の準備
ただしリチウムイオン電池は禁止• 電池単三型6本×数セット– 乾電池(一次電池)でも充電式電池(二次電池)でも可• 電池がなくなったとき、六本のうち一本だけ交換することは止めましょう。節約のつもりがかえってたくさんお金が掛かります• ドライバー– ロボットのネジを確認して各自判断• 今日の配付物 + パソコン

• 他、自分で必要と思っったもの
98

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