예를 들어서
위와 같이 로터리에서 dense 하게 밀집된 obstacle 들이 빙글빙글 도는 상황, 돌다가 ego_vehicle 이 주행하는 경로에 평행하게 obstacle 들이 진행하는 경우를 시나리오로 작성했다.
위 사진에서 확인할 수 있는 것 처럼, obstacle 들이 돌다가 사방면으로 경로를 틀어 이동하는 것을 확인할 수 있고, ego vehicle의 진행 방향과도 동일하게 진행하는 것을 확인할 수 있다.
이렇게 하고 naive map generation 을 하면 로터리 부분과 도로 진행 방향에서 obstacle의 이동 흔적이 맵에 지저분하게 남는 것을 확인할 수 있다.
map generation 과정은 라이다의 스냅샷을 차곡차곡 쌓는 구조이기 때문에, 이동하는 물체가 있다고 가정하면 그 궤적이 전부 맵에 쌓이게 되기 때문이다.
초록색이 ego_vehicle 이 이동한 경로이고, 그 옆의 회색이 naive map 에 쌓인 찌꺼기들 ..
이 상태에서 erasor 를 실행시켜서 refined map 을 얻어보자
근데 naive map 을 얻으려는 과정에서 오류가 many 발생... -> 나아가서 run_erasor 를 하면 path corrected map 을 얻을 수 없다고 뜸.
rqt_bag 으로 찍어보니 odom 의 개수와 lidar 데이터의 개수가 달라서 였다
정중앙에 비어버린 odometry 가 영롱하기 그지 없구만 그래🙃
기존의 nodegen 코드에서는 odometry 와 lidar 의 싱크를 맞출 때
lidar 메세지가 없고, odometry 메세지만 있을 때를 기준으로 하고 있으므로,
lidar 메세지가 있고, odom 메세지는 없을 때를 또 고려해서 빈 데이터를 제외 시켜줘야 한다
이렇게 하고 mapgen 한다음에 erasor 를 돌려보면...
path corrected 가 에러없이 깨끗하게 나온다 !
생각보다 rotation 에서 erasor 성능이 좋게 나오는데...
왜 자동차들이 align 하는 상황이랑 다를게 없어보이는데 이 경우는 소거를 잘 하는건지가 궁금하다
내일은 blocking object를 많이 쌓아두고 (로터리 주변에)
다시 도전을 해봐야지 모!