안녕하세요. Turtlebot3와 OpenCR을 이용하여 ROS2 Foxy에서 SLAM, navigation을 공부하고 있습니다.
바퀴를 조금 더 큰 것으로 바꿔서 진행을 하고 있는데 문제가 생겼습니다.
현재 문제는 SLAM과 navigation시 실제보다 RViz 상에서 Turtlebot3의 거리가 적게 나간다는 점입니다. SLAM을 하면 원래의 방 사이즈보다 map이 작게 나올 뿐만 아니라 제대로 map이 그려지지 않고, 예전에 SLAM을 통해 생성했던 map으로 navigation을 시행하면 실제로는 목적지를 지나쳤음에도 RViz 상에서는 아직 목적지에 도달하지 않아 로봇이 계속 움직입니다. 실제 거리보다 RViz 상에서 더 적게 나간다는 것인데 저는 odometry의 문제로 인식하여 이를 위해 wheel radius를 여러 코드에서 변경하였습니다.
변경해본 내용을 말씀드리자면
-
SBC의 turtlebot3_node 패키지에서 param의 yaml 파일에 있는 wheels의 radius 변경.
-
SBC의 turtlebot3_node 패키지에서 turtlebot.cpp에 있는
this->get_parameter_or(“wheels.radius”, wheels_.radius, 0.033);
의 wheels_.radius를 원하는 값이 들어가도록 변경.
- SBC의 turtlebot3_node 패키지에서 odometry.cpp에 있는
delta_s = wheels_radius_ * (wheel_r + wheel_l) / 2.0;
의 wheels_radius_를 원하는 값으로 변경.
이렇게 3개를 따로 따로 진행하였으나 결과는 같았습니다.
ROS1을 사용할 때에는 turtlebot3_waffle.h에서 wheel radius를 변경하여 잘 사용했는데 ROS2에서는 어떻게 변경하여야 하는지 답변 주시면 감사하겠습니다.