良い一日、
センサーから方向データを取得し、それを PID 制御アルゴリズムで使用して、対応する PWM 信号を作成するプログラムを作成しようとしています。Enterキーを押してプログラムを停止できるようにしたいと思います。opencv の waitKey(); を使ってみました。ただし、キーボード入力を受け入れません。cin.get(); も試しました。しかし、問題を引き起こすループを一時停止します。クアッドコプターの向きが変わると、pwm が更新されません。他の方法を調べてみましたが、うまくいきませんでした。上記の 2 つの方法を使用したコードのサンプルを次に示します。
cin.get() の使用:
using namespace std;
int main(void){
while(1){
/* get orientation data */
/* output corresponding pwm */
//Press enter to stop loop
if(cin.get() == '\n'){
/* Stop Pwm */
break;
}
}
return 0;
}
waitKey(); の使用
using namespace std;
using namespace cv;
int main(void){
while(1){
/* get orientation data */
/* output corresponding pwm */
//Press ESC to stop loop
int key = waitKey(33){
if(key == 27){
/* Stop Pwm */
break;
}
}
return 0;
}