Viewers are defined in a single array named viewer in JSON format.
Specifying viewers is optional. You may leave out specifying this in your configuration file. However, if you are specifying algorithms, here is an example:
... "viewer": [ { "type": "ADAS_VIEWER_CAMERA", "view": "ADAS_VIEW_FORWARD", "zoom_factor": 1, "background_color": { "red": 0.2, "green": 0.2, "blue": 0.2, "alpha": 1.0 }, "z_order": 0, "visible": true, "layouts" : [ { "view": "ADAS_VIEW_FORWARD", "layout": "camera_layout_1" }, { "view": "ADAS_VIEW_DRIVER", "layout": "camera_layout_1" }, { "view": "ADAS_VIEW_RADAR", "layout": "camera_layout_1" }, { "view": "ADAS_VIEW_NAVIGATION", "layout": "camera_layout_1" } ] }, { "type": "ADAS_VIEWER_POINT_CLOUD", "input": [ { "id": "front_lidar" } ], "view": "ADAS_VIEW_ISOMETRIC", "zoom_factor": 2, "z_order": 0, "visible": false, "range": { "x": 10000, "y": 5625, "z": 5000 }, "persistence": 1000, "position": { "x": -1245, "y": -932, "z": 0 }, "dimensions": { "width": 1864, "height": 1475, "depth": 4925 } }, { "type": "ADAS_VIEWER_OVERLAY", "input": [ { "id": "primary_gps" }, { "id": "primary_imu" } ], "view": "ADAS_VIEW_ISOMETRIC", "zoom_factor": 2, "z_order": 1, "visible": false, "enable_hud": false, "parent": 2, "layouts" : [ { "view": "ADAS_VIEW_RADAR", "layout": "overlay_layout_1" }, { "view": "ADAS_VIEW_NAVIGATION", "layout": "overlay_layout_2" } ] }, { "type": "ADAS_VIEWER_OVERLAY", "input": [ { "id": "secondary_gps" }, { "id": "secondary_imu" } ], "view": "ADAS_VIEW_FORWARD", "zoom_factor": 1, "z_order": 1, "visible": true, "enable_hud": true, "parent": 1, "layouts" : [ { "view": "ADAS_VIEW_FORWARD", "layout": "overlay_layout_3" }, { "view": "ADAS_VIEW_DRIVER", "layout": "overlay_layout_4" }, { "view": "ADAS_VIEW_RADAR", "layout": "overlay_layout_1" }, { "view": "ADAS_VIEW_NAVIGATION", "layout": "overlay_layout_2" } ] } ] ...
There are the attributes that you can use to configure a viewer.
... "visible": true, ...
... "zoom_factor": 1, ...
... "z_order": 1, ...
... "camera_layout_1": [ { "input": "forward_camera", "theta": 100, "rotation": { "yaw": 0, "pitch": 0, "roll": 0 }, "source_type": "texture", "destination_type": "full_screen" } ], ...then you can specify camera_layout_1 (the name of the camera layout) as the layout attribute in an entry of your layouts array for your viewer. For example:
... "layouts" : [ { "view": "ADAS_VIEW_FORWARD", "layout": "camera_layout_1" }, ... ] ...
... "enable_hud": true, ...
... "input": [ ... { "source": "sensor", "instance": "SENSOR_UNIT_5", "id": "primary_gps" }, ... ] ...then you can specify primary_gps as the id attribute in an entry of your input array for your viewer. For example:
... { "type": "ADAS_VIEWER_OVERLAY", "input": [ { "id": "primary_gps" }, { "id": "primary_imu" } ], ...
... "overlay_layout_1": [ { "type": "widget", "path": "/usr/share/images/car.png", "width": 18000, "length": 45000, "height": 15000 } ], ...then you can specify camera_layout_1 (the name of the camera layout) as the layout attribute in an entry of your layouts array for your viewer. For example:
... "layouts" : [ { "view": "ADAS_VIEW_RADAR", "layout": "overlay_layout_1" }, ... ] ...
... "viewer": [ { "type": "ADAS_VIEWER_CAMERA", ... }, { "type": "ADAS_VIEWER_POINT_CLOUD", ... }, { "type": "ADAS_VIEWER_OVERLAY", ... }, { "type": "ADAS_VIEWER_OVERLAY", ... ], ...then you can specify 2 (the viewer whose type is ADAS_VIEWER_OVERLAY) as the instance attribute in an entry of your output array for your algorithm. For example:
... { "type": "ADAS_VIEWER_OVERLAY", ... "parent": 2, ... }, ...
... "position": { "x": -1245, "y": -932, "z": 0 }, ...
... "dimensions": { "width": 1864, "height": 1475, "depth": 4925 } ...
... "input": [ ... { "source": "sensor", "name": "vlp-16", "id": "front_lidar" }, ... ] ...then you can specify front_lidar as the id attribute in an entry of your input array for your viewer. For example:
... { "type": "ADAS_VIEWER_POINT_CLOUD", "input": [ { "id": "front_lidar" } ], ...
... "range": { "x": 10000, "y": 5625, "z": 5000 }, ...