オブジェクト指向を用いた自動車用組込みソフトウェアの安全化設計
2002MT016 市村 尚規 2002MT070 小山内 秀輔
指導教員 青山 幹雄

1. はじめにウスの外観を図 1 に示す．遠隔操作を必要とせず，4 つのセンサからの白線情報をもとに自律走行をする[1]．

本研究は，オブジェクト指向技術を用いて自動車組込みソフトウェアの安全性の向上を目的とする．マイクロマウスの白線認識をモデルとし，リアルタイム性を考慮して安全性を向上する機能拡張方法を提案する．

スタートボタン
電源ボタン
23.2cm23.2cm2. 自動車における組込みソフトウェア
2.1. 自動車組込みソフトウェアの現状
現代の自動車では，様々な機能が電子制御されている．
安全性，環境負荷の低減要求などから，ECU（ElectronicControl Unit）の役割や機能が増大している．
2.2. 安全性における取り組み
安全性向上に対するアプローチとして「危険を回避する機能を追加する」「障害が発生しないようソフトウェアの品質を向上する」の二つが挙げられる．本研究では前者をマイクロマウスに適用し安全性の向上を図る．

LED
背面にセンサ有り
17.0cm20.0cm

図 1 マイクロマウス
白線認識に必要なセンサの写真を図 2 に示す．走行に用いられるコースの板を図 3 に示す．センサ番号は進行方
向かつ下面から見て左から 4.3.2.1 とする．
センサ番号50.0cm

4 3 2 150.0cm

2.3. 問題点と解決策の提案
安全性を向上する機能開発においても組込みソフトウェ
アの複雑化，巨大化は問題視されている．本研究では設計開発にオブジェクト指向技術を導入する．

3. 組込みソフトウェア開発へのオブジェ
クト指向技術導入
3.1. オブジェクト指向技術導入の利点と問題点
オブジェクト指向技術を導入することで分析，設計などの上流工程において正しさを確認，検証する開発を実現する．
また信頼性と再利用性の高い設計が可能になるため，生産性の向上も可能である．OMG（Object ManagementGroup ） に よ り 標 準 化 が さ れ て い る UML(UnifiedModeling Language）を用いたモデリングによりシステムの開発プロセスを整合的に進めることができる．
一方，問題点として組込みソフトウェアでは必要不可欠な時間の取り扱い方についての概念が不十分である．このためリアルタイム性を考慮した設計を行う必要がある．

図 2 センサ

2.0cm

図 3 走行に用いられる板

4.2. 構造分析
マイクロマウスの動作を以下に示す．
(1) 電源を入れると白線を辿りスタートラインまで徐行．
(2) スタートマーカを検出すると一時停止．
(3) スタートボタンを押すと走行を再開．
(4) センサ値により両車輪を制御し，白線を辿り走行．
(5) ストップマーカを検出するとしばらく直進し，停止．
マイクロマウスのクラス図を図 4 に示す．

4. マイクロマウスのオブジェクト指向設計
4.1. マイクロマウスの特徴
マイクロマウスは完全自律型のロボットの一種であり，連続した一本の白線をトレースしながら走行する．マイクロマ※PPG…
Programmable Pulse Generator

図 4 マイクロマウスのクラス図

動作分析やソースコード解析より 9 つのクラスを抽出した．システムコントローラはメッセージの起動制御を担うコントロールオブジェクトである[2]．白線検出部はセンサ情報を保持し，センサが現在のセンサ値を取得すると PPG 設定ドライバへ周波数の設定を要求し，PPG でパルス信号を生成することでモータ回転数が変更される．
4.3. 車輪制御の仕組み
マイクロマウスは白線を光センサで認識し，センサ情報より車輪の制御を行う．図5にリアルタイム性を考慮し，センサタスク内の処理の流れを表したシーケンス図を示す[3]．
コントローラ

白線検出部

センサPPGドライバ

PPG

モータLED

1:センサ情報取得要求
2:現センサ値取得要求

同期メッセージ

3:周波数設定要求

4:パルス信号生成要求

同期メッセージのリターン

時間制約

非同期メッセージ

完了
5:モータ回転数変更要求

6:旧センサ値更新

1:センサ情報取得要求

図 5 センサタスクのシーケンス図
センサタスクの仕組みを図 6 のアクティビティ図に示す．
車輪制御要求内の「減速 1」は現在の速度×0.8，「減速 2」は×0.5 の減速となる．
進行方向

PPG設定ドライバ

現センサ状態

１ ２ ３ ４
センサの位置番号（旧センサ値=a とする）

センサ情報を取得
センサ状態を確認する

a=12,32a=4

3a≠1 or 4

1,2a=2,3 or 2

14

右車輪加速
左車輪減速
両車輪最高速度a=2,3 or 3a≠1a≠4

センサ番号(2.3)or(2)or(3)

臨界走行

パッシブ
セーフティ

センサ番号
セ ン サ 値 =0(1)or(4)白線未認識走行
セ ン サ 値 =0 が100 回 以 上

迷走

図 7 安全化設計による状態遷移
中央走行はセンサ位置番号(2)(3)(2.3)，臨界走行は(1)(4)の場合である．昨年の卒業研究より「迷走」状態の定義は「白線未認識状態が 0.2 秒以上続いた」場合であるのでセンサ値=0 が 100 回を超えた場合は迷走状態に陥る[4]．

モータ回転数

5.2.1. センサタスク処理の追加
第 1 に図 6 のセンサタスクの 7 つの処理に加え，白線を離脱する可能性が高い場合の処理を 2 つ追加する．状態を細分化することにより車輪制御の精度を上げる．
1) 現センサが 4 のみ ON の場合
旧センサが4のみONの場合，左車輪加速，右車輪減速
2) 現センサが 1 のみ ON の場合
旧センサが1のみONの場合，左車輪減速，右車輪加速
5.2.2. センサタスク処理の変更
第 2 にカーブ進入時に減速する機能を追加する．白線離脱の確率が低下し，白線認識率が向上する．処理内容
はセンサ位置(1)or(4)が白線を認識した場合に減速する．
図 8 にセンサタスクのアクティビティ図を示す．

変更

進行方向

3,4

左車輪加速
右車輪減速

左車輪減速1

ア ク テ ィブセーフティ(1 )or(4)5.2. アクティブセーフティ
迷走を未然に防ぐために，以下のようなセンサタスク処理の追加と変更を行う．

完了
完了

{2ms}

中央走行
センサ番号

右車輪減速1

センサの位置番号

左車輪減速2

旧センサ値
更新（a=旧センサ値とする）

4.4. 走行における問題点
マイクロマウスの走行における問題点は「白線離脱後に迷走する」ことである．白線未認識時は白線を再認識するまでモータ回転数を変更できないため迷走状態に陥る．

5. マイクロマウスにおける安全化設計
5.1. 設計方法の提案
ソフトウェアの安全性を保証するように機能拡張する方法を提案する．安全性の低い状態を回避することで安全性を保証するアクティブセーフティ，安全性が低い状態の被害を最小限に抑えることで安全性を保証するパッシブセー
フティの 2 つの考えから問題の解決を図る．図 7 に走行における状態遷移図を示す．

a=1
2,323

右車輪減速2

図 6 センサタスクのアクティビティ図

PPG設定ドライバ

現センサ状態

１ ２ ３ ４

センサ情報を取得
センサ状態を確認する

a=4

左車輪加速
右車輪減速
右車輪加速
左車輪減速

a≠1 or 4
両車輪最高速度1,2

a=2,3 or 2

左車輪減速13,4

a=2,3 or 3

右車輪減速114

旧センサ値にかかわらず

モータ回転数変更

左車輪減速2右車輪加速
左車輪減速2
右車輪減速

旧センサ値
更新

図 8 カーブ進入時に減速させるセンサタスク
5.3. パッシブセーフティ
迷走時の動作変更を行い，それに伴って方向転換と自動停止機能を追加する．
5.3.1. 迷走時の動作変更
迷走状態に陥る前に一時停止させる．モータ停止時間を 0.2 秒とする．後退時は通常速度の 0.5 倍で走行する．
0.5 倍は，急カーブの場合には図 6 に示す「減速 2」（通常速度×0.5 倍）の処理をすることから，0.5 倍で走行することで白線認識率が向上する．以下に動作の流れを示す．

(1) 0.2 秒間白線未認識状態が続くとモータ停止(2) モータを逆転させセンサが白線を再認識するまで後退(3) センサが白線を再認識した場合にモータ停止(4) モータを正転させ，通常動作(0.5 倍の速度)に戻す
5.3.2. 方向転換機能の追加
5.3.1 の拡張機能は一度白線を離脱した場所に同じ車体の向きでリスタートする．そのため車体の向きを進行方向に回転する機能を追加する．以下に動作の流れを示す．

…

…

…

1）後退中にセンサが白線を認識し，一時停止
2）センサ値を呼び出し車体の向きを変える
3）進行方向に車体を向け，一時停止
4）通常動作に戻す
白線検出部
コントローラPPG
LED
センサ PPGドライバ
モータ2）でセンサ番号
1:センサ情報取得要求
2:現センサ値取得要求
が(1)の場合は左車
完了
完了
輪停止・右車輪回
3:周波数設定要求（回転）4:パルス信号生成要求
転，(4)の場合は左完了
5:モータ回転要求
完了
完了
車輪回転・右車輪
1:センサ情報取得要求停止する．3)でセン
2:現センサ値取得要求
サ番号(2,3)(2)(3)の完了
完了
3:周波数設定要求（停止）
4:パルス信号生成要求
場合に回転を停止
完了
5:モータ停止要求する．方向転換時
完了
完了の処理の流れを図9 に示す．図 9 方向転換のシーケンス図5.3.3. 自動停止機能の追加
後退中に白線を認識できない場合に自動停止する機能を追加する．後退走行は白線を認識するまでに最低 0.4 秒(13.0cm)が必要であるので，自動停止時間は 0.4 秒以上となる．コースの板上であれば安全性が保証できると仮定し，白線中心から板の端までの 25.0cm を安全走行距離とした．
25.0cm は 0.4 秒での走行距離 13.0cm を超えているため13.0 から 25.0cm が安全性を保証できる走行区間である．
自動停止時の処理の流れを図 10 に示す．
コントロー ラ{2 m s}

白線検出部

センサ

PPGドライバ

1 :セ ン サ 情 報 取 得 要 求
2 :現 セ ン サ 値 取 得 要 求
完了

完了

1 :セ ン サ 情 報 取 得 要 求
2 :現 セ ン サ 値 取 得 要 求
完了

完了

1 :セ ン サ 情 報 取 得 要 求
2 :現 セ ン サ 値 取 得 要 求
完了

完了

3 :周 波 数 設 定 要 求 （ 停 止 ）{1 .0 s}

完了

モータ

LE D

1回 目

2回 目

…

…

{0 .2 s}

PPG

100回 目
4 :パ ル ス 信 号 生 成 要 求
完了
5 :モ ー タ 停 止 要 求
完了

6 :ウ ェ イ ト 要 求
6 :周 波 数 設 定 要 求 （ 逆 転 ）7 :パ ル ス 信 号 生 成 要 求
完了

完了

8:モ ー タ 逆 転 要 求
完了

1 :セ ン サ 情 報 取 得 要 求
2 :現 セ ン サ 値 取 得 要 求
完了

完了

2 :現 セ ン サ 値 取 得 要 求
完了

…

…

{0 .7 7 s } 1 :セ ン サ 情 報 取 得 要 求

1回 目

384回 目完了

3 :周 波 数 設 定 要 求 （ 停 止 ）完了

4:パ ル ス 信 号 生 成 要 求
完了
5 :モ ー タ 停 止 要 求
完了

図 10 自動停止のシーケンス図

図 10 には実行時間を明確にするため時間制約を付加した．
センサ情報取得要求の最初 100回と後退時 384回のレスポンス
メッセージは全て白線未認識メ
ッセージである．

5.4. 拡張機能の動作分析
拡張機能により走行状態は中央，臨界，後退，方向転換，白線未認識，迷走の 6 つに分けられる．後退走行は白線未認識回数が 1 回以上 384 回以下，白線未認識は１回以上100 回以下，迷走は 100 回を超えた場合である．方向転換は白線認識回数が1回より多く200回以下である．よって安全性が高い順に「中央走行>臨界走行>方向転換>後退走行>白線未認識>迷走」となる．表 1 に安全化基準表を示す．
これにはマイクロマウスから白線までの距離，白線認識率，センサ状態を付加させた．拡張機能を含めた動作の状態遷移を図 11 に示す．
表 1 安全化基準表●

状態名

距離(cm)

認識率(%)

センサ状態

センサ処理状態

迷走

1.7-14.0

0-87.9センサ値=0

未認識回数>100

2 白線未認識 1.7-14.0

0-87.9センサ値=01≦未認識回数≦100

センサ値=01≦未認識回数≦384

1

電源を入れる
初期化

3

後退走行

1.7-14.0

0-87.9

4

方向転換

0-1.7

87.9-100 センサ値≠0 1<認識回数≦200

5

臨界走行

0.4-1.7

87.9-97.1

センサ番号=(1)(4)

6

中央走行

0-0.4

97.1-100

センサ番号=(2,3)(2)(3)

徐行走行

スタートマーカ検出
一時停止

待機[センサ値≠0]

スタートボタンを押す

回復走行

通常走行
[センサ値≠0]

未認識走行
中央走行[ストップマーカ検出]●臨界走行● [センサ値=0]
一時停止[センサ値=0] 白線未認識

迷走

方向転換

停止
[センサ値=0]

●
○

後退走行

[センサ番号 [センサ値≠0][センサ値=0]=(1)(4)]
停止[センサ番号=(2,3)(2)(3)]

図 11 制御全体の処理の流れ

6. 拡張機能の検証
6.1. 検証方法
図 7 の状態遷移図の各状態に遷移確率を導入することで安全性の保証を検証する．拡張機能と安全性の評価を行うために以下の走行実験を行った．
(1) コースを直線 60%，曲線 40%の割合で作成(2) マイクロマウスを 6 台用いて走行(3) 1 台 20 回(6 台で計 120 回)走行
(4) 完走した回数，コースを外れて迷走した回数を記録
6.2. 実験結果
表 2 実験結果
完走（回）

迷走（回）

迷走確率(%)

a1915.0b2000c1915.0d18210.0e18210.0f2000

合計

114

65.0

走行結果を表2に示す．
表中の a～f はマイクロマウスを指し，それぞれの完走と迷走回数，迷走確率を表している．実験より迷走する確率は 5.0%である．

6.3. 状態における確率
実験では全てカーブで白線を見失い迷走状態に陥った．
また「白線未認識状態に遷移した場合は全て迷走状態に陥る」と仮定をする．中央走行はコースの直線の割合である60%であり，迷走する確率は 5.0%である．臨界走行は35(100-(60+5))%となる．後退走行は迷走と同じ 5.0%である．後退走行は白線を再認識することを前提として追加した機能であり，白線未認識率は低い．よってマイクロマウスの迷走状態に陥る確率と同じ 5.0%(全体で 0.25%)となり，方向転換は 4.75%(5-0.25)となる．表 3 に確率を付加した安全化基準表を示す．図 12 に各状態遷移に確率を付加した状態遷移図を示す．
表 3 安全化基準表
●

走行状態名

未認識

初期化

徐行走行

回復

スタートマーカ検出
一時停止

通常停止

待機迷走

5.0

白線未認識

5.0

後退走行

5.0

方向転換4.75

臨界走行

35.0

中央走行

60.0

自動停止

0.25

本研究では，安全性向上のための機能拡張を UML を用いて動作解析をし，評価と検証を行った．しかし UML の図的表現によって可能となる評価方法には限界がある．白
線を離脱しない動作や停止時間，実行のタイミングなど
UML 上では表現できない問題が存在する．そのような問題を解決するには実装をしてマイクロマウスを実際に動作させる必要がある．同様にオブジェクト指向技術を導入した場合の利点も現状と比較して検証する必要がある．

回復走行

通常走行(95.0)●[センサ値=0][ストップマーカ検出]● [センサ値=0]

未認識走行(5.0)

臨界走行（35.0）

中央走行（60.0）

8. 考察と今後の課題[センサ値≠0] →4.75

スタートボタンを押す[センサ値≠0]

確率(%)

状態名

電源を入れる

図 13 からも分かるように，拡張後は迷走後に終了することはなくなり，通常走行に戻る確率が向上した．よって本研
究で提案した拡張機能の安全性の向上が確認できた．
この実験はアクティブセーフティの機能は実験結果に含まれていない．アクティブセーフティの機能を追加したマイクロマウスを使用して今回と同様の実験を行なった場合，迷走確率は今回の実験結果である 5.0%未満になり，白線認識走行の確率が向上すると考えられる．

白線未認識
（5.0）

迷走
（5.0）

[センサ番号 [センサ値≠0]=(1)(4)][センサ値=0]

方向転換（4.75）

停止●○

後退走行（5.0）

一時停止[センサ値=0] →0.25

停止
（5.0）

[センサ番号=(2,3)(2)(3)]

図 12 状態遷移図を用いた状態ごとの確率

7. 評価
図 12 より迷走状態に陥った場合，拡張機能により通常走行に戻る確率は 99.75%(95.0+4.75)である．機能拡張前と比べ全体として安全性が 4.75%向上した．迷走し続ける確率は 5.0%から 0%となった．さらに通常走行に戻る確率は 4.75%になった．よって迷走状態の 5.0%と比べると前者は100.0%，後者は95.0%の安全性が向上した．図13に拡張前後の状態における確率の遷移を示す．
拡張前

9. まとめ本研究では自動車組込みソフトウェアの設計・開発段階においてオブジェクト指向技術を導入し，安全性を向上する設計方法を提案した．モデルとしてマイクロマウスを使用し，パッシブセーフティ，アクティブセーフティの両面から安全性の向上を図った．安全性向上機能の評価方法として走行状態の状態遷移図に確率を導入して検証を行った．しかし UML を用いた検証方法では限界があるので，実装することで拡張機能における動作や実行のタイミングを検討する必要がある．

参考文献
[1]
[2]

拡張後
白線認識走行 99.75%

白線認識走行 95.0%

中央走行(60)

パッシブセーフティ⇒4.75%

中央走行(60)

アクティブ
セーフティ

[4]

臨界走行(35)

臨界走行(35)
5.0%

5.0%

白線未認識走行白線未認識走行
5.0%

5.0%

迷走

迷走

5.0%

5.0%
終了

後退
0.25%
自動停止

[3]

4.75%
方向転換

図 13 拡張前後の状態における確率の遷移

富士通，マイクロマウスファームウェア仕様書 第 2.0
版，2000.
青山幹雄ほか，オブジェクト指向に強くなる，技術評
論社，2003.
B. Douglas，リアルタイム UML 第 2 版，翔泳社，
2001.
近藤 広樹ほか，南山大学数理情報学部情報通信学科 2004 年度卒業論文 「自動車用組み込みソフトウ
ェアのモデル化と安全化設計」，2005.