# SICK LiDAR Coding Tools and Examples: C++, Python, and C#

> Find SICK LiDAR SDKs, REST clients, scan receivers, and Kaitai Struct definitions to generate Compact parsers in your preferred language.

Source: https://sickag.github.io/sick_lidar_developer_guide/integration-notes/coding-tools-and-examples/

# Coding Tools & Examples

Compatible with: LRS4000 multiScan100 multiScan200 picoScan100

Ready-made code for integrating SICK LiDAR sensors, published on GitHub (`SICKAG`). Use it as a starting point for receiving measurement data and controlling the sensor from your application. Check that a project supports your sensor firmware version (shown on the SOPASair Home page) before you start.

Recommended starting points: for C++, [sick_perception_sdk](https://github.com/SICKAG/sick_perception_sdk); for Python, [ScanSegmentAPI](https://github.com/SICKAG/ScanSegmentAPI) to receive data and [sick_scan_rest_client](https://github.com/SICKAG/sick_scan_rest_client) to configure the sensor; for ROS, see [ROS Integration](https://sickag.github.io/sick_lidar_developer_guide/integration-notes/ros-integration/).

<p class="table-caption" markdown>**Coding Tools & Examples:** language, project, use it for, technologies used, and compatible with.</p>

| Language           | Project                                                                        | Use it for                                                                                                                                                                                                                                                 | Technologies used                                    | Compatible with                                  |
| ------------------ | ------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------- | ------------------------------------------------ |
| C++                | [sick_perception_sdk](https://github.com/SICKAG/sick_perception_sdk)           | C++17 SDK: connect, configure, run diagnostics, and receive the Compact stream; includes [worked examples](https://github.com/SICKAG/sick_perception_sdk/blob/main/examples/shared_learning_examples.md). A strong starting point for custom applications. | REST, Compact (UDP/TCP), IMU and encoder, PCD export | LRS4000, multiScan100, multiScan200, picoScan100 |
| C++                | [sick_scan_xd](https://github.com/SICKAG/sick_scan_xd)                         | Generic C/C++ API of the sick_scan_xd driver: receive point clouds without ROS on Linux and Windows.                                                                                                                                                       | CoLa, Compact, MSGPACK, LMDscandata                  | LRS4000, multiScan100, picoScan100               |
| Python             | [sick_scan_rest_client](https://github.com/SICKAG/sick_scan_rest_client)       | Scripted REST configuration with challenge-response handled for you.                                                                                                                                                                                       | REST, challenge-response, password change            | LRS4000, multiScan100, multiScan200, picoScan100 |
| Python             | [sick_scan_xd](https://github.com/SICKAG/sick_scan_xd)                         | Python API of the sick_scan_xd driver: receive point clouds without ROS on Linux and Windows.                                                                                                                                                              | CoLa, Compact, MSGPACK, LMDscandata                  | LRS4000, multiScan100, picoScan100               |
| Python             | [ScanSegmentAPI](https://github.com/SICKAG/ScanSegmentAPI)                     | Receive and analyze segmented scan data, for example plot it with matplotlib or record it to JSON.                                                                                                                                                         | Compact, MSGPACK, UDP/TCP, JSON export               | LRS4000, multiScan100, picoScan100               |
| Python             | [ScanSegmentDecoding](https://github.com/SICKAG/ScanSegmentDecoding)           | Receive and decode MSGPACK scan segments without the full API.                                                                                                                                                                                             | MSGPACK, UDP                                         | multiScan100, picoScan100                        |
| C#                 | [ScanSegmentAPICSharp](https://github.com/SICKAG/ScanSegmentAPICSharp)         | Compact-format deserializer for .NET, with a worked example for receiving segmented scan data.                                                                                                                                                             | Compact, UDP, .NET                                   | multiScan100, picoScan100                        |
| Multiple languages | [KaitaiStructDescriptions](https://github.com/SICKAG/KaitaiStructDescriptions) | Generate your own Compact parser in Python, C++, C#, Java, Go, and other supported languages. See [Kaitai Struct Parsers](https://sickag.github.io/sick_lidar_developer_guide/integration-notes/kaitai-struct-parsers/) for the steps.                                                                                         | Compact, Kaitai Struct `.ksy`                        | LRS4000, multiScan100, multiScan200, picoScan100 |

For MATLAB, see [MATLAB Integration](https://sickag.github.io/sick_lidar_developer_guide/integration-notes/matlab-integration/).

For the REST API, start with the shared [REST Interface](https://sickag.github.io/sick_lidar_developer_guide/configuration/rest-interface/) guide. The complete, device-specific endpoint definitions are available in the [LRS4000](https://sickag.github.io/sick_lidar_developer_guide/LRS4000/api-rest-openapi/), [multiScan100](https://sickag.github.io/sick_lidar_developer_guide/multiScan100/api-rest-openapi/), [multiScan200](https://sickag.github.io/sick_lidar_developer_guide/multiScan200/api-rest-openapi/), and [picoScan100](https://sickag.github.io/sick_lidar_developer_guide/picoScan100/api-rest-openapi/) OpenAPI references.
