Skip to main content

JSON Basics

The JSON config files allow you to have a fine control over the Calyo SENSUS SDK and the functionally of your sensor.

{
"type" : "calyosensus",
"pipelines" : [ <Array of Pipleline Objects> ]
}

Pipeline Object​

Each pipeline object consists of an ID, reader, writer and processor objects. By arranging one or many of these objects with varying data inputs, outputs and processing a wide variety of complex processing is achievable.

{
"id" : "example_pipeline_object",
"reader" : {
"type" : "<Reader_Type>"
},
"writer" : {
"type" : "<Writer_Type>"
},
"processor" : {
"type" : "<Processor_Type>"
}
}

Readers​

By choosing a reader objects type you can vary the input datasource for a pipeline object for processing. Each type is then accompanied by a series of additional parameter.

DeviceReader​

"reader" : { 
"type" : "DeviceReader",
"serial_number" : "CP66156A50004",
"num_cycles" : 10,
"max_distance" : 5.0
},

FrameBufferReader​

"reader" : {
"type" : "FrameBufferReader",
"source" : "<id_of_previous_pipeline_object>"
},

XMLReader​

"reader" : {
"type" : "XMLReader",
"input_path" : "/robot_ws/dataset1/"
},

RosDatasetSubscriber​

Work in progress

"reader" : {
"type" : "RosDatasetSubscriber",
"topic_name" : "example"
},

Writers​

The writer field functions in the same way a the reader field, however configure what should happen to the data post processing. This for example could buffered for a subsiquent pipeline object, written to file or sent over ROS2.

XMLWriter​

"writer" : {
"type" : "XMLWriter",
"output_path" : "/robot_ws/dataset_testing/"
},

RosDatasetPublisher​

"writer" : {
"type" : "RosDatasetPublisher",
"topic_name" : "signals",
"frame_id" : "my_frame"
},

FrameBufferWriter​

"writer" : {
"type" : "FrameBufferWriter"
},

Processors​

The processor felid dictates the manipulation of the data from raw acoustic signals to a usable images or point cloud data.

Imaging Pipeline​

"processor" : {
"type" : {
"stage" : "log_conversion",
"configuration_options" : {
"algorithm" : "precision",
"dimensions" : 2
},
"runtime_parameters" : {
"x_min" : -1.5,
"x_max" : 1.5,
"r_min" : 0.5,
"r_max" : 10,
"r_step" : 0.1,
"pixel_size" : 0.05,
"angle_limit_enable" : true,
"angle_limit_degrees" : 86.0,
"filter_half_bandwidth" : 0.8,
"filter_use_hanning" : true,
"normalisation_mode" : "fixed_value",
"normalisation_value" : 0.02
}
}