Source code for morse.middleware.moos.sick
import logging; logger = logging.getLogger("morse." + __name__)
import pymoos.MOOSCommClient
from morse.middleware.moos import AbstractMOOS
from morse.core import blenderapi
[docs]class LIDARNotifier(AbstractMOOS):
""" Notify LIDAR """
[docs] def initialize(self):
AbstractMOOS.initialize(self)
# post lidar settings to the database only once at startup
cur_time=blenderapi.persistantstorage().time.time
self.m.Notify('sScanAngle',
self.component_instance.scan_window, cur_time)
self.m.Notify('sScanResolution',
self.component_instance.resolution, cur_time)
self.m.Notify('sScanRange',
self.component_instance.laser_range, cur_time)
[docs] def default(self, ci='unused'):
cur_time=pymoos.MOOSCommClient.MOOSTime()
num_readings = self.component_instance.scan_window / \
self.component_instance.resolution
# build string of the form: '[1x180]{4.9, 29.2, ..., 2.98}'
# replace [] in python string conversion to {} expected by MOOS parsing code
laserscan = str(self.data['range_list']).replace('[', '{').replace(']', '}')
# add array size to beginning of string
#laserscan = '[1x' + '{0:.0}'.format(num_readings) + ']'+laserscan
laserscan = '[1x' + '%.0f' % num_readings + ']'+laserscan
self.m.Notify('zLidarDist', laserscan, cur_time)