본문 바로가기

프로젝트 (Project)

(12)
3. 모듈형 드라이버 쉴드 보드 제작 EasyEDA 라는 툴을 급히 익혀 모듈형으로 드라이버 보드를 만들었는데 이거 참... 나한테는 안맞는 툴인거 같다. JLCPCB에서 아주 저렴하게 샘플 보드를 얻을 수 있어 빠르게 얻었다. 설계에 발주까지 한 1주일 조금 걸린거 같다. 학교 생활이 바빠서 설계, 테스트한 보드를 이제서야 올리는 것이 참 애매하다.. 위 보드는 21년 8월 설계한 보드로 내가 느끼기에는 실패한 보드에 가깝다.. 쉴드를 장착하면 위 사진처럼 나온다. 서포터로 지지해주고 여러가지로 고민해줘야할 부분이 참 많다. EasyEDA를 사용한 PCB 설계의 첫걸음을 땐거나 다름이 없었기에 footprint 설계에 실수가 생겨 커패시터의 footprint가 엉망이다.. ㅠㅠ 전원은 Lipo 3S 12V 전원을 공급받아 스위칭 레귤레이터..
2. 하드웨어 설계 및 조립 앞서 부품선정과 전체적인 하드웨어의 모델링 작업을 통해 3D 설계를 통해 가상화 하였다. 이제 가상화한 모델을 실제로 가공하여 조립할 차례이다. 모터, 바퀴, 커플링, 제어기 등을 제외한 프레임을 아크릴을 사용하기 때문에 각 아크릴 프레임을 2D 도면으로 재설계한다. 순서대로 모터 보호판, 메인조립판, 상판, 배터리 브라켓이다. 2D로 재설계한 이유는 2D 도면을 아크릴 가공 업체에 전달하면 레이저/CNC 등으로 가공하여 받을 수 있기 때문이다. 앞서 2D로 설계한 파일들이 정확하게 가공되었다. 재질은 아크릴로 2T로 주문하였다. 이제 조립을 해보자. 모터 브라켓을 장착하고, 모터를 장착한다. 모터의 경우 모두 간섭없이 공간을 압축하여 고정 및 작동이 되는 구조로 설계하였다. 그리고 케이블을 연결하여 중..
1. 목표 설정, 모델링, 부품선정 라즈베리파이를 이용한 자율주행 로봇을 제작할 것이다. 하드웨어의 구조적인 목표는 옴니휠 3개를 이용하여 홀로노믹 움직임을 구현하는 것이다. 하드웨어는 손바닥에 올릴 수 있는, 손바닥 크기와 비슷한 로봇을 만들 것이다. 자율주행을 하면서 주변 환경을 인식하고, 실시간으로 맵으로 변환 및 저장하는 것이 목표이기 때문에 엔코더가 장착된 기어드 모터를 사용하였다. 알리익스프레서에서 12V 엔코더가 장착된 마이크로 기어드 모터를 구입하였다. 모터의 스펙은 12V 190RPM, 5Kgcm(Rated) / 9Kgcm(Stall) 의 스펙을 가지는 무지막지한 녀석이다. 해당 모터를 모델링하여 추후 프레임 제작 모델링에 사용할 것이다. 모터를 구입했으니 프레임에 고정할 수 있도록 브라켓을 세트로 구입하였다. 58mm 옴..
[ZMR250] 7. 코드 최적화 지금까지 제어한 코드의 경우 loop()함수를 4ms 의 주기로 계산 및 제어하였다. 다음 목표인 플립을 구현하기 위해 조금 더 빠르고 높은 주기로 계산하기 위해 코드를 수정했다. 우선 드론에 전원을 넣으면 PWM 핀을 초기화하면서 최저 값을 넣어주지 않아 가끔식 ESC 세팅 모드로 진입하는 경우가 있었다. 그래서 초기화와 동시에 최저 PWM 제어를 추가하였다. 기존 double 데이터 타입의 rawVector 변수를 int16_t 의 정수형 타입으로 수정하여 더욱 빠른 계산을 할 수 있도록 수정하였다. 그리고 계산주기를 2.5ms 로 줄여 최대 250Hz -> 400Hz의 연산이 가능하도록 수정할 것이다. 플립을 구현하기 위해 -90도 ~ 90도의 인식 범위를 -180 ~ 180으로 360 인식이 가능..
[ZMR250] 6. PID 튜닝 및 비행 앞서 기체의 상태를 피드백하여 모터를 제어하는 PID 제어를 공부했다. 나아가 드론은 다양한 외란의 영향을 받기 때문에 2중 PID 구조를 가져야하는 등의 여러가지를 알아보았다. 이번 시간에는 PID를 튜닝하고 몇몇 코드를 수정하여 기체가 잘 비행할 수 있도록 수정할 것이다. 먼저 P.I.D제어는 실시간으로 기체의 현 상태를 피드백 제어하기 때문에 주기적인 제어가 필요하다. 우리는 DT를 피드백 제어값에 반영하지 않았기 때문에 DT를 고정시킬 수 있는 수식을 추가해야한다. 아두이노에 DT 값을 주어 추가적인 계산을하면 loop() 함수를 한번 실행하여 계산하는 시간이 매우 커지고, 최악의 경우 드론 추락의 원인으로 자리잡기도한다. 그렇기게 안정적인 DT 를 잡아주는 것이 좋다. 먼저 빠르고 간편하게 PI..
[ZMR250] 5. 기체 PID 제어하기 제작 중인 드론은 모터가 4개인 쿼드콥터로 두 개의 모터가 한쌍으로 서로 다른 회전 방향으로 반발력을 상쇄하여 기체를 안정적으로 상승시킬 수 있는 구조이다. 하지만 모든 모터를 같은 속도로 제어한다고 기체가 안정적으로 날 수 있는 것은 아니다. 기체의 현재 상태를 무시하고 모터를 작동하면 주변 환경으로부터 드론에 주는 영향을 피드백받아 제어할 수가 없기 때문에 많은 드론 제어시스템이 PID 제어를 사용한다. PID 제어는 주어진 목표와 현재 상태의 오차를 [ 비례 + 적분 + 미분 ] 계산으로 피드백하여 장치를 제어하는 이론이다. 제어 수식값은 위와 같이 나타나는데, 목표값과 현재의 값의 차이를 오차값 e(t)로 두고 각각 비례, 적분, 미분의 값을 모두 더하여 제어 값에 반영한다. PID 제어기는 위와..