the terminal response global 'name ' is not defined
the terminal response global 'name ' is not defined
import rospy
import cv2
import numpy as np
from cv_bridge import CvBridge
from sensor_msgs.msg import LaserScan
from geometry_msgs.msg import Twist
from geometry_msgs.msg import Point
from std_msgs.msg import String
from sensor_msgs.msg import CompressedImage
def savoir(msg):
global obstacle
if msg.ranges[320] >0.5:
obstacle=False
elif msg.ranges[320]<0.5:
obstacle=True
def drive_callback(data):
global vel ,msg
ball_x = data.x
ball_y = data.y
width = data.z
# Create Twist() instance
vel = Twist()
if ball_x < 0 and ball_y < 0:
vel.angular.z = 0
else:
# Determine center-x, normalized deviation from center
mid_x = int(width/2)
delta_x = ball_x - mid_x
norm_x = delta_x/width
if norm_x > 0.15:
print ("delX: {:.3f}. Tournons a droite!".format(norm_x))
vel.angular.z = -0.2 #tourner vers la droite avec une vitesse de 0.2 m/s
elif norm_x < -0.15:
print ("delX: {:.3f}. Tournons a gauche!".format(norm_x))
vel.angular.z = 0.2
elif abs(norm_x<=0.15):
print ("delX: {:.3f}. regardons devant!".format(norm_x))
if obstacle==False:
vel.linear.x = 0.3
print("en avant!")
else:
vel.linear.x=0
# publish vel on the publisher
pub_vel.publish(vel)
if __name__ == '__main__':
global vel, pub_vel
rospy.init_node('drive_wheel', anonymous=True)
img_sub = rospy.Subscriber("/ball_location",Point, drive_callback)
pub_vel = rospy.Publisher('cmd_vel_mux/input/teleop', Twist, queue_size=5)
infra_sub= rospy.Subscriber("/scan",LaserScan,savoir)
rospy.spin()
#error
if obstacle==False: NameError: global name 'obstacle' is not defined