navigation2 실행 후 주행 명령 시 문제 발생
페이지 정보
본문
REMOTE PC 버전: ubuntu 22.04
ROS 버전: humble
navigation 실행 시 처음 가는 경로가 일직선으로 가는 경로일 시 로봇 위치가 틀어지지 않으면 정상적으로 주행 합니다,
근데 로봇 시작 위치가 조금이라도 틀어지거나 주행 도중 틀어질 시 그 자리에서 회전을 하거나 각도를 이상하게 트는 현상이 발생하고 있습니다.
저희가 테스트하면서 확인한 데이터는 imu/yaw/data는 확인 시 차량 각도에 맞게끔 정상적으로 올라오는건 확인했습니다.
추가로 확인해 봐야 하는 내용이 있으면 알려주실 수 있을까요? 테스트 한 영상도 남겨 봅니다
첨부파일
-
test.webm (15.2M)
2회 다운로드 | DATE : 2024-12-27 17:17:58
- 이전글SLAM 좌우 반대 25.01.06
- 다음글Re: 모터 동작 오류 24.12.27
댓글목록
최고관리자님의 댓글
최고관리자 작성일
안녕하세요.
아이디어 로봇입니다.
영상으로 확인해 보았을 때는 로봇이 측정한 로봇의 위치가 업데이트 되면서 경로가 변경되어 발생하는 현상인 것으로 보입니다.
해당 현상은 주로 넓은 공간에서 구동할 때 위치 인식 오차가 좁은 공간에서의 오차에 비해 커지면서 발생되는 현상입니다.
해당 현상의 경우 nav2 설정을 변경하여 도착 위치의 오차를 키워주어 해결할 수 있습니다.
원격PC의
stella_navigation2/param/stella.yaml 파일에서
controller_server > FollowPath > xy_goal_tolerance 값을 변경하여 주시면 됩니다.
엔스퀘어님의 댓글의 댓글
엔스퀘어 작성일
기존에 xy_goal_tolerance가 0.05로 설정되어 있었고, 0.25, 0.5, 5 로 변경하여 테스트 해봤으나 같은 현상 있습니다.
몇 정도로 하는게 맞는건가요? 아니면 다른 문제일까요?
최고관리자님의 댓글의 댓글
최고관리자 작성일
해당 값을 5(m)로 변경하였을 때에도 동일하였다면 설정이 적용되지 않았을 가능성이 높을 것 같습니다.
값을 변경하시고 colcon_ws에서 build와 install 디렉터리를 삭제하시고 colcon build를 다시 진행하여
설정이 확실하게 적용된 후 한 번 더 확인 부탁 드립니다.
만약 위 과정을 거쳐 설정이 확실하게 적용되어도 동일한 현상이 발생한다면 yaml에 각도 오차를 추가하여 주어야 할 수 있습니다.
엔스퀘어님의 댓글의 댓글
엔스퀘어 작성일
영상에 있던 문제는 각도 회전이 반대로 되어 있어서 그랬던 것 같습니다. (https://github.com/ntrexlab/STELLA_N1_PI_X4_PRO_ROS2_v2.0)
void stellaN1_node::command_velocity_callback(const geometry_msgs::msg::Twist::SharedPtr cmd_vel_msg)
{
if(RUN)
{
goal_linear_velocity_ = cmd_vel_msg->linear.x;
goal_angular_velocity_ = cmd_vel_msg->angular.z * -1.0;
dual_m_command(dual_m_command_select::m_lav, goal_linear_velocity_, goal_angular_velocity_);
}
}
또 하나 궁금한게 로봇이 목적지 도착했을 때 각도 오차가 약 40도 이상 나는 상태인데 이것도 좀 더 정밀하게 할 수 있을까요?
최고관리자님의 댓글의 댓글
최고관리자 작성일
문제가 해결되어 다행입니다.
각도 오차를 설정하시려면
navigation2의 yaml파일에서 controller_server > ros__parameters에
goal_checker_plugins:
- "goal_checker"
goal_checker:
stateful: True
plugin: "nav2_controller::SimpleGoalChecker"
xy_goal_tolerance: 0.2
yaw_goal_tolerance: 0.5
위 플러그인을 추가하여 주신 다음에 yaw_goal_tolerance 값을 조정하여 주시면 될 것으로 예상됩니다.
해당 플러그인의 xy_goal_tolerance값은 이전에 설정하신 xy_goal_tolerance 값과 같이 설정하여 주시고
yaw_goal_tolerance의 단위는 라디안으로 원하시는 라디안 각도 오차 값으로 설정하여 주시면 됩니다.