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
}
}