Post

Pitwall 패널 사용법

Pitwall 패널 사용법

Pitwall 패널

Pitwall은 RViz 상에서 사용할 수 있는 관제 패널입니다. 여기서는 주행모드, 상대차 스폰, 가상 라이다 사용 여부, 가상 인지 모드, 상대차 속도 등을 RViz 내에서 실시간으로 조정할 수 있습니다.

Pitwall 패널

Pitwall의 기능

STATE (상태 배너)

패널 가장 위의 STATE: GB_TRACK처럼 색과 함께 표시되는 배너는 현재 Ego Vehicle의 주행 상태(state machine)를 나타냅니다. 상태는 주행 상황에 따라 자동으로 바뀌며, 각 상태는 고유한 배너 색으로 구분됩니다. 지금 차량이 “그냥 달리는 중”인지 “상대를 추월하는 중”인지 이 배너 하나로 알 수 있습니다.

STATE 4가지 상태 STATE의 4가지 상태 (RECOVERY · GB_TRACK · TRAILING · OVERTAKE)

예시) 레이스라인 위에 장애물을 놓으면 Ego가 접근(GB_TRACK) → 뒤따라가며(TRAILING) → 장애물 추월(OVERTAKE) → 다시 GB_TRACK으로 순환합니다.

STATE 배너 순환 STATE 배너 순환 (GB_TRACK→TRAILING→OVERTAKE)

예시) RViz에서 Ego가 장애물을 피해 회피하면서 주행 (맵 한가운데의 원 또한 state machine에 따라 색깔이 변합니다):

라이브 추월 주행 라이브 추월 주행 (RViz)

Ego 조종 방식 (Joy / Keyboard)

Ego Vehicle을 어떤 기기로 조종할지 선택합니다.

  • Joy: 컴퓨터에 연결된 joystick(조이패드) 사용 (LB = 수동, RB = 자동)
  • Keyboard: 컴퓨터 키보드 사용 (방향키로 주행, a = 자율 / h = 수동)

Ego 조종 방식 선택 Ego 조종 방식 선택

정적 장애물 Spawn 및 제거

정적 장애물은 RViz 상단의 Publish Point 도구로 트랙을 클릭해 만듭니다. 도구를 누른 뒤 트랙의 원하는 지점을 클릭하면 그 자리에 파란색 장애물이 생성되고, 여러 번 클릭해 여러 개를 놓을 수 있습니다. 이렇게 놓은 장애물은 Ego 입장에서 실제 장애물처럼 인식되어 회피 대상이 됩니다. 만든 장애물은 Pitwall의 Clear static obstacles 버튼으로 한 번에 지웁니다.

Publish Point 도구

Clear static obstacles 버튼

버그로 인해 정적 장애물이 지워지지 않는 경우가 있습니다. 이럴 때는 RViz 왼쪽 아래의 Reset을 누르고, 왼쪽 Displays 패널 UTILS의 체크를 해제했다가 다시 체크하면 원래대로 돌아옵니다.

상대 차량(Opponent) 생성 및 조종

가상 상대 차량을 생성하고 조종하는 부분입니다. 상대 차량은 물리 엔진에 속한 객체가 아니라, 자전거처럼 단순화한 운동 모델(kinematic bicycle model)로 움직이는 독립 프로그램(opponent_vehicle)입니다.

  • Opponent 생성: RViz 상단의 2D Goal Pose 도구를 누르고, 원하는 위치를 클릭·드래그하면 그 자세로 상대 차량이 생성됩니다. (Ego를 놓는 2D Pose Estimate와 도구만 다를 뿐 사용법은 같습니다.)

2D Goal Pose 도구

상대 차량의 주행 방식은 Manual · Path · FTG 세 가지 모드가 있습니다.

  • Manual (수동): Ego vehicle과 동일하게 상대차를 직접 조종하는 방식입니다. (추후 업데이트)
  • Path (경로 추종): Ego vehicle과 동일한 경로로 주행합니다. (Pure Pursuit 기준)
  • FTG (Follow-The-Gap): Gap Follow 모드로 주행합니다.

상대 주행 모드 버튼

  • 상대차 속도 (Opp speed +/-): 가상 상대 차량의 속도(상한)를 +/- 버튼으로 조절합니다. 한 번 누를 때마다 ±0.5 m/s씩 바뀌며, 모든 주행 모드에 적용됩니다.

상대차 속도 조절 상대차 속도 조절 (Opp speed +/-)

Path를 활용한 상대 차 주행 예시

스폰한 상대 차량은 Pitwall의 Remove opponent 버튼으로 제거합니다.

가상 LiDAR (Ego / Opp)

가상 LiDAR의 사용 여부를 결정합니다. sim을 가볍게 돌릴 때 사용합니다.

가상 LiDAR on/off 가상 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·OFFLiDAR 토글 (끄면 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 / KeyboardEgo 입력 소스 택1/ego/use_keyboard (Bool: false=Joy, true=Keyboard)

마무리

이 글에서는 Pitwall 패널의 기능들을 살펴봤습니다 — STATE 배너로 주행 상태를 읽고, Ego 조종 방식(Joy/Keyboard)을 고르고, 정적 장애물과 상대 차량을 스폰·제거하고, 가상 LiDAR와 가상 인지 주입 단계까지 RViz 안에서 실시간으로 조작할 수 있습니다. Sim을 처음 띄우는 방법은 Sim 기초 사용법을 참고하세요.

This post is licensed under CC BY 4.0 by the author.