|
@@ -32,13 +32,11 @@ class MessageType:
|
|
|
ULTRASONIC = 7
|
|
|
|
|
|
class Sensor(object):
|
|
|
- def __init__(self, controller, name, pin, rate, frame_id, direction="input", **kwargs):
|
|
|
+ def __init__(self, controller, name, pin, rate, frame_id, **kwargs):
|
|
|
self.controller = controller
|
|
|
self.name = name
|
|
|
- self.pin = pin
|
|
|
+ self.pin = pin
|
|
|
self.rate = rate
|
|
|
- self.direction = direction
|
|
|
-
|
|
|
self.frame_id = frame_id
|
|
|
self.value = None
|
|
|
|
|
@@ -49,23 +47,8 @@ class Sensor(object):
|
|
|
def poll(self):
|
|
|
now = rospy.Time.now()
|
|
|
if now > self.t_next:
|
|
|
- if self.direction == "input":
|
|
|
- try:
|
|
|
- self.value = self.read_value()
|
|
|
- #rospy.loginfo("read value: "+str(self.value))
|
|
|
- except:
|
|
|
- try:
|
|
|
- rospy.logwarn("Failed to read sensor values, try again. ")
|
|
|
- self.ack = self.read_value()
|
|
|
- except:
|
|
|
- rospy.logerr("Sensor read value error !")
|
|
|
- return
|
|
|
- else:
|
|
|
- try:
|
|
|
- self.ack = self.write_value()
|
|
|
- except:
|
|
|
- rospy.logerr("Sensor write value error !")
|
|
|
- return
|
|
|
+ self.value = self.read_value()
|
|
|
+ #rospy.loginfo("read value: "+str(self.value))
|
|
|
|
|
|
# For range sensors, assign the value to the range message field
|
|
|
if self.message_type == MessageType.RANGE:
|
|
@@ -104,30 +87,6 @@ class AnalogSensor(Sensor):
|
|
|
def write_value(self, value):
|
|
|
return self.controller.analog_write(self.pin, value)
|
|
|
|
|
|
-class AnalogFloatSensor(Sensor):
|
|
|
- def __init__(self, *args, **kwargs):
|
|
|
- super(AnalogFloatSensor, self).__init__(*args, **kwargs)
|
|
|
-
|
|
|
- self.message_type = MessageType.ANALOG
|
|
|
-
|
|
|
- self.msg = AnalogFloat()
|
|
|
- self.msg.header.frame_id = self.frame_id
|
|
|
-
|
|
|
- self.pub = rospy.Publisher("~sensor/" + self.name, AnalogFloat, queue_size=5)
|
|
|
-
|
|
|
- if self.direction == "output":
|
|
|
- self.controller.pin_mode(self.pin, OUTPUT)
|
|
|
- else:
|
|
|
- self.controller.pin_mode(self.pin, INPUT)
|
|
|
-
|
|
|
- self.value = LOW
|
|
|
-
|
|
|
- def read_value(self):
|
|
|
- return self.controller.analog_read(self.pin)
|
|
|
-
|
|
|
- def write_value(self, value):
|
|
|
- return self.controller.analog_write(self.pin, value)
|
|
|
-
|
|
|
class DigitalSensor(Sensor):
|
|
|
def __init__(self, *args, **kwargs):
|
|
|
super(DigitalSensor, self).__init__(*args, **kwargs)
|
|
@@ -143,7 +102,6 @@ class DigitalSensor(Sensor):
|
|
|
return self.controller.digital_read(self.pin)
|
|
|
|
|
|
def write_value(self):
|
|
|
- # Alternate HIGH/LOW when writing at a fixed rate
|
|
|
self.value = not self.value
|
|
|
return self.controller.digital_write(self.pin, self.value)
|
|
|
|