Fixed bug in Range sensor message type

This commit is contained in:
Patrick Goebel 2015-12-21 08:06:23 -08:00
parent 2de2028192
commit fcb662907e

View File

@ -40,11 +40,10 @@ class MessageType:
BOOL = 5 BOOL = 5
class Sensor(object): class Sensor(object):
def __init__(self, device, name, pin=None, type=None, rate=0, direction="input", frame_id="base_link", **kwargs): def __init__(self, device, name, pin=None, rate=0, direction="input", frame_id="base_link", **kwargs):
self.device = device self.device = device
self.name = name self.name = name
self.pin = pin self.pin = pin
self.type = type
self.rate = rate self.rate = rate
self.direction = direction self.direction = direction
self.frame_id = frame_id self.frame_id = frame_id
@ -155,7 +154,6 @@ class AnalogFloatSensor(Sensor):
self.write_value(req.value) self.write_value(req.value)
return AnalogFloatSensorWriteResponse() return AnalogFloatSensorWriteResponse()
class DigitalSensor(Sensor): class DigitalSensor(Sensor):
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
super(DigitalSensor, self).__init__(*args, **kwargs) super(DigitalSensor, self).__init__(*args, **kwargs)
@ -195,13 +193,10 @@ class DigitalSensor(Sensor):
self.write_value(req.value) self.write_value(req.value)
return DigitalSensorWriteResponse() return DigitalSensorWriteResponse()
class RangeSensor(Sensor):
class RangeSensor(AnalogFloatSensor):
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
super(RangeSensor, self).__init__(*args, **kwargs) super(RangeSensor, self).__init__(*args, **kwargs)
self.direction = "input"
self.message_type = MessageType.RANGE self.message_type = MessageType.RANGE
self.msg = Range() self.msg = Range()
@ -213,14 +208,12 @@ class RangeSensor(AnalogFloatSensor):
def read_value(self): def read_value(self):
self.msg.header.stamp = rospy.Time.now() self.msg.header.stamp = rospy.Time.now()
class SonarSensor(RangeSensor): class SonarSensor(RangeSensor):
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
super(SonarSensor, self).__init__(*args, **kwargs) super(SonarSensor, self).__init__(*args, **kwargs)
self.msg.radiation_type = Range.ULTRASOUND self.msg.radiation_type = Range.ULTRASOUND
class IRSensor(RangeSensor): class IRSensor(RangeSensor):
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
super(IRSensor, self).__init__(*args, **kwargs) super(IRSensor, self).__init__(*args, **kwargs)
@ -244,7 +237,6 @@ class Ping(SonarSensor):
return distance return distance
class GP2D12(IRSensor): class GP2D12(IRSensor):
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
super(GP2D12, self).__init__(*args, **kwargs) super(GP2D12, self).__init__(*args, **kwargs)
@ -256,7 +248,6 @@ class GP2D12(IRSensor):
def read_value(self): def read_value(self):
value = self.device.analog_read(self.pin) value = self.device.analog_read(self.pin)
# The GP2D12 cannot provide a meaning result closer than 3 cm. # The GP2D12 cannot provide a meaning result closer than 3 cm.
if value <= 3.0: if value <= 3.0:
return float('NaN') return float('NaN')
@ -318,3 +309,4 @@ class MaxEZ1Sensor(SonarSensor):
return self.device.get_MaxEZ1(self.trigger_pin, self.output_pin) return self.device.get_MaxEZ1(self.trigger_pin, self.output_pin)