Source code for base.depth_camera_testing

#! /usr/bin/env python
"""
This script tests the Depth camera in MORSE.
"""

import sys
import math
import struct
import base64
from morse.testing.testing import MorseTestCase
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]class DepthCameraTest(MorseTestCase):
[docs] def setUpEnv(self): """ Defines the test scenario """ robot = ATRV() motion = MotionVW() robot.append(motion) motion.add_stream('socket') camera = DepthCamera() camera.translate(z = 1) camera.frequency(3) robot.append(camera) camera.add_stream('socket') env = Environment('indoors-1/boxes')
# No fastmode here, no MaterialIndex in WIREFRAME mode: AttributeError: # 'KX_PolygonMaterial' object has no attribute 'getMaterialIndex'
[docs] def test_depth_camera(self): """ Assert that for every points : near <= z <= far """ with Morse() as morse: # turn around morse.robot.motion.publish({'v': 1, 'w': 1}) for step in range(5): msg = morse.robot.camera.get() data = base64.b64decode( msg['points'] ) # assert that : near <= z <= far for i in range(0, len(data) - 12, 12): xyz = struct.unpack('fff', data[i:i+12]) self.assertGreaterEqual(xyz[2], 1) self.assertLessEqual(xyz[2], 20) morse.sleep(0.2) # wait for turning
########################## Run these tests ########################## if __name__ == "__main__": from morse.testing.testing import main main(DepthCameraTest)