sudoなしで最新のWiringPi-Pythonを使うには
前回、インチキをしてpythonで書いたROSのノードからWiringPi-Pythonを使わずにGPIOにアクセスしてみました。「電子計算機の仕事としてはめちゃくちゃ遅い」という点を除けば、まあナントカなるという結論でした。でも、どうもモヤモヤします。以前はWiringPi-Pythonからちゃんとsudoなしでできてたのになんでだろ、ということですね。
不通だったWiringPiのHPが復活したので、WiringPi-Pythonでエラーになっているあたりをチェックしたところ、初期化関数にヒントがありました。このページでは初期化関数として、wiringPiSetup (void) ;wiringPiSetupGpio (void) ;wiringPiSetupPhys (void) ;wiringPiSetupSys (void) ;という4種類をあげています。先の3つはルート権限で実行する必要があると書いてありますが、wiringPiSetupSys (void) ;だけはルートでないユーザーが実行できるとあります。ただ、gpioコマンドも併用してシェルから使用するピンを設定する必要があるとのこと、これは今まで僕がやってきた方法と同じです。その他いろいろと制約もあるみたいですが、これをラップしているWiringPi-Pythonの関数を探せば良さそうです。
ということでWiringPi-PythonのGitHubを改めて読み直してみて、愁眉を開くことになりました。なるほど使い方が変わっています。インストール方法が変わっていることには気がついていたのですが、そっちはノーチェックでした。以前はこの投稿でやっているように、初期化関数にパラメータを与えて、インスタンスを生成するようになっていたのですが、ごくシンプルに関数を呼ぶだけになっています。これでは以前のコードが動くはずもありません。WiringPi-Pythonの仕様変更が今回のドタバタの原因だったみたいです。というわけで動作したROSでLチカのコードです。
#!/usr/bin/env python import roslib import rospy import time import subprocess import wiringpi #main if __name__ == '__main__': ### init io port ### subprocess.check_call('gpio export 17 out',shell=True) ### rospy.init_node('iotest') wiringpi.wiringPiSetupSys() wiringpi.pinMode(17,1) # Setup pin 17 to OUT while not rospy.is_shutdown(): wiringpi.digitalWrite(17,1) time.sleep(0.5) wiringpi.digitalWrite(17,0) time.sleep(0.5) print('\rStopped')
GPIO 17につないだLEDを1秒周期で点滅させます。sudoの必要はありませんからROSで普通にノードとして実行できます。sleepをコメントアウトしてコマンドの実効速度をオシロで計測したところ、ポートの書き換えにはわずか3usほどしかかかっていません。古いバージョンをラズパイ2で実行させたときより早いです。ラズパイ3のせいでしょうか。
なおこれはROSで使うようになっているので、roscoreを起動しておくのを忘れないでください。ROSを使わないで試してみるには、roslibとrospyのimportをやめるのとrospy.init_node('iotest')を削除、while not rospy.is_shutdown():を普通のwhile(1):で無限ループさせればよいと思います。
« ROSでラズパイのGPIOをちゃんと使うには | トップページ | raspberry Pi3でubuntu14.04のまとめ »
「ラズパイでROS」カテゴリの記事
- 3Dプリンターで作る簡単turtlebot(おしまい)(2017.01.07)
- 3Dプリンターで作る簡単turtlebot(raspberry pi3の取り付け)(2017.01.03)
- 3Dプリンターで作る簡単turtlebot(kinectの取り付け)(2017.01.02)
- 3Dプリンターで作る簡単turtlebot(パーツの組み立て2)(2016.12.29)
- 3Dプリンターで作る簡単turtlebot(パーツの組み立て1)(2016.12.25)
« ROSでラズパイのGPIOをちゃんと使うには | トップページ | raspberry Pi3でubuntu14.04のまとめ »
コメント