728x90
- 한달동안 위의 Navigation과 관련된 몇가지 문제들의 원인을 찾고 해결함
1. Sensor Port Open Error
- OS는 해당 USB Port를 인식하나 ROS File을 Launch할 경우 해당 Port가 열리지 않음
- 로봇 구동 중 IMU가 공급 전원 부족 오류 표시가 뜸
- 현재 20000mAh 용량의 5V, 3A를 출력하는 보조배터리를 통해 Jetson Nano와 Lidar, IMU, WiFi 동글에 전원을 공급하고 있음
- 해당 보조배터리의 공급 Watt수가 15W로 필요 용량에 비해 부족해 생긴 문제
- 따라서 아래와 같이 24V 배터리를 적절히 분배하여 사용할 계획
- 단 현재 사용중인 Motor의 Rated Power가 200W인데, 현재 사용중인 24V 배터리는 150W 정도의 전력을 공급하여 추후 200W 이상의 배터리로 교체가 필요해보임
2. Control Loop Error
- 미해결
3. Timestamp Synchronize Error
- 미해결
- 앞서 했던 odometry data의 주파수 조작이 오히려 로봇의 정상동작을 방해하여 이전으로 돌림
- 관련 내용 : https://youngseong.tistory.com/193
4. Could not get robot pose / local plan
5. Frame 관련 문제
6. Invalid Trajectory, Rotation cmd in collision
- 7번에서 진행한 장애물 회피 구현 성공 후 위 Error들은 다시 발생하지 않음
7. 주행 간 문제 (Navigation 관련)
1) 회전 후 Map 깨짐 현상
- Local Costmap 확인 결과 아래 영상처럼 Z축 방향으로 기울어져 있었음을 확인함
- Rviz 상에서 다른 topic들을 다 끄고 TF만 확인한 결과 odom TF가 Z축 방향으로 들려있음
- 따라서 부착되어있었던 IMU를 때어내서 전보다 더 단단하게 부착함
- 그리고 바퀴의 Hardware spec에 맞게 Motor Driver의 관련 parameter를 수정함
- 이후 Local Costmap 기울어짐 현상은 나타나지 않음
2) 직선 이동 시 실제 로봇의 이동 거리와 Rviz상의 이동 거리가 다른 현상
- 위의 방법으로 같이 해결
3) 장애물에 붙어 주행하는 현상 + Local Planner가 Global Plan을 따르지 않고 장애물에 부딪힘
- 그동안 아래처럼 로봇이 DWA Local Planner가 생성하는 Path를 따라가지 않고 직진만 하는 경향이 있었음
- 이후 원인으로 생각되는 요소들을 몇가지 추리고 살펴봄
-1 속도 명령 (cmd_vel) 정상 전달 여부
- 속도 명령의 전달 과정에서 문제가 있는지 확인하기 위해 move_base node가 발행하는 속도 명령 cmd_vel이 Motor에 제대로 전달되는지 확인함
- rostopic echo 명령어를 통해 cmd_vel과 Motor Driver Node에서 발행하는 robot_pose를 비교한 결과 속도 명령은 정상적으로 전달됨을 확인
- 2 모터 제어 관련 문제
- 모터 제어단에서 문제가 있는지 확인하기 위해 cmd_vel topic값을 확인하며 로봇의 움직임을 살핌
- 그 결과 cmd_vel이 나오는데로 로봇이 움직여 제어의 문제도 아님을 확인
- 3 IMU 관련 문제
- IMU값에 문제가 있어 로봇이 자신의 자세를 잘못 알고있어 직진만 하는가 의심되어 IMU Data를 살펴봄
- rqt의 plot plugin을 통해 cmd_vel의 angular_z와 IMU Data의 angular_velocity/z topic을 비교해봄
- 확인 결과 약간의 offset이 있긴 하나 큰 의미를 갖는 값은 아닌 것으로 보임
- 4 Path 관련
- Navigation 진행 중 cmd_vel의 linear 값을 살펴보니 아래처럼 Y방향의 속도 명령이 나옴
- 따라서 Path도 현재 로봇의 자세에서 옆으로 움직여야 하는 Path가 나옴
- 현재 로봇은 Differential Type의 로봇으로, Linear Y 방향으로는 주행할 수 없는 로봇임
- 때문에 이전에 DWA의 Parameter 중 holonomic_robot을 false로 지정했었으나 위같은 현상이 발생함
- Holonomic Robot은 모든 방향으로 이동할 수 있는 Robot이라는 뜻
- 위 현상 확인 후 DWA의 Parameter 중 Linear Y 방향에 관련된 Parameter 값들을 모두 0으로 설정함
- 해당 parameter의 값들을 따로 지정해주지 않아서 아래와 같은 default 값들이 설정되어있는 상태였음
- 그리고 다시 Navigation을 실행시키자 아래와 같이 제대로 장애물을 회피함
- 결국 Differential Type의 Robot에 맞게 DWA가 Linear Y 방향으로 Path를 생성하지 않게 설정하지 않았음이 원인이었음
- 위와 같은 과정을 거쳐 장애물 회피 기능 구현에 성공함
- 다른 parameter들은 아래와 같이 값을 하나씩 조정해보며 tuning을 진행할 계획
관련 자료 :
https://youngseong.tistory.com/182
https://youngseong.tistory.com/189
https://youngseong.tistory.com/193
'Project > KUSMO' 카테고리의 다른 글
[KUSMO] 9/14~15 (0) | 2023.09.15 |
---|---|
[KUSMO] 9/12 Navigation 문제 (0) | 2023.09.13 |
ROS Noetic에서 Navigation 구동을 위한 Intel NUC 11 Essential Kit (NUC11ATKC2) 초기 설정 방법 및 관련 용어 정리 (0) | 2023.09.05 |
[KUSMO] 8/24 Arduino 수위센서 피에조 추가, 폐기부 제어 코드 (0) | 2023.08.24 |
[KUSMO] 8/22 (0) | 2023.08.22 |