令和7年秋期試験午後問題 問7
問7 組込みシステム開発
⇱問題PDF
猫の自動給餌健康監視システムに関する次の記述を読んで,設問に答えよ。
猫の自動給餌健康監視システムに関する次の記述を読んで,設問に答えよ。
広告
G社は,猫の飼育に対応する自動給餌機と猫に装着するスマート首輪,及びスマートフォン(以下,スマホという)にインストールされた専用アプリケーションソフトウェア(以下,アプリという)から構成される,自動給餌健康監視システム(以下,本システムという)の開発を行っている。自動給餌機は餌タンクに蓄えた餌を供給して猫の食事管理を行い,スマート首輪は猫の体調に関するデータの計測を行い,アプリは自動給餌機の状態の確認,設定及び操作を行う。本システムの構成を図1に,自動給餌機の主な構成要素を表1にそれぞれ示す。
〔スマート首輪の動作概要〕
スマート首輪は,加速度センサー,体温センサー及びBLE通信部を内蔵している。スマート首輪の動作概要を次に示す。
自動給餌機1台につき,一つのスマート首輪が関連付けられている。また,アプリから1回分の給餌量,1日の給餌量,猫の画像が設定できる。自動給餌機の動作概要を次に示す。
スマート首輪が作成した体調データのデータ数のうち,自動給餌機が受信できたデータ数の割合をデータ受信率という。24時間で自動給餌機が受信できたデータ数が936個の場合,データ受信率は936/1,440=65%である。
〔アプリの動作概要〕
アプリの動作概要を次に示す。
自動給餌機の制御部では,リアルタイムOSを使用する。自動給餌機の制御部の主なタスクの一覧を表2に示す。


スマート首輪は,加速度センサー,体温センサー及びBLE通信部を内蔵している。スマート首輪の動作概要を次に示す。
- スマート首輪は,0.5秒ごとにBLEのビーコンを発信する。
- 1分ごとに,次の処理を行い,猫の体調に関するデータ(以下,体調データという)を作成する。1分ごとに1回分の体調データを作成するので,24時間では1,440個のデータになる。1回分の体調データは計測日時,運動量,呼吸数,体温及び猫の安静状態を示すフラグ(以下,安静フラグという)で構成される。
- 1分間の加速度センサーの出力値を集計して,運動量に変換する。
- 1分間の加速度センサーの出力値の変化から,呼吸数を算出する。
- 体温センサーで体温を計測する。
- 5回以上連続して運動量が一定値を下回った場合,安静フラグを有効に設定する。安静フラグが有効なときの呼吸数と体温を,それぞれ安静時呼吸数と安静時体温とし,安静フラグが有効な体調データを安静データとする。それぞれ正常な範囲は,15~30回/分と38~39℃である。
- 体調データは最大60回分蓄積することができる。自動給餌機からの送信要求を受信すると,蓄積した体調データを送信する。何らかの理由で自動給餌機からの送信要求を受け取れずに,体調データを送信できなかった場合は,60回分を超えると,新しい体調データを最も古いデータに上書きする。蓄積したデータは,送信要求を受信できた時にまとめて送信する。
自動給餌機1台につき,一つのスマート首輪が関連付けられている。また,アプリから1回分の給餌量,1日の給餌量,猫の画像が設定できる。自動給餌機の動作概要を次に示す。
- スマート首輪からBLEのビーコンを受信する。ビーコンの受信信号強度から,猫との距離を測定し,次の動作を行う。
- 猫が一定距離内に来たらカメラを起動し,録画を開始する。
- 録画データから猫がトレイの正面に一定時間いると判定した場合,カメラを停止し,次の方法で餌の供給量を算出して,トレイに供給する。
(ア) 1日の給餌量から,その日に猫が食べた餌の量を引く。
(イ) (ア)の結果と1回分の給餌量の小さい方を選択する。
(ウ) (イ)の結果からトレイ上に残っている餌の量を引き5g単位で切り上げたものを餌の供給量とする。ただし,結果が負の場合は0gとする。 - 猫が離れると,餌を供給していた場合,ひずみセンサーの計測値から食べた餌の量を算出して記録する。餌を供給していない場合,カメラを停止する。
- 10分に1回,スマート首輪に送信要求を送信し,体調データを受信し,蓄積する。
- アプリから要求を受信すると,猫が食べた餌の量及びスマート首輪から受信して蓄積している体調データを送信する。
- 餌タンクが空になったことを検知し,アプリに空になったことを送信する。
スマート首輪が作成した体調データのデータ数のうち,自動給餌機が受信できたデータ数の割合をデータ受信率という。24時間で自動給餌機が受信できたデータ数が936個の場合,データ受信率は936/1,440=65%である。
〔アプリの動作概要〕
アプリの動作概要を次に示す。
- 自動給餌機の状態の確認,設定及び操作を行う。
- スマート首輪から自動給餌機を経由して受信した体調データ,自動給餌機から受信した食べた餌の量を保存する。
- 食べた餌の量の履歴をグラフで表示する。
- 自動給餌機から餌タンクが空であることを受信すると,アプリの利用者に通知する。
- 受信した体調データの安静時体温及び安静時呼吸数の数値から,健康監視結果を判定する。判定は,毎日0:00から24時間の安静時呼吸数と安静時体温のデータ数から行う。正常な範囲のデータ数がどちらも 95%以上の場合は"安全",どちらか一つでも90%未満の場合は"危険",それ以外は"警告"とする。
自動給餌機の制御部では,リアルタイムOSを使用する。自動給餌機の制御部の主なタスクの一覧を表2に示す。

広告
設問1
ある4日間における,自動給餌機が受信した体調データとアプリが判定した健康監視結果を表3に示す。健康監視結果の判定とデータ受信率について答えよ。

- 表3中のe,fに入れる健康監視結果を答えよ。
- 3日目に,データ受信率が100%未満になったのは,スマート首輪に原因があることが分かった。スマート首輪に発生した事象を20字以内で答えよ。ここで,スマート首輪,自動給餌機のいずれも電池切れ及び故障は発生していないものとする。
解答例・解答の要点
- e:警告
f:危険
- 古い体調データが上書きされた。 (15文字)
解説
- 健康監視結果は、〔アプリの動作概要〕に示された判定規則に従って求めます。具体的には、毎日0:00から24時間の安静時呼吸数と安静時体温のデータ数から、以下のように判定します。
- 正常な範囲のデータ数がどちらも 95%以上の場合は"安全"
- どちらか一つでも90%未満の場合は"危険"
- それ以外は"警告"
2日目は、安静データ数950のうち、正常な範囲の安静時呼吸数のデータ数が860、正常な範囲の安静時体温のデータ数が900です。- 呼吸数の正常割合 860÷950=0.905…
- 体温の正常割合 900÷950=0.947…
∴e=警告
〔fについて〕
4日目は、安静データ数1,011のうち、正常な範囲の安静時呼吸数のデータ数が900、正常な範囲の安静時体温のデータ数が992です。- 呼吸数の正常割合 900÷1,011=0.890…
- 体温の正常割合 992÷1,011=0.981…
∴f=危険 - データ受信率が100%未満ということは、自動給餌機が体調データを受信できていない時間帯があることを意味します。ここでは原因がスマート首輪側にあり、しかも故障ではないという前提があるため、首輪の蓄積と送信の仕様を確認します。
〔スマート首輪の動作概要〕には、体調データは最大60回分まで蓄積でき、自動給餌機からの送信要求(10分に1回)を受信して、体調データを送信すると記載されています。何らかの理由で送信要求を受け取れず、体調データを送信できなかった場合には、送信要求を受信できたときにまとめて送信します。もし蓄積が60回分を超えたときは、新しい体調データで最も古いデータを上書きするという仕様です。
この仕様では、送信要求を受信できない状態が60分を超えて続くと、首輪内で古い体調データが上書きされ、後からまとめて送ろうとしても古いデータの一部が失われることがわかります。これがデータの欠損が生じた理由です。以上より、スマート首輪内で発生した事象とは「古い体調データが上書きされた」こととなります。
このような送信要求の未受信が発生し得る要因として、BLEの通信範囲があります。BLEの通信範囲は障害物の多い屋内では10m程度のため、自動給餌機と猫のいる場所の位置関係によっては通信できないことも十分に想定されます。
∴古い体調データが上書きされた。
広告
設問2
自動給餌機について答えよ。
- 1秒間録画が行われたときに,生成された録画データのサイズの最大値,最小値はそれぞれ何Mバイトか。答えは小数第1位を切り上げて,整数で求めよ。ここで,1Mバイトは1,000,000バイトとする。
- トレイ上に新たに10gの餌を供給したい。ステッピングモーターに与えるパルス数は幾つか。答えは整数で求めよ。
解答例・解答の要点
- 最大値:360
最小値:120
- 300
解説
- 動画データ量は、画素数(解像度)×色深度×フレームレートで計算します。表1のカメラ仕様と表2の撮影タスクの条件から、計算に必要な数値を整理します。
- 解像度 - 200万画素
- 1画素あたりのビット数 - 可視光モードでは24ビット、赤外線モードでは8ビット
- フレームレート - 60フレーム/秒
- 非圧縮
可視光モードの1秒当たりのデータ量は、24ビット=3バイトなので、
200万[画素]×3[バイト]×60[フレーム]=360,000,000[バイト]
(Mバイト単位で)360Mバイト
赤外線モードでは、1画素あたりのビットが可視光モードと比較して3分の1のため、録画データ量も単純に上記の3分の1となります。
360[Mバイト]÷3=120[Mバイト]
∴最大値=360[Mバイト]
最小値=120[Mバイト] - 表1の給餌機構には以下の説明があります。
- 仕切版で区切られた四つの区画をもつ。1区画には5gの餌が入る
- 1区画分の回転に150パルス必要である
∴300
広告
設問3
〔自動給餌機の制御部のソフトウェアの構成〕について答えよ。
解答例・解答の要点
- a:猫検知
b:トレイの正面に
c:撮影
d:カメラ停止
- 餌を供給した直後のトレイ上の餌の量から食事完了時のトレイ上の餌の量を引く。 (37文字)
- g:トレイ上の餌の増加量 (10文字)
解説
- 〔aについて〕
空欄aは録画データの通知先となるタスクです。表1で録画データの扱いを確認すると、猫検知タスクには「カメラの録画データを受けると,…」とあります。他には録画データを受けるタスクは存在しません。したがって、空欄aに入るのは「猫検知」です。
∴a=猫検知
〔bについて〕
空欄bには、猫検知タスクが録画データを受け取った後に行う、猫の位置判定に関する字句が入ります。〔自動給餌期の動作概要〕には「録画データから猫がトレイの正面に一定時間いると判定した場合,カメラを停止し,次の方法で餌の供給量を算出して,トレイに供給する」とあり、この動作に対応させると、空欄bに入るのは「トレイの正面に」となります。
∴b=トレイの正面に
〔cdについて〕
2つの空欄は、猫が自動給餌機から離れ、かつ餌を供給していない場面で実行すべき処理を表す字句です。〔自動給餌機の動作概要〕には「猫が離れると,餌を供給していた場合,ひずみセンサーの計測値から食べた餌の量を算出して記録する。餌を供給していない場合,カメラを停止する」とあります。今回は「餌を供給していない場合」の処理なので、実行するのはカメラの停止です。
カメラの制御を行うのは撮影タスクであり、撮影タスクの概要には「カメラ停止の通知を受けると,カメラを停止し録画を終了する」とあることから、通知先タスクは「撮影」、メッセージ名は「カメラ停止」と判断できます。
∴c=撮影
d=カメラ停止 - 〔自動給餌機の動作概要〕の記述より、ひずみセンサーの計測値を基に、食べた餌の量を算出して記録することがわかります。この「食べた餌の量の算出」が行われるのは、食事完了の通知を受けたタイミングです。ひずみセンサーでトレイの重さを計測し、そこからトレイ上の餌の量を求めるものと考えられます。
ただし、食事完了時の計測で得られるのはトレイ上に残っている餌の量であり、そのままでは食べた量になりません。そこで、下線①直前の一文「餌の供給が終わると,ひずみセンサーの計測値からトレイ上の餌の量を算出して,記録する」に注目します。この記録を用いれば、餌供給直後のトレイ上の餌の量と、食事完了時に残っている餌の量を比較することができます。この差分が、猫が実際に食べた餌の量となります。
∴餌を供給した直後のトレイ上の餌の量から食事完了時のトレイ上の餌の量を引く。 - 〔gについて〕
餌タンクが空かどうかは、餌を供給した直後の状態を基に判定します。餌タンクが空に近いと、区画に十分な餌が入らず、給餌機構を回転させても算出した供給量どおりに餌が供給されない状態になります。本システムでは、餌の供給量の決定時にトレイ上の餌の残量を計測しており、この値と供給直後の餌の量の差から、実際に供給された量を算出することができます。実際の供給量が狙った餌の供給量より小さければ、餌タンクが空になったと判断できます。
∴g=トレイ上の餌の増加量
広告

広告