3

良い一日、

センサーから方向データを取得し、それを 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;
}
4

1 に答える 1