28
レレレレレレレレレレレレレレ レレレレレレレレレレレレレレレレ レレレレ レレ レレ レレレ レレ レレレ レレ レレレレレレレレレレレレ レレレ レレレ 20091023

2. RescueRobo.ソフトウェアアーキテクチャ設計書(3)

Embed Size (px)

Citation preview

Page 1: 2. RescueRobo.ソフトウェアアーキテクチャ設計書(3)

レスキューロボットのシステムソフトウェアアーキテクチャ設計書

文書番号

承認 作成

承認者

氏名

作成者

氏名: トゥルオンティク

ィンニュ

承認日 作成日 2009・10・23

Page 2: 2. RescueRobo.ソフトウェアアーキテクチャ設計書(3)

レスキューロボットソフトウェアアーキテクチャ設計書

2009/10/23

1

Page 3: 2. RescueRobo.ソフトウェアアーキテクチャ設計書(3)

レスキューロボットソフトウェアアーキテクチャ設計書

改訂履歴項番 日付 バージョン 改訂内容 担当者 備考

1 2010・

10・23

・ 新規作成 ニュ

2 2010・

10・23

・ Update functions アィン

3 2010・

01・20

・ Update setting functions

・ Update user interface

unit

・ その他

ニュ

4 2010・

01・22

・ Update application unit

・ モータ出力とセンサー

タァン

5 2010・

01・22

・ Update view mode

・ Update 時間計測

ゲェン

6

2

Page 4: 2. RescueRobo.ソフトウェアアーキテクチャ設計書(3)

レスキューロボットソフトウェアアーキテクチャ設計書

目次

1. 概要.............................................................................................4

1.1. 本書の目的................................................................................................4

1.2. 本書の位置づけ..........................................................................................4

1.3. 記載範囲、記載内容など.............................................................................4

1.4. 参照しているドキュメントなど...................................................................4

1.5. 定義(用語、略語など).............................................................................5

2. システム構成...................................................................................6

2.1. システム全体構成......................................................................................6

2.1.1. システム構成要素の名称/基本機能.......................................................6

2.1.2. ソフトウェアに関係する外部要素の基本仕様..........................................6

3. ソフトウェア構成.............................................................................8

3.1. 全体構成図................................................................................................8

3.2. ソフトウェア機能ユニット一覧...................................................................9

3.3. ソフトウェア機能ユニット間のインタフェース.............................................9

4. 制御方式......................................................................................10

4.1. メモリ構成/レイアウト.............................................................................10

4.2. ソフトウェア制御方式..............................................................................10

4.3. 性能見積もり...........................................................................................12

5. 機能ユニット詳細............................................................................13

5.1. ユーザインタフェース機能ユニット...........................................................13

5.1.1. 概要.................................................................................................13

5.1.2. インタフェース.................................................................................13

5.2. アプリケーション機能ユニット.................................................................14

5.2.1. 概要.................................................................................................14

5.2.2. インタフェース.................................................................................14

5.3. メカニズム機能ユニット...........................................................................15

5.3.1. 概要.................................................................................................15

5.3.2. インタフェース.................................................................................15

5.4. 全体制御機能ユニット..............................................................................15

5.4.1. 概要.................................................................................................15

6. その他..........................................................................................................16

3

Page 5: 2. RescueRobo.ソフトウェアアーキテクチャ設計書(3)

レスキューロボットソフトウェアアーキテクチャ設計書

4

Page 6: 2. RescueRobo.ソフトウェアアーキテクチャ設計書(3)

レスキューロボットソフトウェアアーキテクチャ設計書

1.概要

1.1. 本書の目的本設計書の目的は, ソフトウェア要求仕様書に基づいたソフトウェアを作成するにあ

たり,そのアーキテクチャを明確にすることである。

1.2. 本書の位置づけ・ 本文書は、「ソフトウェア要求仕様書」をベースとしている

1.3. 記載範囲、記載内容など・ 本仕様書には、ソフトウェアのアーキテクチャを記載する

1.4. 参照しているドキュメントなど1) 製品概要

2) ソフトウェア要求仕様書

1.5. 定義(用語、略語など)

略語 用語 定義

LCD Liquid Crystal Display 液晶ディスプレイ

LED Light Emitting Diode 発光ダイオード

TSW Toggle Switch トグルスイッチ

SW Switch スイッチ

CMD Command コマンドおよび命令

PIDProportiona Integral

Derivativeフィードバック制御の一種

Get_tsw Get Toggle Switch トグルスイッチを採用

5

Page 7: 2. RescueRobo.ソフトウェアアーキテクチャ設計書(3)

レスキューロボットソフトウェアアーキテクチャ設計書

Ctr_sw Control Switch スイッチを制御

Sys_in System Input インプットシステム

Robo_cpuRobot Central Processing

Unit

ロボットの中心的な処理装

Robo_alu Robot Algorimthms ロボットのアルゴリズム

Lcd_outLiquid Crystal Display

Output

液晶ディスプレイ

アウトプット

6

Page 8: 2. RescueRobo.ソフトウェアアーキテクチャ設計書(3)

レスキューロボットソフトウェアアーキテクチャ設計書

2.システム構成

2.1. システム全体構成

2.1.1. システム構成要素の名称/基本機能システムは、壁に囲まれたフィールド内で、けが人を安全にできるだけ速くゴールに運

ぶことである。

2.1.2. ソフトウェアに関係する外部要素の基本仕様・ ユーザへの出力

スタータキット上の LCD(16 文字×2 段)

・ ユーザからの入力

スタータキット上の割込みスイッチ、SW2 および SW3

・ 時間の計測

CPU 内臓のタイマ

・ モータの制御

7

Page 9: 2. RescueRobo.ソフトウェアアーキテクチャ設計書(3)

レスキューロボットソフトウェアアーキテクチャ設計書

3.ソフトウェア構成

3.1. 全体構成

図 1:全体構成

3.2. ソフトウェア機能ユニット一覧機能ユニット(表中 U と略)の名称/基本機能/動作形態

ソフトウェア機能 U 基本機能 動作形態

ユーザインタフェース ・ スイッチでメニュー制御

・ LCD・LED への表示制御

・ SW2,SW3ハンドル

アプリケーション ・ セッティングモード

・ ランニングモード (アルゴリズム計算)

壁の情報の収集

スタート点へ戻る

けが人の運ぶ

・  ビュースコアモード

メカニズム ・ アルゴリズム計算

8

Page 10: 2. RescueRobo.ソフトウェアアーキテクチャ設計書(3)

レスキューロボットソフトウェアアーキテクチャ設計書

・ モーター出力

・ 時間計測

・ センサーで情報を読み込む

全体制御 ・ システムインプット制御

・ システムアウトプット制御

・ ロボット全体制御

3.3. 状態機械

図 2:ロボットの状態

3.4. 全体タスク設計 要求を元に全体のプログラムの構成を 3 つモードに分割した。それは、セッティング

モード、走行モード、ビューモードである(図 3 を参考にする)。各モードでは、複数

の タ ス ク を 含 め た 。 セ ッ テ ィ ン グ モ ー ド は 、 get_tsw タ ス ク 、 ctrl_sw2 タ ス ク 、

ctrl_sw3 タ ス ク 、 sys_in タ ス ク を 含 め た 。 走 行 モ ー ド に は 、 robo_cpu タ ス ク ,

robo_alu タスク , sensor タスク , watch タスクがある。ビューモードにおいては 、

sys_int タスク、lcd_out タスク, dsp_lcd タスクがある。各タスクの関連は、図 4 に示

している。各タスクがコミュニケーションするためには、データキューを使用している。

図 3:ロボットの構成

9

Page 11: 2. RescueRobo.ソフトウェアアーキテクチャ設計書(3)

レスキューロボットソフトウェアアーキテクチャ設計書

図 4:プログラムのタスク

全体のプロジェクトは、10 タスクを分けた。次の表に示ている。

タスクの機能 タスク名 ID 優先度

入力

Get_tsw 1 3

Ctrl_sw2 2 3

Ctrl_sw3 3 3

Get_sensor 4 2

制御

Sys_in 5 3

Robo_cpu 6 2

Robo_alu 7 2

watch 8 2

出力 Lcd_out 9 3

10

Page 12: 2. RescueRobo.ソフトウェアアーキテクチャ設計書(3)

レスキューロボットソフトウェアアーキテクチャ設計書

dsp_lcd 10 4

表1:プログラムのタスク

データを交換するように、4つのデータキューを使用している。

データキュー名 機能 ID

DTQ_ID_SYS_IN 引数をセッティングした値を格納 1

DTQ_ID_ROBO_CPU ロボットを制御するデータを格納 2

DTQ_ROBO_ALU Robo_cpuとrobo_aluのコミュニケーションのデータを格

3

DTQ_ID_SYS_OUT LCDへ出力するデータを格納 4

11

Page 13: 2. RescueRobo.ソフトウェアアーキテクチャ設計書(3)

レスキューロボットソフトウェアアーキテクチャ設計書

4.制御方式

ソフトウェア要求仕様書に記載された要求をシステム全体(ハードウェア、オペレー

タ、外部記憶媒体、メモリなど)を通してどのように実現するかを、ソフトウェア機

能ユニットを中心に記載する。

4.1. メモリ構成/レイアウト

メモリ構成、種類、サイズなど、システム・アーキテクチャ設計書または、ハードウ

ェア仕様書などから明確にするとともにソフトウェア領域をどのように使用するかを

記載する。

(ただし、高機能 32ビット MPU、VM機能付き OS、SoCなどの場合は、固定化あ

るいはバーチャル化されており、ソフトウェアでの必要な事項に関して明確化すれば

よい。)

<記載例>

・ メモリアドレス空間を基に、ROM/RAMの種類および SRAM/キャッシュ割り

当て域、ソフトウェア用領域、ハードウェアレジスタ領域位置、サイズなど

・ ソフトウェア領域の構成(コード域、データ域、OS使用域)

・ ソフトウェア共通情報制御領域の構成および、テーブル/バッファのリンク方式な

各タスクのメモリ量は、次の表に示している。

ID TASK_ID メモリ量

1 TSK_ID_GET_SW 128

2 TSK_ID_SW2 76

3 TSK_ID_SW3 76

4 TSK_ID_GET_SEN

SOR

76

5 TSK_ID_SYS_IN 408

6 TSK_ID_ROBO_CP 408

12

Page 14: 2. RescueRobo.ソフトウェアアーキテクチャ設計書(3)

レスキューロボットソフトウェアアーキテクチャ設計書

U

7 TSK_ID_ROBO_AL

U

408

8 TSK_ID_WATCH 408

9 TSK_ID_LCD_OUT 128

10 TSK_ID_CTRL_LC

D

256

全体プログラムのメモリ量は、次の表に示している。

ID 数

使用タスク数 10個

使用データキュー数 4個

使用タスク優先度の最大値 4

割り組スタックサイズ 256byte

初期化スタックサイズ 256byte

カーネルが確保するタスクスタックの個数 10個

カーネルが確保するタスクスタックの総サイズ 2372byte

カーネルが確保するデータキューの個数 4

カーネルが確保するデータキューの総データ数 16

マイコンが搭載している割り込むグループ番号最大値 31group

システムメモリプールサイズ(必要なサイズ) 4152byte

カーネル使用 BSS セクションサイズ(.bss_paprika) 5256byte

カ ー ネ ル 使 用 DATA セ ク シ ョ ン サ イ ズ

(.MN.data_paprika)

56byte

4.2. ソフトウェア制御方式

ソフトウェア機能ユニット間の処理シーケンス図などを利用し、信号、コマンド、デ

ータなどの検知、制御、変換、処理、通知、格納などを、ケースごとに記載する。また

要求としては明に記載されないが、開発者の共有事項として重要な事項(たとえば、

OS動作、内部状態遷移)についても記載するのが望ましい。

<記載例>

・ リカバリ方式:エラー発生から再立ち上げまでの制御の流れ

13

Page 15: 2. RescueRobo.ソフトウェアアーキテクチャ設計書(3)

レスキューロボットソフトウェアアーキテクチャ設計書

・ 性能実現方式:要求される機器性能を実現する並行処理制御

・ 他国後対応:複数の外国語に対応するための変換方式

・ 出荷後のソフトウェアアップデート方式:フィールド出荷後のソフトウェア更新方

・ 障害調査データ取得方式:動作トレースなどの格納から取得/解析までの流れなど

リアルタイム OS を搭載するので、インプット、アウトプット、中央処理によるタスク

を分ける。

インプット: センサー、割り込み sw2、sw3、tsw

アウトプット: LCD での表現、LED での表現

中央処理: アルゴリズム、ロボットの制御(alu タスク、robo_cpu タスク)

Tsw、割り込み sw2、sw3 の状態によって、ロボットのモードが変わられる。ロボット

のモードはランニングだったら、中央処理のタスクは動かせられる (alu タスク、

robo_cpu タスク)。robo_cpu タスクはデータキューからセンサーと取ることとしてタ

スクの周期で wakeupさせられる。ROBO_CPUとROBO_ALUコミュニケー

ションは以下のように示す。

14

Page 16: 2. RescueRobo.ソフトウェアアーキテクチャ設計書(3)

レスキューロボットソフトウェアアーキテクチャ設計書

alu タスクでは以下のようなアルゴリズムを実装する:

区画探索・スタート点に戻る

DFS+BFS

けが人のレスキュー

BFS+Heuristic

Heuristic は3つがある

DEADLOCK: 隅、境界の壁

GATE:この局面からもうすぐゴールを達する。

OLDWAY:ゴールまでのけが人の軌道の反対方面に探さない。

15

Page 17: 2. RescueRobo.ソフトウェアアーキテクチャ設計書(3)

レスキューロボットソフトウェアアーキテクチャ設計書

4.3. 性能見積もり

定量的に性能を見積もる

<記載例>

・ 必要性能/時間:XX(ms)

・ 性能実現方式:対象条件とその処理シーケンス

・ 各処理時間見積り:各処理要素の見積もりおよび根拠

全部のタスクの処理は 10 ミリ秒未満でなければならない

16

Page 18: 2. RescueRobo.ソフトウェアアーキテクチャ設計書(3)

レスキューロボットソフトウェアアーキテクチャ設計書

5.機能ユニット詳細

5.1. ユーザインタフェース機能ユニット

5.1.1. 概要ユーザからの入力を受け付け、ユーザへのメッセージを表示する。そして、データを適

当に処理する。

5.1.2. インタフェース5.1.2.1 機能

スイッチ入力を調べる

スイッチ入力の有無を調べ、スイッチ入力があればデータの現を知らせるコー

ドとそのスイッチ状態をデータキューへ送信する。

ロボットの引数をセッティングするために、SW2, SW3 を私用し、引数の値

の増減を調節する。

受信したデータによって、ロボットに適切な状態をセッティングする。

LCD で表示するために、ロボットのセッティングされた引数の値を LCD のデ

ータキューへ送信する。

ロボットの状態に応じて、LCD で表示する部分を制御する信号を送信する

入力引数によって、データを適当に処理する

モータを制御することに関する引数を robo_cpu タスクへ送信する

5.2.1.2 構造このユニットは、どんなユニットに関連するか、以下の図に述べている。

17

ロボット制御 LCD で表示

Page 19: 2. RescueRobo.ソフトウェアアーキテクチャ設計書(3)

レスキューロボットソフトウェアアーキテクチャ設計書

図:インタフェースユニットの関連

インタフェースユニットの中には、4つのタスクがある。具体的に4つのタスクの関

連を以下の図に示している。

図:インタフェースユニットのタスク関連

― TSW 状態を取り込むタスク(get_tsw タスク)。このタスクは、TSW 状態の変化

を知らせるものである。データを送信する構築は、次のように設計した。

CMD データ

+CMD::0x01 ->TSW からのデータを知らせる 

+データ:TSW の現在の状態

 ― 割り込みを取り込むタスク(ctrl_sw2, ctrl_sw3)。2つのタスクは、割込みが起

18

インタフェースユニット

表示メードの知らせ

メセッジを送る(セッティングした引数、

ロボットのモード)

セッティングされた引数を送信

Sys_in タスク

Get_tsw タスク

Ctrl_sw2 タスク

Ctrl_sw3 タスク

Get_sensor タスク

Robo_cpu タスク

Page 20: 2. RescueRobo.ソフトウェアアーキテクチャ設計書(3)

レスキューロボットソフトウェアアーキテクチャ設計書

こるかを知らせるものである。データを送信する構築は、次のように設計した。

*Ctrl_sw2:

CMD

  

+ CMD: 0x02 ――> SW2 を押された

*Ctrl_sw3:

CMD

+ CMD: 0x03 ――> SW3 を押された

― センサーを読み取るタスク。このタスクは、センサーの情報を取り、robo_cpu へ

送信するものである。データを送信する構築は、次のように設計した。

+  CMD:0x80 -→ センサーから情報を取り

組んだ

5.2. アプリケーション機能ユニット

5.2.1.セッティングモード5.2.1.1. 概要

入力されたデータによって、データを適切に処理する。

5.2.1.2. 機能

引数を調節する

5.2.1.3. 構造

CMD

19

Get_tsw タスク

Ctrl_sw2 タスク

Ctrl_sw3 タスク

引数を入力

引数の値を増やす

引数の値を減らす

Page 21: 2. RescueRobo.ソフトウェアアーキテクチャ設計書(3)

レスキューロボットソフトウェアアーキテクチャ設計書

5.2.2.ランニングモード 5.2.2.1. 概要

TSW7=0 と SW2 が押されると、ロボットが壁の情報を収集する。壁の情報を収集のが

完成したあと、すぐスタート点に戻り、けが人をゴールに運ぶ。

5.2.2.2. 機能

・ Sys_in タスクからデータキューを通じて、命令を受信し、ロボットの状態を知ら

せられる。

・ Sys_in タスクからスタート点、けが人の位置、ゴール位置を受信する。

・ Sw2 が押されたら、ロボットの状態はランニングモードに遷移し、alu タスクにス

タート、けが人、ゴールの位置を送り、壁の情報を収集するアルゴリズムを命じる。

その以外には、時間計測を命じる。

・ alu タスクからスタートに戻る符号を受信したら、ロボットをスタートに戻るよう

に制御する。

・ ロボットがスタートに戻った後、alu タスクにけが人の運ぶアルゴリズム実施を命

じる。

・ Alu タスクからけが人の運ぶ符号を受信したら、けが人を運ぶようにロボットを制

御する

・ Alu タスクからの道によってロボットを制御する。ロボットは右 90 度に回転でき、

左 90 度に回転でき、左 180 度に回転でき、後方に走行でき、前方に走行でき、ス

トップできる。

20

Sys_in タスク

Page 22: 2. RescueRobo.ソフトウェアアーキテクチャ設計書(3)

レスキューロボットソフトウェアアーキテクチャ設計書

5.2.2.3. 構造

― SYS_IN タスク。このタスクは、ロボット状態の変化を知らせるものである。デー

タを送信する構築は、次のように設計した。

CMD データ

+CMD::0x07 ->READY 状態

0x03 ->START 状態

+データ:3 つの位置、置く方向

―ROBO_ALU タスク。このタスクは、壁の情報収集、スタート点に戻り、けが人の

運ぶアルゴリズムを実施するタスクである。データを送信する構築は、次のように設計

した。

CMD データ

+CMD::0x01->ALU_DIS_MAT_ID

+データ:区画のID

+CMD::0x05->ALU_HOM_WAY

+データ:進入する区画のID配列

+CMD::0x06->ALU_RES_WAY

21

Page 23: 2. RescueRobo.ソフトウェアアーキテクチャ設計書(3)

レスキューロボットソフトウェアアーキテクチャ設計書

+データ:進入する区画のID配列

― WATCH タスク。このタスクは、ROBO_CPU タスクに起動され、ストップされる

ものである。

5.2.3.ビューモード 5.2.3.1. 概要

ユーザからの入力を受け付け、ユーザへのメッセージを表示する。また

Sys_in とうタスクから Sys_out データキューで受信した文字列を LCD に出力する

5.2.3.2. 機能

・スイッチ入力を調べる

スイッチ入力の有無を調べ、スイッチ入力があればそのスイッチの種類を返す

・メッセージを表示する

LCDにユーザへのメッセージを表示する

・ぴかぴかがないやオーバーフローを制御する

受け取ったデータに応じて、前と変化があればLCDをクリアして表示する。

5.2.3.3. 構造

以下にタスク分割りと優先度設計書を示す

以下にデータ構築を示す

ロボッ ロボット機能 Sys_out_d LCD に表に 説明

22

Sys_out_dtq

sys_inタスクPri=2; ID=1;

LCD 制御タスクPri=4; ID=3;

LCD_outタスクPri=3; ID=4;

Page 24: 2. RescueRobo.ソフトウェアアーキテクチャ設計書(3)

レスキューロボットソフトウェアアーキテクチャ設計書

トのモ

ート

tq

[<CMD> 1

byte][<DATA>

2byte]

Settin

g

Start to

Setting

<1>< > SETTING MODE

Unknown Setting

トグル SW7 をオンにし

て、トグル SW6,5 をオフ

にする

Set Start

Point

<11>< x> SETTING MODE

Home: x

トグル SW を 100 x0001

として設定する。トグル

SW の値は 100 x0001 と

して設定されしなが

ら、SW2 と SW3 を押すと

増減する。

Set Victim

Point

<12><y > SETTING MODE

Goal:y

トグル SW を 100 x0100 と

して設定する。トグル SW

の値は 100 x0100 として設

定されしながら、SW2 と

SW3 を押すと増減する

Set Target

Point

<13>< z> SETTING MODE

Patient: x

トグル SW を 100 x0010 と

して設定する。トグル SW

の値は 100 x0010 として設

定されしながら、SW2 と

SW3 を押すと増減する

View Star to View <2><> VIEW_SCORE_M

ODE

ロボットがけが人を運ぶ操

作を完了時

View Disco <21><a > DISCOVERING

Time: a

SW2 を一回目押する

View Rescue <22>< b> RESCUEING

Time: b

SW2 を2回目押する

View Total <23><c > TOTAL

Time: c

SW2 を3回目押する

Run Start to Run <3><t > READY TO RUN

Time: 00:00:00

スタートボタンが押される

Running <31>< t> RUNNING

MODE

ロボットの走行時間は 10

ミリ秒毎に更新される

23

Page 25: 2. RescueRobo.ソフトウェアアーキテクチャ設計書(3)

レスキューロボットソフトウェアアーキテクチャ設計書

Time: 00:11:09

Stopping <32><t > STOPPING

Time: 00:11:09

ロボットの走行時間は最初

にモータを駆動してから、

最後にモータを停止するま

での時間とする

LED LED に表示 <99><n> LEDnに光 データキューで受信したデ

ータを LED に表示する

① ロボット、けが人、終点の位置を起床+セッティングしない際に

S E T T I N G

U N K N O W N S E T T I N G

+ロボットの位置を起床 

S E T T I N G M O D E

H O M E : 1 8

+けが人の位置を起床LCD で表示する

S E T T I N G M O D E

P A T I E N T : 4

+終点の位置を起床

LCD で表示する

S E T T I N G M O D E

G O A L : 2 3

②  PIDパラメターを設定

24

Page 26: 2. RescueRobo.ソフトウェアアーキテクチャ設計書(3)

レスキューロボットソフトウェアアーキテクチャ設計書

ロボットをセッティング時、LCD 上段の表示は次のとおりLCD 上段の表示は、SETTING を示す

S E T T I N G M O D E

K p = 1 0 0

S E T T I N G M O D E

K d = 0 . 0 0 1

S E T T I N G M O D E

K i = 1

③  90度回転タイム、180度回転タイム、1つステップを真っ直ぐするタイ

ム、けが人を運ぶ際の 1つステップを真っ直ぐするタイム、1つステップを

戻るタイム)を設定

ロボットをセッティング時、LCD 上段の表示は次のとおりLCD 上段の表示は、SETTING MODE を示す

S E T T I N G M O D ER O T A T E _ 9 0 :

S E T T I N G M O D ER O T A T E _ 1 8 0 :

S E T T I N G M O D ED R I E C :

S E T T I N G M O D EB A C K W A R D :

S E T T I N G M O D EF O R W _ S T P :

S E T T I N G M O D EF O R W _ B A K :

25

Page 27: 2. RescueRobo.ソフトウェアアーキテクチャ設計書(3)

レスキューロボットソフトウェアアーキテクチャ設計書

④ スコアを展示するモード(ViewScore)

次に LCD での表示を示している。・ 壁情報を収集した時間とスタート点へ戻る時間を表示する

D I S C O V E R I N GT I M E 0 : 5 1

・ けが人を運ぶ時間を表示する

R E S C U I N GT I M E 1 : 2 0

・ 総合時間を表示する

T O T A L S C O R ET I M E 1 : 2 0

5.3. メカニズム機能ユニット

5.3.1. 時間計測 5.3.1.1. 概要

ロボットの走行時間は最初にモータを駆動してから、最後にモータを停止するまでの各段階走行および総合時間を計測する。

ロボットの走行時間を 10ms単位で LCD にリアルタイムに表示する。

スタートボタンが押される前に表示されていた時間が「0:00」を表示する

5.3.1.2. 機能

Robo_cpu タスクから命令を受信し、時計はスタートまた停止するかが決める。具体的には、各段階のデータを Sys_out データキューに送信し、LCD に表

示する。

26

Page 28: 2. RescueRobo.ソフトウェアアーキテクチャ設計書(3)

レスキューロボットソフトウェアアーキテクチャ設計書

5.3.1.3. 構造

次に LCD での表示を示している。・ 壁情報を収集した時間とスタート点へ戻る時間を表示する

D I S C O V E R I N GT I M E 0 : 5 1

・ けが人を運ぶ時間を表示する

R E S C U I N GT I M E 1 : 2 0

・ 総合時間を表示する

T O T A L S C O R ET I M E 1 : 2 0

ロボットが走っている時、LCD 上段の表示は次のとおりLCD 上段の表示は、RUNNING を示す

LCD下段の表示は、TIME を示す

R U N N I N G M O D ET I M E 1 0 : 4 5

(XX:XX の部分は 10 ミリ秒毎に更新される)

5.3.2. モータ出力5.3.2.1. 概要

2 つモータにパルスを出力するメカニズムを実現する

5.3.2.2. 機能

・ 各タイマ割り込みが起こったら、1 つパルスがモータに出力される。

27

rsm/sus

Sys_out_dtqRobo_cpuタスクPri=1; ID=3;

WachtタスクPri=2; ID=1;

LCD_outタスクPri=2 ID=4;

Page 29: 2. RescueRobo.ソフトウェアアーキテクチャ設計書(3)

レスキューロボットソフトウェアアーキテクチャ設計書

・ CPU タスクから各タイマの周期を調整するので、各タイマの周期によって各モー

タの速度が調整される。

・ 右回転関数とか左回転関数によって、モータを逆に走らせることができる。

・ モータをストップすることができる。

5.3.2.3. 構造

・ tm_mleft_handler()はタイマ 9 の割り込みハンドルである。このタイマは左モータ

にパルスの出力を使う。

・ tm_mright_handler()はタイマ 11 の割り込みハンドルである。このタイマは左モー

タにパルスの出力を使う。

5.3.3. センサー 5.3.3.1. 概要

センサーを取るため、タイマを使うメカニズム。

5.3.3.2. 機能

・ 前のセンサーと左のセンサーと右のセンサーを取る。

5.3.3.3. 構造

tm_10ms_handler ()はタイマ 10 の割り込みハンドルである。このタイマはセンサーを

取るものである。

28

Page 30: 2. RescueRobo.ソフトウェアアーキテクチャ設計書(3)

レスキューロボットソフトウェアアーキテクチャ設計書

6.その他

全体のプログラムは、様々な関数と変数を共用している。

― Def_robo.h ファイルには、共用した恒久的な変数 (const variable) を書いてある。

― sys_io_lib.h ファイルには、データキューに関する関数を書いてある。タスクが互いにデ

ータを交換する際には、普段データキューを利用したから、タスクが共用するようにデータ

を送受する関数を作成した。

― motor_lib.h ファイルには、ロボットの速度とロボットの動作に関する引数をセッティン

グする関数を書いてある。その関数は、sys_in 関数と robo_cpu 関数に利用された。次にそ

れらの関数が共用された関数を示している

*ロボットの速度に関する関数

Float get_Kp(float)

Float get_Kd(float)

*ロボットの動作に関する関数

Int get_rot_right_90_time(void)

Int get_rot_back_180_time(void)

Int get_backward_time(void)

Int get_straight_time(void)

Int get_straight_with_back_time(void)

int  set_rot_right_90_time(int);

int  set_rot_left_90_time(int);

int  set_rot_back_180_time(int);

int  set_backward_time(int);

int  set_straight_time(int);

int  set_straight_with_back_time(int);

29

Page 31: 2. RescueRobo.ソフトウェアアーキテクチャ設計書(3)

レスキューロボットソフトウェアアーキテクチャ設計書

30