PD試験 システム
PD試験(仮称)システム区分 サンプル問5(状態遷移図)の解説
IPAが公表したプロフェッショナルデジタルスキル(システム)試験(仮称)の科目Bサンプル問5(収穫ロボットの状態遷移図)を、スマホで解いて確かめられます。矢印の形から2手で答えを絞る解き方と、選択肢ごとの根拠を解説します。
PD試験 システム
科目Bサンプル問題 問5
IPA 公表問題
G 社は,温室で栽培されているトマトの自動収穫を行うロボット(以下,収穫ロボットという)を開発している。収穫ロボットの外観を図 1 に,収穫ロボットのシステム構成を図 2 に,収穫ロボットの主な構成要素を表 1 に示す。
図1(収穫ロボットの外観)は省略しました。外観には,近接カメラ,ハンド,圧力センサー,収穫トレー,アーム,認識用カメラ,超音波センサー,台車が示されています。
図2 収穫ロボットのシステム構成(当サイトで文章に書き換え)
- 管理者スマホ(管理者がもつスマートフォン)と管理サーバ,管理サーバと収穫ロボットの無線LAN通信ユニットが,それぞれ無線で接続されている。
- 収穫ロボットの制御部に,無線LAN通信ユニット,アーム制御ユニット,認識ユニット,台車制御ユニットが接続されている。
- アーム制御ユニットにはハンド,アーム,圧力センサーが,認識ユニットには近接カメラと認識用カメラが,台車制御ユニットには超音波センサーが接続されている。
| 構成要素名 | 機能概要 |
|---|---|
| 制御部 | ・収穫ロボット全体を制御する。 |
| アーム制御ユニット | ・アームとハンドによる収穫動作を制御する。 |
| 認識ユニット | ・認識用カメラで撮影した画像を AI で処理する。 ・近接カメラで撮影した画像を AI で処理する。 |
| 台車制御ユニット | ・台車の走行を制御する。 ・超音波センサーの検知結果を処理する。 |
| 無線 LAN 通信ユニット | ・制御部と管理サーバとの通信を制御する。 |
〔収穫ロボットの動作概要〕
- 収穫ロボットは,管理サーバを介して管理者スマホから収穫開始の指示を受けると,状態を待機状態から開始/終了状態に遷移させ,あらかじめ設定された経路(待機位置→収穫開始位置→収穫終了位置→待機位置)に沿って温室内での移動を開始する。
- 待機位置から収穫開始位置まで移動すると,状態を検出中状態に遷移させ,認識用カメラの映像を認識ユニットで解析しながら移動を続ける。収穫に適したトマトを検出すると,移動を停止して状態を収穫中状態に遷移させる。
- 認識用カメラの映像を認識ユニットで解析した結果を基に,収穫対象とするトマトに対するアームとハンドの制御プランを作成し,制御を開始した後,近接カメラでの撮影を開始する。さらに,近接カメラの映像を認識ユニットで解析した結果を基に,アームとハンドの位置を微調整しながら収穫を行う。
- ハンドには圧力センサーが取り付けられており,トマトを傷つけないように把持(はじ)できる。トマトを把持した後,ハンドの先端にあるカッターでトマトの柄の部分を切断して収穫する。
- トマトを収穫したら,状態を積載中状態に遷移させた後,近接カメラの映像を認識ユニットで解析しながらアームとハンドを制御して,収穫したトマトを収穫トレーの空いている領域に載せる。
- トマトを収穫トレーに載せた後,収穫トレーの状態によって次の処理を行う。
- 収穫トレーに空きがあれば,状態を収穫中状態に戻し,収穫を継続する。
- 収穫トレーに空きがなければ,収穫を終了し,開始/終了状態に遷移する。 - トマトを柄から切り離すことができなかった場合などは収穫失敗と判断し,収穫中状態のまま,検出している次のトマトの収穫を行う。
- 収穫中状態で,検出している全てのトマトに対して収穫動作を終えると,検出中状態に遷移し,再び移動しながら収穫に適したトマトを探す。
- 収穫終了位置まで到達すると収穫を終了し,開始/終了状態に遷移する。
- 収穫を終了して開始/終了状態に遷移したら,待機位置まで移動した後,待機状態に遷移し,管理サーバを介して管理者スマホに収穫終了メッセージを送信する。
- 収穫ロボットが移動中に,台車の先頭に取り付けられた超音波センサーが,進路上 1m 以内の距離にある障害物を検知すると移動を停止する。一定時間以上障害物を検出し続けた場合,状態を異常状態に遷移させ,管理サーバを介して管理者スマホに警告メッセージを送信する。
〔収穫ロボットの状態遷移〕
収穫ロボットの状態遷移を図 3 に示す。
図を文字で読む(遷移の一覧)
- (省略) → 開始/終了
- 開始/終了 → (省略)
- 開始/終了 → b
- b → 開始/終了
- 開始/終了 → a
- b → a
- b → c
- c → b
- c → d
- d → c
- d → 開始/終了
設問 図 3 中の a ~ d に入れる字句の組合せはどれか。解答群の中から最も適切なものを選べ。
答えと選択肢ごとの根拠を見る
正解:ア(a 異常/b 検出中/c 収穫中/d 積載中) IPA 公表の解答例による
ア ○ 正しい
a 異常/b 検出中/c 収穫中/d 積載中
4つの空欄すべてが本文の遷移と一致する。aは出ていく矢印がなく,移動中の状態(開始/終了,検出中)から入るので異常。bは開始/終了と行き来し,cと行き来するので検出中。dだけが開始/終了へ戻る長い矢印を持つので,「トレーに空きがなければ終了」の積載中。残るcが収穫中。
イ × 誤り 収穫と積載の順番の取り違え
a 異常/b 検出中/c 積載中/d 収穫中
開始/終了へ戻る矢印を持つのはd。本文で開始/終了へ戻るのは「トマトを載せた後,トレーに空きがない」とき,つまり積載中からなので,dは積載中。収穫中から直接,開始/終了へは戻らない。
ウ × 誤り 待機状態を図の中央に置いた
a 異常/b 待機中/c 検出中/d 収穫中
待機状態からは「収穫開始の指示」で開始/終了へ移るだけで,トマトを探す状態へは進まない。bはcと行き来し,a(異常)へも入るので,移動しながら探す検出中。待機は図の左端の「(省略)」に当たると読める。
エ × 誤り 出ていく矢印のない状態を見落とした
a 検出中/b 収穫中/c 異常/d 収穫中
aからは矢印が出ていない。検出中からは収穫中や開始/終了へ移るので,aにはなれない。またbとdに同じ「収穫中」が入っており,状態が重複する。
オ × 誤り 出ていく矢印のない状態を見落とした
a 検出中/b 収穫中/c 積載中/d 異常
aからは矢印が出ていないので,検出中は入らない。dは開始/終了へ戻るが,本文に「異常から開始/終了へ戻る」記述はない。
カ × 誤り 出ていく矢印のない状態を見落とした
a 検出中/b 待機中/c 収穫中/d 積載中
aからは矢印が出ていないので,検出中は入らない。bに待機中を入れると,待機中から収穫中へ移ることになるが,本文では待機の次は開始/終了だけ。
キ × 誤り aを「止まっている状態」と読んだ
a 待機中/b 検出中/c 収穫中/d 積載中
b〜dは正しいが,aが違う。待機状態からは「収穫開始の指示」で開始/終了へ出ていくので,出ていく矢印のないaではない。また,検出中(b)から待機へ直接移る記述もない。aは,移動中に障害物を検知し続けたときの異常。
ク × 誤り aを「止まっている状態」と読んだ
a 待機中/b 収穫中/c 異常/d 積載中
aには出ていく矢印がないので待機中ではない。bに収穫中を入れると,収穫中から開始/終了へ戻ることになるが,本文で開始/終了へ戻るのは検出中(収穫終了位置に到達)と積載中(トレーに空きがない)。
ケ × 誤り aを「止まっている状態」と読んだ
a 待機中/b 収穫中/c 積載中/d 異常
aには出ていく矢印がないので待機中ではない。dに異常を入れると,異常から開始/終了へ戻ることになるが,本文にその記述はない。
解説
この問題で問われていること:本文から状態遷移図を組み立てる
IPAは出題趣旨で、この問題を「ハードウェアを考慮したソフトウェア設計(状態遷移図の作成など)の能力を評価する」ものとしています。
本文は長いのですが、答えを決めるのに必要なのは〔収穫ロボットの動作概要〕の「状態がどこからどこへ移るか」だけです。図1・図2・表1は、場面をつかむための材料と割り切って読み飛ばしてかまいません。
解き方:矢印の「形」から決める
空欄の状態を本文の頭から順に当てはめるより、図3の矢印の形が特徴的なところから決めるほうが速く、迷いません。
手順1:出ていく矢印がないaは「異常」
図3で、aには矢印が入ってくるだけで、出ていく矢印がありません。本文で「その状態のあと、どうなるか」が書かれていないのは異常状態だけです(警告メッセージを送ったあとの扱いは書かれていません)。
さらに、異常状態に入るのは「移動中」に障害物を検知し続けたときです。移動しているのは、待機位置と収穫開始位置・収穫終了位置の間を動く開始/終了状態と、移動しながらトマトを探す検出中状態です。aに入ってくる矢印が「開始/終了」と「b」の2本であることとも合います。
この時点で、aが「検出中」や「待機中」になっているエ〜ケの6つが消え、ア・イ・ウが残ります。
手順2:開始/終了へ戻る長い矢印を持つdは「積載中」
dから開始/終了へ、図を大きく回り込む矢印があります。本文で開始/終了へ移る条件は次の2つです。
- 収穫終了位置に到達したとき
- トマトを収穫トレーに載せたあと、トレーに空きがないとき
dはcと行き来する状態なので、後者に当たります。トマトを載せている状態、つまりdは積載中です。残ったア・イ・ウのうち、dが積載中なのはアだけなので、答えはアに決まります。
手順3:残りの空欄を本文で確かめる
時間に余裕があれば、bとcも本文と照らし合わせておきます。
| 図3の矢印 | 本文の根拠 |
|---|---|
| 開始/終了 → b | 収穫開始位置まで移動すると、検出中状態へ |
| b → 開始/終了 | 収穫終了位置まで到達すると、開始/終了状態へ |
| b → c | 収穫に適したトマトを検出すると、収穫中状態へ |
| c → b | 検出している全てのトマトの収穫動作を終えると、検出中状態へ |
| c → d | トマトを収穫したら、積載中状態へ |
| d → c | トレーに空きがあれば、収穫中状態に戻す |
bは検出中、cは収穫中で、アの組合せと一致します。
間違えやすいところ:待機状態と、描かれていない矢印
待機状態は、図3の左端の「(省略)」に当たると読めます。「(省略)」と開始/終了は行き来しており、本文の「待機状態から開始/終了状態に遷移させ」「開始/終了状態に遷移したら,待機位置まで移動した後,待機状態に遷移し」と対応するからです。図に名前が書かれていないので、ここは当サイトの読み取りです。空欄に「待機中」を入れる選択肢(ウ・カ・キ・ク・ケ)は、この読み取りでも外せます。
収穫失敗の矢印は、図にありません。トマトを切り離せなかったときは「収穫中状態のまま」次のトマトへ進むので、状態が変わらないからです。
異常から出ていく矢印もありません。本文に復帰の手順が書かれていないからです。「矢印がないのは描き忘れ」と考えず、本文に書かれていないことの表れと読むと、aが異常だとすぐに決まります。
時間をかけないコツ:本文より先に図3を見る
解く時間の目安は3分ほどです(当サイトの推測)。この問5は、手順1・2の2手で答えが決まります。本文の〔収穫ロボットの動作概要〕を頭から全部読むより、先に図3の矢印の形を見て、確かめたい箇所だけを本文で探すほうが速く解けます。浮いた時間は、問2や問3のような長い問題に回せます。
設計レビューの目で読み直す:仕様に書かれていない異常
この状態遷移図は、設計レビューで「仕様の抜け」を探す練習にも使えます。
異常状態に入るのは、移動中に障害物を検出し続けたときだけです。アームの動作中の異常(トマトが引っかかる、圧力センサーが故障するなど)は本文に書かれておらず、収穫中・積載中から異常への矢印もありません。
また、異常状態から出る矢印がないので、復帰は人の操作(再起動など)に頼ることになります。温室で実際に動かすなら、復帰したあとに待機位置へ戻るのか、止まった位置から収穫を続けるのかを決めておかないと、同じ列のトマトを二度探すことになります。
同じ形式の問題を解くときは:形の特徴から埋めて、本文で1本ずつ照らす
状態遷移図の空欄を埋める形式は、「出ていく矢印がない状態」「遠くへ戻る長い矢印」のように、矢印の形が特徴的な状態から先に決めると速く解けます。空欄を埋めたら、最後に本文の遷移の記述と1本ずつ照らし合わせると、取り違えを防げます。
同じ形で練習する(3問・正答はプログラムで確認)→ 練習1搬送ロボット
参考にした資料
独立行政法人情報処理推進機構(IPA)(確認)