본문 바로가기

Simulation/CARLA

CARLA Traffic Manager 매뉴얼 정리

TM(Traffic Manager)는 autopilot mode로 차량을 제어하는 CARLA에 포함된 module이다. 

 

Using the Traffic Manager

TM에서 고려해야할 점은 다음과 같다.

 - 차량들이 특정 목표를 향해서 이동하는 것이 아니라 랜덤으로 생성되는 경로로 움직임.

 - 별다른 조정이 없다면, 차량의 현재 속도 제한의 70%가 목표 speed 이다.

 - 

 

Traffic Manager 생성

 - TM은 synchronous 모드에서 사용되도록 설계 되었기 때문에, asynchronous mode에서는 바람직하지 않은 결과가 나올 수 있다.

 

# TM Instance 생성 <- carla.Client로 부터 만들 수 있다.
tm = client.get_trafficmanager(port번호)

# Autopilot 모드를 적용하기 위해서는 TM port를 가져와서, set_autopilot를 True로 지정한다.
tm_port = tm.get_port() 
for v in vehicles_list:  # vehicles_list는 어디서 가져옴???1
	v.set_autopilot(True, tm_port)
    
    
# ???1 : generate_traffic.py 예제에서는 main 함수 첫 부분에서 SapwnActor에 대한 apply_batch_sync가 리턴하는 list(command.Response)에서
# 각 Response.actor_id를 가져와서 vehicles_list에 넣음

 

Running Multiple Traffic Managers

 TM Server 와 TM Client

  CARLA Client는 서버를 특정하는 TM를 생성한다(포트 기본값은 8000). 그런데 만약 같은 포트에서 TM이 더 생성되면 그것들은 TM Client가 되며, 기존에 생성되어있던 TM은 TM Server가 된다. 그리고 만약 다른 포트를 사용하면, 각각이 TM Sever가 된다.

 

 

Synchronous mode

 CARLA와 TM 모두 synchronous mode로 설정되어있어야 정상 동작을 기대할 수 있다. async 모드에서는 최소 20-30 프레임 이상으로 실행되어야 한다.

 

# simulation Sync mode 세팅
init_settings = world.get_settings()
settings = world.get_settings()
settings.synchronous_mode = True


# TM synchronous mode 세팅
tm.set_synchronous_mode(True)


world.apply_settings(init_settings)
world.tick()


# 스크립트 종료전에는 항상 sync모드를 비활성화 해야 서버가 block되지 않음.

 

TM은 하나만 synchronous 모드여야 한다.

- multiclient 상황에서는 TM-Sever만 sync 모드여야한다.

- mutlTM 상황에서는 단 하나의 TM Server만 sync 모드여야한다.

- ScenarioRunner 모듈은 TM을 자동으로 실행하는데, ScenarioRunner 내의 TM은 자동으로 sync 모드가 적용되어 있다.

 

'Simulation > CARLA' 카테고리의 다른 글

CARLA Build PythonAPI Error(cannot find -lstdc++)  (0) 2023.01.26
Autoware installation  (0) 2023.01.20
ROS2 기초(2)  (0) 2023.01.13
ROS2 기초  (0) 2023.01.11
Carla Autoware (3)- dependencies 설치  (0) 2023.01.09