CNC製図装置を作る
パターンを描き、タスクを正確に実行し、タスクを繰り返すことができる機械を設計、組み立て、プログラミングしましょう。
レッスンプラン
準備
- こちらの先生向け資料をお読みください。
- 必要に応じて、EV3 ラボソフトウェアまたは EV3 プログラミングアプリに入っている導入用資料を使いながらレッスンを計画します。これにより、生徒が教育版レゴ® マインドストーム® EV3に慣れることができます。
興味付け (30分)
- 「ディスカッションを活性化させる」*セクションのアイデアを参考に、生徒の学習への関心を喚起します。
- プロジェクトの説明 -生徒にペアを組ませます。
- 生徒にブレインストーミングの時間を与えます。
探求 (30分) -
- プロトタイプを複数製作するよう指示します。
- 本体とプログラミングの両方で複数のアイデアを試すよう促します。
- 各ペアに2つのアイデアを制作させ、動作をテストさせます。
- 大きなグラフ用紙と色鉛筆またはマーカーを配布します。
説明 (60分) -
- 生徒に2つのモデルの動作をテストし、優れた方を選ぶよう指示します。
- 各ペアに自分たちでチェック表を作成できていることを確認させます。
- 各ペアがプロジェクトの仕上げをし、作業プロセスを記録するのに必要な資料をまとめる時間を設けます。
仕上げ (60分) -
- 生徒が最終レポートを作成する時間を設けます。
- 各ペアがクラスの前で成果を発表する発表タイムを設けます。
評価 -
- それぞれの生徒に取り組みを評価して伝えます。
- 評価の際は、以下に提示するルーブリックを参考にすると良いでしょう。
ディスカッションを活性化させる
コンピューター数値制御 (CNC) 装置は事前にプログラムされた指示に従って、工具を1本または複数の軸に沿って正確にコントロールします。CNCは主に、コンピューターで作成されたデジタル形式の設計図をもとに製品を加工する、コンピューター統合生産で使用されています。
活発なブレインストーミングになるよう促します。
生徒に以下の質問について考えてもらいましょう:
- CNC装置とは何ですか?どの分野で使われていますか?
- 鉛筆やマーカーを固定する最適な方法は何でしょうか?
- 鉛筆やマーカーを2軸方向に動かすにはどのような駆動メカニズムを使えばよいでしょう?
- どのような設計の機能によって、装置の動きが正確で繰り返し可能であることが保証されますか?
ブレインストーミングで思いついた全てのアイデアと、最初のプロトタイプに選んだアイデア、選んだ理由を記録するよう促します。このプロジェクトでアイデアの有効性をどのように評価するのかを考え、記録してもらいます。こうすることで、見直しや修正を行う際にアイデアを評価し、効果的に問題を解決できるかどうかを判断する評価基準として使うことができます。
発展課題
国語の発展課題
言語能力を発達させるために、生徒に以下のタスクに取り組んでもらいます:
オプション 1
- 文章やスケッチ、写真などを使って設計プロセスの概要をまとめ、最終レポートを作成する。
- 最初のアイデアから完成モデルまで、設計プロセスを解説するビデオを作成する。
- 自分たちのプログラムについてのプレゼンテーションを作成する。
- 自分たちのプロジェクトを、同じようなシステムを使った実社会での実用例と比較しながら、制作したモデルをもとに開発できる新しい発明品を発表するプレゼンテーションを作成する。
オプション 2
また、このレッスンではCNC製図装置を制作しました。CNC装置はエンジニアが制作したコンピューター支援設計 (CAD) モデルを使用して部品や製品、試作品を製造します。このようなCADモデルは、コンピューターのローカルネットワークまたはクラウド上に保存されるデータによって構成されます。
- CAD 図面を単一のコンピュータに保存する場合と、ローカルネットワークに保存する場合、クラウドに保存する場合のメリットとデメリットについて議論し、まとめる。
- 学校や教育用ソフトウェアのプロバイダーには、生徒が作成したCAD 図面も含め、個人情報を保護する義務があることをふまえて、データプライバシーの定義と、生徒の課題をオンライン上に保存することとの関連性をまとめたレポートを書く。
- CAD 図面をオンライン上に保存しているエンジニアリング企業と、生徒のCAD 図面をオンライン上に保存している学校におけるデータセキュリティ上の問題を比較対照する。
数学の発展課題
このレッスンでは製図装置を制作しました。課題の内容が、特定の図形を描くことができる機械の制作だったと想像してください。特定の図形を描く機能を向上させたいとしたらどうでしょうか?解決方法の1つが、人工知能の一種である機械学習です。機械学習を利用するには、それぞれの図形の定義と、特定の図形を正確に製図することができたかを判断する方法を「教える」トレーニングデータをシステムに追加する必要があります。
数学スキルの向上を取り入れ、習得したスキルを機械学習のトピック(ここではトレーニングデータの使用)で応用するには、以下の課題に取り組ませてください:
- 3つの基本的な図形(円、正方形、正三角形など)の定義を書き、製図ロボットにそれぞれの図形を描かせるために定義をどのように変更すればよいかを特定する。
- 製図ロボットがそれぞれの図形を特定のサイズで描くことができるように定義を書く。
- 前のステップで書いた定義に基づいて、選択された図形を描くのに必要な動きを製図ロボットに教えるトレーニングデータ表を制作する。
数学分野の概念とスキルをこのトピックにさらに関連付けたい場合は、以下の質問をしてください:
- 人工知能とは何でしょうか?規定のコマンドとは何が違いますか?数学モデルは、人工知能と、シンプルなコマンドのリストを識別するうえでどのような役割を果たしていますか?
- ロボットが周囲を観察し、検出した図形を描く方法を学べるようにするには、ロボットのデザインにどのような変更を加えればよいですか?
組み立てのヒント
組み立てのアイデア
生徒が下のリンクからいくつか例を選び、組み立てる時間を設けてください。
選んだシステムの仕組みについて考えるよう促し、課題設定に対する解決策にどのように生かせるかブレインストーミングをしてもらいます。
テストのヒント
生徒にテストツールとテスト手順を自分たちで設計し、最適なものを選ぶよう促します。
生徒がテストを準備する際に以下のヒントをあげるとよいでしょう:
- すべてのテストで装置が同じ位置になるよう、グラフ用紙に装置の位置に印をつけます。
- マス目の目盛りを使って1 cm x 1 cmの正方形を測り、各テストの結果を記録します。
- 結果や考察を記録するチェック表を作成します。
- 予測内容と実際の結果を比較し、制作した装置の精度を評価します。
- テストを3回以上繰り返してください。
製作例
課題設定の条件を満たす製作例です:
プログラミングのヒント
EV3 MicroPython プログラム例
#!/usr/bin/env pybricks-micropython
from pybricks import ev3brick as brick
from pybricks.ev3devices import (Motor, TouchSensor, ColorSensor,
GyroSensor)
from pybricks.parameters import Port, Stop, Direction, Color, ImageFile
from pybricks.tools import wait
# Configure the turntable motor, which rotates the arm. It has a
# 20-tooth, a 12-tooth, and a 28-tooth gear connected to it.
turntable_motor = Motor(Port.B, Direction.CLOCKWISE, [20, 12, 28])
# Configure the seesaw motor with default settings. This motor raises
# and lowers the Pen Holder.
seesaw_motor = Motor(Port.C)
# Set up the Gyro Sensor. It is used to measure the angle of the arm.
# Keep the Gyro Sensor and EV3 steady when connecting the cable and
# during start-up of the EV3.
gyro_sensor = GyroSensor(Port.S2)
# Set up the Color Sensor. It is used to detect whether there is white
# paper under the drawing machine.
color_sensor = ColorSensor(Port.S3)
# Set up the Touch Sensor. It is used to detect when it is pressed,
# telling it to start drawing the pattern.
touch_sensor = TouchSensor(Port.S4)
def pen_holder_raise():
# This function raises the Pen Holder.
seesaw_motor.run_target(50, 25, Stop.HOLD)
wait(1000)
def pen_holder_lower():
# This function lowers the Pen Holder.
seesaw_motor.run_target(50, 0, Stop.HOLD)
wait(1000)
def pen_holder_turn_to(target_angle):
# This function turns the arm to the specified target angle.
# Run the turntable motor until the arm reaches the target angle.
if target_angle > gyro_sensor.angle():
# If the target angle is greater than the current Gyro Sensor
# angle, run clockwise at a positive speed.
turntable_motor.run(70)
while gyro_sensor.angle() < target_angle:
pass
elif target_angle < gyro_sensor.angle():
# If the target angle is less than the current Gyro Sensor
# angle, run counterclockwise at a negative speed.
turntable_motor.run(-70)
while gyro_sensor.angle() > target_angle:
pass
# Stop the motor when the target angle is reached.
turntable_motor.stop(Stop.BRAKE)
# Initialize the seesaw. This raises the Pen Holder.
pen_holder_raise()
# This is the main part of the program. It is a loop that repeats
# endlessly.
#
# First, it waits until the Color Sensor detects white paper or a blue
# mark on the paper.
# Second, it waits for the Touch Sensor to be pressed before starting
# to draw the pattern.
# Finally, it draws the pattern and returns to the starting position.
#
# Then the process starts over, so it can draw the pattern again.
while True:
# Set the Brick Status Light to red, and display "thumbs down" to
# indicate that the machine is not ready.
brick.light(Color.RED)
brick.display.image(ImageFile.THUMBS_DOWN)
# Wait until the Color Sensor detects blue or white paper. When it
# does, set the Brick Status Light to green and display "thumbs up."
while color_sensor.color() not in (Color.BLUE, Color.WHITE):
wait(10)
brick.light(Color.GREEN)
brick.display.image(ImageFile.THUMBS_UP)
# Wait until the Touch Sensor is pressed to reset the Gyro Sensor
# angle and start drawing the pattern.
while not touch_sensor.pressed():
wait(10)
# Draw the pattern.
gyro_sensor.reset_angle(0)
pen_holder_turn_to(15)
pen_holder_lower()
pen_holder_turn_to(30)
pen_holder_raise()
pen_holder_turn_to(45)
pen_holder_lower()
pen_holder_turn_to(60)
# Raise the Pen Holder and return to the starting position.
pen_holder_raise()
pen_holder_turn_to(0)
職業適性
この授業を楽しむことができた生徒は、以下の進路について興味がある可能性があります。
- システム建築エンジニア
- デジタルメディア編集者
学習評価
この学習におけるルーブリックの例
次のルーブリックを参考に、評価規準や判定基準を作成しましょう。
- 課題を部分的にこなした。
- 課題を十分にこなした。
- 期待を上回る達成度であった。
以下の成功基準を使用して、生徒の進度を評価します。
- 生徒は優先される条件と妥協できる点を考え、複数の設計案を評価することができる。
- 自主的に、実用的で独創的な解決方法を開発している。
- 生徒は、自分のアイデアをはっきりとわかりやすく伝えることができる。
自己評価
生徒たちが十分な性能データを収集できたら、それぞれの解決方法について考察するよう促します。
次のような質問をするとよいでしょう:
- あなたの解決方法は課題設定の条件を満たしていますか?
*ロボットの動作をさらに正確にすることはできますか? - クラスメートはどのような方法で問題を解決しましたか?
解決方法を改善する方法を2つ考えて記録するよう促してください。
生徒同士のフィードバック
フィードバックの時間を設け、各グループに、自分たちのプロジェクトとほかのグループのプロジェクトを評価させます。相互評価は建設的なフィードバックをするスキルだけでなく、物事を分析するスキルや、自分の意見の根拠として客観的なデータを使う力を育てるのに役立ちます。
教師用サポート
学習内容:
- 設計プロセスを用いて実生活に基づいた問題を解決する
大きなグラフ用紙またはマス目が印刷された紙
色鉛筆またはマーカー
数学:数学Ⅱ 2-(2)図形と方程式
数学A 2-(1)図形の性質
2-(3)数学と人間の活動
数学B 2-(3)数学と社会生活
数学C 2-(3)数学的な表現の工夫
情報(共通教科):
情報Ⅰ 2-(3)コンピュータとプログラミング
情報Ⅱ 2-(3)情報とデータサイエンス
2-(4)情報システムとプログラミング
2-(5)情報と情報技術を活用した問題発見・解決の探求
理科:科学と人間生活 2-(1)科学技術の発展
物理基礎 2-(1)物体の運動とエネルギー
2-(2)-(オ)物理学が拓く世界
物理 2-(1)様々な運動
2-(3)電気と磁気
理数:理数探求基礎 2-ア〜イ、
理数探求 2-ア〜イ
工業:第1 工業技術基礎〜第28コンピュータシステム技術
情報(専門教科):情報産業と社会、課題研究、情報の表現と管理、情報テクノロジー、情報システムのプログラミング、情報デザイン、コンテンツの制作と発信、情報実習
国語:現代の国語 [知識及び技能] 2-(2)話や文章に含まれている情報の扱い方
[思考力、判断力、表現力等] A話すこと・聞くこと、B書くこと
論理国語
国語表現 [知識及び技能] 2-(1)-エ、
[思考力、判断力、表現力等] A話すこと・聞くこと-(2)-オ、
B書くこと-(2)-イ、ウ
美術:美術Ⅰ〜Ⅲ 2-A-(2)デザイン、(3)映像メディア表現
総合的な探求の時間
文部科学省高等学校学習指導要領(平成30年告知)
http://www.mext.go.jp/a_menu/shotou/new-cs/1407074.htm