forked from jsk-enshu/robot-programming
-
Notifications
You must be signed in to change notification settings - Fork 0
/
2_kadai3.py
30 lines (24 loc) · 1.18 KB
/
2_kadai3.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#!/usr/bin/env python
# -*- coding: utf-8 -*-
##「イベント・ドリブン型」のプログラムである
##subしたときにcallback関数を読んでpubする
import rospy
from opencv_apps.msg import FaceArrayStamped #Opencvの画像認識の型のインポート
from geometry_msgs.msg import Twist #ツイストの型のインポート
def callback(msg): #コールバック関数の登録
cmd_vel = Twist() #cmd_velの型指定
for face in msg.faces:
x = face.face.x
if x < 300.0: #顔が画面の右にあるとき
cmd_vel.angular.z = 1 #右回転
else: #顔が画面の左にあるとき
cmd_vel.angular.z = -1 #左回転
rospy.loginfo("\t\t\tpublish {}".format(cmd_vel.angular.z)) #rosのlogに指定値を残す
pub.publish(cmd_vel) #パブリッシュする
if __name__ == '__main__': #メイン文
try:
rospy.init_node('client')
rospy.Subscriber('/face_detection/faces', FaceArrayStamped, callback)
pub = rospy.Publisher('/cmd_vel', Twist, queue_size=1) #geometry.Twistの型
rospy.spin() #待機状態に戻る
except rospy.ROSInterruptException: pass #エラーハンドリング