{
	"description": "Details on position and orientation sensors",
	"type": "object",
	"$schema": "http://json-schema.org/draft-04/schema#",
	"title": "Pose Sensors",
	"required": [
		"gyroscope",
		"accelerometer",
		"magnetic_field_sensor"
	],
	"definitions": {
		"vector": {
			"type": "array",
			"minItems": 3,
			"items": {
				"type": "number",
				"description": "Index 0=X, 1=Y, 2=Z component"
			},
			"maxItems": 3
		}
	},
	"properties": {
		"magnetic_field_sensor": {
			"type": "object",
			"description": "Magnetic Field Sensor details",
			"properties": {
				"z_axis": {
					"description": "Sensitive Z axis of sensor at frame angle = 0",
					"$ref": "#/definitions/vector"
				},
				"fixed": {
					"description": "Distortion of magnetic field caused by non-rotating scanner part",
					"$ref": "#/definitions/vector"
				},
				"offset": {
					"description": "Value to be subtracted from raw measurement values",
					"$ref": "#/definitions/vector"
				},
				"y_axis": {
					"description": "Sensitive Y axis of sensor at frame angle = 0",
					"$ref": "#/definitions/vector"
				},
				"x_axis": {
					"description": "Sensitive X axis of sensor at frame angle = 0",
					"$ref": "#/definitions/vector"
				},
				"relative_nonlinearity": {
					"description": "Relative nonlinearity, dimensionless",
					"$ref": "#/definitions/vector"
				},
				"unit": {
					"type": "number",
					"description": "Unit of raw data and calibration values, 1 LSB in nT",
					"minimum": 0,
					"exclusiveMinimum": true
				}
			},
			"required": [
				"unit",
				"x_axis",
				"y_axis",
				"z_axis",
				"offset",
				"fixed",
				"relative_nonlinearity"
			]
		},
		"gyroscope": {
			"type": "object",
			"description": "Gyroscope details",
			"properties": {
				"z_axis": {
					"description": "Sensitive Z axis of sensor at frame angle = 0",
					"$ref": "#/definitions/vector"
				},
				"origin": {
					"description": "Sensor origin in SOCS [m] at frame angle = 0",
					"$ref": "#/definitions/vector"
				},
				"offset": {
					"description": "Value to be subtracted from raw measurement values",
					"$ref": "#/definitions/vector"
				},
				"y_axis": {
					"description": "Sensitive Y axis of sensor at frame angle = 0",
					"$ref": "#/definitions/vector"
				},
				"x_axis": {
					"description": "Sensitive X axis of sensor at frame angle = 0",
					"$ref": "#/definitions/vector"
				},
				"relative_nonlinearity": {
					"description": "Relative nonlinearity, dimensionless",
					"$ref": "#/definitions/vector"
				},
				"unit": {
					"type": "number",
					"description": "Unit of raw data and calibration values, 1 LSB in rad/s",
					"minimum": 0,
					"exclusiveMinimum": true
				}
			},
			"required": [
				"unit",
				"x_axis",
				"y_axis",
				"z_axis",
				"offset",
				"origin",
				"relative_nonlinearity"
			]
		},
		"accelerometer": {
			"type": "object",
			"description": "Accelerometer details",
			"properties": {
				"z_axis": {
					"description": "Sensitive Z axis of sensor at frame angle = 0",
					"$ref": "#/definitions/vector"
				},
				"origin": {
					"description": "Sensor origin in SOCS [m] at frame angle = 0",
					"$ref": "#/definitions/vector"
				},
				"offset": {
					"description": "Value to be subtracted from raw measurement values",
					"$ref": "#/definitions/vector"
				},
				"y_axis": {
					"description": "Sensitive Y axis of sensor at frame angle = 0",
					"$ref": "#/definitions/vector"
				},
				"x_axis": {
					"description": "Sensitive X axis of sensor at frame angle = 0",
					"$ref": "#/definitions/vector"
				},
				"relative_nonlinearity": {
					"description": "Relative nonlinearity, dimensionless",
					"$ref": "#/definitions/vector"
				},
				"unit": {
					"type": "number",
					"description": "Unit of raw data and calibration values, 1 LSB in 9.81 m/s²",
					"minimum": 0,
					"exclusiveMinimum": true
				}
			},
			"required": [
				"unit",
				"x_axis",
				"y_axis",
				"z_axis",
				"offset",
				"origin",
				"relative_nonlinearity"
			]
		}
	}
}