応用情報技術者過去問題 令和5年秋期 午後問7
⇄問題文と設問を画面2分割で開く⇱問題PDF問7 組込みシステム開発
トマトの自動収穫を行うロボットに関する次の記述を読んで,設問に答えよ。
G社は,温室で栽培されているトマトの自動収穫を行うロボット(以下,収穫ロボットという)を開発している。収穫ロボットの外観を図1に,収穫ロボットのシステム構成を図2に,収穫ロボットの主な構成要素を表1に,収穫ロボットの状態遷移の一部を図3に示す。〔収穫ロボットの動作概要〕
収穫ロボットの動作概要を次に示す。
〔アームの関節部について〕
アームには,軸1,軸2,軸3の三つの回転軸があり,それぞれの回転軸にはサーボモーターが使用されている。サーボモーターはPWM方式で,入力する制御パルスのデューティ比によって回転する角度を制御する。
サーボモーターの仕様を表2に,各サーボモーターの制御角とアームの可動範囲を図4に示す。サーボモーターは,制御パルス幅1.0ミリ秒の場合,制御角が-90度(反時計回りに90度)に,制御パルス幅11.0ミリ秒の場合,制御角が90度(時計回りに90度)になるように回転する。〔制御部のソフトウェア構成について〕
収穫ロボットの制御部では,リアルタイムOSを使用する。制御部の主なタスクの処理概要を表3に示す。
G社は,温室で栽培されているトマトの自動収穫を行うロボット(以下,収穫ロボットという)を開発している。収穫ロボットの外観を図1に,収穫ロボットのシステム構成を図2に,収穫ロボットの主な構成要素を表1に,収穫ロボットの状態遷移の一部を図3に示す。〔収穫ロボットの動作概要〕
収穫ロボットの動作概要を次に示す。
- 収穫ロボットは,管理者スマホから管理サーバを介して収穫開始の指示を受けると,状態を待機状態から開始/終了状態に遷移させ,あらかじめ管理サーバから設定された経路(待機位置→収穫開始位置→収穫終了位置→待機位置)に沿って温室内を50cm/秒の速度で移動を開始する。
- 待機位置から収穫開始位置まで移動すると,状態を検出中状態に遷移させ,認識用カメラで撮影したトマトの画像の解析を行いながら移動を続ける。収穫に適したトマトを検出すると,移動を停止して状態を収穫中状態に遷移させ,収穫を行う。
- 認識ユニットの解析結果から,ハンドを収穫対象のトマトに近づけ,近接カメラで撮影した画像でハンドの位置を補正して収穫を行う。
- ハンドには圧力センサーが取り付けられており,トマトを傷つけないように把持(はじ)できる。トマトを把持した後,ハンドの先端にあるカッターでトマトの柄の部分を切断して収穫する。
- トマトを柄から切り離して把持できた場合,収穫成功と判断し,状態を積載中状態に遷移させ,収穫したトマトを近接カメラで撮影した画像から判定した収穫トレーの空き領域に載せる。
- トマトを収穫トレーに載せた後,更に収穫に適したトマトが残っており,かつ,収穫トレーに空き領域が残っていれば,状態を積載中状態から収穫中状態に遷移させ,検出している全てのトマトを収穫するか収穫トレーの空き領域がなくなるまで収穫動作を繰り返す。
- トマトを柄から切り離すことができなかった場合や切り離した後にハンドから落とした場合などは収穫失敗と判断し,収穫中状態のまま,検出している次のトマトの収穫を行う。
- 検出している全てのトマトに対して収穫動作を終えると,収穫を終えたときの状態と収穫ロボットの経路上の位置,収穫トレーの空き領域の状況から次の状態遷移先と動作を決定する。
- 収穫終了位置で,収穫に適したトマトを検出していない場合は,収穫を終了し,待機位置へ移動する。
- 収穫ロボットは動作状況や収穫状況などの情報を定期的に管理サーバに送信する。
- 管理者は管理者スマホを使用して管理サーバに保管されている情報を参照することができる。
- 収穫ロボットが移動中に,台車の先頭に取り付けられた超音波センサーが,進路上1m以内の距離にある障害物を検知すると移動を停止し,状態を異常状態に遷移させ,管理サーバを介して管理者スマホに警告メッセージを送信する。
〔アームの関節部について〕
アームには,軸1,軸2,軸3の三つの回転軸があり,それぞれの回転軸にはサーボモーターが使用されている。サーボモーターはPWM方式で,入力する制御パルスのデューティ比によって回転する角度を制御する。
サーボモーターの仕様を表2に,各サーボモーターの制御角とアームの可動範囲を図4に示す。サーボモーターは,制御パルス幅1.0ミリ秒の場合,制御角が-90度(反時計回りに90度)に,制御パルス幅11.0ミリ秒の場合,制御角が90度(時計回りに90度)になるように回転する。〔制御部のソフトウェア構成について〕
収穫ロボットの制御部では,リアルタイムOSを使用する。制御部の主なタスクの処理概要を表3に示す。
設問1
収穫ロボットの状態遷移について答えよ。
- 収穫終了位置まで移動したときに開始/終了状態への状態遷移が発生するのはどのような場合か。25字以内で答えよ。
- 収穫終了位置で,収穫に適した2個のトマトを検出した。2個目のトマトの把持に失敗したとき,1個目のトマトの収穫を開始した時点から2個目のトマトの把持に失敗して次の動作に移るまでの状態遷移として,適切なものを解答群の中から選び記号で答えよ。
解答群
- 収穫中状態→積載中状態→開始/終了状態
- 収穫中状態→積載中状態→収穫中状態→開始/終了状態
- 収穫中状態→積載中状態→収穫中状態→積載中状態→開始/終了状態
- 収穫中状態→積載中状態→収穫中状態→積載中状態→収穫中状態→開始/終了状態
解答入力欄
解答例・解答の要点
- 収穫に適したトマトを検出していない場合 (19文字)
- イ
解説
- 〔収穫ロボットの動作概要〕に「待機位置から収穫開始位置まで移動すると,状態を検出中状態に遷移させ,認識用カメラで撮影したトマトの画像の解析を行いながら移動を続ける」とあるように、移動中の状態は"検出中"なので、収穫終了位置に移動する直前の状態も"検出中"ということになります。
図3を見ると、"検出中"からの状態遷移先には"収穫中"、"異常"又は"開始/終了"があるとわかります。このうち"収穫中"状態への遷移は、収穫終了位置において収穫に適したトマトを検出した際に発生します。逆に「収穫終了位置で,収穫に適したトマトを検出していない場合は,収穫を終了し,待機位置へ移動する」ことになります。したがって、"開始/終了"状態への遷移が発生するのは「収穫に適したトマトを検出していない」場合です。
なお、"異常"状態への遷移は進路上にある障害物を検知したときに発生しますが、これは移動中にのみ発生するので、既に収穫終了位置まで移動している本ケースでは無視してよいです。
∴収穫に適したトマトを検出していない場合 - 1個目のトマトの収穫開始以降のロボットの動作は次のようになります。
- 1個目のトマトの収穫を開始
- 1個目のトマトの収穫に成功
- 収穫した1個目のトマトを収穫トレーの空き領域に載せる
- 2個目のトマトの収穫を開始
- 2個目のトマトの把持に失敗
- 収穫を終了(収穫終了位置で検出したすべてのトマトに対して収穫動作を終えたため)
- 待機位置へ移動
- 1. "収穫中"
- 1.→2. "収穫中"のまま変わらない
- 2.→3. "収穫中"から"積載中"に遷移
- 3.→4. "積載中"から"収穫中"に遷移
- 4.→5. "収穫中"のまま変わらない
- 5.→6. "収穫中"から"開始/終了"に遷移
- 6.→7. "開始/終了"から"待機"に遷移
∴イ:収穫中状態→積載中状態→収穫中状態→開始/終了状態
設問2
制御部のタスクについて答えよ。
- 認識タスクから収穫トレーの空き領域の情報を受け取ったとき,メインタスクが開始/終了状態へ遷移する条件を20字以内で答えよ。
- 認識タスクがメインタスクに収穫に適したトマトを検出したことを通知するときに合わせて通知する必要がある情報を答えよ。
- 表3中のaに入れるタスク名を,表3中のタスク名で答えよ。
解答入力欄
- a:
解答例・解答の要点
- 収穫トレーに空き領域がない (13文字)
- トマトの個数
- a:メイン
解説
- 表3の"認識タスク"説明の4つ目を読むと、認識タスクが収穫トレーの空き領域の情報を通知する先はアーム制御タスクとaとタスクとわかります。この空き領域の情報を通知は、トマトを収穫トレーに積載した直後("積載中"状態)に、さらに収穫できるかどうかを判断するタイミングで行われます。この際、収穫トレーに空き領域があれば、アーム制御タスクが「アームとハンドを制御し,収穫したトマトを収穫トレーに載せる」処理を行う("収穫中"への遷移)か、収穫に適したトマトを探すために移動を開始する("検出中"への遷移)ことになります。これに対して、空き領域がない場合にはこれ以上収穫することはできないので、収穫動作を終了することになります(開始/終了状態への遷移)。
したがって、収穫トレーの空き領域の情報を受け取ったときに開始/終了状態へ遷移するのは「収穫トレーの空き領域がないとき」です。
∴収穫トレーに空き領域がない - 〔収穫ロボットの動作概要〕を読むと、認識タスクがメインタスクに収穫に適したトマトを検出したことを通知するのは、"検出中"状態において認識タスクが認識カメラで撮影した画像を解析した後です。収穫に適したトマトの検出は"検出中"状態のときにのみ行われ、その後、トマトの収穫を開始してから、その位置において検出したすべてのトマトの収穫が完了するまでの間に行われることはありません。
1つ目のトマトを収穫した後に、更に収穫に適したトマトが残っているかどうかを判定するプロセスがありますが、この段階でトマトの検出が行われない以上、判定のためには、収穫に適したトマトが残っているかどうかを知るための情報を事前に得ていなければなりません。判定に必要となるのは、収穫動作を何回繰り返せばよいかがわかる情報であり、認識プロセスが検出した「トマトの個数」を知ることができれば足ります。したがって、トマトを検出したことに加え、検出したトマトの個数の情報をメインタスクに通知する必要があります。
∴トマトの個数 - 〔aについて〕
空欄aが含まれる文中に、アーム制御タスクへの通知を行うことは既に記載されているので、空欄に入るのは表3のタスク名のうち、メイン、台車制御、無線LAN通信のいずれかです。各タスクの処理に、収穫トレーの空き領域の情報を用いる処理があるかを確認します。
表3の処理概要を見ると、台車制御タスク及び無線LAN通信タスクには、空き領域の情報を用いる処理はありません。一方でメインタスクは状態管理を行うタスクであり、(1)で解説したとおり、収穫トレーの空き領域の情報から次の状態遷移先を決定する処理があるので、メインタスクには空き領域の情報を用いる処理が含まれています。したがって、空欄aに当てはまるのは「メイン」です。
∴a=メイン
設問3
アームの制御について,アームの各関節部の軸に制御パルスが図5のように入力された場合,アームはどのような姿勢に変化するか。解答群の中から選び記号で答えよ。
解答群
- 軸1が-54度,軸2が5度,軸3が-72度変化した姿勢
- 軸1が0度,軸2が-54度,軸3が72度変化した姿勢
- 軸1が0度,軸2が72度,軸3が-54度変化した姿勢
- 軸1が5度,軸2が-54度,軸3が72度変化した姿勢
解答入力欄
解答例・解答の要点
- ウ
解説
PWM(Pulse Width Modulation:パルス幅変調)は、信号の強度は一定のままパルス信号を出力する時間を長くしたり短くしたりすることで、電気機器への供給電力を制御する方式です。デューティー比とは、パルス周期に対するパルス幅の割合を指します。
表2より、パルス周期はPWMサイクルの値から20ミリ秒とわかります。つまり、サーボモーターの角度は、入力制御パルスの20ミリ秒区間内におけるパルス幅(電圧が高くなっている区間)の長さによって決まることになります。制御パルス幅が1.0ミリ秒で-90度、11.0ミリ秒で90度であり、その間は制御パルス幅の長さに比例して決まりので、パルス幅が1ミリ秒増加したときの角度の変化は、次のように計算できます。
{90 - (-90)}[度] ÷ (11 - 1) [ミリ秒]
= 180[度] ÷ 10.0[ミリ秒] = 18[度/ミリ秒]
つまり、「-90度・1.0ミリ秒」を基準に、パルス幅が1.0ミリ秒長くなるごとに18度増えていくことになります。以上を踏まえて、各軸の制御パルス幅に注目してアームの角度を求めていきます。
【軸1】
20ミリ秒ごとの各区間内で電圧が高くなっている区間は6ミリ秒です。制御パルス幅は6ミリ秒なので、求める角度は、
-90[度] + 18[度/ミリ秒] × (6 - 1)[ミリ秒]
= -90 + 18 × 5 = 0[度]
【軸2】
制御パルス幅は10ミリ秒なので、求める角度は、
-90[度] + 18[度/ミリ秒] × (10 - 1)[ミリ秒]
= -90 + 18 × 9 = 72[度]
【軸3】
制御パルス幅は3ミリ秒なので、求める角度は、
-90[度] + 18[度/ミリ秒] × (3 - 1)[ミリ秒]
= -90 + 18 × 2 = -54[度]となります。
したがって正しい組合せは「ウ」となります。
∴ウ:軸1が0度,軸2が72度,軸3が-54度変化した姿勢
表2より、パルス周期はPWMサイクルの値から20ミリ秒とわかります。つまり、サーボモーターの角度は、入力制御パルスの20ミリ秒区間内におけるパルス幅(電圧が高くなっている区間)の長さによって決まることになります。制御パルス幅が1.0ミリ秒で-90度、11.0ミリ秒で90度であり、その間は制御パルス幅の長さに比例して決まりので、パルス幅が1ミリ秒増加したときの角度の変化は、次のように計算できます。
{90 - (-90)}[度] ÷ (11 - 1) [ミリ秒]
= 180[度] ÷ 10.0[ミリ秒] = 18[度/ミリ秒]
つまり、「-90度・1.0ミリ秒」を基準に、パルス幅が1.0ミリ秒長くなるごとに18度増えていくことになります。以上を踏まえて、各軸の制御パルス幅に注目してアームの角度を求めていきます。
【軸1】
20ミリ秒ごとの各区間内で電圧が高くなっている区間は6ミリ秒です。制御パルス幅は6ミリ秒なので、求める角度は、
-90[度] + 18[度/ミリ秒] × (6 - 1)[ミリ秒]
= -90 + 18 × 5 = 0[度]
【軸2】
制御パルス幅は10ミリ秒なので、求める角度は、
-90[度] + 18[度/ミリ秒] × (10 - 1)[ミリ秒]
= -90 + 18 × 9 = 72[度]
【軸3】
制御パルス幅は3ミリ秒なので、求める角度は、
-90[度] + 18[度/ミリ秒] × (3 - 1)[ミリ秒]
= -90 + 18 × 2 = -54[度]となります。
したがって正しい組合せは「ウ」となります。
∴ウ:軸1が0度,軸2が72度,軸3が-54度変化した姿勢
設問4
障害物の検知について,収穫ロボットが直進中に,超音波センサーが正面の障害物を検知して,移動を停止したとき,超音波センサーが超音波を出力してから検知に掛かった時間は最大何ミリ秒か。超音波が反射して戻ってくるまでに収穫ロボットが移動する距離を考慮して答えよ。ここで,音速は340m/秒とし,障害物は検知した位置から動かず,ソフトウェアの処理時間は考えないものとする。答えは小数第3位を切り上げ,小数第2位まで求めよ。
解答入力欄
- ミリ秒
解答例・解答の要点
- 5.90
解説
〔収穫ロボットの動作概要〕より、収穫ロボットは進路上1m以内の距離にある障害物を検知すると移動を停止します。検知に掛かった時間の「最大」を求めるので、検知距離の最大である1mの距離に障害物がある場合を計算すればよいです。これは、超音波が反射して戻ってきた瞬間のロボットと障害物との距離が1mであるということを意味するので注意してください。
超音波を出力してから検知するまで(戻ってくるまで)に掛かった時間をt秒として、必要な情報を整理します。
340t=2+0.5×t
339.5t=2
t=0.005891…[秒] ⇒ 5.891…[ミリ秒]
(小数第3位を切り上げ)5.90[ミリ秒]
したがって解答は「5.90」となります。
∴5.90
超音波を出力してから検知するまで(戻ってくるまで)に掛かった時間をt秒として、必要な情報を整理します。
- 障害物に当たった超音波がロボットに戻ってくる距離:1m
- ロボットから出力された超音波が障害物に当たるまでの距離:1mにロボットがt[秒]に移動する距離を加えた距離となります。ロボットの移動速度は50cm/秒なので「0.5m×t秒」で表すことができます。
340t=2+0.5×t
339.5t=2
t=0.005891…[秒] ⇒ 5.891…[ミリ秒]
(小数第3位を切り上げ)5.90[ミリ秒]
したがって解答は「5.90」となります。
∴5.90