ETロボコン2021 モデル審査
ETロボコン実行委員会
1

背景：求められている人材・解決策• 近年、技術変化などにより事業環境は変化し続けている• そのような中で現在・将来ともに不足している人材は「システム全体を俯瞰して思考できる人材」との結果
プロジェクトマネージャ・設計技術者も不足• また、開発の課題解決に「既存スキルの向上」「プロジェクトマネージャのスキル向上」「開発手法・開発技術の向上」が求められている• こうした人材の育成・スキル向上が急務※IPA「2019 組込み/IoTに関する動向調査 調査報告書」(https://www.ipa.go.jp/ikc /reports/20200331_2.html)より引用
ETロボコン2021 開催発表会資料／ETロボコン実行委員会

2

背景：開発現場の状況• 近年の組込み機器の高度化に伴い、ソフトウェアは大規模化・複雑化が進んでいる• 開発プロジェクトも既存のソフトウェアを改良する「派生開発」が大部分を占める• 保守年数も10年程度になるものが多い→ 特に若手がシステム全体を構築する機会が少なく、各種スキルを学んでも業務での活用ができないためモチベーションが上がらない※IPA「組込みソフトウェア開発データ白書2019」(https://www.ipa.go.jp/ikc /reports/20191119.html)より引用
ETロボコン2021 開催発表会資料／ETロボコン実行委員会

3

ETロボコンが提供する価値• 企業が求めている人材像・スキルに対して、業務での育成が難しくなっている• ETロボコンでは競技課題を題材にプロジェクト経験を積むとともに、モデリングを通じた設計・開発技術向上の機会を提供する
実際の開発現場
企業が求める人材・スキル・システム全体を俯瞰・プロジェクトマネジメント
・設計・開発技術

ETロボコンが提供する価値

GAP

・ソフトウェアの大規模化・複雑化→ システムの全体像が掴みにくい
・業務の開発では失敗できない→ 気軽にプロジェクトマネジメントを任せたり、新規技術・手法を取り入れられない・派生開発がメインとなり新規開発が少ない→ 早い時期にシステム全体のアーキテクチャ
検討など、大きな設計を行う機会が少ない・レベルに応じて小さすぎず、全体を把握できるほどの規模の課題→ システム全体を把握しながら開発が可能
・失敗しても業務には直接関係しない→ スクラッチから作り、新しい技術・手法を取り入れて開発ができる
失敗も含めた経験を通じてソフトウェアやプロジェクトの勘所を学べる
・モデリング教育とモデル審査→ モデリングを通じて設計技術を学び、モデル審査により自分たちのレベルを把握するとともにフィードバックを受けることで、更なる学びに繋げられる
ETロボコン2021 開催発表会資料／ETロボコン実行委員会

4スキルに応じた３クラス• 獲得したいスキルに応じた３つのクラスを提供• 連続して参加して上のクラスに参加しても良いですし、同じクラスで前年の反省を踏まえた取り組みにしても良いでしょう（ただし、エントリークラスは原則ETロボコン未経験者を対象としています）
クラス名

狙い

想定対象者

モデリングに要する期間（参考)※

エントリー

・モデルを読んで理解し、改良することでモモデリング未経験者
デルの使い方を体験する
ソフトウェア開発初心
・プログラムを作り動かす体験をする者
・設計と実装の繋がりを把握する

1〜4週間

プライマリー

・競技課題に合わせてモデルを構築する
事で、モデリングの基礎を身につける・品質向上に向けた取り組み

4週間〜

アドバンスト・モデルを使って課題解決ができる・要求に基づき設計方針を立て、それに基づいた設計を実践できるモデリング初級者

モデリング中級者

６週間〜※エントリーはA評価、プライマリー/アドバンストはB+評価以上を取ったチームのアンケートから算出しています
現状のスキル・利用できる時間・環境・過去参加状況などによって増減しますので、一つの目安と考えて下さい
これ以外に環境構築（１ヶ月程度)、競技用プログラム作成にはモデリングと同程度の時間が必要です
ETロボコン2021 開催発表会資料／ETロボコン実行委員会

5

各クラスのモデル審査対象範囲• クラスによってモデル審査対象は異なり、アドバンストクラスが最も範囲が広くなります• モデル審査では実装は審査対象外ですが、技術教育ではモデルと実装のつながりを教育します
アドバンストクラス
課題の分析
要求分析
要件定義
(機能)

アーキテクチャ設計
設計(構造・振舞い)

実装

評価
（テスト)

エントリークラス
プライマリークラス

工夫点※この図は対象範囲をイメージ化したもので、開発プロセスそのものではありません
ETロボコン2021 開催発表会資料／ETロボコン実行委員会

6高度職業実践2020作成モデル例（設計：構造）
2 - 2 . ク ラ ス構

2 - 1 . パッ ケージ 構
シナリ オは数のシ ーン から な り 、 シーン は「 動作」と 「 判定」 を 持つ。 シーン のは「 シ ナリ オ」 が担う 。

「 動作」 と 「 判定」 は「 デバイ ス 」 を 使 する 。

「 1 -4 . 仕様の化」 でし たよ う に、 「害 のシ ーン を処を承する こ と にする 。 シ ナリ オ側から はシ ーン を 実 し た後に次のシーン を 取得する 、 と いうり

せばよ く 、 シ ーン の実体を 意 する 必 はない (処ま た、 動作と 判定も 抽 ク ラ ス と し 、 具体 な振る

プライマリークラス
を 制御する 「エントリークラス

図2 -1 全体構

2-3. 構を

他のモデルへの関連を示す

図への関連
を示す

1-1

図1 - 1た設計課

1 .構造の概要

で示した構
割して実装
に指示を
を取得する
タを制御す

の走行

設計方針を基に、システムの構造の概要について表3 -1 と図3 -4
に示す。

競技
遷移条件

状態生成

走法

状態を追加する
表3 - 1 パッケージ概要
パッケージ概要
経路を取得する環境の情報を取得する 動作を指示する
競技
状態に合わせた動作を走行体に指示する
環境の情報を取得する
ゲーム攻略
遷移条件 各種検知と状態の切り替えを判定する
計測
制御
走法
動作を基に制御値を走行体に指示する計測
各センサとモータから情報を取得して保存する
ゲームエリアの情制御指示された制御値を基にモータを制御する 環境の情報を取得する モータを制御する
報を参照するev3api
各センサ・モータのAPIを呼び出す
ev3api
ゲーム情報
状態生成
経路から状態を生成する
ゲーム攻略 問題を解くために追加した機能
図3 - 4 パッケージ図
ゲーム情報 ゲームエリアの要素

表3 - 2 タスク概要
タスク名 優先度 周期
責務
パッケージ
競技を実施する
競技
計測値を更新する
計測
モータを制御する制御
生成タスク 低ー ゲームを攻略する状態を生成する状態生成< < enum> >図2 -3- 大状態追加先

1

1
1. . *- 大状態リスト{ ordered}

0. . 1

0. . 1
複合状態- 小状態リスト{ ordered}+ 継続動作を実行する() : void
+ 後動作を実行する() : void
+ 状態が終了したか() : boolean

1

動作- 判定依頼先

曲率走行+ 実行する() : void

+ 判定する() : boolean+ 追加する(判定条件 : 遷移条件) : void

1

1

1

+ 判定する() : boolean+ 追加する(判定条件 : 遷移条件) : void

走行停止

距離遷移条件
ライントレース走行- 目標明度 : int- 目標明度との差（ 前回） : int- 目標明度との差（ 累積） : int- 比例係数 : float- 積分係数 : float- 微分係数 : float- 走行エッジ: char

+ 判定する() : boolean
色遷移条件- 目標色 : 色
- 彩度閾値: int

方向角遷移条件- 方向角閾値 : float+ 判定する() : boolean+ 判定する() : boolean
1+ 実行する() : void1

1

計測
- 更新依頼先 1 1 - 計測値取得先 1 - 計測値取得先

中状態

計測

中状態

+ 更新する() : void
+ 走行距離を取得する() : float+ 方位角を取得する() : float+ 路面HSVを取得する() : int[3]+ 制御する() : void
+ 停止する() : void
+ 車輪モータ角位置をリセットする() : void
+ 左モータPWM値を設定する() : void
+ 右モータPWM値を設定する() : void1

- 光測定依頼先+ 更新する() : void
- 路面RGBを正規化する() : void
- 路面RGBを路面HSVに変換する() : void1

自己位置計測1 - アーム駆動依頼先- 走行距離 : float- 方向角 : float

アーム制御- アーム目標角位置 : int+ 更新する() : void1

+ 制御する() : void
+ 停止する() : void

ゲーム情報
1

図2 -4

ノード

1 -2 「 N o 1 1 」 後の分岐判定時の- 初期地点1# 座標 : int# 色: 色10. . 1
0. . 1+ 制御する() : void
+ 停止する() : void+ モータ角位置をリセットする() : void
- 加減速制御する() : void
4 -2

1
- マスの頂点

1- 運搬先

2. . 5- 隣接する交点サークル + 隣接ノードを取得する() : std: : vector< ノード>1
4 - 隣接する交点サークル
ナンバー黒ブロックの取得範囲

1

- 駆動部

+ RGB Raw値を測定する(rgb : rgb_ raw_ t) : void

+ PWM値を設定する(PWM値 : int) : void

- 把持ブロック

0. . 20. . 1

- 設置物

ブロック

- 全ブロック - 色 : 色- 有効移動成立 : boolean
10+ 現在地点を初期化する() : void+ 現在地点を取得する() : ノード+ 現在地点を設定する(現在位置 : ノード) : void
- 全てのマス + 有効移動成立か設定する(有効移動成立か: boolean) : void
8
1. . 3+ ブロック設置地点を取得する() : ノード
マス 3- ボーナスタイム獲得条件
8- ビンゴとなる組
1
1+ 隣接ノードを取得する() : std: : vector< ノード>態

名だけで ロ ールが明ら かな※ イ ン スタ ン スを所は、

名のう ち 一方ま たは両方をし た。

成する ク ラ スについては、 操作の最初にコ ン スト ラ ク タ を 明 し た。

設計のクラス図作成を通じて、全体を俯瞰しながらアーキテクチャ・詳細設計を行うスキルを身につける列- ビンゴ成立 : boolean1- 属するサークル- ブロックサークル番号 : int

した- ビンゴ候補列 4

1- 隣接するブロックサークル 1. . 3

2 - 駆動部

モータ+ コストを取得する() : int+ 実行する動作を取得する() : std: : vector< 動作時間>+ 実行する動作を追加する(実行する動作 : 動作時間) : void
+ ノードリストを取得する() : std: : vector< ノード>
+ ノードを追加する(ノード : ノード) : void
+ 終了時の向きを取得する() : 方位
+ 終了時の向きを設定する(終了時の向き: 方位) : void

+ 取得範囲内のノードを取得する() : std: : vector< ノード>

ブロックサークル- 回転角測定器 24- 隣接する交点サークル
交点サークル

1

1

1

1
2. . 5- 左モータPWM値 : int- 右モータPWM値 : int- 加減速制限値 : float- 加減速制限値の変化率 : float

カラーセンサ- 現在地点1

0. . 1 - ブロック設置地点- 運搬エリア情報+ 初期設置情報を取得する() : void
+ 取得範囲のノードを取得する() : std: : vector< ノード>
+ ナンバー黒ブロックの設置地点を取得する() : ノード+ 全ブロックを取得する() : std: : vector< ブロック>- ブロック設置地点を決定する() : void
4 -1

1
- 制御依頼先
1- 車輪駆動依頼先

は

1. . * { ordered}- 数字カード : int

ev3api1 - 光測定器- 現在地点+ 隣接ノードを取得する() : std: : vector< ノード>

車輪制御

- 自己位置1 測定依頼先

路面計測- 路面RGB : rgb_ raw_ t- 路面HSV : int[3]

状態

1

※

経路
- コスト : int- 取得範囲のノード 71- リセット依頼先

1
0. . 1 - 運搬経路

10. . 1 - 移動経路

0. . *

了時の向き: 方位 シ ーン の※前後のシ-- 終ナリオ、- ノードリスト
実行する動作 : std: : vector< 動作時間>

ゲームエリア1 - 制御値設定先制御

1
10. . 1

制御

1- 探索中の経路 0. . *0. . 1+ 現在地点を取得する() : ノード+ 現在地点を設定する(現在地点 : ノード) : void
+ 現在の向きを取得する() : 方位
+ 現在の向きを設定する(現在の向き: 方位) : void
+ 把持ブロックを設定する(把持ブロック: ブロック) : void

+ 実行する() : void
- 走行距離閾値 : float+ 移動経路を取得する() : 経路
+ 移動経路を追加する(移動経路 : 経路) : void
+ 運搬経路を取得する() : 経路
+ 運搬経路を追加する(運搬経路 : 経路) : void

ゲーム走行体+ 実行する() : void
- 現在の向き: 方位1- 判定条件リスト- 経路全体のコスト : int+ 動作を決定する(探索中の経路 : 経路, 追加するノード : ノード) : std: : vector< 動作時間>
1 - 現在地点 1 - 現在地点

直進走行
OR遷移条件2. . *

略中の大置状態」「ナ黒ブロックを把持し
2 -1 走
す。
替えを実
eパターン

走行経路

- 動作生成動作判定+ 実行する() : void

- 判定条件リスト

1
1
1- カラーブロック・数字- ナンバー黒ブ
カード黒ブロック設置 - ナンバー黒ブロッ
ロック設置の走ク設置情報取得の走行経路リスト
行経路
0. . 1 の走行経路 0. . 1
0. . 8 { ordered}1

1- 旋回半径 : float- 旋回方向 : char

- 目標車輪モータ制御値: int

AND遷移条件
2. . *+ 最適な走行経路を作成する(運搬対象 : ブロック, 運搬先 : ノード) : 走行経路
- 最適な経路を探索する(開始ノード : ノード, 目標ノード : ノード) : 経路
- 次の経路を決定する() : 経路
- ノードの通行可否を判断する(通行したいノード : ノード) : boolean

1- 実行依頼先

走法
1

ナンバーボ
クを設置
る。

経路計画

1
1

4 -1

- 経路生成1す。

+ カラーブロック・数字カード黒ブロック設置の合計コストを取得する() : int+ カラーブロック・数字カード黒ブロック設置の走行経路リストを取得する() : 走行経路
+ カラーブロック・数字カード黒ブロック設置の走行経路を追加する(走行経路 : 走行経路) : void1
0. . 1 + カラーブロック・数字カード黒ブロック設置の走行経路を削除する() : void
+ ナンバー黒ブロック設置情報取得のコストを取得する() : int- 運搬順序 + ナンバー黒ブロック設置情報取得の走行経路を取得する() : 走行経路
+ ナンバー黒ブロック設置情報取得の走行経路を追加する(走行経路 : 走行経路) : void
+ ナンバー黒ブロック設置のコストを取得する() : int+ ナンバー黒ブロックの走行経路を取得する() : 走行経路
+ ナンバー黒ブロックの走行経路を追加する(走行経路 : 走行経路) : void1

1

+ 前動作を実行する() : void
+ 継続動作を実行する() : void
+ 後動作を実行する() : void
1 + 状態が終了したか() : boolean

遷移条件

した

態

運搬順序

+ 運搬順序を決定する() : void
+ 運搬順序を取得する() : 運搬順序
+ 最適なナンバー黒ブロック設置の走行経路を作成する() : void
- 運搬するブロックを選択する(ブロックリスト : std: : vector< ブロック> ) : void
- ブロックリストの並び替えをする(ブロックリスト : std: : vector< ブロック> ) : void

走法

+ 判定する() : boolean

は時の- カラーブロック・数字カード黒ブロック設置の合計コスト : int- 獲得ボーナスタイム: int- 攻略時間 : int = 82500ミリ秒

遷移条件

する

- 運搬順序取得先

走行計画

1

状態

+ 前動作を実行する() : void
+ 継続動作を実行する() : void
+ 後動作を実行する() : void
+ 状態が終了したか() : boolean+ 追加する(状態 : 状態) : void
- 状態を遷移する() : void

+ 上: 方位+ 左上 : 方位+ 右上 : 方位+ 左: 方位+ 右: 方位+ 左下 : 方位+ 右下 : 方位+ 下: 方位+ 黒色 : 色+ 赤色 : 色+ 黄色 : 色+ 青色 : 色+ 緑色 : 色+ 白色 : 色

ゲーム攻略

0. . * + 前動作を実行する() : voidきる機能

< < enum> >色ゲーム攻略状態生成+ カラーブロック・数字カード黒ブロック設置状態を生成する() : void
+ ナンバー黒ブロック設置情報取得状態を生成する() : void
1 + ナンバー黒ブロック設置状態を生成する() : void
- 走行体動作を状態に変換する() : void1

1

+ 実施する() : void
+ 状態を遷移させる() : boolean+ 大状態を追加する(大状態: 状態) : void

- 中状態リスト{ ordered} 0. . *

を表現する
小状態の
のテストを

< < enum> >
方位

1

状態生成

+ 移動黒線前進 : 動作時間 = 1100ミリ秒+ 移動斜め前進 : 動作時間 = 1600ミリ秒+ 移動交点サークル前進: 動作時間 = 400ミリ秒+ 移動45°
旋回 : 動作時間 = 400ミリ秒+ 移動90°
旋回 : 動作時間 = 700ミリ秒+ 移動135°
旋回 : 動作時間 = 1100ミリ秒+ 運搬黒線前進 : 動作時間 = 1500ミリ秒+ 運搬斜め前進 : 動作時間 = 2200ミリ秒+ 運搬交点サークル前進: 動作時間 = 500ミリ秒+ 運搬45°
旋回 : 動作時間 = 700ミリ秒+ 運搬90°
旋回 : 動作時間 = 1300ミリ秒+ 運搬135°
旋回 : 動作時間 = 2200ミリ秒+ 設置前進 : 動作時間 = 1000ミリ秒+ 設置後退 : 動作時間 = 1300ミリ秒

1 -2 「 N o 4 」 のシ ーン 実

生成タスク

分岐シ ーン 実 時の例を 次のオブ ジェ ク ト 図に

11 - 実施依頼先
競技す。

図3 - 5 タスクイメージ図

時間※前後のシナリ オ、 シ動作ーン
の

1

競技タスク

動作」 にま と めた。

P4

1 - 状態生成依頼先
1」 「 回 」 「 ラ イ ン ト レ ース 」 は「設計方針を基に、走行体を制御する競技タスクとゲームの走行計画を立てる生成タスクに分割した。走行を安定させることを優先するために競技タスクの方に高い優先度を与える。1 0 ミリ秒周期で起動する競技タスクと並行して、生成タスクを実行する。タスク設計について表3 -2 と図3 -5に示す。

設計方針を基に、システムの構造の詳細について図3 -6 に示す。なお、set/g etの操作やクラス間の依存関係については紙面の都合上省略する。
競技い」 参 ) 。

2 .タスク設計

3 .構造の詳細

立てる場
せざるを得
略中にゲー
。ただし、
カラーブロッ
立てられ

は「 振る

の具体例

京都府立京都高等技術専門校

3 - 2 シ ステ ムの構造のいはサブ ク ラ スで 定 する 。 さ ら に動作のう ち

すパッ ケージ 図

動作シ ーン 実 時の例を 次のオブ ジェ ク ト 図にル

パタ ーン を 判定する 」 も 一つのシーン と し て

分岐シ ーン と 呼ぶこ と にし た。 そこ で「 シ ーン 」 ク ラ スは抽 ク ラ スと し 、 動作シ ーン と 分岐シ ーン は1

- 数字カードボーナスサークル - ナンバーボーナス
サークル

ボーナスサークル- ボーナスサークル設置成立 : boolean

1

1
ボーナス条件- ボーナスタイム: int
1 - ビンゴ成立数 : int- 有効移動成立数 : int- 獲得ボーナスタイム + ボーナスタイムを算出する() : int

0. . 1

アドバンストクラス

3

図3 - 6 cd : システムの構造

ETロボコン2021 開催発表会資料／ETロボコン実行委員会

7

2020作成モデル例（要求・分析モデル）
Model
Page.2 / 6• アドバンストクラスでは要求モデル・分析モデルを評価します• 実際の業務でも重要となる分析について学ぶことができます

析した。
り下の

»

概要

アイ コ ン
方針.*

方針から導出された要求***

ゲーム攻略に必要な「対策」を示すアイコン

システムに対する要求を 網羅的に導出する ための観点と し て 、「 製品品質の各特性・ 副特性」 ( I SO/ I EC 2 5 0 1 0 ) を 用いた(Tab. 2.4-1)。
各非機能要求には導出の観点として用いた主特性に応じて以下のアイコンを付与している。

要求図における≪copy≫の表記と同等の意味
可読性向上のため要求図を分割したので、≪copy≫の代わりに
コピー先 左記のアイコンを使用する

AA

要求を実現するための設計方針

現する戦略

Tab. 2.4-1 非機能要求導出の観点(一部抜粋)

コピー元«block»
設計方針

他
関連 示

工夫点

工夫点に示す要素技術

F.* * *FMEAで導出された非機能要求

1-1

駐車を攻略する«deriveReqt»

F.1 0

要

適

G

eReqt»

作信«deriveReqt»«satisfy»«requirement»
短期間で検証をする«deriveReqt»

ジequirement»
行中に戦略を変可能なソフト構造にする

信

2 - 3 解法（ 続き ）成熟性

機能が十分にテストされていること

回復性経路から外れても素早くもとの経路に復帰する

利«requirement»

保内前進«requirement»
過去のプログラムを再利用できるようにする

再利用性

-

指針 実現
要
set/g et

定義( 続 )
経路 合

定義

省略 (競技規約順守を前提とすると、重要性が低いため)
現在地点
設置
経路

100 250 100
図2 - 3

内定義«deriveReqt»«deriveReqt»«requirement»«deriveReqt»

交点«requirement» 使«requirement» 利
走行可能
定義
行するプログ
会話不足による開発工 ユーザが実ラムを自由数の増加を防ぐ
図2-6示に選択できる«deriveReqt»«deriveReqt»«requirement»«block»動 ゲーム攻略デバッグソフト開発
作
250m m
394m m
Com p量«block»再利用しやすい構造«block»レイヤー構造45° 90° 135°

100m m

1.1

1.6

適

1.5

D

«deriveReqt»«deriveReqt»

0.4«deriveReqt»
0.4
0.7

1.1

0.7

1.3

2.2

1.0
«requirement»«block»
テストしやすい構造

振
ﾃｽﾄ易
構造

振

動
作
内
容 F.5

«deriveReqt»

走行

直進走行

適

«requirement»
正確な自己位置を推定する

2 - 2 指針
I

定義
前提
以内

要
設定
解

«deriveReqt»

直進走行

図2 -8 ～図2 -1 1 示

F.6

適«requirement»
衝突しないように走行体の動きに制約を設ける

F.7

直進走行

«deriveReqt»«requirement»
ブロックを落とさない
ように運搬する«requirement»
黒線を走行する

2 .攻 時間内 攻
適«deriveReqt»
採用
走行体 «satisfy»
動作

時間
82.5秒
動作
指針 «block»
示
定義
動作定義

1 .走行体 動作時間 基
経路 生成

全
運
«requirement»
急旋回
最・ 急制動を制限する«deriveReqt»«deriveReqt»«requirement»
交点サークルを走行する

経路 «requirement»
導出交点サークルに到達したを検出する
8 2 .こ5と秒

運
時間 現実的以内 «satisfy» 数字
構時点
旋回可能 運加減速 «block»上
時間«requirement»:
ブロックを取得・設置する

初期設置情報 取得

走行体 動作時間 基

最旋回半径・加減速の制限

#
#

取得

- 初期地点
1
設置地点
0. . 1

()

-全

組

1 交点

4 -

接

取得

+ 取得

内

()

-運 先
1

«deriveReqt»«requirement»
正確に色を判定する

1

8

点

交点
接

交点

1. . 3

4

-

-

番

+

接

接

< < enum> >

-

取得

()

運

loop [

数]ref

図2 - 1 0

運

選

最

F.9

: 運

必要

: 経路計画最振:行経路 作成< < create> >Create
()

内容

行体

:

:

:

条件

:

:

行体

最

(

図2 - 1 1[運]: 動作判定

()

経路

(開始
, 目
< < create> >Create
()

現在 向

取得

)

: 経路

()

()

数字
行経路 作成設置

終 時 向loop [目達設定(終 時 向 )時]()

中 経路 数]
接

選
運

:

:

()

次 経路 決定(有効移動成立 )

運

要(現在地点)(

ﾌﾞ ﾛｯｸ行経路 作成行経路)

有効移動成立 設定«satisfy»«block» 取設を 決定する
ブロック取得・設置

機能(運 対象, 運 先)

最loop [

alt

()

得

行経路

追加

行経路 作成行経路

現在地点 設定-(運 対象, 運 先)()

行経路 追加適«requirement»
コースの特徴を基準に取得・設置する算出
3

行経路 作成

移動経路
作成

ref

最

+
1

2 - 7 cd: 指針を 実現する ための構造ク ラ ス
sd ref最

得条件
条件

1
成立数
1
- 有効移動成立数

設置成立 --

1 -補

課題のモデリングを通じて、対象を正しく理解しシンプルで品質の高いアーキテクチャ・設計に繋げます: 経路計画設置地点 取得

正確にブロックを取得・設置する

選«deriveReqt»
(
)

:

4

0. . 1
1

+
+ 赤
+
+ 青
+

本来移動経路 運 経路 存在

-

成立

()

1 - 数字

取得
取得

持

()
+ 現在地点 取得 ()+ 現在地点 設定 (現在地点)+ 有効移動成立 設定 (有効移動成立 )+設置地点 取得 ()1

1. . 30. . 1 -- 設置物 10 - 有効移動成立-全+ 現在地点 初期化

380. . 1

0. . 1

動作)

(
)
取得 ()
設定 (終 時 向 )0. . 2- 現在地点
1

取得()

黒線と交点サークル以外を
す得
る ()
全 走行取

H 切
最
最
経路
限
ETロボコン2021
開催発表会資料／ETロボコン実行委員会
F.8 2 - 8 sd : 運

走行 離
rement»
レース走行をする経路作成

行計画«deriveReqt»

G«deriveReqt»

最:«deriveReqt»
設置地点 決定 ()初期設置情報 取得
基«requirement»«requirement»
生成

F 最初 運0. . * +追加+ 終 時 向0. . * + 終 時 向

1. . * { ordered}11
1
0. . 1 - 移動経路 0. . 1 - 運 経路+
取得 ()+ 実行 動作 追加 (実行中 経路 +
取得 ()- 現在地点

1

現在地点 取得

選

0. . 1-終 時 向- 実行 動作

現在地点 取得«deriveReqt»

直進走行

内容

1

0. . 1
1

() 1

+ 上
+ 上
+ 上
+
+
+ 下
+ 下
+ 下

1

経路

+

< < enum> >
方位

1

()

行体

7 - 取得

図2 -1 1 述

sd ref運決定«deriveReqt»

率走行

1

)

+

取得
()

+ 現在地点 取得 ()+ 現在地点 設定 (現在地点)
0. . 1+ 現在 向 取得 ()1 + 現在 向 設定 (現在 向 )設定 ( 持)- 現在地点 + 持

1 - 経路生成- 接 交点
1 2. . 5
2. . 5 - 接

数字
行経路
設置
行経路
0. . 8 { ordered} - 経路全体
設置
+ 移動経路 取得 ()情報取得
行経路+ 移動経路 追加 (移動経路)
0. . 1+ 運 経路 取得 ()+ 運 経路 追加 (運 経路)
設置
行経路- 現在 向«deriveReqt»
sd 運

1 . 3 «deriveReqt»:
行計画

ゲームエリア内を移動する

1

設置 合計

数字
設置 合計
設置情報取得取得
設置
取得 ()行経路 追加 ( 行経路)
行経路
()

省

要求図や表などを用いて、達成したい目標をシステムへの要求・設計へと繋げます
他のブロックに衝突しないように走行する

中 経路, 追加+ 移動 線前進= 1. 1秒+ 移動
前進 = 1. 6秒+ 移動交点
前進= 0. 4秒+ 移動45° 回 = 0. 4秒+ 移動90° 回 = 0. 7秒+ 移動135° 回 = 1. 1秒+ 運線前進= 1. 5秒+ 運
前進 = 2. 2秒+ 運 交点
前進= 0. 5秒+ 運 45° 回 = 0. 7秒+ 運 90° 回 = 1. 3秒+ 運 135° 回 = 2. 2秒+ 設置前進= 1. 0秒+ 設置後退= 1. 3秒«deriveReqt»«block»シナリオ選択

指針 実現
同一
運 経路

«deriveReqt»

2 . 2 «requirement»
0.5«block»クラウド開発環境(< < enum> >動作時間«requirement»

3 .指針ｸﾗｳﾄﾞ実現
工夫点

1

1

情報

保

«requirement»
テストしやすい構造にする

環境«requirement»
ブロックを運搬する

ﾊﾟ ﾀｰﾝコ 移
ス 動ト( 秒) 運110m m()

経路計画+ 初期設置情報 取得 ()
+ 取得
内
取得 ()
+
設置地点 取得+ 全
取得 ()設置地点 決定 ()«requirement»«block»追加/変更しやすい構造

110m m

数字

-

得

- 数字

«requirement» 利
-5
経路
容図2
易にテ
ストが
できる

«deriveReqt»

行経路 作成))1 + 最
行経路 作成 (運 対象, 運 先)
-最
経路
(開始
, 目
)
- 次 経路 決定 ()通行可 判断 (通行)- 動作生成1 -運移動経路( 経路1 )運 経路( 経路2 )«deriveReqt»
走行経路( 経路1 + 2 )«deriveReqt»++++
0. . 1 +動作判定«deriveReqt»

設置後退

設置
(
(

+ 動作 決定«requirement»
テレワークで開発を行う-- 現在地点()選1«requirement»
交点
説 デバッグ用ソフトを開四方発する
汎用的な機能と各年固有な
シュミレ
グ用にボタンでシナリオ 機能ごとに独立した
線
交点
交点
内ータと
走実機で変更 機能追加による変更箇 クラウド環境による デバッ交点
明交点
交る
機能とを切り分けた構造にする
箇所を最小にする所が少ない構造にす
開発を行う
構造にする
を選択できるようにする
前進
内 前
行体 向
方位
間 通路
間
対
点
«satisfy»«satisfy»«satisfy»«satisfy» 追変易«satisfy»«satisfy»
再利用
進
回 ﾚｲﾔ
ﾃﾞ ﾊﾞ ｯｶ «satisfy»
ｼﾅﾘｵ
前進
前進 選択
後退
工夫点
構造
開発
構造
選択 図2 - 6

«block»ンポジットパターン

決定

1

集合
定義
図2 -5 示～C 法（ m m ）1

時間 = 82. 5秒

+ 運
+ 最
-運
-

経路
110
現在地点25010)の観点で導出した要求。
目標地点
2 点間 最 時間 走行
利 :「利用時の品質」(ISO/IEC«requirement»
ソフト提出までに開発完了する解法 直接関係
面 都合上省
-運

行計画
1

省略
運(複数システムとの連携がないため)
経路

ｾｷｭﾘﾃｨ

構造 図2 -7 示
作
存関係

P3
運

構造

各機能に共通するﾛｼﾞｯｸを再利用しやすい構造にする
走行経路

互換性

«deriveReqt»
回
設置前進«requirement»

2 .指針 実現

修正性
走行中のｹﾞｰﾑ戦略修正を容易にする
1 個 設置
移動経路 運下2 - 2 ゲームエ
リ ア の機能が的確で容易に試験できる構成にする
試験性
定義
方位
適応性
練習用ｼﾐｭﾚｰﾀｰと本番用ｼﾐｭﾚｰﾀｰの違いに対応する
移動経路
移植性
置換性
走行体や部品を交換してもｼｽﾃﾑを継続利用できる
現在地点
取得
経路

«requirement» 移«requirement»
実機でもデバックを実施しメンバー間で影響範
バグの要因を切り分ける
囲が少ない構造にする«deriveReqt»

必要 要

1 .攻

ﾓｼﾞｭｰﾙ性右 適切にｿﾌﾄの構成要素を分割し構成する

保守性

-

F

交点 «deriveReqt»«deriveReqt»
前進

線前進

分析モデル
京都
京都高等技術専 校

誤動作の検出時に代替手段にて機能を維持する

上«deriveReqt»
表2 -1 定義中持
«deriveReqt»
差時 移動«deriveReqt»持 利«requirement»
利 «requirement»«requirement»
メンバーが並列で開発
開発にかかる工数をソフトのバグを素早く発見する
表2
する
減らす- 1 必要と な る 動作

«requirement»
時 運
定義
ゲームの解法の妥当性を検証する«requirement»
全イての初期設置に対メして検証を行う

eriveReqt»

走行ｼｽﾃﾑの処理能力を活用する

必要
動作
利時 動作時間信持動«deriveReqt»

ement»に応じて戦略
更する

経路探索処理を要求された時間内で完了する

資源効率性

信頼性

移

«deriveReqt»

F.4

uirement»
時
間内で獲得できるイムを最大化する 持適合のような煩雑な手順を減らす

時間効率性

使用性 図1 - 1
ﾕｰｻﾞｴﾗｰ防止性 ﾕｰｻﾞの誤入力を防ぐためのｶﾞｰﾄﾞや訂正機能を設ける

保方針.3 取得

H

2 .動作

veReqt»

機能適切性

使

左

«requirement»
駐車領域に正確に停車する

正確に○○する、指示通りに○○する

図 容量満足性関連
走行体の計算リソースやメモリ容量に入るシステムにする
示 運用操作性 操作や表示に一貫性を持たせ、ﾕｰｻﾞが使いやすくする

走行

体 動作 定義

内
要«deriveReqt»
図2 -1 示走行体
向 «deriveReqt»
説明
方位 «requirement»
図2 -2 定義
内 «requirement»
障害物に接触しない
ルートで表現侵入する
特定の位置から必ず駐車を始める
成立
定義
中«deriveReqt»«deriveReqt»含«deriveReqt»
部分«requirement» 適
成立 判定 影響
正確に色を判定する«requirement»
図2«requirement»-1
内法
黒線と交点サークル以
黒線を走行する
text = "青色を正確に判定する"
外
を走-3
行する
図2
示

nt»
エリアを

性能効率性

機能正確性

障害許容性

2 - 1 走行体 «requirement»
動作定義
A
上 前提

効

該当するｺｰｽ攻略ｼｽﾃﾑへの要求の例

副特性(抜粋)

Ⅱ

要求モデル
2.分
1 .前提

主特性

適 機能適合性付与されたユースケース(※[ ]を参照)と相互検討を行っていることを示すアイコン

UC.

製品品質(ISO/IEC 25010)

ｱｲｺﾝ

loop [

)
(
選

接

再 的

出

()
()

判断

(通行

数]
通行可

)

取得
取得

< < create> >Create
()

)

: 経路

8

2020作成モデル例（工夫点）• アドバンストクラス・プライマリークラスでは性能向上などの取り組みである「工夫点」も評価します（プライマリークラスはオプションです）• 設計という観点よりも、問題に対して論理的にアプローチしているかを評
価します

課題・対策とその検証結果が論理的であるか、効果の有効性などを評価

ETロボコン2021 開催発表会資料／ETロボコン実行委員会

9

技術教育

技術教育

2021年度の技術教育は全てリモートで行います（動画配信またはZoomを使った講義)①全国共通(動画配信)
a.走行体の基本制御とモデルによる可視化
b.モデル作成とそれをコードに変換する基礎演習
全国共通教育は動画配信で行います
内容は2020年作成したものがベースとなりますが、2021年も追加コンテンツを提供予定です②地区独自(Zoomを利用)
地区ごとに独自の教育・フォロー会・モデル相談会を開催します（地区の状況によりできない場合もあります）
上記には、初学者のためのセットアップサポートや演習も含まれます。

提供資料

参加者サポート①環境構築ガイド・シミュレータ利用ガイド②2020年度の提出モデルおよび評価付きコメント③2020年CS大会ワークショップ資料④走行体制御に関する参考資料①メーリングリストによる連絡事項展開・質問応答（チームから２名まで）②Slackのワークスペースによる質問応答、情報共有（全参加者が登録可能）ETロボコン2021 開催発表会資料／ETロボコン実行委員会

10モデル教育・審査・フォローの大まかなスケジュール⚫ 2021年は４月の段階で審査規約・技術教育動画を展開⚫ モデルの学習や作成に数ヶ月の期間を確保
4
参加者

5

6

7

8

9

地区大会モデル作成（参考)1011

アドバンストのみ

CS用モデ
ル修正

共通技術教育動画配信(追加は随時)

技術教育

CS大会
審査規約正式版公開（ドラフト版は2/16より公開)

審査・
フォロー

地区技術教育・相談会（地区により回数・時期は変化)

地区大会モデル
締切
地区大会
審査

CS大会モデル
締切(11/5)
CS大会
審査

地区大会 /
CSチーム発表

Slack/MLによるフォロー

ETロボコン2021 開催発表会資料／ETロボコン実行委員会

11

昨年のアンケートより• ８割の参加者が各チームの参加目的を達成したと回答→ 否定的な回答の多くは「時間がなく取り組めなかった」というものであったため、計画的な取り組みが必要となります• モデリングに関しては7割以上が期待していた程度に学べたとの回答• プログラミングに関しては全体では56%程度が期待した程度に学べたと回答しています
が、エントリークラスだけ見ると８割弱と高い割合となっています• プロジェクトマネジメントについては半数程度が期待程度に学べています
アンケートの声
・コロナで急なリモート開催になったにも関わらずこのような環境を提供していただいたのはありがたいと思います・モデル図に対する指摘のコメントなど、今後の開発に参考になる点が多かったので非常に助かった・ETロボコンはモデリングからコーディングまでの一連の流れを学べるよい機会でした・ロボコン自体は初めてでしたが，非常に楽しませてもらいました。運営様の迅速な対応（特にslack）
を見ていましたが，どれも分かりやすい回答かつ，有益な情報で非常に良かったです．
ETロボコン2021 開催発表会資料／ETロボコン実行委員会

12

UMTP認定試験割引• UMTP様のご協力により、UMTP認定試験
Level1-2を特別価格での提供を予定しています– 金額・人数などは決まり次第展開します– https://umtp-japan.org/about_exam/work_gaiyo• Level2を受講にするにはその下のレベルに合格している必要があります

ETロボコン2021 開催発表会資料／ETロボコン実行委員会

13

ETロボコン2021 モデル審査
ETロボコン実行委員会
14