Source code for base.airspeed_testing

#! /usr/bin/env python
"""
This script tests some of the base functionalities of MORSE.
"""

import sys
import math
from morse.testing.testing import MorseMoveTestCase
from pymorse import Morse

# Include this import to be able to use your test file as a regular 
# builder script, ie, usable with: 'morse [run|exec] base_testing.py
try:
    from morse.builder import *
except ImportError:
    pass

[docs]def send_speed(s, morse, x, y, w, t): s.publish({'x' : x, 'y' : y, 'w' : w})
[docs]class Airspeed_Test(MorseMoveTestCase):
[docs] def setUpEnv(self): """ Defines the test scenario, using the Builder API. """ robot = Morsy() motion = MotionXYW() robot.append(motion) motion.add_stream('socket') airspeed = Airspeed() airspeed.rotate(z = math.pi / 2) # measure speed against Y airspeed.add_stream('socket') airspeed.properties(ComputationMode = 'Velocity') robot.append(airspeed) airspeed_pos = Airspeed() airspeed_pos.rotate(z = math.pi / 2) # measure speed against Y airspeed_pos.add_stream('socket') airspeed_pos.properties(ComputationMode = 'Position') robot.append(airspeed_pos) env = Environment('empty', fastmode = True) env.add_service('socket')
def _test_airspeed_helper(self, vx, vy, expected): delta = 0.01 self.xyw.publish({'x' : vx, 'y': vy, 'w': 0.0}) self.morse.sleep(0.1) diff_pressure = self.airspeed_stream.get() diff_pressure_pos = self.airspeed_pos_stream.get() self.assertAlmostEqual(diff_pressure['diff_pressure'], expected, delta = delta) self.assertAlmostEqual(diff_pressure_pos['diff_pressure'], expected, delta = delta)
[docs] def test_airspeed(self): with Morse() as morse: self.morse = morse self.xyw = morse.robot.motion self.airspeed_stream = morse.robot.airspeed self.airspeed_pos_stream = morse.robot.airspeed self._test_airspeed_helper(0.0, 0.0, 0.0) # no speed in the direction of the sensor ... self._test_airspeed_helper(1.0, 0.0, 0.0) # now measuring some diff_pressure self._test_airspeed_helper(0.0, 1.0, 0.55) # scale by 4 if we increase speed by 2 self._test_airspeed_helper(0.0, 2.0, 2.30) # Inversing speed, same differential_pressure self._test_airspeed_helper(0.0, -2.0, 2.30)
########################## Run these tests ########################## if __name__ == "__main__": from morse.testing.testing import main main(Airspeed_Test)