Integrating into 3rd Party Products: Using FarSounder's SDK
Recently, we've decided make the standard SDK for our navigation product available to 3rd party developers free of charge for non-commercial applications. This makes sense in today's information driven world, since here at FarSounder, we are in the business of selling sonars and providing ship operators with the best underwater situational awareness possible. We're not in the business of selling closed APIs. This opens up an exciting number of possibilities for people interested in integrating FarSounder’s forward looking sonar data into their products.
Our forward looking sonar imagery is can be valuable for a wide range of 3rd party products including:
- ECDIS/ECS - adding sonar overlay to digital charts
- Unmanned surface vessels - improving operator human interface
- Crowd sourced charting programs - collecting navigational hazards
- Voyage data recorders - archiving primary sonar data
Integration in to ECDIS/ECS is an easy example to visualize. With the advent of digital radars and electronic charts, radar overlay in ECDIS/ECS is now commonplace. However, 3D forward looking sonar data is still relatively new to the commercial marine market. We believe the information below the water that our products produce is just as important as the information above the water produced by radar. 3D sonar overlays on top of electronic charts is a natural next step.
Sperry Marine's VisionMaster FT was the first commercial IBS to offer direct FarSounder sonar integration. The image at right is a screen capture from one of Sperry's early sea tests. This view shows a top down representation of the in-water targets detected by one of our FS-3DT sonars as an overlay on top of the digital chart. The overlay shows the sonar's field-of-view as a 90 degree sector ahead of the vessel. The yellow and orange returns are echos of the pier on the port side of the vessel. This is very similar to the what is shown in "standard view" inside FarSounder's software.
Other ECDIS/ECS displays could include simultaneous sonar and radar overlays as well as a stand alone 3D sonar display. FarSounder's SDK even allows for complete control of all standard operation sonar settings. Like the dedicated radar displays generally found on a ship's bridge, we still recommend a dedicated FarSounder display. However, good situational awareness can be achieved with a single display.
Internally, our software handles a wide variety of data types. These data types get moved around our software asynchronously, often moving between various threads. We've built a pretty robust data management system inside our software and take advantage protobuf for encoding structured data in an efficient yet extensible format (more on this in a future blog post).
However, for our SDK, we wanted to make our data available to as many different platforms and technologies as possible. So we chose a simple network service based model. It has a simple API that only relies on basic TCP/IP programming libraries. Our data is exposed via a number of these network “services”. Each service is designed to serve a different role. For example, one service provides regularly produced status messages as a "heartbeat", another service provides raw hydrophone time series data, while another provides processed 3D sonar data, etc. This allows 3rd party developers to interface with only the portions of our data that suits their needs from anywhere within their code.