Pitwall 패널 사용법
Pitwall 패널
Pitwall은 RViz 상에서 사용할 수 있는 관제 패널입니다. 여기서는 주행모드, 상대차 스폰, 가상 라이다 사용 여부, 가상 인지 모드, 상대차 속도 등을 RViz 내에서 실시간으로 조정할 수 있습니다.
Pitwall의 기능
STATE (상태 배너)
패널 가장 위의 STATE: GB_TRACK처럼 색과 함께 표시되는 배너는 현재 Ego Vehicle의 주행 상태(state machine)를 나타냅니다. 상태는 주행 상황에 따라 자동으로 바뀌며, 각 상태는 고유한 배너 색으로 구분됩니다. 지금 차량이 “그냥 달리는 중”인지 “상대를 추월하는 중”인지 이 배너 하나로 알 수 있습니다.
STATE의 4가지 상태 (RECOVERY · GB_TRACK · TRAILING · OVERTAKE)
예시) 레이스라인 위에 장애물을 놓으면 Ego가 접근(GB_TRACK) → 뒤따라가며(TRAILING) → 장애물 추월(OVERTAKE) → 다시 GB_TRACK으로 순환합니다.
STATE 배너 순환 (GB_TRACK→TRAILING→OVERTAKE)
예시) RViz에서 Ego가 장애물을 피해 회피하면서 주행 (맵 한가운데의 원 또한 state machine에 따라 색깔이 변합니다):
Ego 조종 방식 (Joy / Keyboard)
Ego Vehicle을 어떤 기기로 조종할지 선택합니다.
- Joy: 컴퓨터에 연결된 joystick(조이패드) 사용 (
LB= 수동,RB= 자동) - Keyboard: 컴퓨터 키보드 사용 (방향키로 주행,
a= 자율 /h= 수동)
정적 장애물 Spawn 및 제거
정적 장애물은 RViz 상단의 Publish Point 도구로 트랙을 클릭해 만듭니다. 도구를 누른 뒤 트랙의 원하는 지점을 클릭하면 그 자리에 파란색 장애물이 생성되고, 여러 번 클릭해 여러 개를 놓을 수 있습니다. 이렇게 놓은 장애물은 Ego 입장에서 실제 장애물처럼 인식되어 회피 대상이 됩니다. 만든 장애물은 Pitwall의 Clear static obstacles 버튼으로 한 번에 지웁니다.
버그로 인해 정적 장애물이 지워지지 않는 경우가 있습니다. 이럴 때는 RViz 왼쪽 아래의 Reset을 누르고, 왼쪽 Displays 패널 UTILS의 체크를 해제했다가 다시 체크하면 원래대로 돌아옵니다.
상대 차량(Opponent) 생성 및 조종
가상 상대 차량을 생성하고 조종하는 부분입니다. 상대 차량은 물리 엔진에 속한 객체가 아니라, 자전거처럼 단순화한 운동 모델(kinematic bicycle model)로 움직이는 독립 프로그램(opponent_vehicle)입니다.
- Opponent 생성: RViz 상단의 2D Goal Pose 도구를 누르고, 원하는 위치를 클릭·드래그하면 그 자세로 상대 차량이 생성됩니다. (Ego를 놓는
2D Pose Estimate와 도구만 다를 뿐 사용법은 같습니다.)
상대 차량의 주행 방식은 Manual · Path · FTG 세 가지 모드가 있습니다.
- Manual (수동): Ego vehicle과 동일하게 상대차를 직접 조종하는 방식입니다. (추후 업데이트)
- Path (경로 추종): Ego vehicle과 동일한 경로로 주행합니다. (Pure Pursuit 기준)
- FTG (Follow-The-Gap): Gap Follow 모드로 주행합니다.
- 상대차 속도 (Opp speed +/-): 가상 상대 차량의 속도(상한)를
+/-버튼으로 조절합니다. 한 번 누를 때마다 ±0.5 m/s씩 바뀌며, 모든 주행 모드에 적용됩니다.
Path를 활용한 상대 차 주행 예시
스폰한 상대 차량은 Pitwall의 Remove opponent 버튼으로 제거합니다.
가상 LiDAR (Ego / Opp)
가상 LiDAR의 사용 여부를 결정합니다. sim을 가볍게 돌릴 때 사용합니다.
가상 LiDAR on/off (Ego LiDAR / Opp LiDAR)
가상 인지 주입 (LiDAR Overlay / Tracking Merge)
인지 과정은 크게 인지·추적(perception) → 경로 계획(planner) 순서로 진행됩니다. 이 기능은 임의로 생성한 상대 차량·장애물을 우리 차량의 인지 과정 중 어느 단계에 넣을지 정합니다.
- LiDAR Overlay (앞단 주입): 가짜 LiDAR 반사를 만들어
/scan(라이다 데이터)에 덧씌웁니다. 실제 인지→추적 과정부터 테스트하고 싶을 때 사용합니다. - Tracking Merge (뒷단 주입): 검출·추적을 건너뛰고, 완벽히 추적된 상태의 장애물을 planner에 곧바로 투입합니다. 인지는 신뢰한다고 가정하고 경로 계획만 테스트할 때 사용합니다.
가상 인지 주입 (LiDAR Overlay / Tracking Merge)
RViz 컨트롤 총정리
| 컨트롤 | 동작 | 토픽 (타입) |
|---|---|---|
| 상대 스폰/이동 | 버튼 아님 — RViz 2D Goal Pose 도구로 맵 클릭 | /goal_pose (PoseStamped) → opponent_vehicle 스폰/이동 |
| Remove opponent | 상대 제거 | /sim/remove_opponent (Empty) |
| 정적 장애물 배치 | 버튼 아님 — RViz Publish Point 도구로 맵 클릭 | /clicked_point (PointStamped) → static_obstacle_manager |
| Clear static obstacles | 정적 장애물 전부 삭제 | /sim/clear_obstacles (Empty) |
| Manual / Path / FTG | 상대 주행 모드 | /sim/opp_mode (String). manual=/opp_cmd_vel 텔레옵, FTG는 상대 LiDAR 강제 ON |
| Ego / Opp LiDAR ON·OFF | LiDAR 토글 (끄면 sim 빨라짐) | /sim/ego_lidar_enable, /sim/opp_lidar_enable (Bool) |
| LiDAR Overlay / Tracking Merge | 가상 인지 주입 단계 택1 | /vp/inject_mode (String: “overlay”/”merge”) |
| Opp speed − / + | 상대 속도 ±0.5 m/s 델타 | /sim/opp_speed_delta (Float32) |
| Ego 조종 Joy / Keyboard | Ego 입력 소스 택1 | /ego/use_keyboard (Bool: false=Joy, true=Keyboard) |
마무리
이 글에서는 Pitwall 패널의 기능들을 살펴봤습니다 — STATE 배너로 주행 상태를 읽고, Ego 조종 방식(Joy/Keyboard)을 고르고, 정적 장애물과 상대 차량을 스폰·제거하고, 가상 LiDAR와 가상 인지 주입 단계까지 RViz 안에서 실시간으로 조작할 수 있습니다. Sim을 처음 띄우는 방법은 Sim 기초 사용법을 참고하세요.








