다양한 교통수단을 시뮬레이션에 구현하고, 간단한 교통신호까지 구축하는 것을 진행해보고자 한다.
*SUMO Tutorial을 따라 진행하였으며, 관련 페이지는 아래와 같다.
https://sumo.dlr.de/docs/Tutorials/SUMOlympics.html
SUMOlympics - SUMO Documentation
1.1.0 --> SUMOlympics This tutorial sets up a competition (a collective 100 meter sprint) for different traffic modes. You will learn how to create special lanes and (very simple) traffic lights in netedit, use different vehicle classes to define vehicle t
sumo.dlr.de
1. 교통수단별 전용차로 구축
이번 튜토리얼에서는 왼쪽에서 오른쪽으로 진행하는 1000m의 Edge 하나를 생성하고,
차량 전용, 버스 전용, 보행자 전용, 자전거 전용, 그리고 트램 전용차로를 구축한다.
구축하는 방법은 Edge 위에 우클릭을 하고 Lane operations - Add restricted lane을 눌러서 보행자, 자전거, 버스 전용차로를 생성할 수 있다.
트램은 아쉽게도 전용차로가 바로 있지 않기 때문에, 직접 차로 진입 제한을 설정해주어야 한다.
Inspect 모드에서 Edge를 누르고, 전용차로를 만들 Lane에 Inspect를 누르면 해당 Lane에 대한 정보를 볼 수 있다.
거기서 allow를 클릭하면 차로에 진입할 수 있는 차량 및 보행자 등을 설정할 수 있다.
(아래 그림 참고)
2. 교통수단 타입과 교통류 설정(rou.xml 파일 만들기)
이렇게 트램 전용차로까지 설정하고 나면, 각 교통수단의 타입(길이, 속도, 가속도 등) 및 교통류(Route, 대수 등) 설정이 필요하다. (즉, rou.xml 파일 작성이 필요하다)
본 튜토리얼에서는 아래와 같이 타입과 교통류를 설정하였다.
<routes>
<vType id="pkw" length="5" maxSpeed="50" accel="2.6" decel="4.5" sigma="0.2" speedDev="0.2" vClass="passenger"/>
<vType id="bus" length="15" maxSpeed="30" accel="1.2" decel="2.5" sigma="0.1" speedDev="0.1" vClass="bus"/>
<vType id="tram" length="40" maxSpeed="13" accel="0.8" decel="0.5" sigma="0.1" speedDev="0.1" vClass="rail_urban"/>
<vType id="bike" length="1.8" width="0.8" maxSpeed="7.5" accel="0.8" decel="1.5" sigma="0.5" speedDev="0.5" vClass="bicycle"/>
<vType id="pedestrian" length="0.3" width="0.5" maxSpeed="2.0" accel="0.2" decel="1.5" sigma="0.2" speedDev="0.2" vClass="pedestrian"/>
<flow id="pkw" type="pkw" from="beg" to="end" begin="0" end="0" number="66" departPos="last"/>
<flow id="bus" type="bus" from="beg" to="end" begin="0" end="0" number="5" departPos="last"/>
<flow id="tram" type="tram" from="beg" to="end" begin="0" end="0" number="2" departPos="last"/>
<flow id="bike" type="bike" from="beg" to="end" begin="0" end="0" number="100" departPos="last"/>
<personFlow id="pedestrian" type="pedestrian" begin="0" end="0" number="100" departPos="-30">
<walk from="beg" to="end" arrivalPos="-0.1"/>
</personFlow>
</routes>
여기서 대부분은 이전 포스팅에서 언급했으며, from="beg", to="end"는 각자 beg, end라는 Edge를 의미한다.
그 외에 추가로 파악해야 하는 것들이 있다. (추후 파악 예정)
speedDev: speedFactor의 편차. speedFactor는 Edge의 제한속도에 곱해지며, 각 유형들의 speedFactor는 정규분포(평균, 표준편차)를 따른다. 따라서 speedDev가 0.1이면, 평균 1.0과 표준편차 0.1인 정규분포를 따른다고 보면 된다.
vClass: 각 유형의 클래스(passneger car, bus, pedestrian 등)
departPos: 추후 파악 예정
또한 보행자는 다른 교통수단과는 약간 정의하는 방식이 다른데, 이에 대해서도 추후 파악할 계획이다.
타입과 교통류를 xml로도 정의할 수 있지만, netedit를 통해서도 정의할 수 있다.
먼저 F3을 눌러 Demand mode로 바꾸고(참고로 F2: Network mode, F4: Data mode), Create type mode를 누른다.
그러면, 각 교통수단(타입)을 만들수도 있고, 기존 정의된 타입들에 대해서 length, minGap들을 수정할 수 있다.
특히, 다양한 Car Following Model을 선택할 수 있고, 많은 파라미터들을 변경할 수 있어 자율주행차량을 구현하는데에도 많이 유용할 것 같다.
그리고 설정한 타입을 Vehicles에서 투입할 수 있다.
3. 신호 만들기
이번엔 간단한 신호를 만들고자 한다.
F2를 눌러 Network mode로 설정하고, 위 Network mode 탭에서 Set traffic light mode(신호등 모양)을 누른다.
그리고, 아래 dur, state, next, name이 있는 칸에가서 원하는 신호와 현시 시간을 설정하면 된다.
dur: 현시 시간(초)
state: 현시(r: 적색, G: 녹색, y: 황색 - rrrrr을 한 이유는 5개의 차로에 모두 적색을 부여한다는 의미)
신호 프로그램을 따로 저장할 수 있다(xml 파일).
그러나 이를 additional-file로 sumocfg에서 불러올 필요는 없다.
(network 파일을 저장하면, net.xml에 자동으로 입력이 되므로...)
설정하고 나면 시뮬레이션을 sumocfg에서 돌리면 된다.
'SUMO Simulation' 카테고리의 다른 글
[SUMO Tutorial] 격자형 네트워크 만들고 랜덤하게 차량들을 투입시켜 시뮬레이션 수행하기(Manhattan Mobility Model) (0) | 2024.04.20 |
---|---|
[SUMO Tutorial] 다차로 고속도로 시뮬레이션 및 속도에 따른 시각화 (0) | 2024.04.20 |
[SUMO Tutorial] Loop 네트워크 만들고 시뮬레이션 수행 (0) | 2024.04.20 |
[SUMO Tutorial] 빠르게 네트워크 구축해서 Demand 입력하고 시뮬레이션까지 (1) | 2024.04.19 |
[SUMO Tutorial] OSM을 불러와서 시뮬레이션 네트워크 쉽게 구축하기 (0) | 2024.04.19 |