Replay - Rosbag
본 페이지는 Rosbag 파일을 이용하여 Replay하는 기능인 Rosbag Replay에 대해 설명한다.
MORAI Simulator Rosbag Replay
Rosbag Replay 기능은 Rosbag 을 이용하여 Replay 하는 기능이다. 사용자가 원하는 Scenario 에 대한 Ego 의 주행 데이터 및 주변 환경 데이터를 Rosbag 으로 저장 후 Replay 하여 Scenario 를 재현할 수 있고, Ego 차량에 Sensor 를 부착하여 Data set 을 생성 할 수 있다.
Replay Mode
Rosbag Replay : Rosbag File 을 Simulator 에 직접 Import 하여 Replay 하는 기능이다.
Network Replay : Rosbag File 을 ROS 환경에서 Play 하는 기능이다. Rosbag에 저장되어 있는 /ReplayInfo_topic 을 Rosbridge 를 통해 넘겨 받아 Replay 한다.
Rosbag Replay
Ego Vehicle 차종은 현재 시뮬레이터에서 선택한 차종으로 Rosbag Replay 가 진행됨
Simulator 상단 메뉴 PlayMode > Replay > Rosbag Replay 에서 Rosbag Replay 를 진행 할 수 있음
상단의 File List 에서 원하는 Rosbag 파일을 더블 클릭
Load 가 완료되면 Message Type 에서 해당 Rosbag 파일의 정보 출력
이후 Start 를 클릭 시 Replayer Control Panel 을 출력
Replayer Control Panel 창의 Play 버튼을 눌러 실행
Option
Replayer Control Panel
Rosbag 파일 재생 Control
화살표 버튼을 통해 재생을 조절
상단 재생 바를 통해 Rosbag 파일의 재생 시점을 조절
하단 재생 바를 통해 Rosbag 파일의 재생 속도를 조절
재생 버튼 상단 숫자 : Rosbag 파일의 unix timestamp , 저장된 msgs 의 수
현재 재생 중인 시나리오의 상태 저장 기능
Replayer Control Panel 하단 Save 버튼 클릭 시 현재 재생 중인 상태의 Scenario 를 저장할 수 있음
저장된 시나리오는 Scenario > Save & Load 에서 확인 가능함
Bridge Setting
현재 재생되는 Rosbag 데이터를 Publish 하여 ROS 환경에서 확인 가능
Publish 되는 Data 의 정보는 다음과 같음
Message Type : morai_msgs/ReplayInfo
Default Topic : /ReplayInfo_topic
Select Replay / Offset / Sensor Frame Rate
Select Replay : Rosbag 파일 재생 시 Ego, NPC 차량, Pedestrian 정보를 재생 하는지 여부
Heading Offset :Ego vehicle의 heading 방향 Offset
Sensor Frame Rate : Rosbag Replay 진행 시 차량에 부착되어있는 Sensor Data의 저장 Rate(Hz)
Height Offset : Ego Vehicle 의 Z 방향 위치 Offset
Rosbag 파일 재생 시 아래 사진과 같이 차량이 땅에 파묻히는 경우가 생기면 Height Offset 기능을 이용하여 Ego Vehicle 의 위치를 조정 가능함
Camera Setting
Perspective View : 자유롭게 움직일 수 있는 카메라 시점
Top View : 위에서 내려다 본 카메라 시점
Vehicle View : 현재 차량 중심의 카메라 시점
ROS 메세지를 이용한 Rosbag Replay 제어
ROS 메세지를 Publish 하여 Replay 기능을 활성 화 및 종료 가능함
Replay 기능의 옵션 및 시점 진행 속도 등을 제어 할 수 있음
자세한 제어 방법은 다음 페이지 참조
Rosbag Replay 창 Select Mode 옵션
Vehicle : 주변 차량 정보가 그대로 출력 됨
Box : 주변 차량 정보가 BOX 모양으로 출력 됨
Network Replay
ROS 환경에서 Rosbag 파일을 Play, rosbridge 를 통해 데이터를 Subscribe 하여 Replay
Bridge Setting의 IP, PORT에 Rosbag file 을 play 하는 ROS 환경의 rosbridge ip, port 를 입력
Connect 를 눌러 좌측 상단의 Replayer Control Panel 확인
Dataset 및 Draw Mode 확인 및 선택
ROS 환경에서 Rosbag file play 하여 실행 확인
Option
Replayer Control Panel
Connect 연결 후 Replayer Control Panel 을 통해 Rosbag 재생 시뮬레이션의 시점을 조절 할 수 있음
Perspective View : 자유롭게 움직일 수 있는 카메라 시점
Top View : 위에서 내려다 본 카메라 시점
Vehicle View : 현재 차량 중심의 카메라 시점
Connect 연결 후 Replayer Control Panel 이 나오면 Ubuntu 에서 Publish 되는 Rosbag 파일에 맞춰 Replay 가 재생됨
ROS 환경 Setting
Ros bridge 실행
$ roslaunch rosbridge_server rosbridge_websocket.launch
Rosbag 파일 재생
터미널을 Rosbag 파일이 저장된 경로로 이동
$ rosbag play (Rosbag 파일 이름.bag)
rosbag play 이후 Publish 되는 데이터 rqt 를 통해 확인 가능함
Rosbag 파일 생성
Ubuntu 환경에서 ROS Topic 데이터를 저장하여 .bag 형식의 Rosbag 파일을 생성 할 수 있다.
시뮬레이터 실행 후 Ubuntu 환경에서 rosbridge 를 연결 한다.
ROS Topic 확인
$ rostopic list
현재 연결되어 있는 ROS Topic 종류를 볼 수 있다.
ROS Bag 파일 생성
$ rosbag record /ReplayInfo_topic
ReplayInfo_topic에는 다음과 같은 데이터들이 포함되어있다.
Ego 관련 정보
ego_acc
ego_brake
ego_steer
ego_orientation_x
ego_orientation_y
ego_orientation_z
ego_orientation_w
ego_linearAcceleration_x
ego_linearAcceleration_y
ego_linearAcceleration_z
Object(NPC Vehicle, Pedestrian, Obstacle) 관련 정보
num_of_object
object_type
object_id
pose_x :
pose_y
pose_z
heading
size_x
size_y
size_z
velocity
ROS 메세지 에 대한 자세한 설명은 다음 페이지 참조 : ROS 메세지 설정 방법 및 타입 설명
rosbag record 실행 시 현재 터미널 경로에 .bag 형식의 파일이 저장 된다.
Rosbag 파일 저장
생성한 Rosbag 파일을 Launcher 폴더의 Data\SaveFile\Rosbag 에 옮긴다.
상단 메뉴 Replay Mode > Rosbag Replay 를 클릭한 뒤, 하단의 Open 을 선택하면 Rosbag 파일 저장 경로의 폴더가 나온다.
사용 예제
rosbag Replay 사용 예제
아래 링크를 통해 Rosbag 예제 파일을 다운 받는다.
replay_example.bag다운 받은 Rosbag 파일을 저장하여 아래 영상과 같이 재생 할 수 있다.
Rosbag Replay 예제 영상