Profiles
Profiles are a set of configurations saved by the user for a specific pipeline. These forms are automatically generated from the corresponding JSON schema for the selected profile type. There are many avaliable profile types avaliable to try out, each coming with their own use cases and features.
CockpitViewer
This profile is made to work seemlessly with BlueOS Cockpit. It streams all three cameras, center, left, and right in sync to the browser in H264. It implements the snapshot interface to save all three streams to disk.
This profile is best integrated with BlueOS Cockpit for navigation, site surveying, or other tasks where recording the streams is nessessary.
NOTE Due to the limited bandwidth of the BlueROV connection and the onboard processing power of the Raspberry Pi, stream quality is limited to around 15FPS at 1080p for the color, and 720p for the stereo cameras. Adjusting the resolution and framerate may result in a complete loss of the stream.
CockpitColor
This profile is the counterpart to CockpitViewer, seemlessly integrating with BlueOS Cockpit, but providing maximum 4K resolution from the center color camera only. Datasets can be quite large but provide the highest level of detail!
This profile is best integrated with BlueOS Cockpit for navigation, site surveying, or other tasks where recording the streams is nessessary, but precise measurments are not required for reconstruction missions.
RTSPLiveStream
This profile streams all three cameras, center, left, and right in sync to an RTSP server. It uses OAK's video encoding to stream in H264 or MJPEG format. It integrates with the BlueOS extension Cockpit to allow the user to view the stream natively in the browser.
This profile is best used when needing to have an external application or device view the camera stream or record it for later use. It is also useful to view the stream while using Cockpit to control the vehicle.
NOTE If encoding is set to MJPEG, BlueOS Cockpit will not be able to view the stream.
DepthStream
This profile enables the full control of the onboard disparity calculation and depth map generation. It streams the disparity or depth map through a custom Gstreamer pipeline that can be viewed or recorded natively on a remote device.
This profile can be used in order to fine tune the disparity calculation hyperparameters or stream the depth map to a remote device for viewing or recording for later processing.
NOTE If enabled, the disparity/depth map will be returned as a 16 bit gray scale image. In Gstreamer, use the caps format=GRAY16_LE
to parse it. Otherwise, an 8bit gray scale image will be returned and the caps format=GRAY8
should be used. If the selection to colorize the map is enabled, it will be an BGR image and the caps format=BGR
should be used.
RawRecorder
The profile is used to record raw and undistorted images (the calibration is not used) from all three cameras, left, right, and center in the largest resolution the user needs. It will stream a preview of the center color camera and left view in BGR format at 1280x400 resolution through a custom Gstreamer pipeline. It implements the snapshots interface, saving the images to left, right, and center folders respectively on disk.
This profile is best used when needing maximum quality and resolution images from the cameras for calibration or other processes that require raw images.
RGBCenterBasic
This profile is a test profile used to demonstrate the functionality of the connected OAK camera and Madrona's features. It streams the center color camera through OpenCV via a Gstreamer pipeline. It implements the snapshots and camera controls interfaces.
This profile is a good starting point for new users to get a feel for the system and how to interact with the camera. Many complex Gstreamer pipelines can be tested to better understand the capabilities of the camera.
Some example pipelines to try are:
Stream and encode to h264 with low latency in CBR, mux in RTP packets, and send to UDP sink
appsrc ! queue ! videoconvert ! video/x-raw,framerate=30/1,format=I420 ! x264enc tune=zerolatency ! rtph264pay ! udpsink host=0.0.0.0 port=1234
Stream and encode to h264 in VBR to preserve quality, mux in RTP packets, and send to UDP sink
appsrc ! queue ! videoconvert ! video/x-raw,framerate=30/1,format=I420 ! x264enc pass=pass1 ! rtph264pay ! udpsink host=0.0.0.0 port=1234
Stream and encode to mjpeg, mux in RTP packets, and send to UDP sink
appsrc ! queue ! videoconvert ! video/x-raw,framerate=30/1,format=I420 ! jpegenc quality=75 ! rtpjpegpay ! udpsink host=0.0.0.0 port=1234
Stream, encode mjpeg, and save an AVI file every 10 seconds
appsrc ! queue ! videoconvert ! video/x-raw,framerate=30/1,format=I420 ! jpegenc quality=75 ! jpegparse ! splitmuxsink muxer=avimux max-size-time=10000000000 location=recording_%05d.avi