ROSでLチカ
今回はROSのノードとして実行できるLチカコードを作ります。まずは作業用のパッケージとしてrptestというのを作りました。ラズパイの勉強用パッケージという訳ですが、もちろん、名前は好きなものでかまいません。パッケージの作り方は以前の投稿を見てください。
パッケージのscrptsディレクトリの中にflash.pyという名前でLチカのコードを書きます。実行可能にしておくのをお忘れなく。簡単にはchmod 777 flash.pyで大丈夫です。
#!/usr/bin/env python import roslib import rospy import time import wiringpi import subprocess #main if __name__ == '__main__': ### init io port ### subprocess.check_call('gpio export 11 out',shell=True) subprocess.check_call('gpio export 8 out',shell=True) ### rospy.init_node('ledflash') io = wiringpi.GPIO(wiringpi.GPIO.WPI_MODE_SYS) io.pinMode(11,io.OUTPUT) # Setup pin 11 io.pinMode(8,io.OUTPUT) # Setup pin 8 while not rospy.is_shutdown(): io.digitalWrite(11,1) io.digitalWrite(8,0) time.sleep(1) io.digitalWrite(11,0) io.digitalWrite(8,1) time.sleep(1) print('\rStopped')
最近ようやくきれいにコードをブログに載せることができるようになりました。このコードは11と8に接続したLEDを交互に点滅させるものです。
注目しておきたいのは、subprocess.check_call('gpio export 11 out',shell=True)とその次の行です。これは括弧内のシェルコマンドを実行する記述で、このシェルコマンドでポート11と8をOUTPUTに設定しています。これを使うにはimport subprocessを記述しておく必要があります。
wiringPi-Pythonのラッパーを使うにはimport wiringpiを記述しておきます。この辺は情報が多く、また錯綜している感があるので、ともかく入出力ができることのみに専念しています。ポートの設定はちょっと苦労しましたが、結局gpio exportをつかうことでsudoなしで実行することができました。これはポートの入出力を設定するgpioコマンドで、このようにするとポートはその後プログラムでoutポートとしてアクセスすることが出来ます。よく例にあるgpio -g modeで設定すると、gpio writeコマンドだと使えますが、プログラムからは使えません。
gpio exportは一度設定すると再ログインするまではそのままなので、このようにプログラムで書かなくとも、シェルスクリプトで一回実行しておく方法でも良いのですが、必要なポートの設定はプログラムに書いた方が使いやすいと思います。
実行するにはroscoreを起動した後、rosrun rptest flash.pyでROSのノードとして実行します。次はメッセージを追加してそれらしくしてみます。
« ROSでラズパイ2のGPIOを使う | トップページ | GPIOをノード間通信で使う »
「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」カテゴリの記事
- 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)
コメント