전달 받은 매개변수를 아두이노에 적용시키기 목표 프로세싱에서 시리얼 통신을 이용해서 시리얼 포트롤 통해 보낸 매개변수를 아두이노에 적용을 시켜서 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..
아두이노 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..
표준 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(); //센서 보정 루틴 ..
PID 튜닝 방법 이번 포스팅 에서는 PID 튜닝 방법에 대해 알아보도록 하겠습니다. 알아보기 전에!! PID 제어가 무엇인지 잘 모르시는 분들은 이전 포스팅 게시물을 한번 확인을 해주시고 오시면 도움이 될거 같아요^^ [드론] PID 제어기 개념정리 개발자(나)가 결정을 하게 되는 값 : 게인(gain) -> 이득값, 증폭값도 동일한 말 입니다.게인(gain)은 PID 제어기 개념정리에서 보여졌던 매개변수(Ku, Ki, Kp)들을 의미합니다. 그러면 이제 게인(gain)을 알면 PID 튜닝을 할 수 있다고 하는데 어떻게 얻어지는지 한번 알아보도록 하겠습니다. 게인(gain) 결정 방법 튜닝(tunning) 게인(gain)을 수학적 or 실험적-경험적 방법으로 계산하는 과정 튜닝하는 방법 지글러 - 니콜..