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

1

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

講習会の進め方• 第一回

ロボット作成• 第二回

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

ソフトウェア基礎編– 外界の情報をもとにロボットの動きを変える• 第四回

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

岡山ロボット技術子供育成協会
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.

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

13

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

ロボットとは?
• 人間に類似した形態をもち、自動的に作業を行う機械装置• 感じる、判断する、動くの三つがそなわっている
人工物※• 環境に溶け込み人の役に立つもの(見えないロボット)– 例：エアコン、洗濯機、テレビ、車※出典
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ロボ
コントローラボード
ラズペリーパイピコ互換機

ボールセンサ

ギアードモータ

19

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

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

20

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

Raspberry Pi （ラズペリーパイ）
Raspberry Pi 財団によって、教育で利用されることを想定して制作されたシングルボードコンピュータ
OSが載る本格的なコンピュータ

21

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

Raspberry Pi Pico（ピコ）Raspberry Pi財団が独自に開発したマイコン（RP2040）を搭載した開発基板
C / C++ / MicroPythonでプログラム開発ができる
Raspberry Piとは違いOSはない

22

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

コントローラボードMaker Pi RP2040
ご か ん き• Raspberry Pi Pico 互換機– Picoから追加されている機能• モータドライブ回路（２個）• ボタン（2個）• GROVE接続ポート（7個）• スピーカー• フルカラーLED（２個）• 入出力インジケータLED

23

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

準備 LEDとボタン
モータ端子
電源端子

モータ
テストボタン

GPIOステータスLED

電源スイッチ
ON/OFF

スピーカー
ON/OFFスイッチ

マイクロUSB
ポート

スピーカー

リセットボタン
ブートボタン

プログラマブルボタン

24

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

アルゴリズム26

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

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

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

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

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

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

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

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

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

合計

331回

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

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

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

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

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

合計41回

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

包丁をいれる(10回 + 31回)

方法1(331回)に比べ、290回少ない
30

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

ロボットへのプログラムの入れ方

35

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

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

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

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

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

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

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

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

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

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

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

コンパイル

機械語ダウンロード

37

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

プログラムをロボット入れる
ロボットとパソコンをつなぐ[Arduinoにアップロード] ボタンを押す

このメッセージが出たらOK
39

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

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

40

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

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

41

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

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

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

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

コンパイル

機械語
ダウンロード44

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

LEDを1秒明るくするアルゴリズム• 動きを細かく分解する
はじめLED(D5)をつける

GPIOポート：汎用入出力ポート（General Purpose Input/Output）
ソフトウェアで自由に入出力を制御できる ポート（端子）CPUから端子に信号を出力したり、端子に入力された信号をCPUに取り込んだりする
ArduBlockでは“D数字”/”A数字”で表している

一秒間待つ

LED(D5)を消す

おわり

45

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

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

LED(D5)をつける

一秒間待つ

LED(D5)を消す

おわり

46

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

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

処理の流れ

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

47

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

プログラム解説
GPIO5番をHIGHに設定

1000ミリ秒待つ

GPIO5番をLOWに設定『デジタル回路』は“0ボルト”と“最大電圧”の2つの電圧値だけを扱う
0ボルトをLOW、回路に流れる最大の電圧(MakerPi RP2040は3.3ボルト)をHIGHと呼ぶ
48

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

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

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

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

コンパイル

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

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

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

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

ロボットにプログラムを書込む準備2
ArduinoIDEのメニュー[ツール]-[ボード]から“Raspberry Pi Pico”が選ばれていることを確認します

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

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

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

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

動作確認

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

54

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

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

55

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

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

56

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

プログラムの管理について57

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

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

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

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

robot
フォルダを表示

名前をつけて[保存]ボタンを押す

保存が完了するとウィンドウタイトルが変わります59

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

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

60

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

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

61

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

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

62

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

プログラミングしてみよう
音を鳴らす

63

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

スピーカ

64

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

スピーカとは• 電気エネルギーを空気の振動に変える– 磁石とコイルを利用した物– 圧電素子を利用した物

65

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

ラの音を一秒間隔で鳴らす• 動きを細かく分析、分解する
はじめドの周波数でスピーカを動かす
1秒間待つスピーカを止める
1秒間待つ
おわり

音階
ドレ
ミ
ファ
ソラ
シ
ドレ
ミ
ファ
ソラ
シドレ
ミ
ファ
ソラ
シド

周波数（Hz）
130.815146.835
164.82174.62196220
246.94261.63293.67329.63349.23392
440
493.88523.23587.34659.25698.45783.98879.99987.751046.566

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

最近は聞かない

正午の時報を鳴らす

正午の時報
440Hzのラの音を0.1秒
0.9秒無音440Hzのラの音を0.1秒
0.9秒無音440Hzのラの音を0.1秒
0.9秒無音880Hzのラの音を1.5秒
無音

周波数
音階 （Hz）
ド 261.63
レ 293.67
ミ 329.63
ファ 349.23
ソ 392
ラ 440
シ 493.88
ド 523.2367

周波数
音階 （Hz）
ド 523.23
レ 587.34
ミ 659.25
ファ 698.45
ソ 783.98
ラ 879.99
シ 987.75
ド 1046.5

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

正午の時報を鳴らす
はじめ
音階周波数（Hz）

ド

130.815レ

146.835ミ

164.82ファ

174.62

ソ

196

ラ

220

シ

246.94

ド

261.63レ

293.67ミ

329.63

ファ349.23

ソ

392

ラ

440

シ

493.88ド

523.23レ

587.34ミ

659.25

ファ

698.45

ソ

783.98ラ

879.99シ

987.75ド

1046.5ラの周波数(440)でスピーカを動かす
0.1秒待つスピーカを止める
0.9秒待つ三回目か？
No

Yes

一オクターブ高いラの周波数(880)でスピーカを動かす
1.5秒待つスピーカを止める
5秒待つ

おわり

68

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

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

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

モータ

70

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

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

73

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

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

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

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

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

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

76

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

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

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

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

PWM
Pulse Width Modulation78

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

変調/復調• 信号を外部に送るために、変換することを「変調」、元の信号に戻すことを「復調」と呼ぶ
いろいろな方式がある
信号•振幅変調（amplitude modulation）•周波数変調(frequency modulation)•

パルスコード符号変調（pulse-code modulation）

79

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

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

80

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

ORJAロボ

左モータ
(M1)

右モータ
(M2)

81

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

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

82

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