本文
【ブログ】くろまろ塾 ロボットプログラミング講座 その2
くろまろ塾本部講座 基礎から学ぶ ロボットプログラミング講座 ~RoboRAVE (ロボレーブ)大阪大会を目指そう~
(その2:プログラミング実習2回目)
印刷ページ表示 更新日:2024年7月○○日更新
◆今回のレポート
こんにちは。 くろまろ塾運営ボランティアスタッフの栗栖です。今回は、6月22日開催の 「基礎から学ぶ ロボットプログラミング講座」2回目で実施された 「プログラミング実習」 についての記事です。
出席者は20名。1回目欠席で初めての人が2名いますが、助手のアラタ先生などが支援します。
◆導入
最初に、講師のヒロ先生から7月7日(日曜日)開催の「RoboRAVEオープン大会(南港特設会場)」への出場案内や、10月末開催予定の「RoboRAVE(ロボレーブ)2024大阪大会」への参加の促しが行なわれました。そして、「生活機器のほとんどがプログラムで動いている」 という導入話題からプログラミング実習がスタートしました。
図1)生活機器のほとんどがプログラムで動いている
◆プログラミング実習
(1)1秒前進、1秒後退して車型ロボットを止める
第1回の復習を兼ねて、自身でプログラミングして実行することが要求されました。受講者は、手順を思いだしながらプログラミングに挑み、1秒前進、1秒後退を上手く実行していました。
(2)1秒前進、1秒後退を永久に行なう
ヒロ先生から、「前進や後退」、「センサーを使う」などのアクションを永久に行なわせるときに用いるコマンド(命令) Loop の解説が行なわれました。
- ipadのプログラミングソフト 『C-Style』 でWhile→Loop→(無条件ループの√) を順次選択していくと While end while の2つのコマンドが上下に表示される。
- 「前進や後退」、「センサーを使う」などのアクションコマンドを、この2つの間に入れるとアクションが永久に続く。
- プログラムを作成し、ロボットへダウンロードして完成。
ここで、再度、自分で考えてプログラミングすることが求められました。要領は、モーターのアイコンから入る 「モーター制御ウインドウ」や、砂時計のアイコンからの「時間待ちウインドウ」 を用いて、1秒前進、1秒後退のプログラムを組込んでいきます。なお、図2)は、「モーター制御ウインドウ」で左右のモーター出力を変更すると、モーターのアイコンが変身することを表しています。(○○%の数値は例)
図2)モーターのアイコンの変身
ヒロ先生とアラタ先生は、机を巡回して適切助言するなどして辛抱強く見守ります。慣れた手つきでさっさと進める受講生もいれば、助けを求める人もいますが、皆夢中で楽しそうです。図3)は、数分後に解説された正解です。
図3)1秒前進、1秒後退のプログラム
しばらくして、受講生の皆が 「1秒前進、1秒後退」 の継続に成功し、とても満足そうでした。図4)参照
図4)1秒前進、1秒後退の継続
(3)机から落ちそうになったら車型ロボットを止める
ヒロ先生から、「if文」の解説が行なわれました。机から落ちそうになった車型ロボットを止めるには、 if の後に条件式 「CN1<15%」 を挿入し、その条件が正しければ左右のモーター出力を0%にして停止します。正しく無ければ else の次の、左右のモーター出力を50%にして直進を継続します。次項の 図5)参照
注)CN1は下向きのセンサーで、車型ロボットから赤外線が発光され反射光の強さをチェックしていると考えられます。
(4)机から落ちそうになったら車型ロボットを止めて、ランプを点灯させる
ランプの点消灯は、前記のモーター出力の設定の次ぎLEDランプのアイコンを選択し、「LED制御ウインドウ」で点灯はLED-L= on、消灯はLED-L= off を選択して組込みます。この際、LED-Lは左側のLEDランプ、LED-Rであれば右側のLEDランプを表します。図5)参照。
図5)机から落ちそうになったら止めて左ランプ点灯、
そうでなければ前進でランプ消灯
受講者の中には、手早く左右の黄色ランプを点消灯させるプログラミングを行った強者もいました。図6)参照
そして、しばらくして皆がプログラム通りに実行出来ることを確認して満足そうでした。図7)参照
図6)受講者作成のプログラムの例
図7)机から落ちそうになったら止めてランプ点灯成功の例
(5)ラインフォローイングの凹曲線に沿って車型ロボットを周回させる
内容が少しだけ高度になります。ヒロ先生から、「曲がる走行」の解説が行なわれました。図8)参照。
図8)曲線に沿って走行させる
ある受講生から、「シートの方を動かせば良い」 という逆転発想の提案(笑い)もありましたが、正解は「左右のモーター出力に差をつける」となります。図9)はその例で、センサーCN1の条件式で if CN1<15% が正しければ Left=-50% Right=50% にしています。左が-50%、右が+50%なので、その場で回転です。モーターのアイコンも左回転に変身しています。
図9)その場で左回転のプログラムの例
図10)では黒線に沿って走行していますが、尻を左右に振りながらで何となく不自然です。
図10)黒線に沿っての尻振り走行
図11)は、ヒロ先生が解説した「尻振り走行」になる原因の説明図です。CN1だけで黒線(の端)をチェックしているのでギザギザ走行することを表しています。
図11)CN1のみでの黒線チェック走行のイメージ
この尻振り走行は、右側のセンサーCN2を追加すると解決するということでした。例えば、人が細い道を片眼をつぶって歩くと不安定になるが、両目を開けて歩くとスムースに歩けるのと同じ、とのこと。
図12)は、2つのセンサーで黒線の両端をチェックするプログラムです。これにより、受講者は、ラインフォローイング走行をスムースに行うことが出来ました。
図12)CN1とCN2を組み込んだスムース走行のプログラム
(6)前方に障害物を検知したら車型ロボットを止める
この条件を満足するために前方センサーCN3を用います。ヒロ先生は、ここまでくれば「自分でプログラミング出来るはず・・・」として、考える時間を大きく取りました。ヒントは机の端で車を止める条件式の if CN1<15% の不等号の向きを反対にする(CN1>15%)ということでした。
ヒロ先生は、「分らん・・・」という受講者には「大丈夫、出来る!」と励ましていました。中にはさっとプログラミングし、紙で立てた障害物を検知して車型ロボットを止めることに成功した猛者もいました。
ヒロ先生が示した正解は図13)の通りですが、大方の受講者は時間切れで、衝突防止の安全装置を組み込んだ車型ロボットの走行は次回のお楽しみという雰囲気でした。
図13)前方に障害物を検知したら車型ロボットを止める
◆2回目講座の終了に当たって
ヒロ先生から、全プログラムの消去と車SWのOff、「if文」は重要なので次回で復習。そして、皆が打ち解けあって友だちの輪を広げよう。皆で興味を持って取組み、試合に出て勝負してみようという話で締めくくられました。
筆者の感想は、ヒロ先生の「受講者心理を良く理解した巧みな指導スキル」とディジタル世代の「受講生のイキイキとした取組み」の両方に感心したこと、そして「これならアナログ世代の私でも出来そうだな!」ということでした。(笑い)なお、この後は、7月20日の第4回と、最後の8月24日の第6回をレポートする予定です。
最後まで読んでいただいてありがとうございました。