Hola, les hago una pregunta que la verdad no la puedo solucionar. Yo estoy haciendo la parte de service de rosject y en el codigo se me esta complicando ya que me tengo que suscribir a las lecturas del sensor laser y tengo que crear un servicio. En el cual voy a tener que tener dos funciones callback(uno para suscribirse y otra para la creación del servicio). Y es ahi donde se me complica porque como hago eso? Yo habia creado solo una función callback pero claro no obtenia las lecturas del sensor laser ya que no estaba suscipto al topico, entonces me suscribi pero ahi me lleno de dudas ya que nose como unir eso. Aca les dejo el codigo.
#--------------------------------Código-----------------------------------------
#!/usr/bin/env python
import rospy
from scan_test.srv import FindWall, FindWallResponse, FindWallRequest
from sensor_msgs.msg import LaserScan
from geometry_msgs.msg import Twist
pub = rospy.Publisher("/cmd_vel", Twist, queue_size=1)
move = Twist()
laser = LaserScan()
def publicando(x, z):
move.linear.x = x
move.linear.z = z
pub.publish(move)
def callback(laser):
print(“Frente :”, laser.ranges[360])
print("270 :", laser.ranges[270])
def my_callback(data):
frente = laser.ranges[360]
rayo_270 = laser.ranges[270]
if frente > 0.3:
publicando(0.2, 0)
else:
while rayo_270 > 0.3:
publicando(0, 0.2)
respuesta = FindWallResponse()
respuesta.wallfound = True
return respuesta
rospy.init_node(‘servidor_servicios’)
suscriber = rospy.Subscriber(’/scan’, LaserScan, callback)
my_service = rospy.Service(’/my_service’, FindWall, my_callback) # create the Service called my_service with the defined callback
rospy.spin()
#---------------------------------Fin------------------------------------------