D-Script 開発 - 基盤システムソフトウエア研究室

教育向けネットワークロボット
プラットフォームの提案
基盤システムソフトウエア研究室
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