Source code for morse.modifiers.ned

import logging; logger = logging.getLogger("morse." + __name__)
import math

from morse.core.modifier import Modifier

[docs]class MorseNEDClass(Modifier): """ Convert between ENU and NED coordinates. """
[docs] def register_component(self, component_name, component_instance, mod_data): """ Add the corresponding function to a component. """ # Extract the information for this modifier # This will be tailored for each middleware according to its needs function_name = mod_data[1] try: # Get the reference to the function function = getattr(self, function_name) except AttributeError as detail: logger.error("%s. Check the 'component_config.py' file for typos" % detail) return # Choose what to do, depending on the function being used # Data read functions if function_name == "ned_to_blender": component_instance.input_modifiers.append(function) # Data write functions elif function_name == "blender_to_ned": component_instance.output_modifiers.append(function) # Data read functions if function_name == "ned_angle_to_blender": component_instance.input_modifiers.append(function) # Data write functions elif function_name == "blender_to_ned_angle": component_instance.output_modifiers.append(function)
[docs] def blender_to_ned(self, component_instance): """ Convert the coordinates from Blender to UTM reference. """ tmp = component_instance.local_data['x'] component_instance.local_data['x'] = component_instance.local_data['y'] component_instance.local_data['y'] = tmp component_instance.local_data['z'] = -component_instance.local_data['z']
[docs] def ned_to_blender(self, component_instance): """ Convert the coordinates from UTM to Blender reference. """ tmp = component_instance.local_data['x'] component_instance.local_data['x'] = component_instance.local_data['y'] component_instance.local_data['y'] = tmp component_instance.local_data['z'] = -component_instance.local_data['z']
[docs] def blender_to_ned_angle(self, component_instance): """ Convert the coordinates from Blender to UTM reference. """ try: roll = math.pi/2 - component_instance.local_data['yaw'] component_instance.local_data['yaw'] = component_instance.local_data['roll'] component_instance.local_data['pitch'] = -component_instance.local_data['pitch'] component_instance.local_data['roll'] = roll except KeyError as detail: logger.warning("Unable to use 'blender_to_ned_angle component %s. It does not contain the item %s in its 'local_data' dictionary" % (component_instance.bge_object.name, detail))
[docs] def ned_angle_to_blender(self, component_instance): """ Convert the coordinates from UTM to Blender reference. """ try: yaw = math.pi/2 - component_instance.local_data['roll'] component_instance.local_data['pitch'] = -component_instance.local_data['pitch'] component_instance.local_data['roll'] = component_instance.local_data['yaw'] component_instance.local_data['yaw'] = yaw except KeyError as detail: logger.warning("Unable to use 'ned_angle_to_blender' on component %s. It does not contain the item %s in its 'local_data' dictionary" % (component_instance.bge_object.name, detail))