VideoRay Smart Camera (Part #74687)
1. Product Overview
The Smart Camera is an advanced imaging system designed for integration with VideoRay ROVs. It enhances underwater perception by delivering superior resolution and video quality over previous generations. Its built-in processing capability allows for real-time video processing, advanced camera control, and integration with onboard and topside control software.
Primary Function:
- Provides high-definition, real-time underwater video.
- Enables advanced computer vision and streaming capabilities.
- Integrates with existing VideoRay vehicle infrastructure via standard 9-pin connections.
Target Users:
- ROV operators in commercial, scientific, and defense sectors.
- Field technicians and mission specialists.
- Advanced system integrators developing custom tools and workflows.
Key Differentiators:
- Dual-streaming (4032×3040 and 1080×1620) via RTSP.
- Onboard Jetson Orin NX with EchoPilot AI carrier board.
- Web UI and WebSocket API for flexible remote control.
- Enhanced software-defined camera functions (e.g., HDR, PTZ).
2. What’s in the Box
Each Smart Camera package includes:
- Smart Camera assembly (with integrated processing and optics).
- Custom mount
- Pre-flashed firmware and default configuration.
- Ethernet 9-pin tether cable.
- User documentation and software tools pre-installed on compatible control tablets.
Note: Currently only available as a single bundled SKU. No alternate kit options.
3. Hardware Specifications
Optics:
- Lens: 2mm M12 fisheye (180° vertical / 120° horizontal field of view).
- Sensor: Arducam Mini HQ with M12 mount.
Resolution & Frame Rate:
- Full resolution: 4032×3040 @ 25 fps.
- Default Stream resolution: 1080×1620 @ 25 fps.
Video Streams:
- High-resolution stream: rtsp://192.168.1.27:8889/VR_Bow
- Default stream: rtsp://192.168.1.27:8888/VR_Bow
Embedded System:
- Processor: NVIDIA Jetson Orin NX
- Carrier Board: EchoPilot AI
Power Requirements:
- 12–24V input (power over tether via ROV comms module)
- Connected to the 24V bus on the power module by default
Connectivity:
- Ethernet over 9-pin connector
- Default IP address: 192.168.1.27
4. Installation & Setup
Physical Mounting:
- Mount the Smart Camera in the designated slot using the included bracket.
- Ensure the dome faces forward and is free of obstructions.
- To get the optimal field of view, ensure the Smart Camera pushed back as far as it can go.
Connection & Power:
- Plug the camera into a 9-pin port on the ROV’s comms module (default port: 7446).
- Camera powers on automatically when vehicle power is applied.
Software Preparation:
- The smart camera firmware comes pre-configured. Updates can be done OTA using the Settings page on the web UI
- Ensure Greensea configuration points to the correct IP address (192.168.1.27). Use the smart camera config tools before opening Workspace to make sure the smart cam is properly configured.
- When replacing the legacy camera with the Smart Camera, there are three config changes that need to take place (this should be handled by the config tools icons on the desktop). The file locations can be different depending on the version of Greensea’s Workspace, but the changes will be the same once you find the correct file.
5. Software Interface
Accessing the Camera:
The Smart Camera runs two servers that you can interface with.
- Web UI: http://192.168.1.27:8080
- WebSocket API: ws://192.168.1.27:9000
The Web UI should be used to handle most features and inquiries.
Web UI Features:
The Web UI is the primary method of advanced control and configuration of the Smart Camera. In the background, the Web UI connects to the websocket to send command and control message to the camera server.
It contains 6 organized pages:
- Home
- Intro page; it describes and links each other page. The firmware version is displayed at the top of this page.
- Settings
- Firmware Updates: enter a VideoRay verified blue_ring_server.deb or RELEASE.zip by clicking on the update box and click the Upload File button to begin a software or firmware update.
- Changing Power Mode: Changing the power mode changes the processing limits of the Smart Cam by enabling or disabling cpu cores. Once the power mode is changed, the camera will need to restart for the change to take place. The current power mode will be highlighted in red.
- Control
This page gives you real-time control all of the camera features. You can modify streams, capture media, and enable image-enhancing algorithms.
- PTZ: Pan, Tilt and Zoom controls. Pan and Tilt range from [-1, 1] where positive values are left and up. The zoom goes from [1, 10] where 10 would be a 10x zoom.
- Videobalance Settings: Modify the brightness, hue, contrast, and saturation of the stream. Brightness and Hue values range from [-1, 1] (0 default), and Contrast and Saturation values range from [0, 2] (1 default).
- Image-Enhancing Features: HDR (High Dynamic Range), GLG (Gray-Level-Grouping), and Auto-Image-stabilization, can all be toggled.
- Snapshots and Recordings: Media can be captured by clicking the UI buttons. They can be retrieved on the Media page. (Note: Media is saved to volatile memory and must be transferred before powering down the camera or it will be lost)
- Diagnostics
The diagnostics page allows the user to see all of the hardware statistics grabbed from an external pressure and temperature sensor, as well as the onboard tegrastats, showing parameters such as memory, pressure, and detailed temperatures of various components on the camera. (Note: the temperature of the SSD cannot exceed 70 degrees Celsius or it will enter READ-ONLY Mode and stop working)
- Pipeline
The pipeline is a developer tool used for debugging. It displays all the pipelines that are running and their respective elements, properties, and values from the GSTD Client server.
- Media
The media page is used to view, download, and delete snapshots and recordings that have been saved on the camera.
- Click the recording or snapshot to download it to your topside client device (ie. tablet). Once transferred, the media will be deleted on the camera for security reasons.
- You can click the trashcan icon to remove the media without transferring it.
WebSocket Control Protocol:
The Websocket Server handles all command and control messages on the camera. The websocket is used in the background of newer Greensea versions as well as the webserver. The websocket has a unique JSON format:
{
“op”: “publish”,
“type”: “u4k_camera_request”,
“topic”: “topic”,
“msg”: {
“command”: “cmd”,
“parameter”: “parameter”,
“value”: val
}
}
Inspired by the ROSBridge Protocol, the websocket protocol has a message which contains the command and topic which inspires the message. The default “msg” format contains a command, parameter, and value (if not a “get” command). The topics and their parameters are defined by a config.yaml file attached at the end of the documentation.
Standard Format:
- “op” – value should always be “publish” here to indicate you are sending message to the server
- “type” – value should always be “u4k_camera_request” for commands to the camera
- “topic” – one of the headers in the config.yaml (ie. camera, ptzr, videobalance, etc.)
- “command” – there are 4 command in the standard format with exceptions for special commands
- “set” – make the value of “parameter” equal to “value” (if out of bounds, it will be set to its max or min value; ignored if “value” is invalid)
- “get” – retrieve the value of the requested “parameter” from the server (no “value” required)
- “increment” – adjust the value of “parameter” by it’s current value + “value” (use negative numbers to decrement; only parameters with numeric values can be incremented)
- “reset” – reset to default value as defined by config.
- “parameter” – the camera setting or property that you want to change. Needs to fits within the topic.
- “value” – ensure the value is the correct type for the paramter you are adjusting. It will be the same type as defined in the config.yaml .
As an example, lets say you wanted to tell the smart camera to increment the tilt up by 1/10th of the total tilt range: the topic would be “ptzr”, and parameter would be “tilt”. The command would be “increment” Since tilt ranges from [-1, 1], 1/10th of the value would be 0.2.
{
“op”: “publish”,
“type”: “u4k_camera_request”,
“topic”: “ptzr”,
“msg”: {
“command”: “increment”,
“parameter”: “tilt”,
“value”: 0.2
}
}
Unique Commands:
Topic | Msg Format | Description |
hardware | command: status; command: power-mode, value: str | Retrieve the hardware diagnostic status. Change Power mode. Value is a str in [0,1,2,3] corresponding with the respective power mode. |
capture_snapshot | command: trigger, location: *str | Capture a snapshot. Optional parameter to specify the location for the snapshot to be saved. Note that the media webpage will not display media shown in a non-default directory. The server will repond with a “msg” displaying the location of the snapshot and a url to download the snapshot with an http request (if in a default directory). |
record | command: *str, stream: *str, file_format: *str, resolution: *(width)x(height), location: *str | Start and stop recordings. Command can be start or stop. Optional values for stream, file_format, resolution, and location. If you change the stream value, you must use the same stream value to stop the recording. Media saved in a non-default directory will not appear on the media webpage. |
Status Responses:
A get message will receive a response in the following format:
{
“op”: “publish”,
“type”: “u4k_camera_request”,
“topic”: “topic”,
“msg”: {
“command”: “status”,
“param”: “parameter”,
“value”: value
}
}
Note that it the msg, field “param” is different than the name “parameter” when sending a command to the websocket. The topic and parameters will match the get request used to trigger this response. The value will be the server’s value of the parameter.
After sending a default command, the server will always respond with a status response containing the entire config of the camera (this does not include the hardware and pipeline data). There are three types of status responses and they fit in this format:
{
“op”: “publish”,
“type”: “u4k_camera_request”,
“topic”: status_type,
“msg”: status_dict
}
Where status_type will be status for a default status message, hwstatus for a hardware status command, and pipeline for a pipeline status message. The value of status_dict will be a dictionary, or JSON, containg all the data for the relevant status type.
6. Operating the Camera
Streaming:
When power is applied to the camera, it will produce 2 video streams: a full resolution (3040×4032) stream and a downscaled (1080×1620) stream to be used as the default. The default stream is downscaled to reduce bandwidth on the tether and prevent Greensea from producing artifacts caused when exceeding its video processing limits.
- Stream endpoints:
- Full Resolution: rtsp://192.168.1.27:8889/VR_Bow
- Default Stream: rtsp://192.168.1.27:8888/VR_Bow
Using the Web UI:
The Web UI is a great tool for various camera controls while operating. Open the webserver at http://192.168.1.27:8080 and navigate to the control page using the sidebar to get started:
- Control PTZ, videobalance, and toggle image enhancements.
- Start/Stop recordings and take snapshots.
The Web UI will show live updates of each parameter as they are changed.
Using Greensea:
The smart cam has been made backwards compatible with any version of Greensea to handle all the controls sent to the legacy camera. Important note: Greensea configs will need to be pointed towards the smart camera IP address and stream endpoint to work properly; this should be easily accomplished through a smart camera config icon on the desktop of the tablet. If you do not have this tool, reach out to videoray or manually change the configs.
What to expect when using greensea:
- Focus commands on legacy camera remapped to pan. (pan only works when zoom > 1x)
- Tilt works the same as the legacy camera and works with the GSS Workspace UI, and all compatible controllers.
- The UI tilt indicator does not perfectly represent the smart camera since it uses a digital pan and the edges are distorted due to the nature of the fisheye lens.
- Autowhite balance controls do not map to camera commands.
- Snapshot button works and sends full resolution image to the topside controller.
7. Media & Data Handling
Recording:
- Format: .mkv (1620×1620, synced with default stream)
- Location: Volatile memory
- The recording follows the pan, tilt, and zoom of the default stream to hightlight the focus of the user.
Snapshots:
- Format: .jpg
- Resolution: 3040×4032
- The snapshot runs its own pipeline to capture the full image and is not affected by other camera controls.
Exporting Media:
- Manual: Via Web UI download tool
- Automatic: Greensea integration transfers snapshots to tablet
- External Tools: Use gstreamer to pull from RTSP streams
8. Maintenance & Firmware
Firmware Updates:
Videoray has a mission to continually enhance the operator’s experience by providing cutting edge underwater perception. Being able to easily update the camera is important to this mission and so it has been made into a convenient process.
Updating Instructions:
- Download or receive a .zip (release), .deb (server) file containg the latest firmware on your topside machine.
- Power on the vehicle or defender, and connect to the web ui: http://192.168.1.27:8080/settings
- Once you are on the settings tab, click on the Push Updates To Camera button. This will open a file menu.
- Click on the .zip or .deb file and click the Upload File button. You should see the loading bar underneath start to populate with messages about the update process.
IMPORTANT: Do not disconnect or power off the camera while it is updating. Do not update the camera has been running for more than 10 minutes in air without cooling. We do not want the camera to overheat during the update.
- Typical update durations:
- .deb: ~3 min
- .zip: ~10 min
- If the server says the upload fails, it might still be uploading in the background. Wait ~5 minutes before cycling power to the camera. Cool the camera to ensure it hasn’t overheated and double check the firmware version on the homepage of the web ui. Contact support if errors continue.
Important Note:
If your camera firmware is before v3.0.0, there are intermediate updates that need to be installed first to properly update the camera. The dependencies have changed and a new updater has been made to accommodate it.
User-Replaceable Parts:
- Dome and O-rings (if scratched or fogged)
9. Troubleshooting
Common Issues & Solutions:
- No video in Greensea:
This is most likely a config issue in Greensea. Verify correct IP and config settings. VideoRay can provide the correct config files and tools to update the configs.
If the config looks correct, you can isolate the issue with the following steps:
- Ensure vehicle is powered on.
- Open up the web ui. Check diagnostics to make sure you are getting live data.
- If the web ui doesn’t load in Step 2, double check all the physical connections and make sure data is being transferred. You can open a terminal window ctrl+t and enter ping 192.168.1.27, if you are getting data then the camera is connected.
- If the camera is not connected, ensure your device is on the correct IP subnet (192.168.1.x) and doesn’t conflict with other IPs.
- If the camera is connected but the video isn’t displayed, double check Greensea configs. Restart the camera.
Note: if the web ui is not working but you can ping the camera, then its possible the ui has been disconnected. Try refreshing the page.
- Ensure the camera has not overheated.
- When in doubt, check connections, restart camera, and contact support.
- Condensation inside dome:
Your camera should not get condensation, this is a defect and should be returned to VideoRay for repair. For temporary solutions, do not run camera outside water for long periods, it can overheat and cause condensation. Cool the camera in water and condensation will slowly go away.
Status Indicators:
- The web ui can be used to check the status of the camera.
10. Known Issues & Limitations
- Video may show artifacts when using TeamViewer — exit TeamViewer to resolve.
- Some firmware versions require an extra reboot after update.
- Camera may overheat if not submerged — enters read-only mode and disables features.
- Monitor temperature in Web UI to prevent thermal issues.
11. Regulatory, Warranty, and Safety
Environmental Limits:
- Operating Temp: 0–40°C (in water)
- Max Depth: Per vehicle spec (typically 300m)
- Vibration/Shock: Refer to VideoRay vehicle guidelines