2018년 11월 22일 목요일

사용해본 드론용 FC

여태까지 써봤던 드론용 FC에 대해서 간략히 느낀 점을 정리합니다.

2012년
1.  MFC
네이버카페도 있고 외국제품에 대한 두려움이 앞서, 처음 사용해봤던 제품입니다.
결론만 말씀드리면  PID잡다가 1년 보냈습니다.
당시 출시되던 드론용 FC들은 자세제어에 필요한 PID값을 수동으로 설정해야했습니다.

2번의 원인모를 추락 이 후 바로 apm으로 넘어갔습니다.

장점 : 음..
단점 : 비행 신뢰성 부족. 비쌈.
활용범위 : 스파르타식 드론 맛보기
특이사항 : 업무에 끌고나갈 자신감이 결코 생길 수가 없었음.

2013년 ~
2. APM계열 Ardupilot
지금이야 dji가 압도적이지만 초기는 apm과 나자는 대결구도에 있었다고 봐야죠.
펌웨어는 중단되었지만 보드 자체는 지구촌공장이라 불리는 중국에서 싼값에 꾸준히 제작 판매되고 있습니다.

장점 : 안정적
단점 : 복불복 품질, 펌웨어 제공 중단(3.2.1에서 중단됨), 이동시 고도침하발생. 최신정보를 얻기위해서는 영어공부를 해야함.
활용범위 : 중급반 드론 활용을 위한 제품(미션 플라잉, gps, 소나센서, 짐벌사용 등등)
특이사항 : 업무비행 중 추락 없었음.

3. APM계열 miniApm
드론 초기 사이즈대결로 나가던 분위기가 레이싱드론이라는 250급의 소형드론으로 관심이 확장되면서 기능은 동일하되 크기가 작아진 FC들이 대거 출현하였습니다.
miniApm의 경우 소형드론용 FC가 아니라 그냥 소형FC여서 250급에 처음 적용했을 때 이해가 되지 않는 pid값을 설정해야했습니다.
지금은 제가 업무에 활용하는 250급 드론의 메인 FC로서 2년여 전에 맞춘 세팅값으로 지금도 훨훨 잘 날아댕기고 있습니다.

장점 : 안정적
단점 : 레이싱용 FC는 아님. 이동시 고도침하발생.
특이사항 : auto tune을 하기위해 일단 띄워야 되는 것이 제일 어려운 일이었음. 외국 커뮤니티 다니면서 간신히 비스무레한 값을 일단 세팅하고 나서야  auto tune비행이 가능했음.
업무비행 중 추락없었음.

4. APM계열 pixhawk
apm의 큰 계열안에서 하드웨어의 개선이 많이 이루어진 제품이었습니다.
ardupilot과 후반기를 공유하였던 제품으로 ardupilot의 중단이후 지금은 apm계열의 주 제품입니다.
기능개선이 상당히 빠르게 이루어지고, 가격이 여타 FC에 비해 고가입니다.
초기펌웨어의 경우 확장칼만필터 오류로 추락도 여러 번 했던 기체라서, 크게 기능을 확장하지 않는 비행이라면 ardupilot으로 충분하다고 여겨, 몇 번 만들어보고 창고에서 쉬고 있습니다.

장점 : apm계열의 주종목 제품으로 꾸준한 기능개선, 추가장비의 확장성
단점 : apm에 비해 고가. 베타펌웨어의 무시무시함. 이동시 고도침하발생.
활용범위 : 소스 커스터마이징을 통해 무언가 고급진 데이터를 얻어야 하는 드론 비행을 원하는 분들.

4. 레이싱드론용 CC3D
mini apm를 구입했을 때 함께 구입했던 FC입니다.
이건 말 그대로 레이싱드론용이어서 pid세팅없이도 250사이즈에 장착해서 띄우면 아주 안정적으로 떴습니다. 단 초기 버전은 gps 확장이 안되는 제품이어서 업무활용성이 없었으므로 재미삼아 만들어서 놀다가 창고로 보냈습니다. 이후 gps연동이 되는 버전이 있다는 것을 알았지만 이미 mini apm이 충분히 제역할을 하고 있는 상태라 다시 꺼내보지는 않았습니다.

장점 : 소형기체에 상당히 안정적.
단점 : 당시 gps나 짐벌 확장이 제대로 구현되지 않았음.
활용범위 : 레이싱용드론, 아크로바틱한 비행을 원하시는 분.

5. 기타
틸트드론을 만들어보기위해 레이싱용드론 FC중에 틸트를 지원하는 것들을 구입했는데 거기에 맞는 틸트 프레임의 품질이 개판이라 하다가 중단했습니다.

비록 만들지는 못했지만 틸트용 드론의 장점이라고 여겨지는 부분은
1. 기체의 기울어짐이 적은 상태로 비행한다는 점.
   - 일반 드론은 기체를 기울여서 전후진을 합니다. 그러면 아무래도 공기의 저항이 커지죠. 전면에는 바람의 저항이 커지고 후면에서는 와류로 인한 진동이 발생합니다. 진동은 FC의 자세제어와 짐벌에 꾸준한 보정을 요구합니다.
   - 그러나 틸트드론은 모터를 기울여서 비행을 하기에 기존 드론에 비해 기체가 기울어지는 범위가 상당히 줄어드므로, 비행 중 저항이 작아지면서 진동이 적어집니다. 비행성이 좋아지겠죠.

아직도 호시탐탐 틸트드론을 만들겠다는 생각은 있습니다. 언젠가는 만들어봐야죠.




2018년 11월 13일 화요일

photoscan으로 3d 지형 만들어본 것

주 업무가 측량이 아니다보니 이런 작업을 직접 할 일은 없지만, 시간이 남아서 한 번 해보았습니다.

2년여간 동고동락한 드론입니다.
드론 제작 초기에는 크면 좋을 줄 알고,
거기에 이것저것 기능을 추가하면 더 좋을 줄 알고!!!
800사이즈까지 만들어가지고 다녔는데,

뭐든 용도에 맞는게 좋다는 걸 깨닫고 한뼘정도 크기에 필요한 기능만 넣어서 가지고 다니게 되었습니다.

경관검토서 등을 작성할 때 걸어다니면서 촬영할 경우도 있지만, 20~50미터정도만 띄워놓고 대상지 한바퀴만 돌리면, 대상지 파악이 한결 수월해집니다. 사진촬영도 동시에 진행하니 사무실에서 다시 확인하기도 편합니다.

다시 본론으로 돌아와서.
foxeer legend2를 3초 간격으로 자동 촬영되도록 (auto mode) 설정하고
짐벌을 지면과 수직이 되도록 각도를 조절해준 뒤 일정 영역을 비행하고 착륙하였습니다.

촬영할 때는
1. 가급적 주변부 왜곡이 적은 카메라를 사용할 것
2. 대상지경계보다 더 넓은 면적을 비행할 것
3. 지형지물을 충분히 고려하여 낮게 비행할 것
4. 가급적 많이 촬영할 것
을 고려해야합니다.

실제 사진은 140여장 정도 되는데 일부만 보여드렸습니다.

액션캠의 경우 화각이 넓다보니 주변부 왜곡이 심합니다.

참고로, 실제 측량을 목적으로 장비들은 고해상도 디카에 고정밀 gps를 사용합니다.
(고해상도디카 - 짐벌 커짐 - 기체커짐 - 모터커짐 - 변속기커짐 - 배터리커짐 ->> 무겁고 비싸짐.)


이미지의 주변부 왜곡이 심할 수록 최종 결과물의 지형도 주변부로 갈 수록 왜곡이 심해집니다.

또한 부지경계를 많이 벗어나도록 비행을 해야 대상지에 대한 오차를 줄일 수 있습니다.

암튼 요렇게 촬영된 이미지를 앞서의 포스팅내용을 따라서 GEOTAGGING을 해주신 뒤에
PHOTOSCAN을 실행시키고 메뉴바의 work flow메뉴대로 하다보면 작업은 끝나게 됩니다.

처음부터 좋은 결과를 얻겠다는 욕심에 단계마다 고사양을 요구하는 옵션을 체크하게 되면 하세월입니다. 일단은 가장 낮은 옵션 'lowest'로 작업을 하면서 전체적인 형태부터 검토한 뒤, 퇴근할 때  highest로 설정하고 퇴근하세요. 출근하면 되어있을 겁니다.

최대한 빠른 결과를 얻기위해 모든 옵션을 low로 설정하고 작업을 완료한 결과입니다.

뭐 그럭저럭 지형이 나오기는 합니다. 주변부 왜곡이 심하다보니 대상지 경계부에 마커를 설정하였습니다. 그렇게해서 왜곡을 줄여도 이 정도밖에 안나옵니다.

결과물이 나오면 이를 dem이나 shp나 geotiff 등으로 익스포트하여 원하는 용도로 사용가능합니다.

BUT!!!

정말 위의 결과물이 실제 좌표와 맞는지 gis관련 프로그램에서 geotiff를 불러서 해당 등고와 비교해보았더니 오차가 납니다. 이미지 전체가 약간 뒤틀린 듯한 결과를 보입니다.

아래 이미지 보시죠.

가운데 선명한 이미지가 photoscan으로 만든 dem이고 주변 정사각형은 vworld의 위성사진입니다. 주변도로의 위치나 시설위치에서 확실히 오차가 발생합니다. (오차 수정은 gis프로그램이라면 기본적으로 가지고 있으니 조금의 수고를 들이면 오차는 줄일 수 있습니다.)

이미지뿐만 아니라 dem값도 차이가 납니다.
그래서 측량을 목적으로 할 경우 도근점이나 해발고도를 정확히 알 수 있는 곳을 촬영지 주변이나 내부에 표시해놓고 촬영을 하게됩니다. 그래야 전체적인 높이를 맞출 수 있죠.


결론.
전문장비를 보유한 업체에 맡기자.


다음엔 드론만들고 사용해보면서 느꼈던 점을 정리 좀 해봐야겠군요.

2018년 11월 7일 수요일

apm기반 드론촬영이미지로 3d 지형모델링 하기 1 (준비)

드론 만들어 사용한지 4년이 넘어가는 중입니다.

요즘이야 워낙 중국발 드론이 독점하다시피해서 만들어 쓰는 일이 의미가 없죠.

250사이즈 드론 만들어서 mini-apm 장착, 펌웨어는 픽스호크가 아니다보니 3.2.1에서 멈추었습니다. 요 근래 3.6까지 올라왔습니다.

최근 dji 드론은 카메라 일체형이라 촬영이미지에 geotagging이 기본적으로 마킹되어 3d 생성 프로그램에서 불러다 쓰기만 하면되지만, 자작 드론의 경우 카메라의 촬영사진에 드론좌표의 값이 입력되지 않습니다. 실시간 geotagging시켜주는 모듈이 있는데 20만원이 훌쩍 넘는 것이더군요.



요즘 날씨도 꾸물거리고 드론도 방치해둔 상태라 한 번 꺼내어 보았습니다.

드론 FC를 받쳐놓은 충격흡수용 젤이 굳어 부스러지기 시작했더군요.

손좀 보고 다시 들여놓을까하다가 생각난 김에 geotagging을 해보았습니다.

현장 조사용 foxeer legend2에 저장된 예전 사진을 하드에 저장하고

fc에 접속해 모든 로그파일을 다운받았습니다.


1. 미션플래너에서 ctrl+f로 숨겨진 메뉴창을 띄웁니다.

2. 왼쪽 맨 위에 있는 'Geo ref image'를 클릭합니다.

3. '가상 참고 이미지'라고 어색하게 한글화된 창이 뜹니다.

4. '로그검색'으로 사진촬영된 시간의 로그파일을 불러옵니다.

5. '사진검색'으로 해당 사진들을 불러옵니다.

6. '오프셋추산'를 클릭하여 첫번째 사진의 exif 촬영시간과 gps 처음기록 시간과의 오차를 추산합니다.
11:00에 드론에 전원을 넣으면 그때부터 gps는 작동을 시작하고 사진촬영을 11:03분에 시작할 경우 '오프셋추산'을 자동으로 하게되면 180이라는 오프셋값이 나옵니다. 이렇게 되면 촬영한 위치에서 180초 정도 오차가 나는 geotagging이 되버립니다. (자동으로 오프셋추산을 하는 경우는 드론에 전원을 넣는 순간 gps와 사진촬영이 자동으로 시작되는 경우에 사용되는 방법으로 생각됩니다. )

이 방법은 gps초기 구동시간부터 첫 촬영이미지의 exif값을 비교하여 오차를 추산하는 방법이므로 추천하지 않고, 카메라를 컴퓨터 초단위의 시간을 촬영한 이미지를 확인하여 정확한 시간과의 오차를 계산하여 그 값을 오프셋란에 입력합니다. 제 경우 컴퓨터의 초시계를 촬영했을 경우 컴퓨터 시간은 11:59:57초인데 legend2가 12:00분00초에 exif값이 저장되면 오프셋값을 3을 넣어줍니다.)


7. 결과값이 나오면 그 값을 '오프셋 추산'란에 입력하고 '전처리'버튼을 클릭합니다.

8. 전처리가 끝나면 'Geo Tag 이미지'버튼을 눌러 촬영좌표와 고도값을 exif사진에 입력시킵니다.

======================= 요기까지가 mission planner에서 수행할 것들입니다.

위와 같은 geotagging 이미지를 얻기위해 사전에 준비해야할 것이 있습니다.

1. mission planner에서 비행 중 fc에 고도값과 좌표값을 기록하도록 설정해야합니다. 그래야 로그파일에 해당 값들이 저장이 되겠죠.

2. 드론에 매달려 있는 카메라의 시간을 핸드폰 시간과 일치시킵니다.

=============================

나머지 작업은 해당 이미지를 포토스캔(메타쉐이프)이나 글로벌매퍼에서 불러들여 올리는 작업을 하면 끝입니다. (정히 할 일 없으면 동영상이나 만들어봐야겠네요.)