教育向けネットワークロボット プラットフォームの提案 基盤システムソフトウエア研究室 AL11076 中山悟 1 背景(1) • プログラミングの授業では、開発能力の向上が重要 – 扱う教材に依存する部分もある • ロボット教材の導入 – ロボットが動く → 直感的に把握できる – CやC++言語などで基礎的な動作の実現 – PBL(Project Based Learning) ・・・複数人が1台のロボットの開発を共同で行う • 実際の動作をみる必要 + 教員がそれを把握する必要 2 背景(2) • 実際に開発能力が向上したことを調べるために・・・ PSP(Personal Software Process) – エンジニアの開発能力 – どの程度の量のプログラムをどの程度の時間で作成できるか • しかし、学生の場合、コード生産性 ≠ 開発能力 3 背景(3) • 複数回のprint文を実行するプログラム作成を考える ① while文を使う while (int i = 0; i < 5; i++) { printf(“ぷりんと文¥n”); } ② 目標回数分ひたすら書く printf(“ぷりんと文¥n”); printf(“ぷりんと文¥n”); printf(“ぷりんと文¥n”); printf(“ぷりんと文¥n”); printf(“ぷりんと文¥n”); • コード生産性は高いが、能力があるとは言えない 目標を達成するまでの過程を把握することも必要 4 問題 • 教育におけるロボット開発能力の向上につながる支援を検討 • プログラムの内容、開発過程をみる必要がある – ものを動作させるのに必要なコードが書かれているか – 使用されたAPI、その引数 – 目標達成時間に向けて,どのような過程で修正されているか – 実行時刻、修正時間 5 目的/提案 • 目的 – プログラムの内容、開発過程の把握により教育におけるロボット 開発に必要な支援の検討を行う • 提案 – ログを収集するプラットフォームを提供する 6 設計(システム構成図) ロボット 実行命令 実測値 マルチタスクサーバ PC 理想値・実測値 書き込み データ格 データ格 理想値・実測値情報データ追記 納ファイ 納ファイ 更新を監視 モニタ ル ル 追記処理完了通知 7 ロボットAPI設計 • iRobot Create • COIL(Create Open Interface Library) • C言語 • 教材API – 通信開始: connect() 通信終了: disconnect() – 前進 : forwardDistance(v, d) … 速度vで距離dだけ前進して停止する – 回転 : turnAngle(v, r) … 速度vで角度rだけ回転して停止する • ログ出力API – log(func, [opt0, opt1, …]) 8 教材開発(1) • チキンレース – 前進(forwardDistance)のみを用いて、出来るだけゴール(2m)に近い 位置で停止させる – スタート後に徐々に加速し、ゴールの前で徐々に減速することで誤差 を縮めることができる 誤差 加速 減速 ゴール 進行方向 2m • フリー – 音楽に合わせて、3分間動作するプログラムを作成する 9 教材開発(2) #include <createoi.h> #include <stdio.h> void int main() { int velocity = 0; //速度 connect(); //通信開始 // 加速処理 while (velocity < 300) //速度がある値になるまででループ { if (velocity == 0) { velocity = 200; //初期速度を設定 } else { velocity += 50; //2回目以降,加速 } forwardDistance(velocity, 100); //前進 } 徐々に加速 // 前進 forwardDistance(velocity, 1400); //前進 // 減速処理 while (velocity > 0) //速度が0(止まる)まで ループ { velocity -= 50; forwardDistance(velocity, 100); } disconnect(); //通信終了 徐々に減速 } 10 予備実験 • 目的 – 解析を行うための情報の調査 – ログ出力による情報の収集 • 対象 – 2014年 7/7, 7/14の2日間 本学1年生約100人 – 2014年 7/18 本学3年生約80人 • 10人ずつのグループに分けて、ロボットと開発環境をもつ PCをそれぞれのグループに用意した • 教材のプログラムを作成させて、その開発過程のログを 取得した – チキンレースは、加速と減速をするサンプルプログラムを提示 11 予備実験で得られたデータ 回の試行 1 グループ番号 関数の行番号 日付 時刻 実行した関数 関数の引数 12 予備実験のデータ分析(1) • チキンレースのログを抽出した • forwardDistance関数の速度パラメータで分析を行った • 1年生と3年生で習熟度に違いがあるか 13 予備実験のデータ分析(2) • どのように開発が行われたか 試行1回 試行2回 試行11 – 2パターンに分類された 試行11 目目 回目 forwardDistanceの速度パラメー forwardDistanceの速度パラメータ推移 回目 600 試行2回 目 500 速 度 400 パ ラ 300 メ 200 タ 100 試行1回 目 ー ー 1200 速 1000 度 パ ラ800 メ 600 タ 400 タ推移 200 0 0 時間 -100 一定の速度で走るだけのプログラム 時間 加速と減速をするプログラム 14 予備実験のデータ分析(3) • 1年生と3年生との開発能力を比較 – 加速と減速を使ったプログラムを作成した割合 • 1年生 ・・・ 1/10グループ(10%) • 3年生 ・・・ 3/8グループ(37.5%) 開発能力に 差がみられた 実際の動作と、プログラムの両方の視点から教育できる 15 今後の課題 ロボット 実行命令 実測値 マルチタスクサーバ PC 理想値・実測値 書き込み データ格 データ格 理想値・実測値情報データ追記 納ファイ 納ファイ 更新を監視 モニタ ル ル 追記処理完了通知 16
© Copyright 2025 ExpyDoc