Source code for base.barometer_testing
#! /usr/bin/env python
"""
This script tests the 'data stream' oriented feature of the socket interface.
"""
from morse.testing.testing import MorseTestCase
try:
# Include this import to be able to use your test file as a regular
# builder script, ie, usable with: 'morse [run|exec] <your test>.py
from morse.builder import *
except ImportError:
pass
import sys
from pymorse import Morse
[docs]def send_pose(s, x, y, z):
s.publish({'x' : x, 'y' : y, 'z' : z, 'yaw' : 0.0, 'pitch' : 0.0, 'roll' : 0.0})
[docs]class BarometerTest(MorseTestCase):
[docs] def setUpEnv(self):
robot = Morsy()
barometer = Barometer()
barometer.add_stream('socket')
barometer.properties(DischargingRate = 10.0)
robot.append(barometer)
teleport = Teleport()
teleport.add_stream('socket')
robot.append(teleport)
env = Environment('empty', fastmode = True)
env.add_service('socket')
[docs] def test_read_barometer(self):
""" Test if we can connect to the pose data stream, and read from it.
"""
with Morse() as morse:
bat_stream = morse.robot.barometer
teleport_stream = morse.robot.teleport
bat = bat_stream.get()
self.assertAlmostEqual(bat['pressure'], 101325.0, delta = 0.1)
# pressure is independant of position (x,y)
send_pose(teleport_stream, 5.0, 2.0, 0.0)
morse.sleep(0.01)
bat = bat_stream.get()
self.assertAlmostEqual(bat['pressure'], 101325.0, delta = 0.1)
# Pressure computed from
# http://www.digitaldutch.com/atmoscalc/
send_pose(teleport_stream, 0.0, 0.0, 100.0)
morse.sleep(0.01)
bat = bat_stream.get()
self.assertAlmostEqual(bat['pressure'], 100129.0, delta = 0.1)
send_pose(teleport_stream, 0.0, 0.0, 1000.0)
morse.sleep(0.01)
bat = bat_stream.get()
self.assertAlmostEqual(bat['pressure'], 89871.0, delta = 0.1)
########################## Run these tests ##########################
if __name__ == "__main__":
from morse.testing.testing import main
main(BarometerTest)