光を追いかけるロボットをROSで作る(おしまい)
回路ができたら前回の投稿と同じ手順で、CDSに懐中電灯で光をあてるとLEDが点灯することを確認しておきます。感度は半固定抵抗VRをドライバーで回して調整します。
最後にトピックbrinkcontをサブスクライブして、turtlebotを動かすトピックcmd_vel_mux/input/naviをパブリッシュするノードのpythonプログラム、seeker.pyを下記のように作り、パッケージrptestフォルダのscriptsにおきます。
#!/usr/bin/env python import roslib import rospy import time from geometry_msgs.msg import Twist from sensor_msgs.msg import Joy #callback def joy_callback(light_sens): if light_sens.buttons[0] == 1: # light in twist.linear.x = 0.1 twist.angular.z = 0 else: twist.linear.x = 0 twist.angular.z = 0.4 pub.publish(twist) #main if __name__ == '__main__': rospy.init_node('light_seeker') rospy.Subscriber('brinkcont' , Joy ,joy_callback) pub = rospy.Publisher('cmd_vel_mux/input/navi', Twist, queue_size=10) twist = Twist() rospy.spin()
内容は簡単なので説明は割愛します。ついでにローンチファイルも作っておきましょう。下記内容で、lightseeker.launchという名前のローンチファイルを作り、パッケージrptestフォルダにlaunchフォルダを作り、そこに置きます。
<launch> <node pkg="rptest" type="dsens.py" name="dsens" /> <node pkg="rptest" type="brinker.py" name="brinker" /> <node pkg="rptest" type="seeker.py" name="lightseeker" /> </launch>
brinkerノードはCDSが反応したかどうかモニターするだけなので起動しなくとも良いのですが、うまく動かない時に原因がわかりやすいので起動しておいたほうが良いです。
下記手順で起動するとビデオのように動きます。試してみてください。
$ roslaunch turtlebot_bringup minimal.launch
$ roslaunch rptest lightseeker.launch
こんな簡単なプロジェクトでも実際にROSで動かすものを作ってみると、いろいろとわかることが多いと思います。
« 光を追いかけるロボットをROSで作る(1) | トップページ | ubuntuラズパイのWiFi接続 »
「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)
コメント