You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

126 lines
7.3 KiB

# License: Apache 2.0. See LICENSE file in root directory.
# Copyright(c) 2022 Intel Corporation. All Rights Reserved.
#test:donotrun:!dds
#test:retries:gha 2
from rspy import log, test
log.nested = 'C '
import dds
import pyrealsense2 as rs
if log.is_debug_on():
rs.log_to_console( rs.log_severity.debug )
from time import sleep
context = rs.context( { 'dds': { 'enabled': True, 'domain': 123 }} )
only_sw_devices = int(rs.product_line.sw_only) | int(rs.product_line.any_intel)
import os.path
cwd = os.path.dirname(os.path.realpath(__file__))
remote_script = os.path.join( cwd, 'device-broadcaster.py' )
with test.remote( remote_script, nested_indent=" S" ) as remote:
remote.wait_until_ready()
#
#############################################################################################
#
test.start( "D435i intrinsics" )
try:
remote.run( 'instance = broadcast_device( d435i, d435i.device_info )' )
n_devs = 0
for dev in dds.wait_for_devices( context, only_sw_devices ):
n_devs += 1
test.check_equal( n_devs, 1 )
sensors = {sensor.get_info( rs.camera_info.name ) : sensor for sensor in dev.query_sensors()}
sensor = sensors['Stereo Module']
for profile in sensor.get_stream_profiles() :
if profile.stream_type() == rs.stream.depth :
depth_profile = profile.as_video_stream_profile()
if depth_profile.width() == 256 and depth_profile.height() == 144 :
test.check_equal( depth_profile.get_intrinsics().ppx, 128.2379150390625 )
test.check_equal( depth_profile.get_intrinsics().ppy, 69.3431396484375 )
test.check_equal( depth_profile.get_intrinsics().fx, 631.3428955078125 )
test.check_equal( depth_profile.get_intrinsics().fy, 631.3428955078125 )
if depth_profile.width() == 848 and depth_profile.height() == 100 :
test.check_equal( depth_profile.get_intrinsics().ppx, 424.1576232910156 )
test.check_equal( depth_profile.get_intrinsics().ppy, 48.239837646484375 )
test.check_equal( depth_profile.get_intrinsics().fx, 418.2646789550781 )
test.check_equal( depth_profile.get_intrinsics().fy, 418.2646789550781 )
if profile.stream_type() == rs.stream.infrared and profile.stream_index() == 1 :
ir1_profile = profile.as_video_stream_profile()
if ir1_profile.width() == 1280 and ir1_profile.height() == 720 :
test.check_equal( ir1_profile.get_intrinsics().ppx, 640.2379150390625 )
test.check_equal( ir1_profile.get_intrinsics().ppy, 357.3431396484375 )
test.check_equal( ir1_profile.get_intrinsics().fx, 631.3428955078125 )
test.check_equal( ir1_profile.get_intrinsics().fy, 631.3428955078125 )
test.check_equal( ir1_profile.get_intrinsics().model, rs.distortion.brown_conrady )
test.check_equal_lists( ir1_profile.get_intrinsics().coeffs, [0.0,0.0,0.0,0.0,0.0] )
if ir1_profile.width() == 1280 and ir1_profile.height() == 800 :
test.check_equal( ir1_profile.get_intrinsics().ppx, 640.2379150390625 )
test.check_equal( ir1_profile.get_intrinsics().ppy, 397.3431396484375 )
test.check_equal( ir1_profile.get_intrinsics().fx, 631.3428955078125 )
test.check_equal( ir1_profile.get_intrinsics().fy, 631.3428955078125 )
if ir1_profile.width() == 424 and ir1_profile.height() == 240 :
test.check_equal( ir1_profile.get_intrinsics().ppx, 212.0788116455078 )
test.check_equal( ir1_profile.get_intrinsics().ppy, 119.07991790771484 )
test.check_equal( ir1_profile.get_intrinsics().fx, 209.13233947753906 )
test.check_equal( ir1_profile.get_intrinsics().fy, 209.13233947753906 )
if profile.stream_type() == rs.stream.infrared and profile.stream_index() == 2 :
ir2_profile = profile.as_video_stream_profile()
if ir1_profile.width() == 480 and ir2_profile.height() == 270 :
test.check_equal( ir2_profile.get_intrinsics().ppx, 240.08921813964844 )
test.check_equal( ir2_profile.get_intrinsics().ppy, 134.00367736816406 )
test.check_equal( ir2_profile.get_intrinsics().fx, 236.7535858154297 )
test.check_equal( ir2_profile.get_intrinsics().fy, 236.7535858154297 )
sensor = sensors['RGB Camera']
for profile in sensor.get_stream_profiles() :
if profile.stream_type() == rs.stream.color :
color_profile = profile.as_video_stream_profile()
if color_profile.width() == 320 and color_profile.height() == 180 :
test.check_equal( color_profile.get_intrinsics().ppx, 161.7417755126953 )
test.check_equal( color_profile.get_intrinsics().ppy, 90.47455596923828 )
test.check_equal( color_profile.get_intrinsics().fx, 227.0221710205078 )
test.check_equal( color_profile.get_intrinsics().fy, 227.1049346923828 )
test.check_equal( color_profile.get_intrinsics().model, rs.distortion.inverse_brown_conrady )
test.check_equal_lists( color_profile.get_intrinsics().coeffs, [0.0,0.0,0.0,0.0,0.0] )
if color_profile.width() == 960 and color_profile.height() == 540 :
test.check_equal( color_profile.get_intrinsics().ppx, 485.2253112792969 )
test.check_equal( color_profile.get_intrinsics().ppy, 271.4236755371094 )
test.check_equal( color_profile.get_intrinsics().fx, 681.0665283203125 )
test.check_equal( color_profile.get_intrinsics().fy, 681.3148193359375 )
if color_profile.width() == 1920 and color_profile.height() == 1080:
test.check_equal( color_profile.get_intrinsics().ppx, 970.4506225585938 )
test.check_equal( color_profile.get_intrinsics().ppy, 542.8473510742188 )
test.check_equal( color_profile.get_intrinsics().fx, 1362.133056640625 )
test.check_equal( color_profile.get_intrinsics().fy, 1362.629638671875 )
sensor = sensors['Motion Module']
for profile in sensor.get_stream_profiles():
if test.check_equal( profile.stream_type(), rs.stream.motion ):
gyro_profile = profile.as_motion_stream_profile()
test.check_equal_lists( gyro_profile.get_motion_intrinsics().data, [[1.0,0.0,0.0,0.0],[0.0,1.0,0.0,0.0],[0.0,0.0,1.0,0.0]] )
test.check_equal_lists( gyro_profile.get_motion_intrinsics().noise_variances, [0.0,0.0,0.0] )
test.check_equal_lists( gyro_profile.get_motion_intrinsics().bias_variances, [0.0,0.0,0.0] )
# There's currently no way to get the accelerometer intrinsics (which are set the same anyway)
remote.run( 'close_server( instance )' )
except:
test.unexpected_exception()
dev = None
test.finish()
#
#############################################################################################
context = None
test.print_results_and_exit()