본문 바로가기
ROBOTICS/RPi SLAM

Mapping with hector_slam : Troubleshooting

by 누워있는말티즈 2022. 10. 4.

lookupTransform base_link to laser_frame timed out. Could not transform laser scan into base_frame.

base_link를 laser_frame으로 바꾸는 부분이 문제라는데 해당 부분을 찾아서 고쳐야겠다. 위 두 launch file을 실행했을 때 rqt_graph를 찍어보면 다음과 같은 node-topic 구조를 볼 수 있다.

아마 `~/ydlidar_ws/src/hector_slam/hector_mapping/launch/mapping_default.launch`

에서 해준 변경사항의 이슈일 것으로 판단된다.

날아가는 frame의 이름이 잘못되었을 것이라 판단되어 view_frame 기능을 이용해 확인한다. Ubuntu20.04 환경에서는 view_frame 자체에 오류가 있다.

`opt/ros/noetic/lib/tf/view_frames`파일의 89번 줄을 아래와 같이 처리해준다.

m = r.search(vstr) #를
m = r.search(vstr.decode('utf-8')) #로 변경

수정 이후 home 에서 터미널 2개 키고 각각 실행해준다.

roslaunch ydlidar_ros_driver lidar_view.launch #1
rosrun tf view_frames #2

이를 통해 생성되는 frames.pdf로 frame 이름을 확인할 수 있다.

# 2022.10.04

그동안 개인적으로 너무 바빠서 작업을 못하다가 다시 문제 해결을 시작하였다. 결론적으로 해결되었다.

위 이미지 표시한 부분을 다시 보니 /tf 를 발행하는 노트가 2개인 것을 볼 수 있다. /base_to_laser_broadcaster는 hector mapping에서 라이다가 보내는 laser_frame을 base_link로 transform하는 노드인데 /base_link_to_laser4 노드가 같은 것을 하겠다고 나서 충돌한 것으로 보인다. 위치를 찾아보니 yd_lidar 패키지의 lidar.launch 마지막 줄에 있었다. 이를 주석처리 해버린다.

~/ydlidar_ws/src/ydlidar_ros_driver/launch/lidar.launch

이제 transform 내용이 맞는지 한 번만 더 확인하고 테스트 한다.

ydlidar_ws/src/hector_slam/hector_mapping/launch/mapping_default.launch

위 에러에서 계속 말하던 것처럼 base_link to laser_frame 임을 확인했다.

이제 이전과 같이 터미널 3개 열어서 각각 실행해주면...

roscore #1
roslaunch ydlidar_ros_driver lidar.launch #2
roslaunch hector_slam_launch tutorial.launch #3

손으로 막 밀어서 난잡하지만 mapping이 된다. 

끝.

반응형

'ROBOTICS > RPi SLAM' 카테고리의 다른 글

Mapping with hector_slam  (0) 2022.09.02
RaspberryPi4 + G4 LiDAR Setting  (2) 2022.08.30

댓글