1. 이 오류는 간헐적으로 한번씩 뜨던 오류
[ WARN] (2025-10-02 12:23:05.028) Rtabmap.cpp:2922::process() Rejected loop closure 97 -> 147: Not enough inliers 0/20 (matches=43) between 97 and 147
- 에러의 의미 : loop closure후보( node 97 <--> 147 )를 이미지 매칭으로 잡았으나, 기하 검증에서 통과한 인라이어가 0개라서 거부 되었다는 뜻.
- matches = 4 : 이 의미는 두개의 키프레임 사이에서 원시 특징점 매칭이 43쌍이 나왔다는것.
- not enough inliers 0/20 : 이 의미는 RANSAC(PnP/에피폴라/ICP 등 기하학적 검증) 후 인라이어 0개. 현재 임계값(예: 20개)을 못 넘어서 루프클로저 거부.
- ==> 즉, “겉으로 비슷해 보였지만 실제로는 겹치는 시야·기하가 충분치 않다”로 판정된 상황
왜 1번의 오류가 생기나?
- 1. 이미지/깊이 정렬·내부파라미터 불일치
- image_raw에 CameraInfo가 맞지 않거나(미보정), depth가 color에 제대로 align되지 않으면 투영이 틀어져 인라이어가 거의 안 남음.
- 2. 텍스처 부족·반복 패턴·모션 블러
- 하얀 벽, 유리, 반복 천장 타일, 빠른 흔들림 → 매칭은 뜨지만 기하학적으로 일치하지 않음.
- 3. 시점 차이 과도 / 겹침 부족
- 루프 시점에서 시야가 확 달라졌거나, 겹치는 영역이 매우 적음.
- 4. 깊이 품질 문제(RGB-D일 때)
- 거울/투명/먼 거리(> 최대 깊이), 단색 표면 → 3D 대응점이 부족.
- 5. 동적 물체가 대부분을 차지
- 사람/기계 움직임 위주 장면이면 과거 키프레임과 기하가 일치하지 않음.

2. 나름 자주 나오는 에러인데, 이게 떠도 작동은 함
[ WARN] (2025-10-02 12:23:14.221) Transform.cpp:547::getTransform() No transform found for stamp 1759375394.022719! Latest is 1759375393.950682
[WARN] [1759375394.222145916] [rtabmap]: We are receiving imu data (buffer=1000), but cannot interpolate imu transform at time 1759375394.022719. IMU won't be added to graph.
- 로그의 의미 : " 해당 순간의 시간에 맞는 TF를 못찾아서, 해당 프레임에 IMU를 못붙였다"라는 뜻
- 여기서 tf는 보통 "odom→base_link" or "sensor_frame→base_link"를 의미
- RTAB-Map이 요청한 시간(5394.022719s)의 TF를 찾으려 했으나, TF버퍼에 들어온 가장 최신 TF가 5393.950682s까지만 있어서 약 0.072 s 부족해 “그 시각의 변환”을 만들 수 없었다는 뜻
- we are receiving imu data ... but cannot interpolate imu transform at time ... IMU wont be added to graph는 IMU 메시지는 잘들어오지만, 그 IMU time_stamp에 대응하는 TF를 못얻었으니, 그 프레임에는 IMU정보를 그래프(키프레임)에 안 붙임.
- 즉, IMU time_stamp가 TF보다 살짝 앞서가고, RTABMAP이 "IMU 시각의 TF"를 찾다가, 미래의 extrapolation은 못하니 실패....결국에는 해당 프레임은 IMU를 미사용.
[ WARN] (2025-10-02 12:23:32.382) MsgConversion.cpp:1758::getTransform() (can transform odom -> base_link?) Lookup would require extrapolation into the future. Requested time 1759375411.503625 but the latest data is at time 1759375399.293839, when looking up transform from frame [base_link] to frame [odom]. canTransform returned after 0.807095 timeout was 0.8. (wait_for_transform=0.800000)
[ WARN] (2025-10-02 12:23:33.241) MsgConversion.cpp:1758::getTransform() (can transform odom -> base_link?) Lookup would require extrapolation into the future. Requested time 1759375412.304032 but the latest data is at time 1759375399.293839, when looking up transform from frame [base_link] to frame [odom]. canTransform returned after 0.804667 timeout was 0.8. (wait_for_transform=0.800000)
[ WARN] (2025-10-02 12:23:34.907) MsgConversion.cpp:1758::getTransform() (can transform odom -> base_link?) Lookup would require extrapolation into the future. Requested time 1759375414.038059 but the latest data is at time 1759375399.293839, when looking up transform from frame [base_link] to frame [odom]. canTransform returned after 0.802818 timeout was 0.8. (wait_for_transform=0.800000)
[ WARN] (2025-10-02 12:23:35.774) MsgConversion.cpp:1758::getTransform() (can transform odom -> base_link?) Lookup would require extrapolation into the future. Requested time 1759375414.838338 but the latest data is at time 1759375399.293839, when looking up transform from frame [base_link] to frame [odom]. canTransform returned after 0.802478 timeout was 0.8. (wait_for_transform=0.800000)
[INFO] [1759375399.892655728] [rgbd_odometry]: Odom: quality=8, std dev=0.000000m|0.000000rad, update time=0.191336s
[ WARN] (2025-10-02 12:23:20.031) OdometryF2M.cpp:557::computeTransform() Registration failed: "Not enough inliers 0/20 (matches=94) between -1 and 1821"
[INFO] [1759375400.032830258] [rgbd_odometry]: Odom: quality=0, std dev=0.000000m|0.000000rad, update time=0.136729s
[ WARN] (2025-10-02 12:23:20.172) OdometryF2M.cpp:557::computeTransform() Registration failed: "Not enough inliers 0/20 (matches=88) between -1 and 1822"
[INFO] [1759375400.174185816] [rgbd_odometry]: Odom: quality=0, std dev=0.000000m|0.000000rad, update time=0.139003s
[ WARN] (2025-10-02 12:23:20.312) OdometryF2M.cpp:557::computeTransform() Registration failed: "Not enough inliers 0/20 (matches=74) between -1 and 1823"
[INFO] [1759375400.313920332] [rgbd_odometry]: Odom: quality=0, std dev=0.000000m|0.000000rad, update time=0.137240s
[ WARN] (2025-10-02 12:23:20.453) OdometryF2M.cpp:557::computeTransform() Registration failed: "Not enough inliers 0/20 (matches=81) between -1 and 1824"
[INFO] [1759375400.454801123] [rgbd_odometry]: Odom: quality=0, std dev=0.000000m|0.000000rad, update time=0.138447s
[ WARN] (2025-10-02 12:23:20.595) OdometryF2M.cpp:557::computeTransform() Registration failed: "Not enough inliers 0/20 (matches=75) between -1 and 1825"'px4_sim' 카테고리의 다른 글
| 맵 작성 1트 ( 간소화 ) (1) | 2025.10.16 |
|---|---|
| 움직이기 2트 (0) | 2025.10.13 |
| px4 드론 topic들 정리 (0) | 2025.10.02 |
| ros2 run rtabmap_odom rgbd_odometry (0) | 2025.09.30 |
| 움직이기 (0) | 2025.09.19 |