エンベデッドシステムスペシャリスト 2022年 午後1 問01
パワーアシストスーツに関する次の記述を読んで、設問に答えよ。
A社は、物流倉庫などで働く作業者が、荷物を持つとき及び運ぶときの腰又は下肢の負担を軽減するパワーアシストスーツ(以下、PAスーツという)を開発している。PAスーツの外観を図1に示す。

PAスーツは、各種センサーから取得した値によって、作業者の動作を判定する。判定した動作に応じて駆動部を制御して、腰又は下肢の負担を軽減するアシストを行う。
〔PAスーツの構成〕
PAスーツの構成を図2に、PAスーツの主な構成要素の機能概要を表1に示す。


〔姿勢とセンサーの関係〕
横から見た姿勢と角度センサー及び背中にあるIMUの値との関係を図3に示す。

〔アシストの概要〕
PAスーツは、荷物の持上げ及び持下げ時は腰の負担の軽減を行い、歩行時は下肢の負担の軽減を行う。PAスーツの状態と動作概要を表2に示す。
なお、荷物を持っていても直立しているときには、PAスーツの状態はアイドル状態となり、アシストを行わない。
PAスーツの状態遷移を図4に、PAスーツの状態遷移の条件一覧を表3に示す。図4の遷移の番号は表3の項番に対応している。

〔制御部のソフトウェア構成〕
PAスーツの制御部では、リアルタイムOSを使用する。制御部の主なタスクの構成を図5に、制御部の主なタスクの処理概要を表4に示す。

設問1:PAスーツのシステム仕様について答えよ。
設問1(1)
問題文を見る持上げ状態のとき角度センサーの値が増えると、どの状態に遷移するか。表2中のPAスーツの状態で答えよ。
模範解答
持下げ
解説
解答の導き方
まず、図3では直立時の角度センサーの回転角が0度で、上体を前に倒すほど回転角が大きくなっています。したがって、角度センサーの値が増加することは、前屈する方向に姿勢が変化することを示します。
次に、図4で持上げ状態から出る遷移を確認します。持上げ状態から持下げ状態への矢印は⑧です。表3の⑧には「手袋スイッチが ON、かつ、角度センサーの値が増加するとき」とあります。つまり、手袋スイッチがONのまま角度センサーの値が増加すると、持上げ状態から持下げ状態へ遷移します。
表2では、持下げ状態は荷物を下ろすときに上半身を支え、腰をアシストする状態です。前屈方向への姿勢変化に対応する遷移先は、持下げ状態です。
誤りやすいポイント
- 角度センサーの値が増加することを、腰を直立させる方向への変化と取り違えないようにします。図3では、前屈するほど角度が大きくなります。
- 表3の⑧には、角度センサーの値の増加だけでなく、手袋スイッチがONである条件も含まれています。
- 状態名は動作の向きだけで決めず、表2の定義と図4の遷移先を合わせて確認します。
FAQ
Q: なぜ歩行状態への遷移ではないのですか?
A: 持上げ状態から角度センサーの値が増加したときの遷移先は、図4で⑧が示す持下げ状態です。歩行状態への遷移条件とは異なります。
A: 持上げ状態から角度センサーの値が増加したときの遷移先は、図4で⑧が示す持下げ状態です。歩行状態への遷移条件とは異なります。
Q: 持上げ状態から持下げ状態への遷移で確認する条件は何ですか?
A: 表3の⑧に示されている、手袋スイッチがONであり、角度センサーの値が増加することです。
A: 表3の⑧に示されている、手袋スイッチがONであり、角度センサーの値が増加することです。
関連キーワード: 状態遷移、状態機械、角度センサー、姿勢判定、重力加速度
設問1(2)
問題文を見るPAスーツの状態の判定について、(a)、(b)に答えよ。
(a)表3中のaの条件を入れなかった場合、肘掛けのある椅子に座った状態で、椅子の肘掛けに両手を置き、立ち上がろうとしたときに、PAスーツの状態は持上げ状態に遷移した。その理由を、45字以内で答えよ。
(b)(a)の遷移を防ぐために追加した条件aを30字以内で答えよ。
模範解答
(a):手袋スイッチがON、かつ、角度センサーの値が持上げ開始角度内から減少したから
(b):a:背中にあるIMUのY軸の値が0近辺でないとき
解説
解答の導き方
(a)誤って持上げ状態に遷移する理由
椅子の肘掛けに両手を置くと、手袋スイッチはONになります。また、立ち上がる動作では、角度センサーの値が持上げ開始角度内から減少します。そのため、aがなければ、持上げへの遷移条件を満たしてしまいます。つまり、手袋スイッチがONで、角度センサーの値が持上げ開始角度内から減少したことが、誤遷移の理由です。
(b)誤遷移を防ぐ条件
次に、図3で角度センサーと背中にあるIMUの値の関係を確認します。直立時は、背中にあるIMUのY軸の値が0近辺です。一方、上体を前に倒すと、Y軸の値は0近辺ではなくなります。
椅子から立ち上がるときは、角度センサーの値が減少していても、上体が直立していればY軸の値は0近辺です。これに対して、荷物を持ち上げるときは、上体を前に倒した姿勢から動作を始めるため、Y軸の値が0近辺ではありません。したがって、誤遷移を防ぐには、背中にあるIMUのY軸の値が0近辺でないことを条件に加えます。
誤りやすいポイント
- 手袋スイッチがONであることだけで、荷物を持ち上げていると判断しないようにします。肘掛けに手を置いた場合もONになります。
- 角度センサーの値が減少することだけでは、立ち上がりと荷物の持上げを区別できません。どちらの動作でも値が減少し得ます。
- 図3のY軸の値は、身体の動きの有無を直接表すものではありません。姿勢によって重力加速度の向きがどう変わるかを示す値として読み取ります。
- 条件aを「Y軸の値が0近辺のとき」とすると、直立時を条件に含めてしまい、誤遷移を防げません。
FAQ
Q: なぜ角度センサーだけでは誤遷移を防げないのですか?
A: 立ち上がるときも荷物を持ち上げるときも、角度センサーの値が減少する場合があるためです。背中にあるIMUの値も使うことで、上体が直立しているか前屈しているかを見分けます。
A: 立ち上がるときも荷物を持ち上げるときも、角度センサーの値が減少する場合があるためです。背中にあるIMUの値も使うことで、上体が直立しているか前屈しているかを見分けます。
Q: Y軸の値が0近辺なら、重力がないという意味ですか?
A: いいえ。図3では、直立時にY軸の値が0近辺となっています。重力加速度がなくなるという意味ではなく、センサーの向きと重力の向きとの関係で、Y軸方向の値が小さくなるということです。
A: いいえ。図3では、直立時にY軸の値が0近辺となっています。重力加速度がなくなるという意味ではなく、センサーの向きと重力の向きとの関係で、Y軸方向の値が小さくなるということです。
Q: aは、項番④以外の遷移条件にも関係しますか?
A: はい。表3の項番①と項番④に同じaがあるため、持上げへの遷移を判定する両方の条件に関係します。
A: はい。表3の項番①と項番④に同じaがあるため、持上げへの遷移を判定する両方の条件に関係します。
関連キーワード: 状態遷移、角度計測、慣性計測、重力加速度、センサー融合
設問2:制御部のソフトウェアについて答えよ。
設問2(1)
問題文を見る表4中の下線(ア)の通知について、どのタスクから何の情報の通知を受けるか。タスク名と情報を答えよ。
模範解答
タスク名:下肢角度計測タスク
情報:下肢の角度情報
解説
解答の導き方
この設問では、表4中の下線(ア)にある「特定の通知」が、どのタスクからどの情報を受け取る通知なのかを考えます。
まず、制御タスクは通知を受けると、センサー情報を使ってPAスーツの状態を判定します。表4には、状態判定に「手袋スイッチの状態、下肢の角度情報、及びIMU計測情報」を用いるとあります。特に、下肢の角度情報を制御タスクへ送るタスクを確認します。
表4の下肢角度計測タスクの説明には、「角度センサーから下肢の角度情報を収集し、制御タスクに通知する」とあります。また、図5でも下肢角度計測タスクから制御タスクへ矢印が示されています。したがって、下線(ア)の通知元は下肢角度計測タスクで、通知する情報は下肢の角度情報です。
なお、IMU計測タスクからも制御タスクへ通知があります。ただし、表4ではその通知を受けた場合に「IMU計測情報を更新する」と、下線(ア)の通知を受けたときの処理とは分けて説明しています。二つの通知を混同しないようにします。
誤りやすいポイント
- IMU計測タスクも制御タスクへ通知するため、下線(ア)の通知元と取り違えやすいです。表4では、IMUの通知はIMU計測情報の更新に使うものとして別に記述されています。
- 通知元のタスク名だけでなく、通知する情報も答える必要があります。角度センサーの値そのものではなく、表4の表現に合わせて「下肢の角度情報」と答えます。
- 「制御タスクが状態を判定する」という処理内容と、「その処理を始めるきっかけとなる通知」を区別します。
FAQ
Q: IMU計測タスクも制御タスクへ通知するのに、なぜ解答に含めないのですか?
A: IMU計測タスクからの通知は、IMU計測情報の更新に使われるものとして表4に別記されています。下線(ア)の通知について問われているため、通知の役割を分けて考えます。
A: IMU計測タスクからの通知は、IMU計測情報の更新に使われるものとして表4に別記されています。下線(ア)の通知について問われているため、通知の役割を分けて考えます。
Q: 通知される情報は「角度センサーの値」でもよいですか?
A: センサーの種類を示すだけでなく、制御タスクへ送る情報を答えます。表4の記載に合わせて「下肢の角度情報」とします。
A: センサーの種類を示すだけでなく、制御タスクへ送る情報を答えます。表4の記載に合わせて「下肢の角度情報」とします。
Q: 図5の矢印は何を表していますか?
A: タスク間のメッセージ通信の方向です。下肢角度計測タスクから制御タスクへの通知関係を確認できます。
A: タスク間のメッセージ通信の方向です。下肢角度計測タスクから制御タスクへの通知関係を確認できます。
関連キーワード: タスク間通信、メールボックス、リアルタイムOS、センサー情報、状態判定
設問2(2)
問題文を見る模範解答
b:アシストレベル情報
c:PAスーツの状態又はPAスーツの状態遷移
解説
解答の導き方
表4では、制御タスクとアシスト管理タスクの間で通知をやり取りしています。空欄ごとに、通知を受けた後の処理と、その情報がどこで使われるかを確認します。
まず、bについて考えます。アシスト管理タスクは、ボタン操作を受けると「アシストレベル情報を1~5の範囲で更新し、制御タスクに通知する」とあります。制御タスクはその通知を受けると、保存していた情報を更新します。さらに、制御タスクは「PAスーツの状態及び b からアシスト強度を算出」します。
つまり、bには、アシスト管理タスクがボタン操作に応じて更新し、制御タスクがアシスト強度の算出に使う情報が入ります。該当するのは、アシストレベル情報です。アシスト管理タスクが表示情報を作るときにも使う情報なので、表4の記述とも一致します。
次に、cについて考えます。制御タスクは、手袋スイッチや角度センサーなどの情報からPAスーツの状態を判定し、状態が変わったときにアシスト管理タスクへ通知します。アシスト管理タスクは、その通知を受けて保存情報を更新します。また、アシスト管理タスクは表示情報を作るときに「PAスーツの状態及び b」を使います。
したがって、cは、制御タスクからアシスト管理タスクへ伝えるPAスーツの状態、または状態が変化したことを示す情報です。
誤りやすいポイント
- bをPAスーツの状態と取り違えないようにします。制御タスクは状態を自ら判定する一方、アシストレベル情報はアシスト管理タスクから通知を受け取ります。
- cをアシストレベル情報と取り違えないようにします。制御タスクからアシスト管理タスクへ通知されるのは、判定したPAスーツの状態に関する情報です。
- 通知の方向を混同しないことが重要です。ボタン操作を受けたアシスト管理タスクから制御タスクへはアシストレベル情報が伝わり、状態を判定した制御タスクからアシスト管理タスクへはPAスーツの状態に関する情報が伝わります。
FAQ
Q: cは、PAスーツの状態と状態遷移のどちらで答えてもよいですか?
A: 状態が変化したときに制御タスクから通知される情報を指すため、「PAスーツの状態」または「PAスーツの状態遷移」と捉えられます。
A: 状態が変化したときに制御タスクから通知される情報を指すため、「PAスーツの状態」または「PAスーツの状態遷移」と捉えられます。
Q: bは、アシスト強度そのものではないのですか?
A: いいえ。表4では、制御タスクがbを使ってアシスト強度を算出します。したがって、bは算出に使うアシストレベル情報であり、算出結果のアシスト強度とは区別します。
A: いいえ。表4では、制御タスクがbを使ってアシスト強度を算出します。したがって、bは算出に使うアシストレベル情報であり、算出結果のアシスト強度とは区別します。
関連キーワード: タスク間通信、状態遷移、通知、リアルタイムOS
設問2(3)
問題文を見る下肢角度計測タスクが起動してから、モータータスクの動作完了までの実行時間は最大何マイクロ秒か。ここで、OSの処理時間は無視できるものとする。
模範解答
515
解説
解答の導き方
-
求める時間は、下肢角度計測タスクが起動してから、その計測結果を使った処理を経て、モータータスクの動作が完了するまでです。図5では、下肢角度計測タスクから制御タスクへ、さらに制御タスクからモータータスクへ通知する流れになっています。
-
表4では、下肢角度計測タスクの実行時間は「5マイクロ秒」、制御タスクは「最大500マイクロ秒」、モータータスクは「10マイクロ秒」とされています。したがって、この通知の流れで必要となる各タスクの実行時間を足します。
-
タスクの優先度については、表4に「小さい値ほど高いものとする」とあります。下肢角度計測タスク、制御タスク、モータータスクはいずれもPrが1です。一方、IMU計測タスクはPrが2、アシスト管理タスクはPrが3なので、これらがPr 1の処理を割り込んで遅らせることはありません。また、OSの処理時間は無視する条件です。
-
よって、計算は となり、実行時間は最大515マイクロ秒です。
誤りやすいポイント
- アシスト管理タスクの実行時間を加えないようにします。図5では制御タスクからアシスト管理タスクへの通知もありますが、モータータスクの動作完了までの処理経路に含まれる実行時間として加えるものではありません。
- IMU計測タスクの実行時間も加えません。Prは制御タスクなどより低く、これらの処理を割り込んで遅らせないためです。
- 下肢角度計測タスクの「1ミリ秒間隔」は起動間隔であり、今回の実行時間に加える値ではありません。問われているのは、タスクが起動した後の処理時間です。
FAQ
Q: 制御タスクの実行時間は、最大値を使うのですか?
A: はい。設問は実行時間の最大値を尋ねているので、表4にある「最大500マイクロ秒」を使います。
A: はい。設問は実行時間の最大値を尋ねているので、表4にある「最大500マイクロ秒」を使います。
Q: モータータスクが通知を受け取るまでの時間も加えますか?
A: 通知やタスク切替えに伴うOSの処理時間は、設問の条件に従って無視します。モータータスク自体の実行時間は加えます。
A: 通知やタスク切替えに伴うOSの処理時間は、設問の条件に従って無視します。モータータスク自体の実行時間は加えます。
Q: IMU計測タスクが同時に起動した場合はどうなりますか?
A: IMU計測タスクのPrは2で、Pr 1のタスクより優先度が低いため、Pr 1の処理に割り込んで実行時間を延ばすことはありません。
A: IMU計測タスクのPrは2で、Pr 1のタスクより優先度が低いため、Pr 1の処理に割り込んで実行時間を延ばすことはありません。
関連キーワード: リアルタイムOS、タスク優先度、タスク実行時間、タスク間通信、プリエンプション
設問3:PAスーツの改良について答えよ。
作業者がアシストレベルを操作表示部で設定する手間を省くために、荷物の重量に応じてアシストレベルが自動で追従する機能(以下、自動追従機能という)と、過負荷やふらつき動作による作業者の危険状態に対する安全対策の機能を追加することにした。そのための機能変更とハードウェア変更の内容を次に示す。
・自動追従機能は、操作表示部のボタンの操作によって、有効と無効の切替えができるようにする。
・作業者の作業負荷を計測するために足裏荷重センサーを備えた靴を追加する。足裏荷重センサーは、制御部のシリアルI/Fに接続する。
・作業者の筋肉への負荷を計測するために腰と大腿部付近に筋電位センサーを追加し、制御部のシリアルI/Fに接続する。筋電位センサーは筋肉への負荷が増えるほど大きい値を返す。
・(イ)ある情報を用いて、作業者のふらつきなどの危険動作を検出する。
・作業中止を促すためのブザーを制御部に追加する。
制御部のタスクの変更概要を表5に示す。ここで、筋電位計測及び足裏荷重計測タスクは、新規に追加するタスクである。


設問3(1)
問題文を見る本文中の下線(イ)のある情報とは何か、表4中の字句から選んで答えよ。また、その理由を、30字以内で答えよ。
模範解答
情報:IMU計測情報又はIMUの計測値
理由:IMU計測情報の角速度からふらつきを検出できるから
解説
解答の導き方
-
まず、ふらつきなどの危険動作を検出するために使える情報を考えます。表1には、腰の左右にあるIMUから「角速度を取得し、左右の下肢の姿勢の変化を検出する」とあります。角速度は、姿勢がどのように変化しているかを捉える情報です。
-
ふらつきは、姿勢が安定せず、体や下肢の動きが変化する状態です。そのため、IMUが計測する角速度の変化を利用すれば、ふらつきなどの動作を検出できます。
-
次に、表4でその情報を表す字句を確認します。IMU計測タスクは「IMUの計測値」を収集して制御タスクに通知し、制御タスクは通知を受けた「IMU計測情報」を更新します。したがって、下線(イ)のある情報は、表4の表現では「IMU計測情報」または「IMUの計測値」と判断できます。
誤りやすいポイント
- 下肢角度計測タスクが扱う角度情報と、IMUが計測する情報を混同しないようにします。角度センサーの値は下肢の角度を把握するために使われます。
- IMUの重力加速度だけに注目しないようにします。姿勢の判定には重力加速度を使いますが、ふらつきの検出には、姿勢変化を示す角速度も手掛かりになります。
- 設問は表4中の字句から選ぶため、説明として「角速度」と書くだけでなく、表4にある「IMU計測情報」または「IMUの計測値」に結び付けて考えます。
FAQ
Q: IMU計測情報とIMUの計測値は、どちらを答えてもよいですか?
A: どちらもIMUが計測した情報を指します。表4では、計測タスクから制御タスクへ通知される値を「IMUの計測値」、制御タスクが保持・更新する情報を「IMU計測情報」と表しています。
A: どちらもIMUが計測した情報を指します。表4では、計測タスクから制御タスクへ通知される値を「IMUの計測値」、制御タスクが保持・更新する情報を「IMU計測情報」と表しています。
Q: 角度センサーでは、ふらつきを検出できないのですか?
A: 角度センサーは下肢の角度を取得します。一方、問題文ではIMUから角速度を取得すると説明されており、姿勢変化に伴う動きを捉える情報としてIMU計測情報が適切です。
A: 角度センサーは下肢の角度を取得します。一方、問題文ではIMUから角速度を取得すると説明されており、姿勢変化に伴う動きを捉える情報としてIMU計測情報が適切です。
Q: 重力加速度と角速度は、どちらもIMUの計測値ですか?
A: はい。問題文では、背中にあるIMUから重力加速度を取得して姿勢を判定し、腰の左右にあるIMUから角速度を取得して姿勢の変化を検出すると説明されています。
A: はい。問題文では、背中にあるIMUから重力加速度を取得して姿勢を判定し、腰の左右にあるIMUから角速度を取得して姿勢の変化を検出すると説明されています。
関連キーワード: IMU、角速度、重力加速度、姿勢変化、センサー情報
設問3(2)
問題文を見る表5中のdに入れる適切な処理を35字以内で答えよ。
模範解答
d:足裏荷重情報から体重を引いた値を荷物の重量として記録する
解説
解答の導き方
-
表5では、自動追従機能が有効になった直後に「足裏荷重情報を体重として設定する」とあります。この値は、荷物を持ち上げる前の基準となる体重です。
-
次に処理するのは、PAスーツの状態がアイドル状態から持上げ状態に遷移したときです。この時点では荷物を持ち上げているため、足裏荷重情報には作業者の体重に加えて荷物の重量が反映されます。
-
したがって、持上げ状態への遷移時の足裏荷重情報から、先に設定しておいた体重を引けば、荷物の重量を求められます。求めた値は、後続処理でアシストレベルを決めるために記録します。
誤りやすいポイント
- 足裏荷重情報を体重として設定する処理と、荷物の重量を記録する処理を混同しないようにします。前者は自動追従機能が有効になった直後、後者は持上げ状態への遷移時です。
- 持上げ状態への遷移時の足裏荷重情報を、そのまま荷物の重量と考えてはいけません。作業者の体重分を差し引く必要があります。
- 荷物の重量を記録するだけでなく、表5にある後続のアシストレベル決定処理に利用できるよう、重量を求める処理として考えます。
FAQ
Q: なぜ、自動追従機能が有効になった直後に体重を設定するのですか?
A: 荷物を持ち上げる前の足裏荷重情報を基準として保存し、持上げ時の荷重との差から荷物の重量を求めるためです。
A: 荷物を持ち上げる前の足裏荷重情報を基準として保存し、持上げ時の荷重との差から荷物の重量を求めるためです。
Q: なぜ荷物を持ち上げる状態への遷移時に荷重を確認するのですか?
A: 荷物を持ち上げた後の足裏荷重情報を使うことで、体重との差から荷物の重量を求められるためです。
A: 荷物を持ち上げた後の足裏荷重情報を使うことで、体重との差から荷物の重量を求められるためです。
関連キーワード: 基準値設定、差分演算、荷重計測、状態遷移、自動制御
設問3(3)
問題文を見る表5中のeに入れる適切な字句を10字以内で答えよ。
模範解答
e:筋肉への負荷
解説
解答の導き方
-
表5では、筋電位センサーについて「筋肉への負荷が増えるほど大きい値を返す」と説明されています。つまり、センサーが直接返すのは筋電位に関する値ですが、その値は筋肉への負荷の大きさを反映します。
-
表5の制御タスクでは、「筋電位情報の値の変化を基に、eを計測する」とあります。ここではセンサーの値そのものではなく、その値から推定する対象を答えます。
-
続く処理では、eが一定時間高い状態を検出すると、作業の継続が危険かどうかを判断します。筋肉への負荷が高い状態を検出する流れなので、eに入るのは「筋肉への負荷」です。
誤りやすいポイント
- 筋電位センサーが返す値そのものを答えて、「筋電位情報」としてしまうことです。問われているのは、その情報を基に計測する内容です。
- 「作業負荷」と答えてしまうことです。表5では、作業負荷の計測には足裏荷重センサーを使い、筋電位情報から計測するものとは区別されています。
- センサー値が高いときに何が高いのかを取り違えることです。本文では、筋肉への負荷が増えるほどセンサー値も大きくなると示されています。
FAQ
Q: なぜ「筋電位情報」ではないのですか?
A: 筋電位情報はセンサーから得る入力情報です。eには、その情報の値の変化から計測する対象が入ります。
A: 筋電位情報はセンサーから得る入力情報です。eには、その情報の値の変化から計測する対象が入ります。
Q: なぜ「作業負荷」ではないのですか?
A: 表5では足裏荷重情報を用いる処理と、筋電位情報を用いる処理が分けられています。筋電位情報を基に計測するのは、筋肉にかかる負荷です。
A: 表5では足裏荷重情報を用いる処理と、筋電位情報を用いる処理が分けられています。筋電位情報を基に計測するのは、筋肉にかかる負荷です。
Q: 「高い状態」とは何が高い状態ですか?
A: 筋電位情報の値を基に計測した、筋肉への負荷が高い状態です。
A: 筋電位情報の値を基に計測した、筋肉への負荷が高い状態です。
関連キーワード: 筋電位計測、センサー値、負荷推定、閾値判定






