Structure Analysis & Structure Design 200811440 유진혁 200811449 이찬희 200811462 최현빈 200811464 한경미
문제정의 모터 ( 바퀴 + 브레이크 ) 동작 정지상태에서시작 - 속도값이 0 이상이면직선으로전진 - 전방장애물인식시, 방향전환후다시전진 방향전환시 - 전방에장애물발견 : 왼쪽 90도회전후직진 - 여전히장애물존재 : 왼쪽 180도회전후직진 - 그래도여전히장애물존재 : 오른쪽 90도회전후직진 방향전환방법 - 왼쪽 90도전환할때 : 0.5초간오른쪽모터 50% 속도로앞으로 0.5초간왼쪽모터 100% 속도로뒤로 - 180도전환할때 : 1초간오른쪽모터 50% 속도로앞으로 1초간왼쪽모터 50% 속도로뒤로 - 오른쪽 90도전환할때 : 0.5초간오른쪽모터 100% 속도로뒤로 0.5초간왼쪽모터 50% 속도로앞으로
문제정의 (Cont.) Display 동작 시작상태 : Working 출력 시작후 - 모터동작중 : Working 출력 - 모든모터정지시 : Sleeping 출력 스피커동작 어두워질경우 : Night 출력 다시시작할때 : Good Morning 출력 박수소리에맞춰서 Thank You 출력 정지와직진시에만동작한다.
문제정의 (Cont.) Interrupt 로동작한다. 직진시에만유효 Ultrasonic 센서동작 터치센서동작 터치가 1회발생시마다, 1회터치마다속도가 10씩증가 ( 감소 ) 출력값 1이지속되면, 0.5초마다속도가 10씩증가 ( 감소 ) 정지와직진시에만유효
문제정의 (Cont.) 빛센서동작 출력값이 40 이하이면브레이크작동 - 5초후센싱하여출력값이 40을초과할경우다시전진 - 5초후센싱하여출력값이 40이하일경우모든모터를정지 - 5초에한번씩센싱하여 40 초과의출력값이들어오면다시전진 정지와직진시에만유효 소리센서동작 출력값이 70 이상이면 Thank You 출력 직진시에만유효
문제정의 (Cont.) 시스템범위및구조 - Input Sensor : 입력센서를통해상황을인식한다. - Speaker : 제어결과에따라소리를출력한다. - Wheel : 제어결과에따라로봇을이동시킨다. - Display : 제어결과에따라화면에정보를표시한다. - Break : 제어결과에따라로봇을정지시킨다. - Control : 입력센서의입력정보에따라로봇의작동을제어한다.
문제정의 (Cont.) 입력센서 - Ultrasonic Sensor : 장애물인식 - Sound Sensor : 박수소리인식 - Light Sensor : 밝기인식 - Touch Sensor : 터치인식
문제정의 (Cont.) 주요시나리오 - 장애물인식 1) 왼쪽 90 도 2) 왼쪽 180 도 3) 오른쪽 90 도 - 터치를이용해속도조절 - 박수소리에반응해서 Thank You 소리출력 - 빛에반응해서동작제어
DFD Level 0 Ultrasonic Sensor Sound Sensor Light Sensor Light Robot Control 0 Motor Speaker Touch Sensor Display Digital Sensor
로봇제어정보테이블 정보 설명 Distance Ultrasonic Sensor 를통해들어오는사물과의거리정보를나타낸다. Sound Sound Sensor 를통해들어오는소리의정보를나타낸다. Light Light Sensor 를통해들어오는밝기의정보를나타낸다. Touch 터치센서를사용자가눌렀음을나타낸다. Time 타이머인터럽트로서 10ms 주기로입력된다. Motor 모터의속도와방향전환, 브레이크을위한모터제어를가진정보 Speak Speaker 를통해서외부로의출력정보를나타낸다. Display 외부로출력할단어정보를나타낸다.
DFD Level 1 Light Input Light 1.1 [Periodic Device] Break 1.6 Break Distance Input Sound Input Ultrasonic 1.2 [Periodic Device] Sound 1.3 [Periodic Device] Sensor Control 1.5 Motor 1.6 Speaker 2.4 Motor Speak Touch Input Touch 1.4 [Asynchronou s Device] Display 2.5 Display
프로세스명세 1.1 Light Stereotype Input Output Periodic Function Light Input (int) Light(1~100) Process Light Sensor 에서 Light Input 을받으면 Sensor Control 프로세스에 Light 정보를보낸다. Light 는 Light Sensor 에서감지한밝기정보데이터이다. 1.2 Ultrasonic Stereotype Input Output Periodic Function Distance Input (bool) Distance Process Ultrasonic Sensor 에서 Distance Input 을받으면 Sensor Control 프로세스에 Distance 를보내어장애물이있음을알린다. Distance 는 True/False 로구분되며 0~255cm 사이에장애물이있으면 True 이다.
프로세스명세 1.3 Sound Stereotype Input Output Periodic Function Sound Input (int) Sound(0~100) Process Sound Sensor 에서 Sound Input 을받으면 Sensor Control 프로세스에 Sound 정보를보낸다. Sound 는 Sound Sensor 에서감지한소리의크기정보데이터이다. 1.4 Touch Stereotype Input Output Asynchronous Function Touch Input (bool) Touch Process Touch Sensor 에서 Touch Input 을받으면 Sensor Control 프로세스에 Touch 를보내어 Touch Input 이들어왔음을알린다. Touch 는 True/False 로구분되며입력이들어왔을때가 True 이다.
프로세스명세 1.6 Motor Stereotype Input Output Asynchronous Function Motor Action Motor Process Motor Action 데이터를받아 Motor 에게데이터를보내어움직이게하는프로세스이다. 1.7 Speaker Stereotype Input Output Asynchronous Function Speak Info Speak Process Speak Info 데이터를받아 Speaker 에게 Speak 데이터를보내어소리를내게하는프로세스이다.
프로세스명세 2.5 Display Stereotype Input Output Asynchronous Function Display Info Display Process Display 데이터를받아 Display 에게 Display 데이터를보내어화면을출력하게하는프로세스이다.
DFD Level 3 Information Move Forward 2.1.3 Motor Action Sensor Control 1.5.2 Unit Controller 1.5.1 Turn 2.1.4 Motor Action Informationuc Time Break 2.1.5... Break Action
DFD Level 3(Cont.) Information... Speak GoodMorning 2.1.6 Sound Info Sensor Control 1.5.2 Unit Control 1.5.1 Speak Night 2.1.7 Speak ThankYou 2.1.8 Sound Info Sound Info Display Working 2.1.9 Display Info Informationuc Time Display Sleeping 2.1.10 Display Info
프로세스명세 2.1.1 Unit Control Stereotype Input Output Control (bool)isdark, (bool)isclap, (bool)isobstacle, (int)speed Trigger, Enable/Disable, (int)speed Process 현재의상태에서입력에따라행동을결정하고, 행동을수행하기위한이벤트를발생시킨다 2.1.2 Move Forward Stereotype Input Output Synchronous Function Enable/Disable, (int)speed Motor Action(int, int) Process Enable 이벤트가발생시수행이되며 Wheel 에게 Wheel 데이터를보내어 Motor A, C 가앞으로동작하도록하는프로세스이다.
프로세스명세 2.1.3 Turn Stereotype Input Output Synchronous Function Trigger, (int)obcount (int, int)break Process 0.5 초간 Motor A, C 에 50 의출력으로 A( 좌 ) 는뒤로 C( 우 ) 는앞으로출력을주어서왼쪽으로돌게한다. 2.1.4 Break Stereotype Synchronous Function Input Enable/Disable Output (True, int)break Process Enable 이벤트가발생시수행이되며브레이크가동작을하게한다.
프로세스명세 2.1.5 Speak GoodMorning Stereotype Synchronous Function Input Trigger Output Sound(Good Morning) Process Good Morning을 Speak하게한다. 2.1.8 Speak Night Stereotype Synchronous Function Input Trigger Output Sound(Night) Process Night을 Speak하게한다.
프로세스명세 2.1.9 Speak Thankyou Stereotype Synchronous Function Input Trigger Output Sound(Thank you) Process Thank you을 Speak하게한다. 2.1.10 Display Working Stereotype Input Output Synchronous Function Enable/Disable Display(Working) Process Enable 이벤트가발생시수행이되며, Display 에 Working 을띄우도록한다.
프로세스명세 2.1.11 Display Sleeping Stereotype Input Output Synchronous Function Enable/Disable Display(Sleeping) Process Enable 이벤트가발생시수행이되며, Display 에 Sleeping 을띄우도록한다.
FSM(Unit Control) /Enable Move Forward!isDark &!isobstacle & isclap / Trigger Speak Thank You!obStacle / obcount = 0 isdark &!isdarked &!darkagain /Enable Break, isdark = true darkagain = true Move Forward timeout(5) &!isdark / Disable Break ' darkagain = false Break!isDark & isobstacle[obcount == 1] / Disable "Move Forward", Trigger "Turn 180" obcount++ timeout(1) &!isobstacle / Enable Move Forward Turn Left Turn 180 Turn Right All Stop
1.1 [P] 1.2 [P] 1.3 [P] 1.4 [A] 1.5. 1 [C] Information Informationuc 2.1. 1 [C] 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.2 [A] 2.3 [A] 2.4 [A] 2.1.8 2.5 [A] 2.1.10
데이터사전 데이터명 Clap Dark Obstacle Information 설명 Sound Sensor 를통해들어오는소리가 70 이이상임을 True/False 로보내어, Speaker 를통해출력을하게한다. True 는 70 이상일때 False 는 70 미만일때 Light Sensor 를통해들어오는빛의밝기가 40 이하임을알림을받아, True/False 로보낸다. True 는 40 이하. Ultrasonic Sensor 를통해 Distance 의 True/False 를받아서 True/False 데이터로내보낸다. True 는장애물이있을때, False 는장애물이없을때 bool isclap - 주변소리가일정이상을넘으면 True bool isobstacle - 장애물과의거리가 10 이하면 True bool isdark - 주변의밝기가 40 이하면 True int speed - speed 를저장함 bool speedsign - Touch 버튼을눌렀을때속도를더할지뺄지를알기위해서 bool signchanged - Sign 이바뀌고계속누르게될때더이상 Sign 을바꾸지않게하기위해서
데이터사전 데이터명 Informationuc Sound Wheel 설명 Unit Control 에관한 Information 을담는 struct int obcount - Turn 할시에순서를알리기위해서쓰이는변수 bool isdarked - Sleep 이된상태를나타내는변수 bool darkagain - Sleep 전브레이크만걸려있는상태를나타내기위한변수 Speaker 가실제로낼소리데이터를나타낸다. 내장되어있는값을연결시켜소리가나게할것이다. Sound 에연결할값을적어놓았다. Motor A, C 에연결이되어있다. 각모터는 (bool, int) 셋의값을받게되며전체 Wheel 은 (bool, int, bool, int) 의값을받는다. 왼쪽부터 A, C 를나타낸다. Break Motor B 에연결이되어있다. (bool, int) 값을받게된다. Display Display 가될화면을나타낸다. 내장되어있는값을연결시켜화면이뜨게할것이다. Display 에연결할값을적어놓았다.
Structure Design
Structured Charts - Transform Analysis 1.1 [P] Information 2.1.2 2.1.3 2.2 [A] 1.2 [P] 1.3 [P] 1.4 [A] 1.5. 1 [C] Informationuc 2.1. 1 [C] 2.1.4 2.1.5 2.1.6 2.3 [A] 2.4 [A] 2.1.7 2.1.8 2.5 [A] 2.1.10
Module Structure Application Main Unit Control Sensor Control Speak TY Speak Night Speak GM Move Forward Break Turn Display Working Display Sleeping Touch Time Sound Ultrasonic Light Input Speaker Motor Display Output
모듈정의 모듈 ID RC_AM01 모듈명 Unit Control 모듈개요 인터페이스 모듈 ID RC_AM02 모듈명 Sensor Control 모듈개요 인터페이스 Sensor Control 으로부터의입력값을이용해서 Speaker, Motor, Display 를제어함 CUnit() - Sensor Control 으로부터의입력값을이용해다른모듈을실행시킨다. 4 개의센서로부터입력을받아처리함 CSensor() - 입력된값들을처리하여구조체 (Information) 에저장하는함수 모듈 ID RC_AM03 모듈명 Move Forward 모듈개요 인터페이스 현재저장된속도로모터를정방향으로회전시킴 MoveForward(bool onoff, int speed) - onoff 정보와 speed 를받아서모터를출력시킴
모듈정의 모듈 ID RC_AM04 모듈명 Turn 모듈개요 인터페이스 회전시키는함수 Turn(int obcount) - obcount 를받아서그에맞게모터의출력값을정함 모듈 ID RC_AM07 모듈명 Break 모듈개요 인터페이스 브레이크를내림 Break(bool onoff) - onoff 정보를받아서브레이크출력값을정함 모듈 ID RC_AM08 모듈명 모듈개요 인터페이스 Good Morning 이라는 Sound Info 를넘겨줌 SGoodMorning() - Speaker 에 "GoodMorning.rso" 을넘겨줌 Speak GoodMorning
모듈정의 모듈 ID RC_AM09 모듈명 Speak Night 모듈개요 인터페이스 Night 를실행시킴 SNight() - Speaker 에 "Night.rso" 을넘겨줌 모듈 ID RC_AM10 모듈명 모듈개요 인터페이스 Working 이라는 Display Info 를보낸다 Display Working DWorking() - Display 에 "Working" 이라는값을넘겨줌 모듈 ID RC_AM11 모듈명 모듈개요 인터페이스 Sleeping 이라는 Display Info 를보낸다 Display Sleeping DSleeping() - Display 에 "Sleeping" 이라는값을넘겨줌
모듈정의 모듈 ID RC_AM12 모듈명 Touch 모듈개요 인터페이스 Touch 센서의상태를가져옴 ITouch() - 터치센서에서의인풋이 1 이면 True, 0 이면 False 를반환함 모듈 ID RC_AM13 모듈명 Sound 모듈개요 인터페이스 주변의소리크기를받아옴 ISound() - 소리크기의값을측정하여리턴함 모듈 ID RC_AM14 모듈명 Ultrasonic 모듈개요 인터페이스 주변에장애물이있는지있다면장애물과의거리를받아옴 IUltrasonic() - Ultrasonic Sensor 의인풋을리턴함
모듈정의 모듈 ID RC_AM15 모듈명 Light 모듈개요 주변밝기를받아옴 인터페이스 ILight() - Light Sensor의인풋을리턴함
구조차트 Unit Control Information Sensor Control Move Forward Turn Break SENSOR_2 Touch Sound Ultrasonic Light Motor Break
구조차트 (Cont.) Information Unit Control Sensor Control SENSOR_2 Speak GM Speak Night Speak TY Display Working Display Sleeping Touch Sound Ultrasonic Light Speaker Display
Balanced System Unit Control Input Function Output 외부입력 Touch Sound Light Distance 데이터저장소입력 SensorControl 내부프로세스 MoveForward TurnLeft TurnRight Turn180 Break SpeakGoodmorning SpeakNight SpeakThankYou DisplayWorking DisplaySleeping 외부출력 Motor Speaker Display
데이터정의 데이터명설명타입 Information Event 와 Unit Control 관계에서필요한변수들을저장한변수 Structure isclap, - type bool // Clap event isobstacle, - type bool // 장애물발견시 isdark, - type bool // 어두워졌을때 speed, - type int // 속력을 int 형저장 speedsign, - type bool ( 속력을증가시킬지감소시킬지판별하는변수 ) signchanged - type bool ( 터치센서에연속적인입력이올때 speedsign 이변하지않게하는변수 ) obcount Turn Left, Right, 180 의옵션을선택해주는변수 int(1,2,3) SENSOR_1 터치센서의입력정보를가진변수 bool SENSOR_2 소리센서의입력정보를가진변수 int(0 ~ 100) SENSOR_3 거리센서의입력정보를가진변수 bool SENSOR_4 빛센서의입력정보를가진변수 int(0 ~ 100) Motor Action 모터의동작을선택하는변수 string Sound Info 스피커의출력을선택하는변수 string Display Info 화면의출력을선택하는변수 string