PID 출력값에 따라 모터속도 계산하기 목적드론이 어느 방향으로 기우느냐에 따라서 모터 속도가 컨트롤 되면서 드론이 수평을 유지하도록 하는 것 입니다. 해햐할 부분기존 PID 출력값을 프로세싱을 보냈는데 이제는 프로세싱으로 보내는 대신 PID출력값을 계산해서 모터로 보내어 속도를 제어하는 부분을 추가해야 한다. 소스코드 #include const int MPU_addr = 0x68; int16_t AcX, AcY, AcZ, Tmp, GyX, GyY, GyZ; void setup() { initMPU6050(); //MPU-6050 센서에 대한 초기 설정 함수 Serial.begin(115200); //Serial 통신 시작 calibAccelGyro(); //센서 보정 initDT(); //시간 간격에 ..
전달 받은 매개변수를 아두이노에 적용시키기 목표 프로세싱에서 시리얼 통신을 이용해서 시리얼 포트롤 통해 보낸 매개변수를 아두이노에 적용을 시켜서 GUI 그래프 차트상으로 매개변수 변경함에 따라서 차트 변화 확인하기 소스코드 /* * 목표 : 프로세싱에서 보낸 매개변수를 아두이노에서 받아서 드론으로 구동시키기 * 기술 : 프로세싱에서 시리얼 통신으로 시리얼 포트를 통해 보내준 9개의 매개변수 값들의 설정을 적용시키기 */ #include const int MPU_addr = 0x68; int16_t AcX, AcY, AcZ, Tmp, GyX, GyY, GyZ; void setup() { initMPU6050(); //가속도 자이로 센서 값을 읽음 Serial.begin(115200); calibAccelG..
프로세싱에서 PID 매개변수 설정하기 목표 프로세싱에서 매개변수를 설정해주고 설정 한 값들을 시리얼 포트를 이용해서 아두이노로 값을 전달한다(여기서는 매개변수 설정만 해주고 아두이노로 전달하지는 않는다.) 소스코드 import processing.serial.*; //Library to Serial import controlP5.*; //Library to ControlP5 ControlP5 cp5; Chart rollChart, pitchChart, yawChart; Serial Comport; void setup() { size(700, 440); noStroke(); cp5 = new ControlP5(this); //creative Objecy GUI cp5.addTextlabel("","Dron..
Processing 으로 PDI 출력 구현 목표 이전 포스팅(아두이노에서 PID 출력값을 프로세싱으로 보내기)에서 받은 PID 출력 값을 확인할 수 있도록 하기 소스코드 import processing.serial.*; //Library to Serial import controlP5.*; //Library to ControlP5 ControlP5 cp5; Chart rollChart, pitchChart, yawChart; Serial Comport; void setup() { size(700, 200); noStroke(); cp5 = new ControlP5(this); //creative Objecy GUI cp5.addTextlabel("","Dron PID Output") .setPositio..
아두이노 IDE에서 프로세싱으로 PID 출력 보내기 목표Arduino IDE에서 PID 출력 값을 Processing IDE로 보내기 소스코드 /* * 목표 : 1. 프로세싱을 이용해서 GUI 형태의 그래프 형태로 PID 출력 값 살펴보기 * 2. 프로세싱에서 제공하느 슬라이더를 이용해서 PID 매개변수(게인)를 조절 */ #include const int MPU_addr = 0x68; int16_t AcX, AcY, AcZ, Tmp, GyX, GyY, GyZ; void setup() { initMPU6050(); //가속도 자이로 센서 값을 읽음 Serial.begin(115200); calibAccelGyro(); //센서 보정 루틴 initDT();// 시간 간격에 대한 초기화 } void loop..
아두파일럿(아두이노 드론) 공부 순서 1. Arduino Micro Pro에 대한 설명 -> Ardupilot의 프로세서인 ATmega32u4(아두이노 마이크로 프로)2. ESP8266에 펌웨어 업로드 시키기 3. Transparent Bridge를 이용해서 Esp8266에 펌웨어 업로드 시키기4. 모터를 동작 시키기 위한 millis() 함수 알아보기5. Ardupilot에 사용되는 Motor 소개 및 간단한 테스트6. 프로세싱과 ESP8266을 이용해서 와이파이 통신으로 드론 모터 조절하기_17. 프로세싱과 ESP8266을 이용해서 와이파이 통신으로 드론 모터 조절하기_28. MPU-6050 센서란?9. 자이로 센서란? (추가설명)10. 가속도 센서 값 해석하기11. 자이로 센서 값 해석하기12. 프..
표준 PID 제어함수 구현 목표Roll, Pitch, Yaw 각도에 대한 PID 출력 값을 구하기 가장 먼저 해야할 일 자이로 센서를 이용해서 구한 각속도를 바탕으로 회전각을 구하는 부분을 삭제한 후 표준 PID 제어함수에서 수현을 해야한다. 소스코드 //표준 PID 제어 함수 구현(이중루프 PID 제어기 X) //목표 : roll, pitch, yaw의 각도에 대한 pid 출력값 구하기 #include const int MPU_addr = 0x68; int16_t AcX, AcY, AcZ, Tmp, GyX, GyY, GyZ; void setup() { initMPU6050(); //가속도 자이로 센서 값을 읽음 Serial.begin(115200); calibAccelGyro(); //센서 보정 루틴 ..
가속도,자이로 센서에 대한 상보필터 적용시키기 가속도 센서와 자이로 센서의 단점들을 보안하고자 상보필터를 이용해서 값을 추출하는 방법에 대해 한번 알아보도록 하겠습니다. 일단 상보필터를 구하는 근사공식에 대해 알아보겠습니다. 상보필터 근사공식 위 공식을 참고해서 상보필터 처리 루틴을 한번 구현해보도록 하겠습니다. 소스코드 //상보필터 적용시키기 #include const int MPU_addr = 0x68; int16_t AcX, AcY, AcZ, Tmp, GyX, GyY, GyZ; void setup() { initMPU6050(); //가속도 자이로 센서 값을 읽음 Serial.begin(115200); calibAccelGyro(); //센서 보정 루틴 initDT();// 시간 간격에 대한 초기화..