Quadrotor20152015. 8. 31. 20:19


오늘은 윙윙이를 변신시키는(다이어트?) 과정을 포스팅해보려 합니다~ 편안하게요 ㅋㅋ


음.. 갑자기 생각난건데 최근 밴드 혁오의 윙윙 이라는 노래가 음원차트 상위권에 랭크되어있던데.. 


비슷하네요 ㅋㅋ 저도 쿼드로터가 날 때 윙윙거려서 윙윙이라고 지었는데 ㅋㅋ


어쨌든! 경량화 해야지 해야지 하면서 미루다가 이제서야 하네요.. ㅜ


먼저 다이어트 전 윙윙이입니다.



프롭가드 빼니까 좀 허술해보네요 ㅋㅋㅋ 물에 빠진 강아지마냥..


이왕 하는김에 어느 파츠가 몇 그램인지 측정하기위해 완전 분해를 결심했습니다~!


(그래놓고 측정한거 써놨던 종이 잃어버림 ㅜㅜ)


완전 산산조각났을 때는 정신이 없어서 사진을 못찍었네요 ㅠㅠ 


작업중에 건진 사진은 달랑 이거 하나..




프레임이 무거울줄 알았는데 오히려 모터가 꽤 무겁더라구요..


무게를 1/3정도 줄이는걸 목표로 삼았는데 무리라는 생각이 들었습니다.ㅜㅜ



아두이노 배선이 지저분하죠? 


직접 PCB를 뜨지않는 이상 전선은 어쩔 수 없다고 생각하고.. 최대한 무게를 줄여보자는 마음에!


전선은 좀 더 얇고 가벼운 걸로 싹 교체하고! 


저 검은 소켓을 비롯해 전원소켓, USB소켓까지 필요없는건 다 없애버렸습니다.




USB소켓은 프롭가드랑 닿아서 연결이 힘들길래 아예 선으로 빼서 늘어뜨려 놨어요~!


음.. 지금보니 무식하게 선을 납땜해놨는데.. 


전자과나 고수분들이 보시면 욕할지도 모르겠네요ㅜㅜ





아크릴판으로 층을 만들어서 따로 장착했던 센서도 한 층에 몰아넣었습니다ㅋㅋ


이왕 하는거 스펀지+양면테이프로 방진 효과도 노려 보고!


프롭가드도 프롭에 닿을랑 말랑해서 불안했는데


새로 만들어서 안쪽을 칼로 도려냈습니다~! 무게도 줄일겸 ㅋㅋㅋ




짠~! 진짜 뭔가 새로워진 것 같아서 개발 의욕도 솟더라구요


무거움 -> 더 많은 추력 필요 -> 더 많은 모터 회전 필요 -> 더 많은 진동 -> 센서로 전달


이런 식일까봐 무게를 줄여봤는데 잘한 것 같네요


줄인김에 +콥터에서 x콥터로 바꾸니까 자세제어도 더 잘되고..


컴퓨터 폴더 살펴보다가 사진이 보이길래 지나가는 포스팅을 해봤습니다~


기술적인 부분은 다음 포스팅에..






Posted by 너를위한노래

댓글을 달아 주세요

  1. 쿼드제작초보

    PID값을 잡는중인데 중심을 잡긴잡는데 정확히 잡지 못하고
    평형상태에서 -10~10사이로 왔다갔다하는 현상이 일어나고있습니다.
    쓰로틀이 커질수록 그런 현상이 더심하게 나타나는데.

    혹시 이런 문제점의 해결방법을 알고 계신지요.
    방진은 방진보드를 새로 구매하였고 귀마개를 이용하여 방진을 최대로 하여 효과를 봤습니다.
    모터와 프롭의 벨런스도 잘 맞추었구요.
    실험을 할때는 지면에서1.5m이상 공간에서 실험을 하엿습니다.

    혹시 제작할때 저와같은 문제가 있으셧다면 이문제를 어떻게 해결해야할까요?

    2015.09.01 19:51 [ ADDR : EDIT/ DEL : REPLY ]
    • 왔다 갔다 빠르게 반복된다면 PID제어량, PID게인을 점검해봐야 할 것 같구요, 천천히 기울어진다면 센서 각도를 점검해봐야할 것 같네요.. 전 두가지 문제를 번갈아서 모두 겪어봤어요 ㅠ

      2015.09.03 00:06 신고 [ ADDR : EDIT/ DEL ]
  2. 와 프롭가드 멋지네요. 어디서 구매하셨나요? 자작이라기엔 완성도 짱이네요!

    2016.01.23 06:34 [ ADDR : EDIT/ DEL : REPLY ]
  3. 쿼드콥터맨

    안녕하세요~!!! 저희도 이번에 졸업작품으로 아두이노 쿼드콥터랑 제어 어플 개발하고 있는데요 ㅠ 지금 완전 막혀있는 상태입니다.
    우선 MPU6050의 DMP?를 쓰고 있는데 이걸론 무리일까요? 샘플주기가 10ms정도 나오더라구요.. 100hz라는건데 노래님 포스트 보다보니 100hz론 택도 없다고 하셔가지고.. 멘붕입니다.. 처음부터 다시 짜야될지..

    그리고 모터 출력함수는 뭘 사용하셨나요? writemicroseconds는 헤더파일에서 듀티사이클값을 400hz이상으로 설정해놔도 167hz가 한계라고 하던데.. 오실로스코프가 없어서 확인을 못해보겠네요... 혹시 어떤 함수를 사용하셨는지요...

    아 그리고 PID제어는 단순히 각에대한 제어만 하신건가요? 저는 각에 대해 먼저 P제어를 하고 난 다음에 그 값을 목표각속도로 하여 각속도에 대한 PID제어를 한번 더 하는 이중 PID제어 알고리즘을 사용중인데, 어떤 알고리즘을 쓰시는지 궁금합니다!

    또 저희가 블루투스 통신으로(HC-06모듈) 제어를 하는데 이게 가끔 값이 튀어서 갑자기 곤두박질 치는 경우가 있더라구요.. 원래 블루투스가 이런건지 궁금합니다..

    그리고 프롭가드는 기성품을 사신건가요??? 완전 멋지네요.. 우리도 저런거 있었으면 프로펠러 안뿌러뜨리고, 뿌러질 걱정없이 팍팍 띄워볼텐데!! 발표가 당장 몇일 앞이라 주문할 엄두도 안나네요.

    질문이 좀 많은데ㅠ 답변 부탁드리겠습니다!!

    2016.04.12 01:56 [ ADDR : EDIT/ DEL : REPLY ]
    • 메일 보내신 분이시죠? 해당 내용 답글로 남깁니다.
      1. DMP
      MPU6050의 DMP는 내부에서 각도를 알아서 계산해주는 걸로 알고 있는데 맞나요?? 그게 10ms로 되어있다면 사용 불가능할 것 같습니다. 저도 100hz짜리 비싼 센서 썼었는데 택도 없더라구요

      2. PWM
      어떤 아두이노를 사용하시는지 모르겠지만, 저는 아둥이노2560의 pwm출력 단자를 사용했습니다. 각 출력 단자는 타이머와 연결되어있는데요, 공식 홈피에 가시면 몇번 단자가 어떤 타이머에 연결되어있는지 나와있을 겁니다. 각 타이머마다 주파수가 같지 않으니까 타이머 주파수 조절하는 함수를 사용하셔야 합니다. (TCCR1B=0x0A; 이런식으로 조절했었습니다.)

      3. 제어
      저도 이중 PID제어를 사용했구요, 제 블로그의 영상은 각도 PI + 각속도PD제어였습니다

      4. 블루투스
      저도 블루투스 쓰다가 어느순간 값이 누락되고 지연되고 이런 문제점이 많아서 WiFi로 갈아탔는데요, 블루투스를 계속 쓰실 거라면 초당 데이터 전송 횟수를 좀 줄여보시길 바랍니다. 저 같은 경우는 빨리 제어하고 싶어서 빨리 전송하다보면 입력 버퍼(?)같은데 쌓여서 밀리는건지 잘 안되더라구요

      5. 프롭가드
      2년전에 쿼드콥터 대회 나갈때 몇개 여분으로 샀던 건데요, 얼마 전 프롭가드 말고 프레임을 사려고 쇼핑몰에 문의해보니 지금은 프레임, 프롭가드 모두 안판다고 하시네요.
      프롭가드 있다고 프로펠러가 안부러지진 않구요ㅋㅋ 프로펠러 회전반경을 눈으로 볼 수 있어서 조심할 수 있는 정도입니다

      생각 나는대로 적어서 두서가 없네요 ㅎㅎ 발표 잘 하시길 바랍니다~!

      2016.04.27 14:38 신고 [ ADDR : EDIT/ DEL ]
  4. 드론초보

    와...딱 제가 하려는 부품들로 하려는 작업이에요.....
    혹시 소프트웨어는 어떤거 쓰셨나요???
    저는 multiwii 2.4로 하고있습니다.

    2019.01.21 19:37 [ ADDR : EDIT/ DEL : REPLY ]

Quadrotor20152015. 7. 24. 23:55

포스팅이 뜸한 사이 윙윙이(쿼드로터)에 많은 변화가 있었습니다~


점프선으로 복잡하게 얽혀있던 선을 모두 자르고 컴팩트하게 납땜해서 보기좋고 가볍게 해놨고, 센서에 방진장치로 양면테이프+스펀지를 대서 방진효과를 기대할 수 있게 해놨고, 불량 모터 교체, 라즈베리파이에서 오드로이드C1로 개선, 개발환경 구축, 시리얼 통신 비용 감소, +콥터에서 x콥터로 변경, 조종 어플 개선 등등 많이도 했네요.


그리고 그 동안은 게인값 튜닝에 많은 시간 투자를 했었는데.. 홧김에 제어기를 추가하니까 확실히 성능이 개선됐습니다.


아래 영상은 수동 조종 모드로 호버링을 시도한 영상입니다.



고도는 80cm로 고정시켜 놓았고 tack-off 버튼과 landing버튼으로 이륙과 착륙을 할 수 있게 해봤습니다. yaw각도 고정입니다.


이제 시작이네요! 이걸로 뭘 하느냐가 중요한 것 같습니다.


부셔먹지 말고 조심히 잘 해야지..


------------------------------------------------- 2015.07.29 추가 -------------

위 영상의 사용된 하드웨어는 아두이노Mega2560 + 오드로이드C1 + 갤럭시s4입니다. 오드로이드 운영체제는 RTOS가 아닌 하드커널에서 제공하는 우분투를 사용했고, 갤럭시s4는 안드로이드 KitKat(4.4.2)입니다. 

무선통신은 Wifi를 사용해 UDP통신을 하는 중이고(가끔 딜레이가 생기던데 원인 파악중..), 안드로이드 쪽에서 핫스팟을 켜두면 오드로이드에서 붙는 방식을 취하고 있습니다~







Posted by 너를위한노래

댓글을 달아 주세요

  1. 라임맛케익

    가속도, 자이로 센서값을 오일러각으로 변환-1을 보고 예전 상보필터설계 부분을 봤는데요 상보필터에 사용되는 acc이나 gyro 값들은 각각 가속도를 변화하여 만든 오일러각과 자이로값을 변화하여 만든 오일러각인것 맞나요? 그리고 '가속도, 자이로 센서값을 오일러각으로 변환-2'를 보고 싶은데 혹시 올려주실수 있나요?ㅠㅠ

    2015.07.25 16:21 [ ADDR : EDIT/ DEL : REPLY ]
    • 네 각각의 오일러각이 맞습니다~ 2편은.. 상보필터에대한 내용인데요 현재 작성중입니다.ㅜ 급하시면 예전에 썼던 상보필터 내용을 참고하시면 될거같아요~ 비슷한 내용입니다.

      2015.07.26 14:49 신고 [ ADDR : EDIT/ DEL ]
  2. 쿼드콥터

    통신을 사용하신거 같은경우에 블루투스 통신을 이용해서 조종하시고 계신건가요?

    2015.07.28 14:38 [ ADDR : EDIT/ DEL : REPLY ]
  3. 비밀댓글입니다

    2015.08.13 21:30 [ ADDR : EDIT/ DEL : REPLY ]
  4. 제이기를 추가하셨다고 했는데 구체적으로 어떻게 무엇을 추가해주셨는지 설명 부탁해도 될까요?? ^^

    2015.08.26 11:22 신고 [ ADDR : EDIT/ DEL : REPLY ]
  5. 프롭가드는어떻게구매하셨아요?

    2015.09.03 22:18 [ ADDR : EDIT/ DEL : REPLY ]
  6. 비밀댓글입니다

    2016.03.30 20:51 [ ADDR : EDIT/ DEL : REPLY ]
  7. 비밀댓글입니다

    2016.08.18 13:21 [ ADDR : EDIT/ DEL : REPLY ]
    • 먼저 위 글의 영상은 optical flow를 사용하지 않은 영상인 점 알아두시구요, 이 후에 올렸던 호버링 영상을 기준으로 말씀드리겠습니다. optical flow 센서(e.g. px4flow)는 사용하지 않았고 일반 모노카메라를 사용했습니다. 모노카메라로 optical flow를 통해 속도를 추정하고 이를 가속도, 자이로, 초음파 센서의 도움을 받아 실제 m/s의 속도를 구했었습니다. 말씀하신 것처럼 단순히 optical flow만으로는 호버링이 어렵습니다. 노이즈도 심하고 기체의 회전운동과 병진운동을 구분하기도 힘드니까요..

      2016.08.18 23:07 신고 [ ADDR : EDIT/ DEL ]
    • 비밀댓글입니다

      2016.08.24 13:20 [ ADDR : EDIT/ DEL ]

Quadrotor20152015. 6. 18. 18:53

MPU6050의 데이터 시트를 보면 DLPF(Digital Low Pass Filter)정도를 조작할 수 있는 레지스터가 있습니다.


아두이노 MPU6050 라이브러리를 보니까 MPU6050_DLPF_BW_xxx로 나와있네요.


xxx자리에 256, 188, 98, 42, 20, 10, 5라고 쓰여있는데 숫자가 낮을수록 더 낮은 주파수만 통과시키는 것 같습니다.


오늘 포스팅에서는 쿼드로터에 달린 MPU6050의 자이로 센서만 가지고 DLPF 성능을 비교해볼껀데요,


실험 할 때는 쿼드로터가 뜰랑 말랑할 정도까지 모터를 작동시키되, 손으로 눌러서 바닥에 고정시켰습니다.


각속도인 가속도 센서 출력은 0이 나와야 정상인데 모터로 인한 노이즈를 측정한 셈입니다.


위에서부터 BW는 5, 42, 256입니다. 대충 3개만 집어서 테스트해봤습니다.


데이터는 스케일링 해서 [deg/s^2]로 변환했습니다~





BW를 5로 해서 진동에 둔감하게 하면 반응이 느려지는가 싶어서 센서 두 개를 같이 장착하고 BW를 다르게해서 각도 변화를 살펴본 결과,


반응이 느려지지 않았습니다.


왜 느려지지 않는지 모르겠네요 ㅠ 하드웨어적으로 LPF하는 기능이 들어가있는 건지.. 


이에 관해 아시는 분 계신다면 댓글남겨주시면 감사하겠습니다 ㅠㅠ









Posted by 너를위한노래

댓글을 달아 주세요

  1. 반응속도

    BW 5로 설정하시고 그대로 진행하셨나요?

    2015.10.13 09:35 [ ADDR : EDIT/ DEL : REPLY ]
    • 공대

      숫자가 올라갈수록 bandwitdh는 낮아지고 delay시간도 올라갑니다..

      2015.12.10 15:24 [ ADDR : EDIT/ DEL ]
  2. dd

    반응 느려집니다. 시간이 좀 지나야 점점 느려져요. 한 5분정도쯤되면 3~4초쯤 늦게 반응해요 ^^

    2016.03.15 20:22 [ ADDR : EDIT/ DEL : REPLY ]

Quadrotor20152015. 6. 15. 20:36

멀티콥터 관련 검색중에 좋은 글이 있어 퍼왔습니다. 

출처는 http://www.internetmap.kr/1479 입니다. 직접 들어가시면 더 좋은 글도 많을 것 같네요.


------------------------------------------------------------------------------------------------------

멀티콥터를 조립해볼까 싶어 여기저기 뒤적거리는 중에, 좋은 문서를 발견해서 번역해봤습니다. 이 글의 제목인 Build your own Multicopter 라는 글입니다. 멀티콥터를 구하는 방법은 단순 완제품 구입하는 것부터 프레임부터 제작하는 방법까지 아주 다양한데, 어떻게 시작하면 좋은지를 비교하고 있습니다.

며칠전 우연히 읽었던 "Build My Own Quadcopter ? 나의 쿼드콥터 제작기" 라는 글에서 저자가 주로 참고했다는 사이트입니다. 

이번엔 꽤 공을 들여 번역했습니다. 멀틱콥터 조립에 관심이 있으시다면 많이 도움이 될 것 같습니다.

멀티콥터를 제작하는 방법은 아주 다양하다.


  1. 사려깊게 천천히 나아가는 것이 두발로 한꺼번에 뛰는 것보다 낫다. 너무 빨리 하려고 시도하다보면 실망하기 쉽다.
  2. 처음에는 간단하고 작은 쿼드콥터, Ready to Fly(완제품) 또는 All Inclusive Kit(완전 조립 키트)로 부터 출발하면 좋은 경험을 쌓을 수 있다.
  3. DIY 경험이 많은 사람이라면 아래에서 언급하는 F450 FlameWheel 과 같은 Almost Ready to Fly(반 완제품) 정도도 좋다.
  4. 멀티콥터를 처음 만진다면, 처음부터 사진/비디오/ FPV(First Person View) 등은 시도하지 말고 그냥 좋은 쿼드콥터만 만들라.
  5. 자신이 원하는 걸 잘 아는 사람일지라도, 멀티콥터와 조종기를 능숙하게 다루는 데는 시간이 필요하다.
  6. 조금 맛만 보고 즐기려면, 작고 싸고, 튼튼하고, 안전한 마이크로 쿼드콥터를 시도해보라.
  7. 정말 진지하다면 FlameWheel 기반 ARF(반완제품) 조립을 해보거나, 그냥 단순히 날려보고 싶고 자금이 풍부하다면 고급형 Iris 쿼드콥터를 구입하라.
  8. Iris에는 최고급 Pixhawk 콘트롤러가 포함되어 있으며, Iris와 FlameWheel 은 모두 필요시 FPV 또는 Video 를 달 수 있다.
  9. Flip Sport 와 같이 정말 괜찮고 간단한 쿼드콥터 제작법에 관한 완벽한 문서가 없다면, Frame Up Build(프레임기반 수제작)는 하지 말라.
  10. 절대로 Build your own Frame(완전 수제작)은 피하라. 설령 경험많은 제작자들이라 할지라도 성공보다 실패확률이 높다.
  11. 처음부터 여러가지 사진/비디오 장비를 장착한 큰(위험한) 멀티콥터부터 시도하는 것은 절대로 하지 말라. 반드시 후회하게 된다.
  12. 어떤 경우에도, 작고 빠른 쿼드콥터를 날리는 것이, 크고 무겁고 느린 헥사/옥토 콥터보다 훨씬 재미있다.
  13. 최고급 전문가용 HD 비디오나 사진을 달아야 하는 경우를 제외하면, 작고 가볍고 빠른 콥터가 항상 좋다.
  14. 멀티콥터에서 가장 중요한 것은 안전이다. 살아있거나 비싼 물건과는 일정 거리를 확보하라. 안전매뉴얼을 참고할 것.


중국 직수입의 장단점


  1. 단지 싸다는 이유로 중국에서 여러가지 물건을 직수입하려는 유혹이 생기기 마련이지만, 별로 좋은 생각은 아니다.
  2. 경험이 쌓이면 어떤 수입물품이 서비스가 가능한지 알게되지만, 처음부터 시도하는 것은 실패하기 쉽다.
  3. 주요 전자기기(콘트롤러 등)은 생산자로부터 구입하는 것을 추천한다. 예를 들어 Pixhawk는 3DRobotics로 부터. 
  4. 부속 전자기기(GPS, 전자나침반, telemetry, 필요시 OSD 등) 도 3DRobotics에서 구하는 것도 좋다.
  5. FPV 가 필요할 경우, 3DRobotics의 FPV 키트나, FatShark의 Altitude 비디오 고글과 전송기를 구하라.
  6. 카메라의 경우, GoPro Hero 3(특히 Black)가 좋다. 널리 사용되고 작동도 잘된다.
  7. DJI의 FlameWheel ARF(근 완제품) 키트도 중국산이기는 하지만, 품질이 좋으므로, 어디에서 구입하든 무방하다.
  8. 초보자용 미니 쿼드콥터로 추천되는 Traxxas, Hubsan, Helimax 도 중국산이기는 하지만, 초보자에게 적당하다.
  9. 모터, 배터리, ESC, 프레임, 혹은 FRSky, Turnigy RC 전송/수신기 등은 중국에서 직접 수입하면 저렴하게 구할 수 있다.
  10. 국내에서 구할 수 있는 많은 제품들이 사실은 중국산이며, 물론, 어느나라 제품이냐에 관계없이 품질은 많은 차이가 있다.
  11. 25달러짜리 RC-Timer 모터가 동급의 100불짜리 Tiger 모터와 품질이 비슷할 가능성은 거의 없다. 그래도 25달러니까.
  12. 중국 직수입시 배송은 대부분 믿을 만 하지만, 사후 지원이나 반송 등은 문제를 일으킬 공산이 크다.
  13. 중국 직수입시 10% - 20% 정도는 깨지거나 망가졌거나, 일부가 빠졌을 거라고 생각해두면 크게 실망하지 않을 것이다.
  14. 어떠한 경우에도, 먼저 아래에 있는 두세가지 추천 제작법으로 시작하면, 성공의 기쁨을 누리고 조종법을 익힐 수 있을 것이다.


저렴한 RTF(완제품) 마이크로/소형 쿼드콥터


멀티콥터 초보자라면, 아래에 서술하는 몇가지 저렴한 마이크로 쿼드콥터로부터 시작해보길 강력하게 추천한다.

  1. 이들은 무전기, 배터리 등 모두 갖추어져 있어 조립이 필요치 않으며, 견고하고 조종법 배우기에 좋다.
  2. 또한 아주 재미있고, 실내에서도 쉽게 안전하게 날려볼 수 있다. 가격은 대략 10만원 안쪽
  3. 중요한 점으로서, 작동원리에 대해서 잘 이해할 수 있게 되며, 앞으로 무엇을 해야할 지 파악할 수 있다.
  4. Traxxas QR1 Quadcopter는 저렴한 완제품 쿼드콥터로서, 최초 경험시 좋다. 
  5. 45달러짜리 Hubsan X4는 Traxxas와 거의 동일하며, $70 짜리는 사진과 720p 비디오를 촬영할 수 있다.
  6. 200달러짜리 Hubsan은 진짜 쉬운 FPV 가 가능하며, RC 전송기와 뛰어난 LCD 디스플레이가 포함되어 있다.
  7. Hubsan 은 부품도 별도로 구매할 수 있다. Hobby Flip
  8. Helimax 1SQ 도 저렴한 손바닥 크기의 쿼드콥터.
  9. 정말로 정말로 쪼그만 40달러짜리 Estates Proto X는 원래 Hubsan H111 으로서, 정말 잘 난다.
  10.  


  11. 아래는 아주 튼튼한 드론으로, Amazon Prime에서 제작한 88달러 짜리 UDI U818A 2.4GHz Quadcopter with Camera 이다.
  12. 처음으로 멀티콥터를 구입하려는 분은 반드시 RockLandUSA의 글을 참고할 것
  13. 아래 90 달러짜리 Blade Nano QX는 추천작으로, 아주 가볍고 날리기 쉬우며 매우 튼튼하다.
  14. 지금 시작한다면, 이상과 같은 여러가지 중 하나를 선택해서 조종법부터 익히길 바란다. 엄청난 돈을 절약하는 길이다.


All Inclusive Kit(완전 조립 키트)


  1. 가장 쉬운 조립법은 박스에 모든 부품과 단계별 조립방법이 다 포함된 키트를 구입하는 것이다.
  2. RTF(완제품)을 제외하면, 괜찮은 멀티콥터를 조립할 수 있는 가장 신뢰할 수 있고 간단한 방법이다.
  3. 대부분 모든 제품이 균형이 잘 맞으므로, 전체 제품이 잘 동작할 가능성이 높다.
  4. 모두 포함된 키트의 경우, 볼트 너트, 혹은 약간의 납땜작업만으로 완료된다.
  5. 조립 절차는 딸려 오는 매뉴얼에 잘 설명이 되어 있다.
  6. 단점이라면, 품질이 좋은 키트의 경우 다른 대안보다 약간 비싸며, 업그레이드가 필요할 수 있다는 것이다.
  7. DIY에 익숙하지 않다면, All Inclusive Kit(완전 조립 키트)로 시작하는게 좋다.
  8. 3DR의 Copter는 진정한 의미의 DIY 키트로서, APM2.5 콘트롤러와와 여러가지 옵션이 있다.
  9. 최신의 혁신적인 Iris QuadCopter는 사실 완제품(Ready to Fly)로서 최고급 Pixhawk 콘트롤러가 탑재되어 있다.
    • 완전 자동 운항이 가능하며 RC 송수신기, 배터리, 텔레메트리가 모두 포함되어 있는데, 750 달러면 정말 싼거다
    • Iris는 구조적으로 튼튼하고 탄성이 있고, GoPRO 또는 FPV(First Person View)를 지원하도록 설정되어 있다.



Almost Ready to Fly(반완제품)


  1. 모든 것을 원하고, 가장 다재 다능한 멀티콥터를 원한다면, 가장 좋은 솔루션은 바로 위에 있는 Iris 이다. 
  2. 기존에 RC 송수신기가 있어 예산을 절약할 수 있으며, 고품질의 자동운항 쿼드콥터를 제작하고 싶을 수도 있다.
  3. 처음 시작하는 사람도 시도해볼 수 있는 괜찮은 선택지가 몇 개 있다.
    1. DJI F450 FlameWheel 쿼드콥터 ARF(반완제품) 키트가 현시점에서 유일하고도 가장 최선의 선택이다.
    2. 이 키트는 프레임, 전기회로가 내장된 보드, 4개의 ESC(전자변속기) 및 모터, 8개의 프로펠러로 구성된다.
    3. 여기에 Pixhawx 콘트롤러와 배터리, 전파 송수신기를 별도로 구입해야 한다.
    4. 키트에 포함된 부품은 모두 품질이 뛰어나며, 진짜 DJI FlameWheel 프레임은 아주 견고하고 튼튼하다.
    5. 가격: F450 ARF(반완제품) 키트 $180, Pixhawk with GPS/Compass $280, 배터리 $35.00 = ($495.00) 여기에PPM-Sum 송수신기 추가 필요.
  4. 대안으로 F450보다는 약간 작은 DJI F330 FlameWheel 쿼드콥터도 좋다. 좁은 장소에서 사용할 경우에는 더 좋을 수도 있다.
    1. F330을 기반으로한 조립법은 위키페이지를 참조. F450에도 동일하게 적용가능하다.
  5. 이보다 저렴한 대부분의 ARF(반완제품) 키트는 전혀 튼튼하지 않고 부품들이 자주 망가진다.
  6. F450 ARF(근 완제품) 키트는 여기에서 살 수 있다. F350 키트도 있다.
  7. 모양이 비슷한 모조품 키트는 절대 사지마라. 진짜 DJI 모터와 ESC는 품질이 아주 좋고 프레임이 튼튼 하지만 모조품은 그렇지 않다.
  8. 더 비싸고 고품질의 ARF(반완제품) 키트도 있지만, FlameWheel는 잘 작동하며 성능이 우수하다.
  9. 초기투자 비용을 가능한 한 낮추려면 간단한 콘트롤러로 시작한 후, 나중에 Pixhawk로 바꾸는 방법도 있다.
  10. F450 도 GoPro와 Gimbal 을 채택한 사진/비디오 콥터로 구축하거나, FPV 플랫폼으로 사용할 수 있다.
  11. DJI F550 ARF(반완제품) 헥사콥터는 더 고급 용도로 좋지만, 첫 멀티콥터로서는 과하다.


프레임 기반 수제작(Frame Kit)


  1. 프레임 키트를 기반으로한 멀티콥터 수제작에 발을 딛는 것은 큰 도전을 의미한다. 초보자에겐 전혀 해당되지 않는다.
  2. 특정한 모델에 대한 자세한 제작법을 따라하는 것이라면 예외이다.
  3. 나는 현재 Flip 380 Sport 쿼드콥터와 Tarot 650 Carbon Fiber 쿼드콥터 등 두가지를 제작중이다.
  4. 각각의 제작 이유와 제작방법을 기술한다.
  5. Hoverthings의 Flip 380 Sport 프레임은 현재까지 가장 튼튼한 프레임 이다.
    1. 이 프레임 키트에는 놀라울 정도로 하고 강한, CNC 절삭 1/4 인치 유리섬유 지지대와, G10 유리섬유 중심판(center plate)이 들어있다.
    2. DJI FlameWheel 에서 사용하는 모터와 ESC 를 사용할 수 있다. 10인치 프로펠러까지 사용가능.
    3. 나는 Flip Sport 키트 외에 "tab" 타입 중심부와 추가로 7/8" 기둥(spacer)을 구입하였다.
    4. 중심판(center plate)에 7/8" 기둥으로 설치한 추가 중심부에는 배터리와 비행기기를 설치한다.
    5. 나는 보유중이던 DJI FlameWheel 모터 4개에 콥터 중앙판에 설치할 수 있는 4 I n 1 ESC 를 사용했다.
    6. 4 in 1은 RF 및 DC 간섭이 훨씬 적고 4개의 ESC 및 전력배분보드에 비해 훨씬 깔끔하다.
    7. 프로펠러는 GemFan DJI hub compatible 10" 탄소충전 프로펠러 를 사용한다. 아주 튼튼하고 효율적이다.
    8. 내 목표는 DJI F450 보다 훨씬 강하고 고성능인 콥터를 저렴하게 제작하는 것이다
    9. Flip 이 작기는 하지만 강력하고 빠르며 FPV 비디오나 GoPro 카메라, 브러시리스 짐벌(gimbal) 까지 장착할 수있다.
    10. Hoverthings Flip Sport Quadcopter Wiki Build Page에는 Pixhawk 와 PX4 콘트롤러를 사용한 제작방법이 들어 있다.

  6. Tarot 650 은 탄소섬유 프레임으로 대형 쿼드콥터를 제작할 수 있으며, 17인치 프로펠러까지 장착할 수 있다
    1. 나는 360kv 짜리 저속 대구경 Pancake 모터를 사용한다. Pancake 모터는 대형프로펠러를 낮은 속도에서 효율적으로 회전시킬 수 있도록 설계되어 있다.
    2. 나는 프로펠러 직경에 따른 성능과 효율을 알아보기위해 14" ~ 17" 여러가지 프로펠러를 테스트할 예정이다.
    3. 위에서 언급한 Flip Sport는 첫 쿼드콥터로도 가능하지만, 이 Tarot 650 은 절대 아니다.
    4. 이 쿼드콥터는 무거운 짐을 오래 견디거나 대형 비디오 카메라를 탑재하는 등에 충분하지만, 
      1. payload(유효탑재량) 2kg 을 들어올려면 상당한 모터와 프로펠러가 필요하다
      2. Four Togermotor MN4010 475 kV 모터는 개당 86 달러이며. 추가로 15×5 또는 16×5 프러펠러 4개. 고품질 30A ESC 4개가 필요하다.
      3. 총중량 4kg 에 약 10분간 비행하려면 4cell Lipo 배터리 10,000 mAh(5,000 두개)가 필요하다
      4. 유효탑재량 2kg 포함 총중량 4kg을 들어 올릴수 있어야 하며 50% 예비 출력(reserve thrust) (최소) 를 남겨 두어야 한다. 총 6kg
      5. 이 정도면 16×5" 프로펠러가 필요하다
      6. 그래서 kV 가 낮으면서 큰 모터가 필요한 것이다. 반드시 고품질로 일정한 고출력을 견딜 수 있어야한다.
      7. 절대로 이를 최초의 쿼드콥터로 시도하지 말라.
  7. 여러 멀티콥터별 부품을 기준으로 성능 요구사항을 계산할수 있는 사이트 : eCalc


완전 수제작(Scratch build)


  1. 멀티콥터에 경험이 없는 사람도 종종 시도하나, 대부분 실패한다.
  2. 가장 간단한 수준이라면 막대기나 나무조각, 합판 등으로도  제작할 수 있다
  3. 그러나, 이런 것들은 잘 날기 힘들고 사용성도 떨어지며 완벽하게 착륙하는 것조차 견뎌내기 힘들다.
  4. 아울러 돈도 절약되지 않는다. RTF(완제품), 완전 조립키트, ARF(근 완제품) 등이 고품질의 잘 균형이 맞는 부품들로 구성되어 있어 가격이 저렴하다
  5. 아주 경험이 많은 모델설계자, 공학자, 기계공학자일지라도 처음부터 이 방법부터 시도하는 것은 절대 피하라. 
  6. 멀티콥터는 나름의 비행동역학에 따라 동작하며, 나름의 구조적 요구사항이 있다.
  7. 이러한 분야에 경험이 없다면, 멋진 멀티콥터를 설계하고 제작할 가능성은 거의 없다.
  8. 이 사이트에는 초보자가 bent(구부러지는) 알루미늄 판을 사용해 멋진 쿼드콥터 설계가 올라와있다.
  9. 불행히도 Bent 알루미늄은 부드러운데, 콥터는 무거우며 경착륙이 흔하여, 찌그러지는 것을 피할수 없다
  10. 경험이 많다고 해도 콥터를 여러대 만들어본 후에야, 쓸만한 설계가 가능할 것이다.
  11. 전문가만이 할수 있다는 것은 아니지만 완전 수제작을 해보겠다고 생각이라도 해보려면 적어도 서너개의 상업적 쿼드콥터를 철저히 연구해 보아야 할 것이다.
  12. 나는 현재 콥터를 10개이상 설계했지만 하나도 제작하지 않았다. 언젠가 제작하겠지만 아직까지 준비되지 않았다는 것을 알고 있다


RTF(완제품) 브랜드


완제품(RTF) 쿼드콥터중에서 유명한 브랜드로는 Parrot, DJI Phantom, Blade 350QX 등이 있다.

  1. 이들은 각기 능력의 범주내에서 잘 만들어져 있으며 가격도 적절하다.
  2. 그러나 개조나 개선이 힘들고, Pixhwk 와 같은 강력한 콘트롤러로 업그레이드하기 힘들다
  3. 따라서 이들은 적당한 기능을 가진 원스톱 솔루션이나, 다른 한편으로는 높은 비용으로 더이상 갈 곳 없는 막다른길이다.
  4. 같은 금액으로 FlameWheel ARF 키트에 최고급 Pixhawk 를 결합하면, 훨씬 뛰어난 콥터를 제작 할 수 있다.

나에게 어떤 방법이 좋을까


  1. 자신의 능력에 맞는 접근법을 잘 선택하는 것이 중요하다. 과도한 욕심을 버리면 안좋은 결험으로 끝난다.
  2. 특히 한번에 모든 걸 해보기 보다, 건실하고 보수적으로 접근하는 것이 매우 중요하다
    1. 간단한 것은 RTF(완제품)이나 All Inclusive Kit(완전 조립 키트)이다.
    2. 하지만 좋은 ARF(반완제품) 키트에 잘 선택한 부품을 추가하면 아주 뛰어난 콥터를 제작할 수 있다
    3. ARF(근 완제품) 접근법은 종종 저렴한 투자로 자신의 목적에 맞는 콥터를 제작할 수 있다
    4. 프레임 기반 수제작(Frame Kit)법은 제작자가 서로 잘 맞는 부품을 선정할수 있는 능력이 있다는 것을 가정한다.
    5. 하지만 자신의 요구나 희망에 최적화 된 콥터를 제작할 수 있다
    6. 특정한 프레임 키트에 맞는 상세한 제작법을 따라하는게 아닌 이상, 최초의 쿼드콥터를 프레임키트 방식으로 제작해서는 안된다.
    7. 완전 수제작(Scratch build)는 프레임 기반 수제작 방식보다 배 이상 어렵다. 사실 멀티콥터 프레임을 제작하는 것이 어렵지 않다.
    8. 하지만 전반적인 절차와 잘 맞는 부품을 찾는것은 정말 경험이 많은 멀티콥터 운영자나 제작자의 영역이다.
  3. 상업적 사진이나 비디오를 촬영하기 위한 정말 비싸고 고급 멀티콥터는 이 문서의 범위 밖이다
  4. 내가 현재 가지고 있고 앞으로 제작할 콥터는 3DR APM, PX4 혹은 Pixwhark 콘트롤러를 사용한다.
    1. 이들은 현재 사용가능한 콘트롤러중 성능이 좋고 최고로서, DIYdrone 커뮤니티의 지원을 받고 있다
    2. 복제품이나 유사품을 조심하라. 약간의 차이가 전체를 못쓰게 할 수 있다
    3. 마지막 경고 : "매수자 위험부담". "투자한 만큼 얻는다"


출처 : 
http://www.internetmap.kr/1479


Posted by 너를위한노래

댓글을 달아 주세요

Quadrotor20152015. 4. 18. 16:41

초음파 센서를 이용해서 고도 PID제어기를 구현해서 실험한 영상입니다. 덤으로 자세제어기도 작동되고있습니다~


제원은.. 아두이노 Mega2560, 초음파센서 SRF08를 이용했네요.




왼손으로 잡고있긴 한데.. 저건 아두이노랑 PC랑 연결선을 잡고있는거지 기체를 잡고있는게 아니예요 ㅋㅋ






Posted by 너를위한노래

댓글을 달아 주세요

  1. 비밀댓글입니다

    2015.04.19 20:00 [ ADDR : EDIT/ DEL : REPLY ]
  2. 비밀댓글입니다

    2015.05.19 03:23 [ ADDR : EDIT/ DEL : REPLY ]
  3. 이승현

    저렇게 제작할려면 금액이 대강 얼마나 들죠??

    2015.05.22 17:01 [ ADDR : EDIT/ DEL : REPLY ]
    • 이 포스팅의 영상은 파이랑 파이캠 달기 전인데.. 저 부품들 다 고려하면 50~60은 되지 않을까 싶네요 ㅋㅋ

      2015.05.24 23:16 신고 [ ADDR : EDIT/ DEL ]
  4. 비밀댓글입니다

    2015.05.28 19:49 [ ADDR : EDIT/ DEL : REPLY ]
    • 남겨주신 글에 "아날로그 신호는 문자열로 들어오기 때문에" 부분이 이해가 안가네요. 사용하시는 자이로센서는 I2C방식으로, 아마 high byte와 low byte를 조합하여 원하는 16비트 데이터를 얻는 방식일텐데.. 왜 문자열로 들어온다는건지 잘 모르겠네요 ㅠ
      소스는.. 아직 오픈할 예정이 없습니다 ㅠㅠ

      2015.05.29 23:42 신고 [ ADDR : EDIT/ DEL ]
  5. 강민수

    많이 배웠어요
    mpu6050에서 디폴트설정으로 가속도는 정수값 -16383~16383 자이로는 정수값 -32768~32768이 출력되는게 맞나요?
    그리고 -2g~+2g -8g~+8g -250~+250 -500~+500 은 뭘의미하는건가요?
    그냥 mpu6050아무것도 안건드린 디폴트설정에서
    (가속도출력값/16383)*90
    (자이로출력값/32768)*(180/3.14)
    이렇게 구한 각도는 잘못된 각도인가요?

    2015.05.31 01:16 [ ADDR : EDIT/ DEL : REPLY ]
    • 가속도 자이로 모두 -32768~32768범위로 출력되지만 가속도를 16384로 나누는 이유는 mpu6050의 디폴트 측정 가속도가 -2g~2g이기 때문입니다~
      우리가 물리시간에 배우는 중력가속도(9.8㎨)가 1g에 해당하는 가속도가 되겠구요,
      자이로는 각속도[deg/s]가 되겠습니다~ 1초에 몇도를 움직이는가~
      각도를 구하는 방법은.. 가속도와 선속도, 각속도와 각도에 대해서 먼저 공부하셔야 되겠네요~

      2015.06.02 00:05 신고 [ ADDR : EDIT/ DEL ]
  6. hyeop

    안녕하세요 도움이절실하여 글을답니다.
    아두이노로 쿼드콥터 제작중인 대학생인데 비전공분야라 많이 어렵네요
    현재 자이로센서(mpu6050) 값추출까지만 되는상태이고 그이후에 해야하는작업이 상보필터값인지 pid제어인지도
    모르겟네요 초보자의애환.. pid제어는 프로그래밍작업인건지 아니면 무슨 따로 작업하는건지두 아예모르겟습니다ㅜ
    카톡아이디를 혹시 알려주실수있다면 도움좀 받고싶네요 제 아이디는 shyeop입니다

    2015.06.03 22:33 [ ADDR : EDIT/ DEL : REPLY ]
  7. birdpani

    안녕하세요 영상 잘봤습니다
    고도제어 알고리즘은 PID 만 쓰시나요?

    2015.10.10 21:26 [ ADDR : EDIT/ DEL : REPLY ]
  8. Moon

    안녕하세요... 초음파 센서 사용하는데... 지금 도움이 절실합니다.
    연락 할 수 있을까요?
    qnfroadl@naver.com로 이메일 주시면 정말 감사하겠습니다...

    2015.10.12 22:17 [ ADDR : EDIT/ DEL : REPLY ]
  9. 안녕하세요 블로그보다가 너무 좋아서 댓글남기게 되었습니다. 당신의 유지를 본받아 닉네임도 너를위한노래방으로 만들었어요. 먼발치에서 당신만을 응원할께요

    2016.01.22 05:24 신고 [ ADDR : EDIT/ DEL : REPLY ]

Quadrotor20152015. 4. 18. 16:34

이번 포스팅에서는 저번 포스팅(mpu6050 가속도, 자이로 센서를 융합하기[상보필터] - 2)의 개선된 사항을 포스팅합니다. 


먼저 가속도 센서를 오일러각으로 바꿀 때 저번 포스팅처럼 x/z나 y/z 하는건 단순히 각 축의 기울어짐 각도를 구하는 거였습니다.


이것을 자세 표현 방법의 한가지인 오일러각으로 변환하는 방법을 다룰 건데요


밑의 출처를 참고하여 이렇게 변환할 수 있습니다.





물론 Ax, Ay, Az는 약분될거기 때문에 스케일링을 하지 않으셔도 무방하지만, 변수의 자료형 범위를 넘지 않도록 신경써줍시다.


그리고 atan함수를 사용한다면 출력의 단위가 라디안이기 때문에 180.0 / 3.141592인 57.3을 곱해서 각도로 바꿔줍시다.


여기서 φ가 Roll, θ가 Pitch라고 정하겠습니다. 


아, 기체좌표계는 다음 그림과 같이 쿼드콥터 전방을 x축 양의 방향이라고 하고, 우측을 y축 양의방향, 지면쪽을 z축 양의방향으로 정합니다.

x축을 중심으로 한 회전이 Roll회전이고, y축을 중심으로한 회전이 Pitch회전이고, z축을 중심으로 한 회전이 yaw회전입니다. 

회전의 방향은 각 축의 양의 방향에 오른손법칙을 적용한 방향을 +로 정합니다. 글마다 계속 언급하겠지만, 이 설정을 되도록 유지할 생각입니다.




여기까지가 가속도 센서값을 오일러각으로 바꾸는 내용이고, 다음은 자이로 센서를 다뤄봅시다.


자이로 센서는 각 축의 각속도를 출력해주기 때문에 단위변환 후시간 변화량에 대해 적분해주면 각 축의 각도를 구할 수 있습니다.


하지만 자이로센서를 조금 다뤄본다면 각 축의 출력이 완전히 독립적이지 않다는걸 알게되는데요, 


예를들어 센서를 지면에 평행하게 두고 yaw회전 각도만 구한다면 실제 90도 회전에 대해 정확히 90도의 각도를 구할 수 있을겁니다. 하지만 지면에 평행하게 두지 않고 센서의 Roll각을 20도 정도 들고 90도 회전을 시행할 경우 yaw회전만 측정해서는 관성좌표계에 대한 yaw회전 각을 구할 수 없습니다.


이런 이유로 오일러각 변환이 필요하게 되었는데요


이것도 다음 식을 이용해서 변환할 수 있습니다. (AR.drone 관련 논문 참고)




Ω는 각 축의 각속도인 p, q, r이고 Q는 현재 오일러각인 φ, θ, ψ를 의미합니다. 


(여기서 현재 오일러각은 세가지를 쓸 수 있습니다. 가속도 센서로 만들어낸 오일러각을 쓸 수도, 자이로 센서로 만들어진 가장 최근 오일러각을 쓸 수도 있지만 실제 자세각을 반영하기 위해 상보 필터를 거친 오일러각을 사용하는게 바람직하겠습니다.)


이 두 정보를 가지고 오일러각의 변화량을 구할 수 있습니다. 그 후 이 변화량을 시간에 따라 적분하면 됩니다.


이 결과는 다음 그림을 보면 알 수 있습니다.




Roll축의 각도만 표시했습니다. 빨간색이 가속도센서의 오일러각, 초록색이 자이로센서의 오일러각 입니다.


이 두개를 합치는 상보필터에 대한 이야기는 다음 포스팅에서 하기로 하겠습니다~!


지난 포스팅에서 다뤘지만... 잘못된 정보가 있어서 바로잡는 포스팅을 하려고 합니다.









참고 사이트

http://www.nano-i.com/salse/1272665

http://blog.daum.net/pg365 - open robotics


논문

The Navigation and Control technology inside the AR.Drone micro UAV



Posted by 너를위한노래

댓글을 달아 주세요

  1. 비밀댓글입니다

    2015.05.07 13:38 [ ADDR : EDIT/ DEL : REPLY ]
  2. HK

    게시자님 덕분에 많은 정보 배워가는 학생입니다. 시중에 있는 쿼드콥터를 사서 사용하다가 내가 한번 만들어 보자하여
    이 블로그에 오게되었습니다. 많은 알짜배기 정보가 있어서 너무 감사합니다.
    언제쯤 오일러각으로 변환 -2 편은 볼수가 있을까요?
    너무너무 궁금합니다. ㅠㅠ

    2015.05.14 17:09 [ ADDR : EDIT/ DEL : REPLY ]
  3. 비밀댓글입니다

    2015.08.21 22:20 [ ADDR : EDIT/ DEL : REPLY ]
    • 자이로 센서를 적분하여 구한 각도는 각 축에 대해 독립적인 단순 각도입니다.
      오일러각은 각 축이 독립적이지 않고 종속적인데, XYZ오일러각, ZXZ오일러각 등으로 구분하여 부르는 걸로 알고 있습니다~
      일단, 구글에 XYZ오일러각으로 검색하시면 자세한 내용과 이로 인한 짐벌락 등 여러 내용을 보실 수 있을것 같습니다~
      요런 내용을 따로 정리하여 추가해야겠네요 좋은 지적 감사합니다~!

      2015.08.22 22:45 신고 [ ADDR : EDIT/ DEL ]
  4. 양완석

    와..완전 대박입니다
    arctan 분모에 Gx, Gy 의 제곱 붙이면 오일러 각이 되는군요.. 감사합니다!

    2016.07.20 23:34 [ ADDR : EDIT/ DEL : REPLY ]
  5. 홍지성

    와 ... 감사합니다 ㅠ.ㅠ

    2017.03.21 13:11 [ ADDR : EDIT/ DEL : REPLY ]

Quadrotor20152015. 3. 8. 15:16

자이로 센서의 각속도를 적분해서 각도로 만드는 방법은 당연히 기초물리학에서 배우듯이 단위 시간 변화량에 현재 각속도를 곱해서 더하면 됩니다.


하지만 실세계에서 자이로센서의 각속도는 아날로그이고, 그걸 양자화해서 사용하므로 실세계에 비해 오차가 있기 마련입니다. 아무리 시간을 정확하게 구했다 하더라도요.




위 그림은 고등학교에서 배우는 정적분에 나오는 그림입니다. 저 단위 시간을 무한대로 쪼개면 빨간색 영역인 오차는 없어진다는 건데 실제 프로그래밍에서는 그게 사실상 불가능합니다. 연산속도가 무한히 빨라야한다는거니까요 ㅋㅋ


이런 경우, 저 빨간 영역을 보상하기위한 방법이 몇개 있다고 합니다.



바로 이렇게 사다리꼴의 면적을 이용해서 적분시키는 방법입니다. 직관적으로 봐도 오차가 줄여질 거 같습니다.


그 밖에는 심슨법이라고하는 법이 있는데 2개의 데이터를 가지고 2차 함수를 구한 다음에 그 함수를 적분하는 방법인 것 같습니다(1/3 Rule). 연산량이 조금 늘겠네요.


제 쿼드 자이로센서 적분법은 사각형 적분을 적용하고있는데 사다리꼴 적분을 적용한 결과를 다음에 포스팅하도록 하겠습니다~


참고한 사이트 : http://www.hanbit.co.kr/network/view.html?bi_id=614





-------------------------------------------------------------------- 2015. 04. 04 결과 추가


글을 새로 적으려다가 결과가 변변치 않아서 이렇게 주석 형식으로 남깁니다. ㅜㅜ

위의 참고사이트에 보면 사다리꼴 적분은 실제로 적용해보면 오차가 많이 줄지 않는다고 나와있습니다. 근데 이걸 못보고 실험부터 해봤는데.. 역시 별로 개선된 게 없는거 같네요.

이유는 위의 그림을 보고 설명하겠습니다. 사각형 적분은 기울기가 +인 구간에서는 오차가 -로 쌓이고 기울기가 -인 구간에서는 오차가 +로 쌓이니까 서로 상충돼서 오차가 어느정도 줄어드는데, 
사다리꼴 적분법은 기울기가 +이든 -이든 항상 -로 조금씩 쌓이므로 좋지 않다는게 그 이유입니다.

머리가 좋아야 몸이 고생안한다고 하던데 ㅠㅜ 괜한 실험을 했네요





Posted by 너를위한노래

댓글을 달아 주세요

  1. Simpson's Rule에서 정확히 이야기 하자면 이계도함수가 음수일때 Error가 -입니다.

    2015.04.12 23:50 [ ADDR : EDIT/ DEL : REPLY ]
  2. ㅋㅋ

    혹시 mpu6050을 이용해서 3차원공간에서 움직인거리로 좌표정보를 알수잇을까요?

    2018.11.21 14:33 [ ADDR : EDIT/ DEL : REPLY ]
  3. Student

    좌표정보를 알 수는 있는데 발산하신다고 하셨는데 어떤 과정을 통해서 발산하는지 알 수 있을까요??

    2019.11.05 21:27 [ ADDR : EDIT/ DEL : REPLY ]
    • Student

      이동거리는 어떻게 알 수 있을까요??

      2019.11.05 21:29 [ ADDR : EDIT/ DEL ]
    • 이동거리는 가속도->속도->거리 순으로 적분해서 구할 수 있긴 합니다.
      다만 mpu6050으로는 가속도만 측정할 수 있는데, 센서이므로 노이즈가 조금씩 있기 마련이죠. 이 노이즈도 같이 적분되어서 거리가 발산하게됩니다.

      2020.01.01 19:04 신고 [ ADDR : EDIT/ DEL ]

Quadrotor20152014. 7. 15. 23:55

요새 초음파센서를 이용한 고도제어를 구현하고 있는데.. 이것도 테스트하는게 제일 골치아프네요 ㅠㅠ


그래서 테스트에 앞서 제가 구현한 고도 PID결과가 맞는지 검증하기 위해 이론을 바탕으로한 시뮬레이터를 만들어 봤습니다


이론이라 그런지.. 결과는 대 만족이었지만 실제 쿼드에서 돌리려니 이런저런 문제가 또 발생하네요.. 이건 이 후 포스팅에서 다루기로 하고 여기선 시뮬레이터에 대한 내용만 다루겠습니다.


먼저 구현한 시뮬레이터 구조도는 이렇습니다



시뮬레이터 전제는 이렇습니다


여기서 먼저 알아둬야할 것은 우리가 흔히 말하는 무게의 단위가 kg이 아니라는 겁니다. 무게는 F(힘)이고 F=ma에 의해 단위는 (=N)입니다. 따라서 저울로 측정한 제 쿼드의 무게는 800N이 된다는거죠. 바닥에 놓여있는 제 쿼드는 항상 지면을 800N으로 밀고있다고 할 수 있습니다. 


프롭을 돌리면 바람에 의한 추력(F=힘)이 발생될테고 점점 세게 돌린다면 어느순간 800N의 추력을 내게 됩니다. 그럼 이제 쿼드 기체는 힘의 평형 상태인거죠. 이상태에서 조금만 더 프롭을 세게 돌린다면 쿼드는 뜨기 시작합니다. 


이 때, (추력-800N)만큼의 힘을 받는 쿼드 기체는, F=ma에 의해 질량의 반비례한 가속도로 뜨기 시작합니다.


가속도는 속도를 낳고, 속도는 위치를 변화시키죠. 이 내용을 가지고 시뮬레이터를 구현해보았습니다.


그리고 제가가진 초음파센서도 심플하게 모델링해 넣고 측정값을 바탕으로 프롭의 속도를 조절하는 PID제어기를 시뮬레이션 해봤는데 결과는 다음과 같습니다.




황색이 쿼드의 높이고 파랑, 초록, 빨강 순으로 P, I, D 제어량 수치(y축과 관련x)입니다.


그래프는 아주 맘에 듭니다 뜨기 시작한 후 약 2초 안에 원하는 40cm에 수렴하니까요..


하지만 이렇게 되었다고 쿼드에 적용하고 프롭을 돌릴순 없는게 함정.. ㅠ 실제 센서의 노이즈와 여러 변수에 대한 대책도 있어야하니까요..


실제 쿼드에 적용한 이야기는 다음 포스팅에서 다루기로 하겠습니다.



-------------------------------------------------------------- 14년 7월 16일 추가 -------------------------


수렴할 때 왜 I제어량만 많느냐에 대한 설명을 빼먹었네요..


보통 모터의 속도제어같은 경우 P가 증가된 상태에서 I와 D가 0 근처에서 왔다갔다 거리는 결과가 나오는데 이건 그렇지가 않아서 고민을 많이 했습니다. 틀린거 아닌가?


처음 생각엔 가속도를 가지도 위치를 제어하려고 하니까 적분항이 이렇게 나오는구나~ 하고 넘어갔는데 지금은 다른 이유가 있는거 같아요


I가 정상 상태 오차를 커버해준다는 점을 생각해보면, p로 인한 제어량이 무게를 이기지 못하면 결국 위치는 0이니까.. 정상상태 오차가 40이 되어버리는거잖아요? 정상상태 오차가 100%니까 결국 I제어량만 남을것이다~ 라는 생각이 드네요


-------------------------------------------------------------- 14년 10월 14일 추가 -------------------------


PID제어를 모두 사용하지 않고 baseThrottle + P + D로도 가능할거 같다는 의견을 남깁니다. 여기서 baseThrottle은 기체의 무게(mg)와 같은 추력을 발생시키는 throttle값입니다.



-------------------------------------------------------------- 15년 8월 20일 추가 -------------------------

쿼드콥터 모델링 시 duty가 곧 추력이라고 해놨는데.. duty는 모터 회전 속도를 만들어 냅니다.


추력은 모터 회전 속도의 제곱에 비례한다는 사실을 덧붙여 추가합니다.









Posted by 너를위한노래

댓글을 달아 주세요

  1. 안녕하세요. 이번에 쿼드콥터를 공부중인 학생입니다. 저는 개발보드로 MSP430 F5529와 라즈베리 파이를 사용하는데요..I2C통신을 이용하여 MSP와 센서들의 값을 출력하는 것까지는 예제 코드를 통해 어찌어찌 했는데, 나온 센서 값이 맞는 값인지 모르겠고, 어떤 게 참조값인지, 설정값인지 모르겠습니다. PID제어기에 대한 이론은 여러번 봐서 이해를 하겠는데 막상 구현을 하려니 막막하네요.. PID 제어기 설계에 대한 조금 자세한 설명 부탁드리겠습니다.

    2014.07.17 21:35 [ ADDR : EDIT/ DEL : REPLY ]
  2. 박한솔

    헐!! 방학중 쿼드콥터 프로젝트를 진행하면서 여기 참고 많이하고 있었는데 이렇게 센서부분까지 넘어오시네요!! 저희는 아직 하드웨어적으로 구성이 덜끝났지만.... 앞으로 자주자주 들리겠습니다. 반갑네요:)

    2014.07.21 01:26 [ ADDR : EDIT/ DEL : REPLY ]
    • 반갑습니다! 저도 이번 방학 때 쿼드콥터 프로젝트를 진행 하려고 하는데요. 센서 값 추출하는 부분에서 일주일째 막혀서 헤메고 있습니다 ㅠㅠ 혹시 자이로 센서에서 나온 값을 어떻게 이용해야되는지 알고 계시면 설명 부탁드립니다.

      2014.07.21 20:50 [ ADDR : EDIT/ DEL ]
  3. 비밀댓글입니다

    2015.03.12 21:24 [ ADDR : EDIT/ DEL : REPLY ]

Quadrotor20152014. 6. 10. 11:50

자이로센서를 사용해서 처음 각도를 출력해보면 이해가 안가는 부분이 있습니다. 


기체는 가만히 있는데 출력값은 처음 0도에서 시작해서 무한대로 점점 발산해 간다는 점입니다.


센서가 고장났나 싶어서 좀 더 비싼 센서를 사서 테스트해보면 발산해 가는 양이 조금 줄었을 뿐 시간이 지나면 똑같이 발산해 갑니다.


뭔가 문제가 있다고 판단하고 조사를 하다보면 자이로 센서에는 약간의 바이어스(Bias:치우침)값이 포함되어 있고 이걸 같이 누적하다보니 각도값이 발산해 간다는 점입니다.


이는 자이로 센서의 특징이라고 합니다. 센서가 공장에서 출하될 때 센서의 내부에 물리적인 오차가 생기는 것 같습니다.(음.. 밑에 P.S.에 이에 대한 궁금한 점 써놓았음..)


실제로 디지털 자이로센서가 움직이지 않을 시, 기체의 각속도는 0이므로 센서 출력값도 0이 나와야 정상입니다.


하지만 대부분의 센서의 출력값은 0이 나오질 않습니다. 0이 아닌 다른값이 나오기 마련입니다. (물론 항상 일정한 숫자가 나오지 않고 어떤 숫자 근처에서 미세하게 왔다 갔다 하고있겠죠)


이걸 자이로센서의 바이어스라고 하더라구요.. 


이 바이어스의 값이 몇인지 알고 있다면 매 샘플링마다 나온 값에 바이어스를 빼 주면 올바른 값이 나오겠죠.


그래서, 작년 제 쿼드같은 경우에는 호버링 전에 바닥에 가만히 있는 상태에서 1000개의 출력치를 모아 둔 다음 평균내서 바이어스를 측정했었습니다.


이 과정을 거치면 확실히 바이어스가 제거되는 효과가 있습니다. 제거 전 각도값 발산이 1분에 10도였다면 제거 후에는 1분에 0.2도 정도니까요.


하지만 1분에 0.2도 정도의 오차는 없어지질 않습니다. 1000개를 평균내더라도 10000개, 100000개보다는 부정확하니까요.


이를 더 보완하기 위해 HDR(Heuristic Drift Reduction)알고리즘이 있습니다.


어렵지 않고 아주 간단한데요, 작동 방식은 아래와 같습니다.



 

 



※ 블록다이어그램의 내용 중 w_set부분이 다소 부자연스럽지만(?) 그냥 넘어가도 될 듯 합니다.    



은 위에서 언급한 N개의 데이터 평균값을 이용한 바이어스의 정도입니다. 이를 제거한 다음 도 마저 제거 하는데, 를 구하는 방법은 이렇습니다.


센서의 현재 출력(t=n)과 바로 직전의 센서 값(t=n-1)의 차이에 따라 를 조정해 갑니다. 이미 를 구했다면 는 아주 조금씩 조정해 나가야 합니다. 참고 문헌에서는 를 0.001과 같이 미소한 값을 사용하라고 되어있네요.


누누히 말씀 드리지만 이런 필터류의 설계는 이렇다할 정답이 없습니다. 적용하고자하는 시스템이 맞게 필터 장단점의 트레이드오프 관계를 잘 절충해야 합니다.


직관적인 내용이니 위 그림을 자세히 들여다보시면 충분히 이해가 가실거라 생각합니다~!


P.S. 음.. 여러번 실험하다보니 궁금한 게 생겼는데.. 혹시 자이로센서가 온도같은거에 영향을 받는지 아시는분 있다면 댓글 부탁드릴게요~



출처 - http://blog.daum.net/pg365/227





Posted by 너를위한노래

댓글을 달아 주세요

  1. 안녕하세요 가끔 들러서 포스팅하신거 잘 보고있습니다
    저도 각도측정하는 센서를 사용하고있습니다 물론 저는 판매되는 자세센서를 쓰고있습니다만
    센서 스펙에 보면 9축에 온도센서까지 내장하고있습니다 온도하고 관계가 있어서 보상하고 있다고 합니다
    좀 더 공부해봐야 알것같네요 포스팅잘보고갑니다 수고하세요

    2014.06.10 13:54 신고 [ ADDR : EDIT/ DEL : REPLY ]
    • 음.. 자세센서라는게 따로 있나요? 9축이라하셨으니까 아마 추측컨대 가속도3축+자이로3축+지자계3축+온도 이거 같은데..
      온도하고 관계 있다는 내용의 링크나 자료를 알려주시면 포스팅에 추가하는데 많은 도움이 될 거 같습니다~

      2014.06.11 10:13 신고 [ ADDR : EDIT/ DEL ]
  2. ABRAXAS

    올려주신 자료 너무 유용하게 감사하게 보고 있습니다.
    말씀하신 내용, 자이로센서가 온도의 영향을 받는가에 대한 자료를 찾은거 같아서
    링크 올려드리겠습니다.

    http://www.epnc.co.kr/atl/view.asp?a_id=11932

    EPSON사의 자이로센서 XV4001 에 관한 내용입니다.

    2014.10.27 16:43 [ ADDR : EDIT/ DEL : REPLY ]
  3. gyro

    감사합니다 gyro관련하여 상보필터를 쓰고있었지만 오차가 너무 심해서
    고민을 하고 있었습니다 이런 좋은 글을 볼수 있어서 정말 감사합니다.!!

    2015.12.14 16:33 [ ADDR : EDIT/ DEL : REPLY ]
  4. Jun

    좋은글 잘봤습니다.^^ 감사합니다.
    한가지 질문이 있습니다. Ti(sampling time)과 타우(Filter Time constant)의 비로 LPF로 기존 각속도의 노이즈를 제거한후에 알고리즘을 진행하는 걸로 알고 있는데요. 여기서 Ti(sampling time)은 센서의 (sampling time)을 얘기하는 것 같습니다. 하지만 타우(Filter Time constant)는 어떻게 결정해야되는 궁금합니다. LPF관점에선 Sampling time보다 타우값이 더 적게 나와야 되는 걸로 알고 있습니다.
    답변주시면 감사하겠습니다.^^

    2017.03.21 20:26 [ ADDR : EDIT/ DEL : REPLY ]
  5. time constant(시정수)를 말씀하시는건가요? real world에서 센서의 자세가 변했을 때 출력되는 센서의 데이터가 얼마나 빠르게 실제와 같아지는지를 나타내는 수라고 이해해도 될까요?
    본 프로젝트 진행 시 센서의 raw출력값은 실제 데이터와 같다고 가정하고 진행했습니다~!
    다만 반응이 느려지는건 software적으로 lpf를 구현하여 통과시키게 되면 필터 전 후에 반응이 느려진다는(시정수가 늘어나는) 내용입니다.
    time constant얘기는 센서 내부에서 조정해야하는 이슈가 아닐까 하는데 센서 외부에서 프로그래밍 하는 우리가 조정할 수 있나요??

    2017.03.21 20:49 신고 [ ADDR : EDIT/ DEL : REPLY ]