국방로봇 경진대회 Research Diary #2
이번 학기 박한솔의 가장 큰 목표는 과탑이다. (물론, 2등으로 실패했다.)
2학년 2학기 배틀로봇과 함께 시험을 조금 소홀히했던 나 자신에 너무 실망했고,
나 자신에 대한 자존감 극복과 등록금을 줄여 이번 국방로봇 경진대회에 크게 기여하고 싶었다.
부제 : 학기 중 진행 사항 기록
국방로봇 경진대회 기록 일지에 관한 내용이다.
개강 이후 ‘공학설계 I’ 과목과 연계하여 국방로봇 경진대회를 준비했다.
큰 로드맵은 아래와 같이 제시했다.
| 하드웨어 | 소프트웨어 | |
|---|---|---|
| 4월 | 초안 설계 완료(~V0.4) | 제어기 펌웨어 설계 |
| 5월 | 초안 출력 및 피드백 | ROS2 ACTION/TOPIC 설계 |
| 6월 | 시험 준비 | 시험 준비 |
| 7월 | 도색 및 배선 작업 | Computer Vision / 모터 제어 |
| 8월 | PROTOTYPE 1.0 완성 | 자율 주행 및 수동 주행 |
| 9월 | 피드백 및 개선 | 최적화 |
| 10월 | 최종 본선 | 최종 본선 |
Manipulator는 시뮬레이션 및 그립 연구만을 진행하기에 제외했다.
2주 단위 회의
회의는 2주 단위, 시험 기간에는 제외하였으며, 공학 설계와 병행하였다.
약 6번의 회의를 진행했다. (추가 회의 제외)
너무 방대한 내용을 담고있으며, 디테일한 내용에 대해서는 앞으로의 게시글에서 생략하겠다.
(박한솔 본인이 진행한 사항에 대해서만 저술)
1. PID 제어 및 펌웨어 공부
간단한 PID 제어 코드를 작성하여 Ros2 Topic Programming을 진행했다.
영상 내부에서 간단하게 확인할 수 있는 부분은, 오차 범위 10cm 내로 진행하였다.
본 주행 코드는 전체 자율주행으로 이루어졌으며, Nonholonomic Constraint인 Double-Wheeled-Mobile-Robot(DWMR) 이다.
그러나, 우리가 실제로 제어하는 Angular Velocity, Linear Velocity of x,y,z에 대한 부분을 이해하기 위해서는 실제 펌웨어를 뜯어보아야 했다.
펌웨어 내 식에 대해서 논문 식들을 참고해가며 각 바퀴에 대한 제어를 통하여 Turtlebot이 작동하고 있음을 알 수 있게 되었다.
이 과정에서 각도의 변화에 대해서 Reference를 찾지 못한 부분이 있어서 많은 시간을 해맸던 기억이 있다.
그리하여, 본인은 Turtlebot을 판매한 ROBOTIS의 Debate에 들어가 펌웨어 내 계산식에 대해 질문해 보기도 했고, 역학 및 기구학 교수님께 여쭤보기도 하였으며, 지도교수님께 여쭤보며 문제들을 해결해 나갔다.
(물론, 각도에 대한 문제는 여전히 완벽히 해결하지 못한 채 찜찜하게 남아있다.)
-
“그렇다면 난 무엇을 할 수 있을까?” 라는 대답에, 나는 내 입맛에 맞춰 펌웨어를 변경하기로 했다.
- Arm Architecture을 사용하는 RaspberryPI4
- AMD Architecture을 사용하는 Personal Computer(통칭 PC)
- aarch64를 사용하는 Jetson SBC
위 과정 중, PC에서는 Arduino IDE를 사용하여 OpenCR에 Fimrware 업로드가 가능하다.
그러나, 실제로 연산을 처리하고 ROS2의 핵심 주축이 되는 Rasbpberry4에서 작동을 하기 위해서는 Binary File을 .sh파일로 만들어 업로딩 후 사용해야 한다.
실제로 Arduino IDE에서 제공하는 Binary로 변환하는 파일을 사용하여 우리 로봇에 적합한 펌웨어로 변경하여 사용하는 방법을 채택하려 하였으나 실패하였다.
(Binary 파일 Upload를 하게 되면 Turtlebot Topic Launch 과정 중 OPENCR 인식을 정지하는 문제가 발생하였고, 이를 해결할 수 없었다.)

(펌웨어 내부 코드를 공부하는 과정, PPT SLIDE, 04/30)


(손으로 풀어가며 계산하는 과정, 공학 설계 세미나 때 모든 과정을 풀이로 진행했다.)
2. 메타로봇 연구회(MARS) 가입

메타로봇 연구회 가입은 이번 국방로봇 경진대회 준비의 중요한 요소 중 하나였다.
로봇을 만들 때 가장 중요한 건 무엇일까?
기술? 지식? 전부 맞지만, 가장 중요한 건 돈 이다.
로봇은 돈이 매우 많이 들어가는 분야이다.
동시에, 복합적인 모든 기술들이 집약되어 하나의 결과물을 만드는 과정이라고 생각한다.
로봇이 아름다운 이유는 이 모든 복합적 요소가 문제 없이 작동할 때, 로봇 움직이 움직인다는 울림을 주기 때문이다.
자본적 문제를 해결하기 위해서도, 그리고 우리의 로봇 개발에 더 발전을 박차기 위해서도 메타로봇연구회에 가입하기로 결정했다.
메타로봇 연구회는 우리 팀원 전원이 가입 완료했으며, 국방로봇 부문 팀장을 맡아 우리 팀 4명을 이끌기로 했다.
로봇 SLAM/NAVIGATION
원래였다면 SLAM/Navigation은 상당히 중요한 기능이다. 자율 주행에 있어 맵을 따오고,
알고리즘을 계산하여 가장 가까운 방향으로 이동하는 것이 필요하게 된다면 말이다.
그러나, 국방로봇 경진대회에서는 크게 필요가 없어보인다. (각 트랙을 한 번에 완주하는 것이 목표가 아니므로.)
그리하여 알고리즘 및 Turtlebot3 패키지에서 제시된 SLAM/NAVIGATION 코드 내부만 이해하고 진행 과정에 대해서만 이야기 해볼까 한다.
일반적으로, SLAM을 통해 내가 이동하는 모든 경로의 지도를 생성한다. 지도를 만들게 되면, 이 맵 안에서 내 위치를 계속해서 갱신한다.
이후, 내가 이동하고자 하는 위치로의 경로를 계산하고 이동하는 과정을 반복한다.
물론, 이 과정에서 수많은 알고리즘이 존재한다.
이 내용은 겨울방학, 혹은 내가 실제로 국방로봇 때 사용해야 한다면 그 때 다시 소개하겠다.

간단하게 방 내부 SLAM을 통해 맵을 따고, (RVIZ2 활용)

방 내부 SLAM 과정이고, Rviz2 자체에서 Navigation까지 이어서 진행할 수 있다.
중간 점검 및 최종 목표 설정 후 종료
사실, 이 모든 과정을 학기 중에 진행하는 것만 해도 충분히 어려웠다.
(학점을 4.5를 맞겠다는 목표를 다짐도 했으므로 더욱 그럴 것이다.)

물론, 팀원 중 한 명이 C.V를 그만두면서 본인이 맡게 되었고, 이 과정에서 모든 과정은 지연됐다.