티스토리 뷰
2021.6.17 22:25
안녕하세요
프로그래밍을 배우는 빛나는 샤트입니다.
AIFFEL 해커톤3 6주차 진행 현황 및 후기.
- 기간: 2021.05.10 ~ 2021.06.18
- 주제: 특정 1인을 추적하며 따라가는 자율주행 모바일 로봇 구현(위고 코리아와 협업, 하드웨어 장비 및 기술 지원)
- 인원: 총 5명
- 역할: 팀장, Tracking 알고리즘 개발, ROS를 활용한 로봇 구동 & 알고리즘 연동
1. 6주차 목표: 모든 코드 합치기, 평가 시나리오 만족하기, 영상 촬영 및 발표 자료 작성
2. 6주차 업무 키워드
평가 시나리오 정립
주행 알고리즘 정립
.py 작성 (모듈화)
3. 평가 시나리오
시나리오 번호 | 내용 | 결과 |
1 | 사람1명, 객체 인식 후 전진 | 성공 |
2 | 사람 2명, 타겟 객체 인식 후 전진 | 성공 |
3 | 사람 1명, 좌/우회전 | 성공 |
4 | 사람 1명, 거리 감소에 따른 정지 | 성공 |
5 | 사람 1명, 갑작스런 장애물 등장에 의한 정지 | 성공 |
6 | 사람 1명, 장애물에 의한 정지 후 횡이동 후 전진(if not target lost) | 실패 |
7 | 사람 1명, 장애물에 의한 정지 후 target 재인식 후 기동 | 실패 |
8 | 사람 1명, 장애물 회피 기동 | 성공 |
9 | 사람 1명, 거리가 멀 경우 속도 증가 & 가까워지면 속도 감소 | 성공 |
위 평가 시나리오를 기준으로 총 9개의 항목 중 7개 성공.
실패한 이유는 장애물 영역이 제대로 작동하지 않는다. 바닥의 깊이값이 자꾸 바뀌기 때문에. 바닥 소재 문제라고 생각. 실제로 다른 조건의 바닥에서 진행한 결과 깊이값 변동에서 차이를 보였다. 깊이값 변동이 적은 곳에서 진행하고자 했으나 여건 상 되지 않았고 프로젝트 마감 시간이 다가와서 개선을 하지 못함.
6,7번 항목의 경우 입력 데이터가 garbage이기 때문에 알고리즘에서 제대로 처리하지 못했다.
그럼 시나리오별 주행 테스트 영상을 보여주면 아래와 같다.
4. 주행 알고리즘 정립
로봇의 주행 알고리즘은 크게 '정지', '전진', '회전', '감속/가속', '평행이동' 등의 기능이 있다.
그리고 우선 순위는 다음과 같다.
- 정지
- 회전(좌/우)
- 평행이동
- 감속/가속
- 전진
위 개념을 토대로 아래와 같이 주행 flow chart를 작성했다.
5. py파일 모듈화
각 기능별로 .py로 만들어 모듈화를 진행했다. 현재는 하나의 파일에 적혀있어 너무 길다.
- key_move.py --> 추적 & 주행 알고리즘을 거쳐 나온 결과값(string)에 따라 속도와 방향을 변경해주는 메소드
- scout_motor_light_pub.py --> key_move.py에서 나온 결과를 ROS topic으로 발행하는 코드(모터 및 조명 제어)
- camera.py --> depth camera를 이용할 수 있게 하는 class code
- drive.py --> 입력 이미지에 대한 주행 알고리즘(depth값과 RGB값이 입력되어 전진/정지/우회전/좌회전/속도감속 등을 정한다)
- utils2.py --> 깊이값을 이용해 사람과의 거리 및 장애물 영역 측정
- Default_dist.py --> 깊이 초깃값 측정 (이를 토대로 장애물 영역의 깊이를 측정해 장애물 유무를 판단할 수 있다.)
- object_track_wego.py --> 입력 이미지에 대한 추적 실시
6. 최종 시연 영상
우리 팀의 평가 시나리오를 한 번에 보여줄 수 있는 영상을 촬영. (구현되지 않는 부분은 제외)
넥타이를 착용하고 있는 1인을 추적하는 모습.
- 결과 동영상: https://youtu.be/R7wIWakXlz8
7. 해커톤3를 마무리하며...
6주라는 길고도 짧은 시간이 지났는데 작년에 팀장의 역할을 수행하느라 힘들었는데 이번에도 팀장의 역할을 수행하게 되었다.
이번에는 내가 제안한 주제가 아니라 기업 프로젝트에 참여하게 되었는데 팀원들이 팀장을 요청했다. 자율주행 노래를 부르고 다녔었고 열심히 하는 이미지가 있어서 그랬던걸까..(사실 머리가 좋지 않아서 시간을 많이 투자한 거라고 생각하는데)
object tracking이라는 정말...cv의 끝판왕을 만나서 하나도 모르는 개념을 익혀가며 ROS, depth camera와 주행 알고리즘 작성... 솔직히 tracking 부분은 소스코드가 있어서 어떻게든 작동이 되고 그랬는데..주행 알고리즘은 처음부터 끝까지 생각과 생각과 생각을 거듭해서 나온 결과물이다. 그리고 특정 1인을 추적하는 알고리즘 작성도...오래 걸렸다. 여기서 데이터 구조 이해에 대한 필요성을 느꼈다. 그리고 ROS라는 새로운 녀석을 만나 다뤄봤는데 아직은 '할 만 하다'라는 생각이 든다. 아직 제대로 다뤄보지 않아서 그런거겠지..?
추적 테스트를 위해 매번 실행할 때마다 2분 가량 기다려야 하는 문제가 있었는데 이런 부분에서도 코드 최적화의 필요성을 느꼈다. 그리고 역시 하드웨어와 함께 진행되는 프로젝트이다 보니 동역학적인 지식을 활용할 줄 알아야 한다고 생각한다. 엄청 복잡한 구동을 평가 기준에 넣지 않았지만 나중에는 복잡한 장애물 회피를 시도해봐야겠다.
마지막으로 파이썬 클래스와 데코레이터에 대한 개념 이해와 실습을 더 진행해야겠다. 아직도 잘 모른다고 느꼈다..객체 지향은 아직도 감이 좀 부족하다ㅠㅠ
그리고!!
우리팀 5명 모두 고생하셨습니다👏👏👏
'자율주행 로봇 > Object Tracking Robot' 카테고리의 다른 글
[Object Tracking Robot]Study 내용 정리 (6) - 발행 토픽 이용하기 (0) | 2022.02.20 |
---|---|
[Object Tracking Robot]5장 5주차 후기 (0) | 2022.02.20 |
[Object Tracking Robot]4장 4주차 후기 (0) | 2022.02.20 |
[Object Tracking Robot]Study 내용 정리 (5) - ROS 기초 (0) | 2022.02.20 |
[Object Tracking Robot]Study 내용 정리 (4) - STARK (0) | 2022.02.20 |
- Total
- Today
- Yesterday
- 광주인공지능사관학교
- 모두의연구소
- 배달로봇
- SLAM공부
- SLAM강의
- ros
- 모두의 연구소
- 인공지능
- 광주
- AIFFEL후기
- Slam
- 아이펠
- 인공지능교육
- 양정연SLAM
- 대전 인공지능
- 해커톤
- 인공지능 교육
- 광주AI
- AIFFEL인공지능과정
- AIFFEL
- 멋쟁이사자처럼
- Python
- 자율주행기술
- 실내자율주행
- AIFFEL교육
- 멘탈관리
- 자율주행로봇
- 서빙로봇
- 도전
- IT
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |