|
@@ -50,15 +50,15 @@ class ArduinoROS():
|
|
|
#读取模拟引脚数值的服务
|
|
|
rospy.Service('~analog_read', AnalogRead, self.AnalogReadHandler)
|
|
|
|
|
|
- #控制摄像头转动的服务
|
|
|
- rospy.Service('~camera_control', CameraControl, self.CameraControlHandler)
|
|
|
-
|
|
|
# A service to get new pid params
|
|
|
rospy.Service('~dynamic_pid', DynamicPID, self.DynamicPIDHandler)
|
|
|
|
|
|
#用来获取红外测据传感器距离信息的服务
|
|
|
rospy.Service('~getInfraredDistance', GetInfraredDistance, self.GetInfraredDistanceHandler)
|
|
|
|
|
|
+ #设置指定舵机转动到指定角度的服务
|
|
|
+ rospy.Service('~servo_write', ServoWrite, self.ServoWriteHandler)
|
|
|
+
|
|
|
#当节点退出的时候执行的回调函数
|
|
|
rospy.on_shutdown(self.shutdown)
|
|
|
|
|
@@ -137,10 +137,6 @@ class ArduinoROS():
|
|
|
value = self.controller.analog_read(req.pin)
|
|
|
return AnalogReadResponse(value)
|
|
|
|
|
|
- def CameraControlHandler(self, req):
|
|
|
- self.controller.camera_angle(req.servo_id, req.servo_angle)
|
|
|
- return CameraControlResponse()
|
|
|
-
|
|
|
def GetInfraredDistanceHandler(self, req):
|
|
|
value = self.controller.detect_distance()
|
|
|
return GetInfraredDistanceResponse(value[0]/100.0, value[1]/100.0, value[2]/100.0)
|
|
@@ -150,6 +146,10 @@ class ArduinoROS():
|
|
|
req.value3, req.value4, 0, 50)
|
|
|
return DynamicPIDResponse()
|
|
|
|
|
|
+ def ServoWriteHandler(self, req):
|
|
|
+ self.controller.servo_write(req.servo_id, req.servo_angle)
|
|
|
+ return ServoWriteResponse()
|
|
|
+
|
|
|
#断开与下位机的连接,先向小车发送停止运动命令,最后断开通信接口
|
|
|
def shutdown(self):
|
|
|
rospy.logwarn("Shutting down Arduino Node...")
|