Source code for morse.sensors.radar_altimeter
import logging
logger = logging.getLogger("morse." + __name__)
from morse.core.sensor import Sensor
from morse.helpers.components import add_data, add_property
[docs]class RadarAltimeter(Sensor):
"""
Sensor to compute the distance to the ground
To work properly, the ground and relevant obstacles must be marked as Actor.
"""
_name = "Radar Altimeter"
_short_desc = "Compute the distance to the ground"
add_data('z', 0.0, "float", 'Distance to "ground"')
add_property('_max_range', 30.0, "MaxRange", "float",
"Maximum distance to which ground is detected."
"If nothing is detected, return +infinity")
def __init__(self, obj, parent=None):
""" Constructor method.
"""
logger.info('%s initialization' % obj.name)
# Call the constructor of the parent class
Sensor.__init__(self, obj, parent)
logger.info('Component initialized, runs at %.2f Hz', self.frequency)
[docs] def default_action(self):
"""
Send a laser directly underneath and check the position of what it hits.
"""
target = self.position_3d.translation
target[2] -= 1.0
_, point, _ = self.bge_object.rayCast(target, None, self._max_range)
logger.debug("RadarAltimeter points to %s and hits %s" % (target, point))
if point:
self.local_data['z'] = self.bge_object.getDistanceTo(point)
else:
self.local_data['z'] = float('inf')