ROS bag 데이터를 학습에 사용하기 전에 전처리하는 단계입니다.
| 경로 | 역할 |
|---|---|
maskact/convert_maskact.py |
bag에 mask 이미지 + end-pose + pruning 토픽 추가 (SAM2 트래킹) |
maskact/update_config.py |
LeRobot config.json에 embodiment_tag 추가하는 유틸 |
maskact/verfy_eef.py |
/end_pose_left/right를 구독해 RViz 마커로 검증하는 ROS2 노드 |
end_pose/convert_endpose.py |
mask 없이 TF에서 end-pose 토픽만 추출 (나머지 토픽은 pass-through) |
maskact/sam2_b.pt |
SAM2 모델 체크포인트 (git에 미포함) |
MaskACT 알고리즘을 위한 전처리 도구들입니다.
ROS bag에 mask 이미지와 end pose 정보를 추가합니다.
사용법:
python rosbag_preprocessing/maskact/convert_maskact.py \
--bag-dirs-root /workspace/rosbag2/dkim/ffw_sg2_rev1_dkim/ \
--out-root /workspace/dkim_result_3 \
--image-topic /zed/zed_node/left/image_rect_color/compressed \
--out-topic /mf_perception/ch0_binary_image_sam2/compressed \
--visualize \
--dump-tf-pairs \
--base-left arm_l_link1 \
--ee-left arm_l_link7 \
--base-right arm_r_link1 \
--ee-right arm_r_link7주요 기능:
- TF 메시지에서 end pose 정보 추출 및
/end_pose_left,/end_pose_right토픽 생성 - SAM2를 사용한 mask 이미지 생성
- Pruning indicator 토픽 추가
- 시각화 옵션 제공
출력:
- 전처리된 ROS bag 파일 (mask 이미지 및 end pose 포함)
변환된 LeRobot 데이터셋의 meta/config.json(또는 modality config)에 embodiment_tag를 추가합니다.
⚠️ 현재 대상 경로가 스크립트 내부에 하드코딩되어 있어, 데이터셋마다 파일을 직접 수정한 뒤 실행해야 합니다.
python rosbag_preprocessing/maskact/update_config.py/end_pose_left, /end_pose_right를 구독해 ARROW/TEXT 마커(/pose_verification_markers)를 publish하는 ROS2 노드입니다. RViz에서 추출된 end-effector pose가 올바른지 시각 검증할 때 사용합니다. (파일명 오타: verfy → verify)
python rosbag_preprocessing/maskact/verfy_eef.pyconvert_maskact.py에서 mask/SAM/pruning 로직을 제외하고, TF에서 end-pose 토픽(/end_pose_left, /end_pose_right)만 추가합니다. 나머지 토픽은 그대로 pass-through됩니다. mask가 필요 없는 end-pose 기반 알고리즘 전처리에 사용합니다.
python rosbag_preprocessing/end_pose/convert_endpose.py \
--bag-dirs-root /workspace/rosbag2/dkim/ffw_sg2_rev1_dkim/ \
--out-root /workspace/dkim_endpose_result \
--base-left arm_l_link1 --ee-left arm_l_link7 \
--base-right arm_r_link1 --ee-right arm_r_link7전처리가 완료된 ROS bag은 conversion/ 폴더의 도구를 사용하여 LeRobot 형식으로 변환할 수 있습니다.