참가 대회/DroneLeft(~21년7월)

드론대회 개요

천숭이 2021. 3. 23. 22:26

 

주요 소프트웨어
matlab - pid 상태 시각화, 드론자세 제어
openCV - 영상처리, 경로인식, 목표객체(경유지 및 착지점) 인식
python - openCV연산 , 영상처리 및 제어명령, 통신명령제어

호버링 : 드론이 정지비행하는 동안 무게+항력 = 추력+양력, 드론제어에서 가장 중요한 부분
자이로센서 : 짧은시간의 각속도 측정시 정확도가 매우 높지만 오차가쌓이면서 드리프트 현상 발생
따라서 단범보안을 위한 필터사용

상보필터는 실시간 데이터의 반영속도가 빠르지만 충격에 의해 변화하는 값이 큼
칼만 필터는 그 반대. 충격에 의해 변화하는 값은 적지만 실시간 데이터 반영속도가 느림
드론대회 특성상 데이터의 반영속도가 빠른 상보필터 적용이 유리

m.blog.naver.com/PostView.nhn?blogId=dkwltmdgus&logNo=220488096033&proxyReferer=https:%2F%2Fwww.google.com%2F
가속도, 자이로값으로 드론의 각도를 구할 수 있다. 가속도 센서와 자이로 센서가 서로의 단범을 보완해준다. 가속도, 자이로센서를 동시에 사용해 각도를 정확하게 계산해 주는 방법이 상보필터다. (*상보: 서로 모자란 부분을 보충함)


pid(비례,적분,미분) 3가지 값 제어하기

영상처리 알고리즘

가우시안 블러링 - 중심에 있는 픽셀에 높은 가중치를 부여하는 필터

색공간 변환 - hsv

이진화 작업 - 트랙과 원의 특징 검출이 목표. 빛 조명등의 영향으로 생긴 노이즈를 제거하기 위해서는 모폴로지 침식 및 팽창을 사용

모폴로지 침식 및 팽창은 바이너리 이미지에 적용할 수 있음.
침식연산은 이미지를 깎아 내는 것으로 필터가 해당 사진안에 완전히 있을때만 픽셀값1로 변경. 노이즈 제거에 좋음.
즉 인식하는데 필요한 부분만 남겨놓는 작업.
dst = cv2.erode(src, kernel, anchor, iterations, borderType, borderValue)
팽창연산은 침식과 반대로 물체의 주변을 확장하는 연산.
dst = cv2.dilate(src, kernel, dst, anchor, iterations, bordeType, borderValue)

침식은 어두운 부분의 노이즈 제거효과, 팽창은 밝은 부분의 노이즈 제거 효과.
침식과 팽창의 연산을 조합하면 원래의 모양을 유지하면서 노이즈 제거 가능

열림 = 침식+팽창, 닫힘 = 팽창+침식

그래디언트 연산 : 팽창연산이미지에서 침식연산 이미지를 빼면 경계픽셀만 얻게 된다. 경계검출과 비슷
탑햇 : 원본이미지에서 연산적용 결과를 빼면 밝은 영역을 강조할 수 있다.
블랙햇 : 닫힘 연산 적용 결과에서 원본을 빼면 어두운 영역을 강조할 수 있다.

경로이동제어 알고리즘 및 계획

드론의 현재위치를 기준으로 중앙점을 검출하고 전방에 중앙점을 하나 더 설정해서 가려는 방향을 미리 설정해 도착시간을 줄이기.

중앙점을 이용해 직선경로를 지정
드론이 이동하면서 중앙점끼리의 각도차가 발생하고 그 각도의 차이를 이용해 가려는 방향을 설정해야한다.













Roll, Pitch, Yaw