Skip to content

Commit 617cc29

Browse files
authored
Merge pull request #85 from waterlinked/master
Fix behinf master
2 parents a68be1e + b6f0688 commit 617cc29

File tree

4 files changed

+28
-26
lines changed

4 files changed

+28
-26
lines changed
-1.8 MB
Binary file not shown.
1.58 MB
Loading

docs/sonar-3d/sonar-3d-15-api.md

Lines changed: 27 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,47 @@
11
# Integration API Sonar 3D-15
22

33
## Introduction
4-
The **Water Linked Sonar 3D-15** provides real-time 3D views of underwater environments using a low-bandwidth **Range Image Protocol (RIP1)**. This protocol efficiently transmits data such as 3D points or grayscale bitmaps over UDP, enabling live visualization, analysis, or archival for later use.
4+
The **Water Linked Sonar 3D-15** provides real-time 3D views of underwater environments using a low-bandwidth **Range Image Protocol (RIP2)**. This protocol efficiently transmits data such as 3D points or grayscale bitmaps over UDP, enabling live visualization, analysis, or archival for later use.
55

66
The Sonar 3D-15 also exposes a HTTP API for configuration and inspection of system state.
77

88
A Python example implementation of the Sonar API is available on [github](https://github.com/waterlinked/Sonar-3D-15-api-example).
99

1010
---
1111

12-
## Range Image Protocol (RIP1)
13-
RIP1 is a compact format for range and bitmap images, designed for <10 Mbit bandwidth. Each packet:
12+
## Range Image Protocol (RIP2)
1413

15-
- Fits within a single UDP packet (max 65,507 bytes).
16-
- Starts with the 4-byte ID `"RIP1"`.
17-
- Contains a length field, a serialized Protobuf payload, and a CRC-32.
14+
RIP2 is a compact format for range and bitmap images, designed for <10 Mbit bandwidth.
15+
16+
**NOTE**: Some Sonar 3D-15 releases support sending RIP1 packets. RIP1 will be removed in a future release.
17+
18+
### Packet structure
19+
20+
The packet format is designed to fit within a single UDP packet, introducing an upper limit of 65,507 bytes.
21+
22+
This is the structure of a RIP2 packet:
23+
24+
|Number of bytes|Description|
25+
|-|-|
26+
|4|0x82 0x73 0x80 0x50, Identifier which reads "RIP2" in ASCII|
27+
|4|Packet length (including identifier, packet length, payload and checksum)|
28+
|payload length (packet length - 12)|Encoded protobuf message, compressed with [Snappy](https://en.wikipedia.org/wiki/Snappy_(compression))|
29+
|4|IEEE 802.3 CRC-32 of the preceding bytes in the packet|
1830

1931
**Decoding Steps**:
2032

21-
1. Verify the `RIP1` ID.
22-
2. Check the packet length and CRC-32.
23-
3. Decode into `waterlinked.rip1.Packet`.
24-
4. Use `.type_url` to identify the contained message.
25-
5. Decode `.value` into that message type.
26-
6. Interpret fields per the `.proto` [File](#proto-file-excerpt).
33+
1. Verify the "RIP2" ID.
34+
2. Read packet length.
35+
3. Read compressed payload and CRC-32, and verify the CRC-32.
36+
4. Decompress the payload into an encoded protobuf packet.
37+
5. Decode into the `Packet` message type (see `.proto` [file](#proto-file-excerpt))
38+
6. Use `.msg.type_url` to identify the contained message.
39+
7. Decode `.msg.value` into that message type (see `.proto` [file](#proto-file-excerpt))
2740

2841
---
2942

3043
### Network
31-
By default, the Sonar 3D-15 uses **UDP Multicast** (`224.0.0.96:4747`), so any device on the local network can receive RIP1 packets without knowing the sonar’s IP.
44+
By default, the Sonar 3D-15 uses **UDP Multicast** (`224.0.0.96:4747`), so any device on the local network can receive RIP2 packets without knowing the sonar’s IP.
3245

3346
The Sonar can also be configured for UDP unicast, or to disable sending of UDP packets. See HTTP API.
3447

@@ -43,7 +56,7 @@ The Sonar can also be configured for UDP unicast, or to disable sending of UDP p
4356
---
4457

4558
### Message Types
46-
RIP1 supports several Protobuf-encoded messages, including:
59+
RIP2 supports several Protobuf-encoded messages, including:
4760

4861
#### `BitmapImageGreyscale8`
4962
- 8-bit grayscale; each pixel = signal strength or shaded depth.
@@ -183,7 +196,3 @@ Refer to the full protocol specification and `.proto` file shown above for more
183196
## HTTP API
184197

185198
The Sonar 3D-15 exposes a HTTP API for configuration and inspection of system state. The HTTP API is exposed on port 80 and uses paths rooted at `/api/v1/integration/`. JSON is used for request and response bodies. The HTTP API is documented with a [swagger.json](./sonar-3d-15-api-swagger/swagger.json) file. This file can be opened in a compatible viewer such as [this one](https://petstore.swagger.io/?url=https://docs.waterlinked.com/sonar-3d/sonar-3d-15-api-swagger/swagger.json). Example code using the HTTP API exists on [github](https://github.com/waterlinked/Sonar-3D-15-api-example).
186-
187-
---
188-
189-
**Thank you for using the Water Linked Sonar 3D-15!**

docs/sonar-3d/sonar-3d-15.md

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,16 +4,9 @@
44
* With real-time 3D imaging capabilities, it provides a comprehensive view of submerged environments, even in low-visibility conditions.
55

66

7-
<!-- Insert image of 3d sonar below -->
8-
<!-- <div style="text-align: center;">
9-
<img src="../../img/Sonar-3D-15-physical-dims-public-alpha-4x.png" alt="Sonar 3D 15" width="500" />
10-
</div> -->
11-
<!-- ![Sonar 3D 15](../../img/Sonar 3D-15-handheld-2.png) -->
12-
13-
147
## Dimensions
158

16-
![Sonar 3D 15 Dimensions](../img/Sonar-3D-15-physical-dims-public-alpha-4x.png)
9+
![Sonar 3D 15 Dimensions](../img/Sonar-3D-15-physical-dims-v3.png)
1710
![Sonar 3D 15 Right Side View](../img/Sonar-3D-15-side-right.png)
1811
The cable can be bent as shown in the image up to 90 degrees without causing any damage.
1912
![Sonar 3D 15 Back Dim](../img/Sonar-3D-15-back.png)

0 commit comments

Comments
 (0)