2017-11-07 20 views
0

私は最近ラズベリーのストレッチでラズベリーパイ3を使って小さなロボットカーを作っています。私は現在、pi USBポートに差し込まれたxbox360コントローラを使って車を運転することができます。私の問題は、私がpiにsshしてロボットを使用するために書いたスクリプト(robot.py)を実行する必要がないことです。バックグラウンドでPythonスクリプトを実行しています - Raspbian

私は何をしたいのは、このようなものを作品にバックグラウンドで実行中のスクリプトを持っている:

#while true 
    #if joystick is detected 
     #robotoffflag=true 
     #if startup button is pressed on the joystick && robotoffflag 
      #robotoffflag=false 
      #run robot.py to control the robot 
      #robot.py already has controls for shutting down the robot 
      #which disables the motors and sets robotoffflag to true 

この方法で、私のパイがパワーアップされている場合、私は、任意の時点でただボタンを押すことができますロボットの使用を開始します。その後、私が完了したら、コントローラの別のボタンを押してロボットを無効にします。

私の質問は正しいですか?基本的に条件付きの無限ループであるスクリプトをバックグラウンドで実行させることは、私にとっては愚かなようです。より多くのイベント駆動型の方が良いでしょうか?

答えて

0

ここで私がするかもしれないことは、ハックのビットを考えました。 Pythonコードをループに入れて、各ループの最後に非常に短いスリープを追加してCPU使用量を制限します。その後、pythonスクリプトをtmuxのセッション内で実行します。 sshセッションが終了しても、tmuxセッションが終了するまでpythonスクリプトが実行されます。 tmuxはちょうど例示的なユーティリティです。他にもあります。 もちろん、あなたはコントローラからの信号を待ってから、オペレーティングシステムのデーモンから信号を起動するシグナルアンドウェイト機構を使ってループを実装することができます。あなたが行きたいと思う深さに依存します...

関連する問題