Hi, need help as robot does not move as service called,i am stuck here,need help pls
#! /usr/bin/env python
import rospy
from my_pkg.srv import FindWall, FindWallResponse
from time import sleep
from geometry_msgs.msg import Twist
from sensor_msgs.msg import LaserScan
found = False
tolerance = 0.02 # meters
fwd_done = False
parallel_done = False
min_value = 0.0
min_index = 0
move = Twist()
def laser_callback(msg):
front = msg.ranges[90]
right = msg.ranges[135]
left = msg.ranges[45]
global min_value, min_index
min_value = min(msg.ranges) # find minimum value
min_index = msg.ranges.index(min_value) # get location
print("min_value, min_index ", min_value, min_index)
move.linear.x = 0.05
move.angular.z = -0.01
while (True):
if not fwd_done:
if (front - 0.2) > tolerance:
move.linear.x = 0.05
move.angular.z = -0.01
pub.publish(move)
elif not parallel_done:
if (right - 0.3) > tolerance+0.1: # allow greater tolerance
if min_index < 90:
if msg.ranges[47] > msg.ranges[45]:
move.angular.z = 0.01
else:
move.angular.z = -0.01
else:
if msg.ranges[47] > msg.ranges[45]:
move.angular.z = -0.01
else:
move.angular.z = 0.01
move.linear.x = 0.0
pub.publish(move)
else:
parallel_done = True
else:
move.linear.x = 0.0
move.angular.z = 0.01
pub.publish(move)
def wallcallback(req):
found = True
req.wallfound = True
return FindWallResponse(req.wallfound)
sub = rospy.Subscriber(’/scan’, LaserScan, laser_callback)
pub = rospy.Publisher(’/cmd_vel’, Twist, queue_size=10)
def service_creation():
rospy.init_node(‘find_wall_server’)
my_service = rospy.Service(“find_wall”, FindWall, wallcallback)
rospy.loginfo(“Service is Ready”)
rospy.spin()
service_creation()