[KABOAT2021] 2021.10.24.~10.31. 대회 일지

한은기·2021년 10월 30일
0

Competition) KABOAT2021

목록 보기
10/10
post-thumbnail

2021.10.24.수 (연습 1일차)

  • 분해해 이동했던 선체와 센서들을 연결함

2021.10.25.목 (연습 2일차)

  • 연습기간 2일차 목표: 경기장의 GPS 좌표 수집 및 종목별 launch file 테스트
  • GPS가 인식이 안되는 문제 발생
    • 기존에는 /dev/ttyACM0 등으로 센서마다 ACM 숫자가 바뀌어 준비 시간이 오래 걸리는 것을 방지하기 위해 GPS는 ttyGPS로 이름을 고정해 두었었음
    • 그래서 ls -l /dev/tty* 로 조회를 하면 ttyARDUINO, ttyLIDAR, ttyGPS, ttyIMU로 잘 인식을 해 왔음
    • 그러나 대회장에서 연결 후 ttyGPS가 인식되지 않고, 심지어 다른 형식으로도 인식이 되지 않았음. 재부팅, USB 허브 연결 포트 교체, 케이블 교체 등 여러 방법을 써 봤으나 마찬가지
    • 간혹 1-2초간 연결되었다가 다시 끊어짐
    • battery charge 불도 깜빡였음
    • 다른 팀의 GPS 보드를 빌려다 연결했을 때는 이상이 없었음. 따라서 보드의 문제인 것으로 생각됨.
    • 오후가 늦도록 아무것도 테스트해보지 못함
  • 캠핑용 배터리 중 하나도 고장이 나 잿슨에 들어오는 전원 등을 주지 못함
  • 해결
    • 마지막으로 대회장(창원)으로 향하는 인원(필자 본인)이 예비용 GPS 보드를 가져가 해결
    • 타 팀의 GPS를 빌려 GPS 좌표 수집, 알고리즘 테스트를 진행. 대회장 폐장 직전에서야 끝낼 수 있었음 (다행다행다행!!!)
    • 배터리는 새로 주문함

2021.10.29.금 (대회 1일차)

발표 심사 / 자율운항 예선 / 오토파일럿 호핑투어

💬발표 심사

  • 각 팀의 부스 앞에서 발표 자료 프린트를 보고 심사위원 3명에게 설명을 하는 시간
  • 제한시간은 15분이었으나 많은 질문을 받아 긴 시간을 소요했음
  • 선형 설계, 장비, 각 종목 별 알고리즘 설계, 이미지 학습 등의 내용을 설명함. 본인은 도킹 알고리즘 설계 부분을 설명함
  • 질문사항
    • 조종 성능의 향상을 회전 반경으로 설명했는데, 지그재그로 설정하지 않은 이유
    • 배수량
    • 이미지 학습 방법
    • 종제어 및 횡제어 방법
    • 도킹 연습 시 성공률
    • 도킹 시 스테이션에 부딪히는 상황에 대한 대비
    • (다른 팀 질문) 본인 팀에서 가장 자랑할 만한 부분?
  • CFD 분석이 호평을 얻음
  • 높은 점수를 기대해볼 수 있었음

🚩대회 진행

  • 각 팀별로 1시간의 도전 시간이 주어짐
  • 본 팀은 각 종목 별 1시간으로 인지했었음. 자율운항 예선에 1시간을 모두 써버려 호핑투어에 도전할 기회가 없었음
  • 모든 팀이 예정된 할당 시간이 끝난 오후 4시 이후에야 도전해볼 수 있었음 (중간에 배정 시간 아니라고 비는 수조 놀려둔 거 정말 화났음. 그럴 거면 그냥 시간 더 주고 쓰게 해주던가!)
  • 4시 ~ 5시에는 우선권을 '기록(실격 없이 완주)이 없는 팀'에게 주었으나, 5시 이후에는 모든 팀에게 선착순 기회를 부여했음 (시장통이 따로 없었음....)

🚤자율운항 예선

  • 작은 수조에서 진행. 부표의 부피가 수조 크기에 비해 컸음. 따라서 배의 크기가 상대적으로 큰 본 팀은 매우 불리한 상황
  • 배의 크기가 작은 팀들은 선수각을 확확 틀어도 장애물 회피가 가능한 반면, 본 팀은 회피를 하더라도 회전 반경 때문에 선수 혹은 선미가 장애물에 종종 부딪혔음
    • 확실히 작은 배가 유리!
  • 각 시기마다 pwm(thruster 속도), 탐지 반경을 조정하며 시도함
  • 기록
    • 3차 시기: 49초 75로 첫 완주. 1회 충돌로 1분 9초 75 기록
    • 6차 시기: 43초로 완주.
    • 7차 시기: 40초로 완주. 2회 충돌로 무의미
    • 12차 시기: 제한시간 종료 직전에 32초 09로 무실점 성공. 이전 도전 팀들 중 1위를 차지 (물론 이후 부경대 PASS 팀이 29초를 기록해 최종 예선 2등으로 마무리)
  • 바람이나 타 팀의 경기 중 충돌로 인해 장애물 위치가 조금씩 바뀜.
    • 공정성의 문제를 제기했으나 주최측에서는 '완전히 장애물 위치가 변경되지 않은 이상 다시 옮길 필요는 없다. 그것을 못 피할 정도면 장애물 회피 능력이 떨어지는 것과 같다'는 답변을 받음
  • 배정된 시간 외에는 수조 사용이 불가능 한 것으로 알고 있었으나, 타 팀이 점심시간에 이용하는 것을 보고 말을 잃음.... (그럴 거면 우리도 큰 수조에서 호핑투어 해봤지....)

🏁오토파일럿 호핑투어

  • 대기 중 타 팀들의 경기를 관람했을 때, 타 팀들의 배는 선속이 매우 느렸었음. 바람에 의해 움직이는지 thruster에 의해 움직이는지 구분하기 힘든 경우도 있었음.
  • 연습 때처럼 PID 제어가 예술로 작동함. 본래 선속도 빠르게 설정해 연습한 터에 속도도 상당히 빠른 편
  • 그러나 GPS가 또 문제를 일으킴. 수조 바닥에 표시된 직경 4m 안에 배의 80%가 들어와야 그 지점을 통과했다고 보는데, 범위 안에 들어오지 못하고 미리 turn을 해버림 -> waypoint 4개를 전체적으로 미리 돌아버리는 것
  • 해결책으로 GPS 상대 좌표의 원점의 위치(경기장 좌측 하단)를 다시 설정해봄
    • 경기장 기준으로 더 북서쪽으로 변경: 잘못 생각한 듯
    • 경기장 기준으로 더 남동쪽으로 변경: 이전과 큰 차이 없었음
    • 주최 측에서 제시한 GPS 좌표와 우리가 수집한 GPS 좌표 간 차이가 매우 컸음
    • 그래서 아예 waypoint 좌표도 우리가 임의로 설정하고 경기해봄
  • 약간은 개선이 되었으나 여전히 불만족스럽게 waypoint를 돎
  • 마지막 시도에서는 waypoint 3개를 통과했으나, 마지막 point를 찍고 다시 출발지점으로 돌아와야 하는데 4번 point에서 계속 뱅글뱅글 무한 반복을 함
  • 결국 6차의 시도 모두 실격 처리로 0점을 기록함
  • 본디 1위를 기대하고 있었고, 특히 호핑투어는 PID제어까지 포함하여 완벽하다 할 정도의 준비가 되어 있었음. 그래서 더욱 아쉬움이 큼
  • 호핑투어의 배점이 비교적 높은 것을 감안할 때, 순위권에 들기 위해서는 자율운항 예선과 도킹 미션, 정상통행 원격조종에서 높은 점수를 얻어야 한다는 계산이 나옴
  • 나중에 알게된 사실로, 경기 당시 수많은 배들 각각에 달린 GPS 수십 대가 서로 간섭을 주었을 가능성도 있었음
  • 연습 시, 정확성은 보장되므로 기록 단축을 위해 속도를 포기하지 못했던 것도 미약한 원인 중 하나. (이후 자율운항 결선 시 속도의 우선순위를 뒤로 넘긴 이유로 작용)

⚓도킹 미션 준비

  • 도킹은 총점 5점으로 환산되므로 매우 작은 배점이었음. 따라서 필자가 담당해 준비는 했으나 크게 중요성을 두진 않았음
  • 기존 알고리즘은 선수각을 먼저 타겟으로 돌려놓고 스테이션은 라이다 탐지를 통해 회피하는 식이었는데, 라이다가 스테이션을 인지하는지에 따라 성능이 크게 좌우되고, 수중에서 테스트해본 적이 거의 없었음. 물론 성공률도 모름
  • 따라서 밤을 새 새로운 알고리즘을 다시 작성함
    • 스테이션 3개(좌, 중앙, 우)가 있을 때, 각 스테이션의 중심에 수직인 방향으로 2개 씩의 점을 찍음
    • 좌측 스테이션부터 2개의 점을 순차적으로 추종하며 선수를 해당 스테이션 마크를 똑바로 보도록 위치시킴
    • 만약 원하는 마크라면 계속 직진해 스테이션 안으로 진입
    • 아니라면 후진 명령
    • 중앙 스테이션에 대해서 같은 명령을 수행
    • 그것도 타겟이 아니라면 우측이 정답이므로 그곳으로 추종
    • 각 점의 추종은 호핑 투어 알고리즘 차용
    • 실제 배 센서와 thruster 테스트 없이 코딩만 한 것이라 다음날 테스트를 해봐야 검증이 가능했음
    • 서로 다른 클래스, main 함수였던 fuzzy & docking & hopping을 통합하는 데 애를 많이 먹었음
  • 임의의 지점의 GPS 좌표를 구하는 방법을 엑셀로 구현함 (선배님들 최고십니다...)
  • 기타
    • 4시를 넘어가니 너무 추웠음. 바로 옆이 바다인데다 10월 말의 차가운 강풍이 불었음
    • 때문에 필자는 밤샘 코딩의 여파까지 더해 감기몸살을 심하게 앓음

2021.10.30.토 (대회 2일차)

정상통행 원격조종 / 자율운항 예선 / 자율운항 중 도킹

🔋준비

  • 본 팀의 경기 배정 시간은 오후 4시였음. 따라서 오전과 오후 시간을 모두 사용해 도킹 미션 육상 테스트를 진행함
  • 아침시간 및 점심시간을 이용해 GPS 좌표를 수집함
  • 시간 배분 전략을 짜서 어제와 같은 일이 일어나지 않도록 주의함(원격 -> 도킹 -> 시간 남으면 자율 예선 재도전)
  • 필자는 건강상태 악화로 점심때 즈음부터 참여함

🎮정상통행 원격조종

  • 작고 빠른 배가 많고, 거의 모든 팀이 준비 가능한(난이도가 비교적 낮은) 종목이므로 시간을 줄이는 것보다는 기록을 만드는 것(실격X)에 집중하기로 함
  • 기록
    • 1차 시도: 도킹 스테이션에 1회 충돌. 솔직히 치워줘야 하는 것은 아닌가 생각이 들다가도, 워낙 큰 구조물이라 그러려니 함
    • 2차 시도: 무실점 53초 기록
    • 3차 시도: 무실점 54초 55 기록

⚓자율운항 중 도킹

  • 밤새 수정을 했던 파일과 잿슨의 최신 파일이 약간 달라 이를 병합하는 과정에서 오류가 조금씩 발생함
    • fuzzy 알고리즘 부분을 jetson에 있던 부분으로 아예 똑같이 복사
    • yaml, launch 파일, 코드를 조금씩 수정하며 launch 시킴
  • 원하는 타겟이 아닐 때 backward 함수(후진 명령)을 내리는 것까지는 잘 됨. 그러나 설정한 시간(초) 후 다시 다음 waypoint로 전진 이동해야 하는데 계속 후진 명령만 내림
    • 서로 다른 클래스에서 publish를 하고 있는 것이 문제인가 함. 머릿속으로는 한 번 publish하고 마니까 상관 없을 것 같긴 해도.
    • 아예 backward 함수(후진 명령)을 없애고, servo motor의 회전각 제한을 풀어 큰 회전을 가능하게 함. '한 스테이션에 가까운 포인트 -> 다른 스테이션의 먼 포인트'로 바로 회전해서 전진 이동하도록
  • 원하는 타겟일 때 forward, 아닐 때 다음 포인트로 이동까지 육상 테스트는 잘 됨
  • 실제 경기에서 지금까지 성공한 팀이 오직 2팀으로, 나머지 팀은 도전조차 하지 않은 경우가 많았음. 어차피 배점도 작으니. 성공한 팀도 같은 학교였음
  • 카메라가 자외선에 약해서 다시 학습을 시켜야 할 정도로 날씨와 조도의 영향을 많이 받는 것을 걱정했는데, 경기장은 마크를 LED로 보여주고 게다가 본팀의 도전 시간은 해가 지기 시작해 좀 어두워지는 4시이기에 인식률이 높을 것으로 판단. 게다가 선글라스도 씌워둠
  • 경기 시작 직전 마크를 알려주고 배를 출발시킴
  • fuzzy 알고리즘에서 docking 알고리즘으로 잘 전환이 되었고, 원하는 스테이션으로 바로 들어감
  • 43초라는 압도적인 기록으로 한 번에 1위를 기록함! (거의 울 뻔.....)
  • 1회차 성공의 감격으로 모든 팀원이 소리를 지른 기억이 생생함

🚤자율운항 예선

  • 다른 팀이 1위를 탈환했고, 본팀이 호핑투어 점수가 0점인 것을 감안할 때, 자율운항 예선의 기록을 단축할 필요가 있었음
  • 도킹과 원격조종에서 많이 시간을 단축해놓았을 뿐더러, 동시에 도전하는 팀이 2-3팀 정도라 많은 재도전을 할 수 있었음
  • 그러나 전날보다 장애물의 위치가 조금 더 어려워져 기록 단축에는 실패함
  • 예선 2위로 마무리
  • 최종 결과 상위 6개 팀이 결선에 진출함. 최단 시간은 28초였으며 6위가 40여 초로 전반적으로 기록이 매우 좋았음(해가 갈수록 발전하는 듯. 어디까지 갈 거야!!!)

🍣회식

  • 필자는 건강상 참석하지 못했음
  • 타 학교까지 합류해 생각보다 회식 규모가 커졌... 기억이 삭제되신 선배님들이 여럿....

2021.10.31.일 (대회 3일차)

자율운항 결선 / 시상식

🚤자율운항 결선

  • 오전에 시작하여 6팀이 2회 씩의 기회를 부여받음. 모든 팀이 실격(결승선에 도달하지 못하는 경우)하는 경우에만 1회씩 기회를 더 부여
  • 호핑투어의 교훈에 따라 속도보다는 무실점 & 실격 없이 기록 남기기에 집중
  • 처음에 장애물을 배치할 때, 배의 크기가 상대적으로 큰 본팀이 우려를 표명함. 배의 폭과 길이를 고려해 장애물을 배치해줘야 함.
  • 같은 부표를 사용하지만 결선 수조는 예선보다 훨씬 크기에 체감 난이도는 예선이 훨씬 높아 보였음
  • 전반적으로 본선에 진출한 다른 팀들의 실력이 매우 우수했음
    • 작년 1회 대회에서 시작 지점(복도 식으로 된 벽을 돌아 나가 시작하는 식)조차 통과하지 못하는 경우가 있었으나, 올해 대회에서는 거의 모든 시도에서 무난히 통과함
    • 선속이 대체적으로 빠르고 장애물 회피 능력이 상당함. 충돌 직전이더라도 기가 막히게 피함
    • 본팀의 fuzzy 알고리즘은 굉장히 잘 작동은 함. 개인적 견해로는 본팀의 제어법이 '가장 가까운 장애물을 추종하고 피하는' 식으로 설계되어 뒤뚱뒤뚱 움직여 소요 시간이 비교적 더 걸릴 수 있었음. 다른 팀들의 경우 '인식 후 회피' 식으로 움직이는 것 같아, 알고리즘의 업그레이드 필요성을 느낌
  • 1회 시도에서 38초 09가 소요되었으나 1회 충돌로 98초 09의 기록을 남김
    • 중간 부분에서 장애물을 확실히 회피하였으나, 바람이 불어 부표가 선체 중앙으로 와서 부딪힘
    • 회피는 했으니 충돌로 처리되지 않았으면 했으나, 충돌 처리가 됨
    • 바람이 야속하구나....
  • 2회 시도에서는 무실점에 집중하여 약간의 파라미터를 수정함. 그러나 실격.
    • 출발지점 통과 후 갑자기 장애물을 회피하지 못하고 이상한 방향으로 움직이다 제자리에서 갈팡질팡함
    • 파라미터 변경에 무슨 문제가 있었나 배를 빼 보니, thruster 중앙에 낙엽이 껴 있었음. (어이가 없네...) 그래서 회전 잘 안되고 잘 움직이지도 않았던 것.
    • 수조 테스트 때도 한 번 낙엽이 꼈던 기억이 있었는데, 설마 경기에서도 끼겠어 했었는데..... 가을에 진행되는 대회라 수조 위로 낙엽이 많았음
    • 다음엔 뜰채를 가지고 다녀야 하나...

🏆시상식

  • 본팀은 종합설계부문 최우수설계상(1위), 종합경기부문 기술혁신상(도지사상)(3위)를 수상함
  • 종합경기부문 1위는 1회 대회 1위 팀이 다시 수상함
  • 상이 매우 다양해졌음

📸기념촬영 및 뒷정리

  • 모든 팀과 함께, 각 팀별로 기념촬영을 진행함 (사진 보내주신 기사님 감사드립니다)
  • 부스를 정리하고 다시 센서 해체 및 패킹 작업을 진행함

기타 사항

  • 올해도 역시 부경대학교의 드론이 매우 부러웠음. 경기장의 수조는 세로 길이가 크기 때문에 중반부 이후에는 카메라로 담기에 매우 힘듦. 특히 장애물 때문에 배가 가려지는 경우가 빈번했음. 드론을 이용하면 bird's eye view 가 가능하기 때문에 기록 및 분석에 유리할 것 같음
  • 정말 다양한 형태의 선체가 존재했음. 확실히 배가 작아야 할 필요성을 느낌. 동시에, 도대체 저기에 어떻게 배터리부터 센서, 컴퓨터까지 다 들어가지? 싶음
  • 장애물 회피 및 경로 탐색에 다양한 방법이 이용되는 듯했는데, velocity obstacle이나 SLAM 등을 보았음. 대단하단 생각이 듦
  • 다른 팀들과 이야기하며 친해지거나 견해를 나눠보았으면 좋았을텐데, 몰아치는 일정과 갖가지 비상 상황들로 그럴 여유가 없었던 것이 많이 아쉬움. (특히 부경대학교나 한국해양대학교와 이야기해보고 싶었는데)
  • 경기 기록 현황을 팀장들에게만 단체 채팅방으로 전달했었음. 차라리 경기장에 보드를 만들어 실시간 중계를 해줬으면 했음. 결선 기록까지 볼 수 있었으면 했음.(실제로 알려주지 않음)
  • 포터블 모니터로 jetson에 연결해 사용했는데, 보통 모니터에 비해 매우 크기가 작아 눈이 아프고 목이 뻐근했음. 매우 큰 모니터를 부착해 사용한 팀이 매우 부러웠음
  • 전반적으로 모든 팀의 수준이 기하급수적으로 상승하는 경향을 보임. 내년 대회를 준비함에 있어 부담으로 다가올 듯.
  • 약 29팀 중 오직 3팀, 그것도 학교로 치면 2개 학교만이 도킹 미션에 성공했는데, 점수 배점도 매우 작고 종목별 상도 없어 매우 아쉬웠음. (줄 만도 하건만)
  • 코로나 19 상황으로 인해 대회장 내외부 인원 제한, 경기 시간 제한 등으로 경기 진행이 매끄럽지 못한 부분도 있었음. 그러나 시간 제한 자체의 의도는 나쁘지 않았던 것 같기도 함.
  • 밥이 맛있었음ㅎ

내년에도 힘내봅시다. 수고 많았습니다! 😊

profile
🏫Inha Univ. Naval Architecture and Ocean Engineering & Computer Engineering (Undergraduate) / 🚢Autonomous Vehicles, 💡Machine Learning

0개의 댓글