From f1677078024f26add94799ac625efbb1da2d0ee1 Mon Sep 17 00:00:00 2001 From: Alekhya Katumalla Date: Fri, 17 Jan 2025 13:24:38 -0800 Subject: [PATCH] Release 0.14.0 --- .clang-tidy | 59 + .github/workflows/build_test.yaml | 18 +- .gitignore | 3 +- .gitmodules | 2 +- CHANGELOG.rst | 79 +- CMakeLists.txt | 74 +- CMakeSettings.json | 4 +- LICENSE | 118 +- LICENSE-bin | 118 +- Security.md | 2 +- _clang-tidy.py | 195 + check_exports.py | 255 + clang-linting.sh | 2 +- clang-tidy.sh | 82 + cmake/FindCURL.cmake | 18 +- cmake/FindEigen3.cmake | 10 +- cmake/FindFlatbuffers.cmake | 59 + cmake/FindGTest.cmake | 1 - cmake/FindPcap.cmake | 11 +- cmake/Findglfw3.cmake | 8 +- cmake/Findjsoncpp.cmake | 57 - cmake/Findlibtins.cmake | 18 +- cmake/OusterSDKConfig.cmake.in | 104 +- conan/test_package/CMakeLists.txt | 7 - conan/test_package/conanfile.py | 39 - conanfile.py | 156 - docs/Doxyfile | 6 +- docs/cli/clip-sessions.rst | 35 +- docs/cli/common-use-cases.rst | 39 + docs/cli/getting-started.rst | 7 +- docs/cli/mapping-sessions.rst | 46 +- docs/conf.py | 2 +- docs/cpp/building.rst | 27 +- docs/cpp/examples/index.rst | 1 + docs/cpp/examples/linking_examples.rst | 30 + docs/cpp/ouster_osf/meta_lidar_sensor.rst | 3 - docs/cpp/ouster_osf/meta_streaming_info.rst | 16 - docs/cpp/ouster_osf/metadata.rst | 3 - docs/cpp/ouster_osf/stream_lidar_scan.rst | 3 - docs/cpp/ouster_pcap/os_pcap.rst | 7 - docs/images/localization-map-main.png | Bin 0 -> 1753729 bytes docs/index.rst | 1 + .../migration/migration-20241004-20250113.rst | 58 + docs/overview.rst | 5 + docs/python/api/osf.rst | 69 - docs/python/devel.rst | 14 +- docs/python/examples/osf-examples.rst | 63 +- docs/python/examples/udp-packets.rst | 6 +- docs/python/quickstart.rst | 14 + docs/python/slam-api-example.rst | 2 +- docs/versions.json | 7 + examples/CMakeLists.txt | 2 + examples/client_packet_example.cpp | 36 +- .../CMakeLists.txt | 5 +- .../compiled_in_linking_example/Dockerfile | 26 + .../example.bash | 2 +- .../main.cpp | 0 .../compiled_in_linking_example/readme.rst | 15 + examples/linking_example/readme.rst | 10 - .../shared_linking_example/CMakeLists.txt | 10 + examples/shared_linking_example/Dockerfile | 43 + examples/shared_linking_example/example.bash | 15 + examples/shared_linking_example/main.cpp | 17 + examples/shared_linking_example/readme.rst | 15 + .../static_linking_example/CMakeLists.txt | 10 + .../Dockerfile | 24 +- examples/static_linking_example/example.bash | 15 + examples/static_linking_example/main.cpp | 17 + examples/static_linking_example/readme.rst | 15 + examples/viz_events_example.cpp | 6 +- ouster_client/CMakeLists.txt | 28 +- ouster_client/include/ouster/array_view.h | 1 + ouster_client/include/ouster/client.h | 21 +- ouster_client/include/ouster/field.h | 101 +- .../include/ouster/image_processing.h | 12 +- .../include/ouster/impl/client_poller.h | 11 +- ouster_client/include/ouster/impl/idx_range.h | 15 +- .../include/ouster/impl/lidar_scan_impl.h | 38 +- ouster_client/include/ouster/impl/logging.h | 102 +- ouster_client/include/ouster/impl/netcompat.h | 16 +- .../include/ouster/impl/packet_writer.h | 23 +- .../include/ouster/impl/profile_extension.h | 4 +- .../include/ouster/impl/ring_buffer.h | 5 + .../include/ouster/impl/threadsafe_queue.h | 104 + ouster_client/include/ouster/lidar_scan.h | 183 +- ouster_client/include/ouster/metadata.h | 80 +- ouster_client/include/ouster/packet.h | 354 + ouster_client/include/ouster/sensor_client.h | 66 +- ouster_client/include/ouster/sensor_http.h | 102 +- .../include/ouster/sensor_scan_source.h | 13 +- ouster_client/include/ouster/types.h | 291 +- ouster_client/include/ouster/util.h | 19 - ouster_client/include/ouster/version.h | 19 +- ouster_client/include/ouster/visibility.h | 86 + ouster_client/src/client.cpp | 93 +- ouster_client/src/lidar_scan.cpp | 143 +- ouster_client/src/logging.cpp | 141 +- ouster_client/src/metadata.cpp | 391 +- ouster_client/src/packet.cpp | 84 + ouster_client/src/parsing.cpp | 41 +- ouster_client/src/sensor_client.cpp | 99 +- ouster_client/src/sensor_http.cpp | 24 +- ouster_client/src/sensor_http_imp.cpp | 185 +- ouster_client/src/sensor_http_imp.h | 51 +- ouster_client/src/sensor_info.cpp | 199 +- ouster_client/src/sensor_scan_source.cpp | 17 +- ouster_client/src/sensor_tcp_imp.cpp | 128 +- ouster_client/src/sensor_tcp_imp.h | 44 +- ouster_client/src/types.cpp | 446 +- ouster_client/src/util.cpp | 81 - ouster_library/CMakeLists.txt | 67 + ouster_library/empty.cpp | 0 ouster_osf/CMakeLists.txt | 38 +- ouster_osf/include/ouster/osf/async_writer.h | 195 + ouster_osf/include/ouster/osf/basics.h | 9 + ouster_osf/include/ouster/osf/crc32.h | 4 + ouster_osf/include/ouster/osf/file.h | 29 +- .../include/ouster/osf/layout_streaming.h | 7 +- .../include/ouster/osf/lidarscan_encoder.h | 44 + .../include/ouster/osf/meta_extrinsics.h | 13 +- .../include/ouster/osf/meta_lidar_sensor.h | 14 +- .../include/ouster/osf/meta_streaming_info.h | 24 +- ouster_osf/include/ouster/osf/metadata.h | 33 +- ouster_osf/include/ouster/osf/operations.h | 8 +- ouster_osf/include/ouster/osf/osf_encoder.h | 36 + .../ouster/osf/png_lidarscan_encoder.h | 191 + ouster_osf/include/ouster/osf/reader.h | 122 +- .../include/ouster/osf/stream_lidar_scan.h | 46 +- ouster_osf/include/ouster/osf/writer.h | 115 +- ouster_osf/src/async_writer.cpp | 100 + ouster_osf/src/compat_ops.h | 34 +- ouster_osf/src/fb_utils.h | 36 +- ouster_osf/src/json_utils.cpp | 31 - ouster_osf/src/json_utils.h | 18 - ouster_osf/src/meta_lidar_sensor.cpp | 25 +- ouster_osf/src/meta_streaming_info.cpp | 41 +- ouster_osf/src/operations.cpp | 66 +- ouster_osf/src/png_lidarscan_encoder.cpp | 413 + ouster_osf/src/png_tools.cpp | 759 +- ouster_osf/src/png_tools.h | 326 +- ouster_osf/src/stream_lidar_scan.cpp | 239 +- ouster_osf/src/writer.cpp | 28 +- ouster_osf/tests/CMakeLists.txt | 29 +- ouster_osf/tests/operations_test.cpp | 102 +- ouster_osf/tests/png_tools_test.cpp | 277 +- ouster_osf/tests/reader_test.cpp | 284 +- ouster_osf/tests/vcpkg.json | 5 + ouster_pcap/CMakeLists.txt | 18 +- .../include/ouster/indexed_pcap_reader.h | 17 +- ouster_pcap/include/ouster/os_pcap.h | 47 +- ouster_pcap/include/ouster/pcap.h | 25 +- ouster_pcap/src/indexed_pcap_reader.cpp | 6 +- ouster_viz/CMakeLists.txt | 35 +- ouster_viz/include/ouster/point_viz.h | 178 +- ouster_viz/src/glfw.cpp | 13 +- ouster_viz/src/glfw.h | 10 +- ouster_viz/src/gltext.h | 10 +- ouster_viz/src/point_viz.cpp | 227 +- python/CMakeLists.txt | 10 +- python/Dockerfile | 3 - python/MANIFEST.in | 2 +- python/README.rst | 6 +- python/pyproject.toml | 2 +- python/setup.py | 3 +- python/src/cpp/_client.cpp | 317 +- python/src/cpp/_osf.cpp | 166 +- python/src/cpp/_viz.cpp | 49 +- python/src/cpp/common.h | 1 - python/src/ouster/cli/core/__init__.py | 4 +- python/src/ouster/cli/plugins/discover.py | 4 +- python/src/ouster/cli/plugins/source.py | 425 +- .../ouster/cli/plugins/source_localization.py | 72 + .../src/ouster/cli/plugins/source_mapping.py | 97 +- python/src/ouster/cli/plugins/source_osf.py | 29 +- python/src/ouster/cli/plugins/source_save.py | 16 +- .../src/ouster/cli/plugins/source_sensor.py | 55 +- python/src/ouster/cli/plugins/source_util.py | 5 +- python/src/ouster/sdk/_bindings/client.pyi | 132 +- python/src/ouster/sdk/_bindings/osf.pyi | 37 +- python/src/ouster/sdk/_bindings/viz.pyi | 7 +- .../src/ouster/sdk/bag/bag_packet_source.py | 33 +- python/src/ouster/sdk/bag/bag_scan_source.py | 9 - python/src/ouster/sdk/client/__init__.py | 7 + python/src/ouster/sdk/client/core.py | 12 +- python/src/ouster/sdk/client/data.py | 19 + python/src/ouster/sdk/client/multi.py | 91 +- .../sdk/client/multi_clipped_scan_source.py | 89 + .../sdk/client/multi_masked_scan_source.py | 91 + .../sdk/client/multi_reduced_scan_source.py | 113 + .../ouster/sdk/client/multi_scan_source.py | 27 +- .../sdk/client/multi_sliced_scan_source.py | 12 - python/src/ouster/sdk/client/scan_ops.py | 80 + python/src/ouster/sdk/client/scan_source.py | 13 + .../ouster/sdk/client/scan_source_adapter.py | 19 + python/src/ouster/sdk/examples/osf.py | 95 - python/src/ouster/sdk/examples/pcap.py | 2 +- python/src/ouster/sdk/examples/viz.py | 17 +- .../ouster/sdk/examples/viz_image_events.py | 5 +- .../sdk/localization/kiss_localization.py | 57 + .../src/ouster/sdk/mapping/requirements.json | 6 +- python/src/ouster/sdk/mapping/util.py | 11 +- python/src/ouster/sdk/open_source.py | 6 +- python/src/ouster/sdk/osf/__init__.py | 12 +- python/src/ouster/sdk/osf/data.py | 15 +- python/src/ouster/sdk/osf/osf_scan_source.py | 35 +- .../sdk/pcap/pcap_multi_packet_reader.py | 4 +- .../src/ouster/sdk/pcap/pcap_scan_source.py | 9 - python/src/ouster/sdk/sensor/util.py | 4 + python/src/ouster/sdk/util/extrinsics.py | 107 +- python/src/ouster/sdk/util/pose_util.py | 30 +- python/src/ouster/sdk/viz/accumulators.py | 6 +- python/src/ouster/sdk/viz/core.py | 231 +- python/src/ouster/sdk/viz/model.py | 287 +- python/src/ouster/sdk/viz/track.py | 8 +- python/src/ouster/sdk/viz/util.py | 16 + python/tests/conftest.py | 12 +- python/tests/osf/test_osf_basics.py | 47 +- python/tests/osf/test_osf_extrinsics.py | 2 +- python/tests/osf/test_osf_scan_source.py | 46 + python/tests/test_bag.py | 1 + python/tests/test_cli.py | 4 +- python/tests/test_cli_osf_slice.py | 23 +- python/tests/test_config.py | 15 +- python/tests/test_core.py | 2 + python/tests/test_data.py | 55 +- python/tests/test_destagger.py | 2 + python/tests/test_metadata.py | 6 +- .../tests/test_multiple_scan_source_pcap.py | 2 + python/tests/test_parsing.py | 2 +- python/tests/test_pcap.py | 2 +- python/tests/test_performance.py | 356 + python/tests/test_pose_util.py | 72 +- python/tests/test_resolve_extrinsics.py | 2 +- python/tests/test_scan_ops.py | 145 + python/tests/test_sdk_utils.py | 2 +- python/tests/test_viz.py | 12 +- python/tests/test_viz_core.py | 83 +- python/tests/test_viz_units.py | 0 sdk-extensions | 2 +- test_package/CMakeLists.txt | 9 - test_package/conanfile.py | 26 - test_package/src/example.cpp | 4 - tests/CMakeLists.txt | 67 +- tests/bcompat_meta_json_test.cpp | 80 +- tests/fusa_profile_test.cpp | 2 +- tests/hil/test_cli.py | 28 +- tests/hil/test_config.py | 2 +- tests/lidar_scan_test.cpp | 26 +- tests/metadata_test.cpp | 363 +- tests/packet_writer_test.cpp | 20 +- tests/point_viz_test.cpp | 36 +- tests/scan_batcher_test.cpp | 76 +- tests/threadsafe_queue_test.cpp | 39 + tests/vcpkg.json | 5 + thirdparty/glad/CMakeLists.txt | 10 + thirdparty/glad/glad.c | 8900 +++++++++ thirdparty/glad/include/glad.h | 15353 ++++++++++++++++ thirdparty/glad/include/khrplatform.h | 311 + thirdparty/spdlog/.clang-format | 19 + thirdparty/spdlog/.clang-tidy | 53 + thirdparty/spdlog/LICENSE | 26 + thirdparty/spdlog/async.h | 100 + thirdparty/spdlog/async_logger-inl.h | 86 + thirdparty/spdlog/async_logger.h | 74 + thirdparty/spdlog/cfg/argv.h | 40 + thirdparty/spdlog/cfg/env.h | 36 + thirdparty/spdlog/cfg/helpers-inl.h | 107 + thirdparty/spdlog/cfg/helpers.h | 29 + thirdparty/spdlog/common-inl.h | 68 + thirdparty/spdlog/common.h | 411 + thirdparty/spdlog/details/backtracer-inl.h | 63 + thirdparty/spdlog/details/backtracer.h | 45 + thirdparty/spdlog/details/circular_q.h | 115 + thirdparty/spdlog/details/console_globals.h | 28 + thirdparty/spdlog/details/file_helper-inl.h | 152 + thirdparty/spdlog/details/file_helper.h | 61 + thirdparty/spdlog/details/fmt_helper.h | 141 + thirdparty/spdlog/details/log_msg-inl.h | 44 + thirdparty/spdlog/details/log_msg.h | 40 + .../spdlog/details/log_msg_buffer-inl.h | 54 + thirdparty/spdlog/details/log_msg_buffer.h | 32 + thirdparty/spdlog/details/mpmc_blocking_q.h | 177 + thirdparty/spdlog/details/null_mutex.h | 35 + thirdparty/spdlog/details/os-inl.h | 594 + thirdparty/spdlog/details/os.h | 123 + .../spdlog/details/periodic_worker-inl.h | 26 + thirdparty/spdlog/details/periodic_worker.h | 58 + thirdparty/spdlog/details/registry-inl.h | 261 + thirdparty/spdlog/details/registry.h | 129 + .../spdlog/details/synchronous_factory.h | 22 + .../spdlog/details/tcp_client-windows.h | 135 + thirdparty/spdlog/details/tcp_client.h | 127 + thirdparty/spdlog/details/thread_pool-inl.h | 132 + thirdparty/spdlog/details/thread_pool.h | 128 + .../spdlog/details/udp_client-windows.h | 98 + thirdparty/spdlog/details/udp_client.h | 81 + thirdparty/spdlog/details/windows_include.h | 11 + thirdparty/spdlog/fmt/bin_to_hex.h | 224 + thirdparty/spdlog/fmt/bundled/args.h | 235 + thirdparty/spdlog/fmt/bundled/chrono.h | 2240 +++ thirdparty/spdlog/fmt/bundled/color.h | 643 + thirdparty/spdlog/fmt/bundled/compile.h | 535 + thirdparty/spdlog/fmt/bundled/core.h | 2969 +++ thirdparty/spdlog/fmt/bundled/fmt.license.rst | 27 + thirdparty/spdlog/fmt/bundled/format-inl.h | 1678 ++ thirdparty/spdlog/fmt/bundled/format.h | 4535 +++++ thirdparty/spdlog/fmt/bundled/locale.h | 2 + thirdparty/spdlog/fmt/bundled/os.h | 455 + thirdparty/spdlog/fmt/bundled/ostream.h | 245 + thirdparty/spdlog/fmt/bundled/printf.h | 675 + thirdparty/spdlog/fmt/bundled/ranges.h | 738 + thirdparty/spdlog/fmt/bundled/std.h | 537 + thirdparty/spdlog/fmt/bundled/xchar.h | 259 + thirdparty/spdlog/fmt/chrono.h | 23 + thirdparty/spdlog/fmt/compile.h | 23 + thirdparty/spdlog/fmt/fmt.h | 30 + thirdparty/spdlog/fmt/ostr.h | 23 + thirdparty/spdlog/fmt/ranges.h | 23 + thirdparty/spdlog/fmt/std.h | 24 + thirdparty/spdlog/fmt/xchar.h | 23 + thirdparty/spdlog/formatter.h | 17 + thirdparty/spdlog/fwd.h | 18 + thirdparty/spdlog/logger-inl.h | 198 + thirdparty/spdlog/logger.h | 379 + thirdparty/spdlog/mdc.h | 46 + thirdparty/spdlog/pattern_formatter-inl.h | 1324 ++ thirdparty/spdlog/pattern_formatter.h | 118 + thirdparty/spdlog/sinks/android_sink.h | 137 + thirdparty/spdlog/sinks/ansicolor_sink-inl.h | 135 + thirdparty/spdlog/sinks/ansicolor_sink.h | 115 + thirdparty/spdlog/sinks/base_sink-inl.h | 59 + thirdparty/spdlog/sinks/base_sink.h | 51 + thirdparty/spdlog/sinks/basic_file_sink-inl.h | 42 + thirdparty/spdlog/sinks/basic_file_sink.h | 65 + thirdparty/spdlog/sinks/callback_sink.h | 56 + thirdparty/spdlog/sinks/daily_file_sink.h | 252 + thirdparty/spdlog/sinks/dist_sink.h | 81 + thirdparty/spdlog/sinks/dup_filter_sink.h | 92 + thirdparty/spdlog/sinks/hourly_file_sink.h | 191 + thirdparty/spdlog/sinks/kafka_sink.h | 119 + thirdparty/spdlog/sinks/mongo_sink.h | 108 + thirdparty/spdlog/sinks/msvc_sink.h | 68 + thirdparty/spdlog/sinks/null_sink.h | 41 + thirdparty/spdlog/sinks/ostream_sink.h | 43 + thirdparty/spdlog/sinks/qt_sinks.h | 304 + thirdparty/spdlog/sinks/ringbuffer_sink.h | 67 + .../spdlog/sinks/rotating_file_sink-inl.h | 144 + thirdparty/spdlog/sinks/rotating_file_sink.h | 89 + thirdparty/spdlog/sinks/sink-inl.h | 22 + thirdparty/spdlog/sinks/sink.h | 34 + .../spdlog/sinks/stdout_color_sinks-inl.h | 38 + thirdparty/spdlog/sinks/stdout_color_sinks.h | 49 + thirdparty/spdlog/sinks/stdout_sinks-inl.h | 126 + thirdparty/spdlog/sinks/stdout_sinks.h | 84 + thirdparty/spdlog/sinks/syslog_sink.h | 103 + thirdparty/spdlog/sinks/systemd_sink.h | 121 + thirdparty/spdlog/sinks/tcp_sink.h | 75 + thirdparty/spdlog/sinks/udp_sink.h | 69 + thirdparty/spdlog/sinks/win_eventlog_sink.h | 260 + thirdparty/spdlog/sinks/wincolor_sink-inl.h | 163 + thirdparty/spdlog/sinks/wincolor_sink.h | 82 + thirdparty/spdlog/spdlog-inl.h | 92 + thirdparty/spdlog/spdlog.h | 352 + thirdparty/spdlog/stopwatch.h | 66 + thirdparty/spdlog/tweakme.h | 141 + thirdparty/spdlog/version.h | 11 + vcpkg.json | 5 + 367 files changed, 61096 insertions(+), 5056 deletions(-) create mode 100644 .clang-tidy create mode 100644 _clang-tidy.py create mode 100644 check_exports.py create mode 100755 clang-tidy.sh create mode 100644 cmake/FindFlatbuffers.cmake delete mode 100644 cmake/Findjsoncpp.cmake delete mode 100644 conan/test_package/CMakeLists.txt delete mode 100644 conan/test_package/conanfile.py delete mode 100644 conanfile.py create mode 100644 docs/cpp/examples/linking_examples.rst create mode 100644 docs/images/localization-map-main.png create mode 100644 docs/migration/migration-20241004-20250113.rst rename examples/{linking_example => compiled_in_linking_example}/CMakeLists.txt (58%) create mode 100644 examples/compiled_in_linking_example/Dockerfile rename examples/{linking_example => compiled_in_linking_example}/example.bash (88%) rename examples/{linking_example => compiled_in_linking_example}/main.cpp (100%) create mode 100644 examples/compiled_in_linking_example/readme.rst delete mode 100644 examples/linking_example/readme.rst create mode 100644 examples/shared_linking_example/CMakeLists.txt create mode 100644 examples/shared_linking_example/Dockerfile create mode 100755 examples/shared_linking_example/example.bash create mode 100644 examples/shared_linking_example/main.cpp create mode 100644 examples/shared_linking_example/readme.rst create mode 100644 examples/static_linking_example/CMakeLists.txt rename examples/{linking_example => static_linking_example}/Dockerfile (57%) create mode 100755 examples/static_linking_example/example.bash create mode 100644 examples/static_linking_example/main.cpp create mode 100644 examples/static_linking_example/readme.rst create mode 100644 ouster_client/include/ouster/impl/threadsafe_queue.h create mode 100644 ouster_client/include/ouster/packet.h delete mode 100644 ouster_client/include/ouster/util.h create mode 100644 ouster_client/include/ouster/visibility.h create mode 100644 ouster_client/src/packet.cpp delete mode 100644 ouster_client/src/util.cpp create mode 100644 ouster_library/CMakeLists.txt create mode 100644 ouster_library/empty.cpp create mode 100644 ouster_osf/include/ouster/osf/async_writer.h create mode 100644 ouster_osf/include/ouster/osf/lidarscan_encoder.h create mode 100644 ouster_osf/include/ouster/osf/osf_encoder.h create mode 100644 ouster_osf/include/ouster/osf/png_lidarscan_encoder.h create mode 100644 ouster_osf/src/async_writer.cpp delete mode 100644 ouster_osf/src/json_utils.cpp delete mode 100644 ouster_osf/src/json_utils.h create mode 100644 ouster_osf/src/png_lidarscan_encoder.cpp create mode 100644 ouster_osf/tests/vcpkg.json create mode 100644 python/src/ouster/cli/plugins/source_localization.py create mode 100644 python/src/ouster/sdk/client/multi_clipped_scan_source.py create mode 100644 python/src/ouster/sdk/client/multi_masked_scan_source.py create mode 100644 python/src/ouster/sdk/client/multi_reduced_scan_source.py create mode 100644 python/src/ouster/sdk/client/scan_ops.py create mode 100644 python/src/ouster/sdk/localization/kiss_localization.py create mode 100644 python/tests/test_performance.py create mode 100644 python/tests/test_scan_ops.py create mode 100644 python/tests/test_viz_units.py delete mode 100644 test_package/CMakeLists.txt delete mode 100644 test_package/conanfile.py delete mode 100644 test_package/src/example.cpp create mode 100644 tests/threadsafe_queue_test.cpp create mode 100644 tests/vcpkg.json create mode 100644 thirdparty/glad/CMakeLists.txt create mode 100644 thirdparty/glad/glad.c create mode 100644 thirdparty/glad/include/glad.h create mode 100644 thirdparty/glad/include/khrplatform.h create mode 100644 thirdparty/spdlog/.clang-format create mode 100644 thirdparty/spdlog/.clang-tidy create mode 100644 thirdparty/spdlog/LICENSE create mode 100644 thirdparty/spdlog/async.h create mode 100644 thirdparty/spdlog/async_logger-inl.h create mode 100644 thirdparty/spdlog/async_logger.h create mode 100644 thirdparty/spdlog/cfg/argv.h create mode 100644 thirdparty/spdlog/cfg/env.h create mode 100644 thirdparty/spdlog/cfg/helpers-inl.h create mode 100644 thirdparty/spdlog/cfg/helpers.h create mode 100644 thirdparty/spdlog/common-inl.h create mode 100644 thirdparty/spdlog/common.h create mode 100644 thirdparty/spdlog/details/backtracer-inl.h create mode 100644 thirdparty/spdlog/details/backtracer.h create mode 100644 thirdparty/spdlog/details/circular_q.h create mode 100644 thirdparty/spdlog/details/console_globals.h create mode 100644 thirdparty/spdlog/details/file_helper-inl.h create mode 100644 thirdparty/spdlog/details/file_helper.h create mode 100644 thirdparty/spdlog/details/fmt_helper.h create mode 100644 thirdparty/spdlog/details/log_msg-inl.h create mode 100644 thirdparty/spdlog/details/log_msg.h create mode 100644 thirdparty/spdlog/details/log_msg_buffer-inl.h create mode 100644 thirdparty/spdlog/details/log_msg_buffer.h create mode 100644 thirdparty/spdlog/details/mpmc_blocking_q.h create mode 100644 thirdparty/spdlog/details/null_mutex.h create mode 100644 thirdparty/spdlog/details/os-inl.h create mode 100644 thirdparty/spdlog/details/os.h create mode 100644 thirdparty/spdlog/details/periodic_worker-inl.h create mode 100644 thirdparty/spdlog/details/periodic_worker.h create mode 100644 thirdparty/spdlog/details/registry-inl.h create mode 100644 thirdparty/spdlog/details/registry.h create mode 100644 thirdparty/spdlog/details/synchronous_factory.h create mode 100644 thirdparty/spdlog/details/tcp_client-windows.h create mode 100644 thirdparty/spdlog/details/tcp_client.h create mode 100644 thirdparty/spdlog/details/thread_pool-inl.h create mode 100644 thirdparty/spdlog/details/thread_pool.h create mode 100644 thirdparty/spdlog/details/udp_client-windows.h create mode 100644 thirdparty/spdlog/details/udp_client.h create mode 100644 thirdparty/spdlog/details/windows_include.h create mode 100644 thirdparty/spdlog/fmt/bin_to_hex.h create mode 100644 thirdparty/spdlog/fmt/bundled/args.h create mode 100644 thirdparty/spdlog/fmt/bundled/chrono.h create mode 100644 thirdparty/spdlog/fmt/bundled/color.h create mode 100644 thirdparty/spdlog/fmt/bundled/compile.h create mode 100644 thirdparty/spdlog/fmt/bundled/core.h create mode 100644 thirdparty/spdlog/fmt/bundled/fmt.license.rst create mode 100644 thirdparty/spdlog/fmt/bundled/format-inl.h create mode 100644 thirdparty/spdlog/fmt/bundled/format.h create mode 100644 thirdparty/spdlog/fmt/bundled/locale.h create mode 100644 thirdparty/spdlog/fmt/bundled/os.h create mode 100644 thirdparty/spdlog/fmt/bundled/ostream.h create mode 100644 thirdparty/spdlog/fmt/bundled/printf.h create mode 100644 thirdparty/spdlog/fmt/bundled/ranges.h create mode 100644 thirdparty/spdlog/fmt/bundled/std.h create mode 100644 thirdparty/spdlog/fmt/bundled/xchar.h create mode 100644 thirdparty/spdlog/fmt/chrono.h create mode 100644 thirdparty/spdlog/fmt/compile.h create mode 100644 thirdparty/spdlog/fmt/fmt.h create mode 100644 thirdparty/spdlog/fmt/ostr.h create mode 100644 thirdparty/spdlog/fmt/ranges.h create mode 100644 thirdparty/spdlog/fmt/std.h create mode 100644 thirdparty/spdlog/fmt/xchar.h create mode 100644 thirdparty/spdlog/formatter.h create mode 100644 thirdparty/spdlog/fwd.h create mode 100644 thirdparty/spdlog/logger-inl.h create mode 100644 thirdparty/spdlog/logger.h create mode 100644 thirdparty/spdlog/mdc.h create mode 100644 thirdparty/spdlog/pattern_formatter-inl.h create mode 100644 thirdparty/spdlog/pattern_formatter.h create mode 100644 thirdparty/spdlog/sinks/android_sink.h create mode 100644 thirdparty/spdlog/sinks/ansicolor_sink-inl.h create mode 100644 thirdparty/spdlog/sinks/ansicolor_sink.h create mode 100644 thirdparty/spdlog/sinks/base_sink-inl.h create mode 100644 thirdparty/spdlog/sinks/base_sink.h create mode 100644 thirdparty/spdlog/sinks/basic_file_sink-inl.h create mode 100644 thirdparty/spdlog/sinks/basic_file_sink.h create mode 100644 thirdparty/spdlog/sinks/callback_sink.h create mode 100644 thirdparty/spdlog/sinks/daily_file_sink.h create mode 100644 thirdparty/spdlog/sinks/dist_sink.h create mode 100644 thirdparty/spdlog/sinks/dup_filter_sink.h create mode 100644 thirdparty/spdlog/sinks/hourly_file_sink.h create mode 100644 thirdparty/spdlog/sinks/kafka_sink.h create mode 100644 thirdparty/spdlog/sinks/mongo_sink.h create mode 100644 thirdparty/spdlog/sinks/msvc_sink.h create mode 100644 thirdparty/spdlog/sinks/null_sink.h create mode 100644 thirdparty/spdlog/sinks/ostream_sink.h create mode 100644 thirdparty/spdlog/sinks/qt_sinks.h create mode 100644 thirdparty/spdlog/sinks/ringbuffer_sink.h create mode 100644 thirdparty/spdlog/sinks/rotating_file_sink-inl.h create mode 100644 thirdparty/spdlog/sinks/rotating_file_sink.h create mode 100644 thirdparty/spdlog/sinks/sink-inl.h create mode 100644 thirdparty/spdlog/sinks/sink.h create mode 100644 thirdparty/spdlog/sinks/stdout_color_sinks-inl.h create mode 100644 thirdparty/spdlog/sinks/stdout_color_sinks.h create mode 100644 thirdparty/spdlog/sinks/stdout_sinks-inl.h create mode 100644 thirdparty/spdlog/sinks/stdout_sinks.h create mode 100644 thirdparty/spdlog/sinks/syslog_sink.h create mode 100644 thirdparty/spdlog/sinks/systemd_sink.h create mode 100644 thirdparty/spdlog/sinks/tcp_sink.h create mode 100644 thirdparty/spdlog/sinks/udp_sink.h create mode 100644 thirdparty/spdlog/sinks/win_eventlog_sink.h create mode 100644 thirdparty/spdlog/sinks/wincolor_sink-inl.h create mode 100644 thirdparty/spdlog/sinks/wincolor_sink.h create mode 100644 thirdparty/spdlog/spdlog-inl.h create mode 100644 thirdparty/spdlog/spdlog.h create mode 100644 thirdparty/spdlog/stopwatch.h create mode 100644 thirdparty/spdlog/tweakme.h create mode 100644 thirdparty/spdlog/version.h create mode 100644 vcpkg.json diff --git a/.clang-tidy b/.clang-tidy new file mode 100644 index 00000000..d46dabf3 --- /dev/null +++ b/.clang-tidy @@ -0,0 +1,59 @@ +Checks: '*, + -llvmlibc-*, -altera-*, -fuchsia-*, + -modernize-use-trailing-return-type, + -cppcoreguidelines-avoid-magic-numbers, + -cppcoreguidelines-pro-bounds-pointer-arithmetic, + -readability-magic-numbers, + -misc-const-correctness, + -llvm-header-guard, + -hicpp-uppercase-literal-suffix, + -readability-uppercase-literal-suffix, + -readability-else-after-return, + -llvm-else-after-return, + -bugprone-easily-swappable-parameters, + -google-readability-todo, + -abseil-*, + -android-cloexec-open' +CheckOptions: + - key: readability-identifier-naming.ClassCase + value: CamelCase + - key: readability-identifier-naming.FunctionCase + value: lower_case + - key: readability-identifier-naming.VariableCase + value: lower_case + - key: readability-identifier-length.IgnoredVariableNames + value: 'i|j|k|w|h|x|y|z|it' + - key: readability-identifier-length.IgnoredLoopCounterNames + value: 'i|j|k|w|h|x|y|z|it' + - key: readability-identifier-length.IgnoredParameterNames + value: 'w|h|x|y|z' + - key: performance-unnecessary-value-param.AllowedTypes + value: 'Eigen::Ref|sync_ptr' + - key: readability-identifier-naming.ClassCase + value: CamelCase + - key: readability-identifier-naming.MemberCase + value: lower_case + - key: readability-identifier-naming.ProtectedMemberSuffix + value: _ + - key: readability-identifier-naming.PrivateMemberSuffix + value: _ + - key: readability-identifier-naming.ClassMethodCase + value: lower_case + - key: readability-identifier-naming.EnumCase + value: CamelCase + - key: readability-identifier-naming.EnumConstantCase + value: UPPER_CASE + - key: readability-identifier-naming.ParameterCase + value: lower_case + - key: readability-identifier-naming.StructCase + value: CamelCase + - key: readability-identifier-naming.TemplateParameterCase + value: CamelCase + - key: readability-identifier-naming.NamespaceCase + value: lower_case + - key: readability-identifier-naming.MacroDefinitionCase + value: UPPER_CASE + - key: readability-identifier-naming.GlobalConstantCase + value: UPPER_CASE + - key: readability-identifier-naming.FunctionCase + value: lower_case \ No newline at end of file diff --git a/.github/workflows/build_test.yaml b/.github/workflows/build_test.yaml index 07275e7f..f7df15ea 100644 --- a/.github/workflows/build_test.yaml +++ b/.github/workflows/build_test.yaml @@ -8,7 +8,7 @@ jobs: steps: - uses: actions/checkout@v1 - name: install deps - run: sudo apt install build-essential cmake libjsoncpp-dev libeigen3-dev libcurl4-openssl-dev libtins-dev libpcap-dev libglfw3-dev libglew-dev libspdlog-dev libflatbuffers-dev libgtest-dev clang-format + run: sudo apt install build-essential cmake libeigen3-dev libcurl4-openssl-dev libtins-dev libpcap-dev libpng-dev libglfw3-dev libflatbuffers-dev libgtest-dev clang-format - name: cpp-lint run: ./clang-linting.sh - name: install python @@ -24,7 +24,7 @@ jobs: steps: - uses: actions/checkout@v1 - name: install deps - run: sudo apt install build-essential cmake libjsoncpp-dev libeigen3-dev libcurl4-openssl-dev libtins-dev libpcap-dev libglfw3-dev libglew-dev libspdlog-dev libflatbuffers-dev libgtest-dev clang-format + run: sudo apt install build-essential cmake libeigen3-dev libcurl4-openssl-dev libtins-dev libpcap-dev libpng-dev libglfw3-dev libflatbuffers-dev libgtest-dev clang-format - name: cmake configure run: cmake . -B build -DBUILD_TESTING=ON -DBUILD_EXAMPLES=ON - name: cmake build @@ -38,7 +38,7 @@ jobs: - name: install python run: sudo apt install python3 python3-pip - name: install deps - run: sudo apt install build-essential cmake libjsoncpp-dev libeigen3-dev libcurl4-openssl-dev libtins-dev libpcap-dev libglfw3-dev libglew-dev libspdlog-dev libflatbuffers-dev + run: sudo apt install build-essential cmake libeigen3-dev libcurl4-openssl-dev libtins-dev libpcap-dev libpng-dev libglfw3-dev libflatbuffers-dev - name: install python-deps run: pip3 install pytest pytest-xdist - name: build python @@ -53,9 +53,9 @@ jobs: uses: johnwason/vcpkg-action@v6 id: vcpkg with: - pkgs: jsoncpp eigen3 curl libtins glfw3 glew spdlog libpng flatbuffers gtest + pkgs: eigen3 curl libtins glfw3 libpng flatbuffers gtest triplet: x64-windows - revision: 2024.04.26 + revision: 2024.11.16 token: ${{ github.token }} github-binarycache: true - name: cmake configure @@ -74,9 +74,9 @@ jobs: uses: johnwason/vcpkg-action@v6 id: vcpkg with: - pkgs: jsoncpp eigen3 curl libtins glfw3 glew spdlog libpng flatbuffers gtest + pkgs: eigen3 curl libtins glfw3 libpng flatbuffers gtest triplet: x64-windows - revision: 2024.04.26 + revision: 2024.11.16 token: ${{ github.token }} github-binarycache: true - name: install python-deps @@ -92,7 +92,7 @@ jobs: steps: - uses: actions/checkout@v1 - name: install deps - run: brew install cmake pkg-config jsoncpp eigen curl libtins glfw glew spdlog flatbuffers googletest + run: brew install cmake pkg-config eigen curl libtins glfw flatbuffers googletest - name: cmake configure run: cmake . -B build -DBUILD_TESTING=ON -DBUILD_EXAMPLES=ON - name: cmake build @@ -104,7 +104,7 @@ jobs: steps: - uses: actions/checkout@v1 - name: install deps - run: brew install cmake pkg-config jsoncpp eigen curl libtins glfw glew spdlog flatbuffers + run: brew install cmake pkg-config eigen curl libtins glfw flatbuffers - name: install python-deps run: python3.12 -m pip install pytest pytest-xdist --break-system-packages - name: build python diff --git a/.gitignore b/.gitignore index 1d30d7a6..70a27769 100644 --- a/.gitignore +++ b/.gitignore @@ -27,4 +27,5 @@ CTestTestfile.cmake generated rules.ninja *.a -**/_build \ No newline at end of file +**/_build +clang-tidy-output.{txt,json} \ No newline at end of file diff --git a/.gitmodules b/.gitmodules index f4ca0429..c03bdda8 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,4 +1,4 @@ [submodule "sdk-extensions"] path = sdk-extensions url = ../sdk-extensions.git - branch = master + branch = master \ No newline at end of file diff --git a/CHANGELOG.rst b/CHANGELOG.rst index 3430909e..d8355d25 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -2,7 +2,77 @@ Changelog ========= -**Important: as of 0.13.0, the SDK is no longer compatible with firmware versions older than 2.1.0.** +Important announcements +----------------------- +* As of 0.13.0, the SDK is no longer compatible with firmware versions older than 2.1.0. +* Official SDK support for firmware versions 2.2 and 2.3 will end at the end of June, 2025. +* Update vcpkg ref of build to 2024.11.16 + +[20250117] [0.14.0] +====================== + +ouster_client/C++ SDK +--------------------- + +* Jsoncpp fully removed for jsoncons +* [BREAKING] All the HTTP endpoint methods in the ``SensorHttpImp`` class now return a ``std::string`` instead of a ``Json::Value`` object. The result can be parsed with any json parser. +* Add CMake logic for packaging c++ sdk in binary format when ``-DBUILD_SHARED_LIBRARY=ON`` is enabled. + +ouster_client/Python SDK +------------------------ +* Add a new command ``localize`` to perform localization and tracking within a SLAM-generated map of a given site. +* Add ``LidarScan.sensor_info`` to store the relevant ``SensorInfo`` for each scan +* [BREAKING] Deprecated ``ScanBatcher::operator()(const uint8_t*, uint64_t, LidarScan&)`` for ``ScanBatcher::operator()(const LidarPacket&, LidarScan&)`` +* [BREAKING] Disabled ``OUSTER_USE_EIGEN_MAX_ALIGN_BYTES_32`` by default to help avoid ABI mismatches +* [BREAKING] Changed ``SensorClient`` ``get_packet`` API to return packet in the ``ClientEvent`` rather than through reference parameters +* Updated to Kiss ICP 1.1.0 version +* [BUGFIX] Fixed OSF failing to load scans saved in 4096 * 5 mode +* [BUGFIX] Fixed Python ``client.transform`` and ``client.dewarp`` methods returning incorrect results due to ignoring column layout of input data +* Refactored logging to remove spdlog API exposure +* Vendored spdlog in third party dependencies +* [BREAKING] Change ``sensor_info.sn`` type from string to uint64_t +* Support additional array types and formats for Cloud.set_xyz +* Added new ``mask``, ``reduce`` and ``clip`` ScanSource operations to the SDK CLI and API +* The ``clip`` command can now specify which fields to be applied to and accepts unit +* Add relevant methods from ``packet_format`` to ``LidarPacket`` and ``ImuPacket`` classes +* Add ``format`` to each ``Packet`` object with the relevant packet format +* Tolerate off-by-1-byte for bag files recorded using an older version of the ouster-ros driver +* Fix yaw axis to zero in the get_rot_matrix_to_align_to_gravity function +* [BUGFIX] Fix the ``-c`` option in ouster-cli ``config`` command to set config from file + +ouster_cli +---------- +* Add ``ouster-cli source SENSOR set_static_ip`` command to set sensor static IPs. +* Add ``ouster-cli source SENSOR diagnostics`` command to download sensor diagnostic dumps. +* [BREAKING] Merge the handling of ``--extrinsics-file`` ouster-cli option into ``--extrinsics`` option. +* [BREAKING] ouster-cli ``--extrinsics`` option requires adding double quotes for space separated values. +* ouster-cli ``--extrinsics`` option now accepts ``identity`` as a keyword for overrideng sensor extriniscs with identity. +* ouster-cli ``--extrinsics`` option now accepts the following additional formats besides the ``16`` numbers array format: + * ``--extrinsics X,Y,Z,R,PY`` for position + euler angles. + * ``--extrinsics X,Y,Z,QX,QY,QZ,QW`` for position + quaternion. +* Add cursor-driven AOI selection feature to 2d images in ouster-cli ``viz`` command. + +ouster_osf +---------- +* Introduce ``ouster::osf::AsyncWriter`` to offload saving ``LidarScan`` as OSF to a background thread, improving CLI performance when saving OSF files. +* Add the ``ouster::osf::Encoder`` type, which allows parameterizing the OSF compression level. +* Change the default OSF PNG encoder compression level to 1 from 4. +* [BREAKING] ``ouster.sdk.osf`` no longer exports lower-level OSF API classes (such as ``osf.Reader``.) +* ``ouster::osf::Writer::save`` now throws if the resolution of a ``LidarScan`` being saved doesn't match what is specified in sensor info/metadata. +* [BUGFIX] Fix incorrect ``OsfScanSource`` data when reading from an OSF file containing empty or missing streams. + +ouster_viz +---------- +* ``SimpleViz`` now drops frames when necessary to keep up with a live data source (i.e. sensor.) +* Add a map origin axis and label. +* Invoke frame buffer resize handlers added to ``PointViz`` when GLFW's window resize event fires. +* [BREAKING] Change ``PointViz::window_coordinates_to_image_pixel`` so that it always returns a pixel location (even outside the image), which can be useful in some situations. +* [BUGFIX] On screen display frame number starts at zero instead of one. +* [BUGFIX] ``LidarScanViz`` now only creates view modes for PIXEL fields. +* [BUGFIX] Use the last valid column pose as a ``LidarScan``'s origin, instead of the first. +* [BUGFIX] Limit number of keyboard shortcuts to toggle sensors from CTRL+1 to CTRL+9. +* [BUGFIX] Fix a key shortcut help rendering issue and improve consistency of key shortcut help. + [20241017] [0.13.1] ====================== @@ -101,7 +171,7 @@ ouster_viz * [BREAKING] removed ``bool update_on_input()`` and ``update_on_input(bool)`` methods from ``PointViz``. * [BUGFIX] SimpleViz throws a 'generator already executing' exception. -ouster_cli +ouster-cli ---------- * Add support for reading and writing ROS1 and ROS2 bag files. @@ -449,9 +519,7 @@ ouster_client ------------- * Add ``LidarScan.pose`` with poses per column -* Add ``_client.IndexedPcapReader`` and ``_client.PcapIndex`` to enable random - pcap file access by frame number - +* Add ``_client.IndexedPcapReader`` and ``_client.PcapIndex`` to enable random pcap file access by frame number * [BREAKING] remove ``ouster::Imu`` object * [BREAKING] change the return type of ``ouster::packet_format::frame_id`` from ``uint16_t`` to ``uint32_t`` * [BREAKING] remove methods ``px_range``, ``px_reflectivity``, ``px_signal``, and ``px_ambient`` from ``ouster::packet_format`` @@ -1073,3 +1141,4 @@ Fixed - fixed clipping issues with parallel projection - fixed point coloring issues in z-color mode - improved visualizer performance + diff --git a/CMakeLists.txt b/CMakeLists.txt index 2ba18416..480b06a5 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -13,26 +13,28 @@ include(DefaultBuildType) include(VcpkgEnv) # ==== Project Name ==== -project(ouster-sdk VERSION 0.13.1) +project(ouster-sdk VERSION 0.14.0) # generate version header -set(OusterSDK_VERSION_STRING 0.13.1) +set(OusterSDK_VERSION_STRING 0.14.0) include(VersionGen) # ==== Options ==== option(CMAKE_POSITION_INDEPENDENT_CODE "Build position independent code." ON) -option(BUILD_SHARED_LIBS "Build shared libraries." OFF) option(BUILD_PCAP "Build pcap utils." ON) option(BUILD_OSF "Build Ouster OSF library." ON) option(BUILD_VIZ "Build Ouster visualizer." ON) +option(BUILD_PYTHON_MODULE "Build python module (should not use this except in special instances)." OFF) option(BUILD_TESTING "Build tests" OFF) option(BUILD_EXAMPLES "Build C++ examples" OFF) -option(OUSTER_USE_EIGEN_MAX_ALIGN_BYTES_32 "Eigen max aligned bytes." ON) +option(OUSTER_USE_EIGEN_MAX_ALIGN_BYTES_32 "Eigen max aligned bytes." OFF) +option(BUILD_SHARED_LIBRARY "Build shared Library." OFF) +option(BUILD_DEBIAN_FOR_GITHUB "Build debian for github ci" OFF) # when building as a top-level project if(CMAKE_PROJECT_NAME STREQUAL PROJECT_NAME) set(CMAKE_EXPORT_COMPILE_COMMANDS ON) - + set(OUSTER_TOP_LEVEL ON) if(NOT DEFINED CMAKE_CXX_STANDARD) set(CMAKE_CXX_STANDARD 14) set(CMAKE_CXX_STANDARD_REQUIRED ON) @@ -43,13 +45,15 @@ if(CMAKE_PROJECT_NAME STREQUAL PROJECT_NAME) endif() if(MSVC) - add_compile_options(/W2) + add_compile_options(/W2 /bigobj /Zf) add_compile_definitions(NOMINMAX _USE_MATH_DEFINES WIN32_LEAN_AND_MEAN) else() add_compile_options(-Wall -Wextra) endif() include(CTest) +else() + set(OUSTER_TOP_LEVEL OFF) endif() # === Subdirectories === @@ -69,16 +73,26 @@ endif() if(BUILD_VIZ) add_subdirectory(ouster_viz) + add_subdirectory(thirdparty/glad) endif() if(BUILD_EXAMPLES) add_subdirectory(examples) endif() +if(BUILD_SHARED_LIBRARY) + add_subdirectory(ouster_library) +endif() + if(CMAKE_PROJECT_NAME STREQUAL PROJECT_NAME AND BUILD_TESTING) add_subdirectory(tests) endif() +if(BUILD_PYTHON_MODULE) + set(OUSTER_SDK_PATH "${CMAKE_CURRENT_LIST_DIR}" CACHE STRING "SDK source directory") + add_subdirectory(python) +endif() + # ==== Packaging ==== set(CPACK_PACKAGE_CONTACT "oss@ouster.io") set(CPACK_PACKAGE_VENDOR "Ouster") @@ -88,18 +102,30 @@ set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE") set(CPACK_RESOURCE_FILE_README "${CMAKE_CURRENT_SOURCE_DIR}/README.rst") set(CPACK_PACKAGING_INSTALL_PREFIX "/opt/ouster") set(CPACK_SYSTEM_NAME ${CMAKE_SYSTEM_PROCESSOR}) -set(CPACK_PACKAGE_NAME ouster_sdk) -set(CPACK_GENERATOR "DEB;TGZ") + +if(BUILD_DEBIAN_FOR_GITHUB) + set(CPACK_DEBIAN_PACKAGE_NAME ouster-sdk) + set(CPACK_DEBIAN_FILE_NAME DEB-DEFAULT) + set(CPACK_DEBIAN_PACKAGE_DEPENDS + "libeigen3-dev, libtins-dev, libglfw3-dev, libpng-dev, libflatbuffers-dev") +endif() + +if(OUSTER_LIBRARY_NAME) + set(CPACK_PACKAGE_NAME "${OUSTER_LIBRARY_NAME}") +else() + set(CPACK_PACKAGE_NAME "ouster-sdk") +endif() +set(CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}-${CMAKE_BUILD_TYPE}-${CPACK_PACKAGE_VERSION}-${CMAKE_HOST_SYSTEM_NAME}-${CMAKE_SYSTEM_VERSION}-${CMAKE_SYSTEM_PROCESSOR}") + +set(CPACK_GENERATOR "TGZ;ZIP") +if(BUILD_DEBIAN_FOR_GITHUB) + set(CPACK_GENERATOR "DEB;${CPACK_GENERATOR}") +endif() # source packages set(CPACK_SOURCE_GENERATOR "TGZ;ZIP") set(CPACK_SOURCE_IGNORE_FILES /.git /dist) -# deb options -set(CPACK_DEBIAN_PACKAGE_NAME ouster-sdk) -set(CPACK_DEBIAN_FILE_NAME DEB-DEFAULT) -set(CPACK_DEBIAN_PACKAGE_DEPENDS - "libjsoncpp-dev, libeigen3-dev, libtins-dev, libglfw3-dev, libglew-dev, libspdlog-dev, libpng-dev, libflatbuffers-dev") include(CPack) # ==== Install ==== @@ -117,14 +143,22 @@ install(EXPORT ouster-sdk-targets configure_file(cmake/OusterSDKConfig.cmake.in OusterSDKConfig.cmake @ONLY) install(FILES "${CMAKE_CURRENT_BINARY_DIR}/OusterSDKConfig.cmake" "${CMAKE_CURRENT_BINARY_DIR}/OusterSDKConfigVersion.cmake" + "cmake/Coverage.cmake" + "cmake/VcpkgEnv.cmake" DESTINATION lib/cmake/OusterSDK) -if(BUILD_PCAP) - # Install the findpcap cmake file for install targets. - # For some reason it only works if you rename it to PcapConfig.cmake - install(FILES "cmake/FindPcap.cmake" - DESTINATION lib/cmake/OusterSDK - RENAME PcapConfig.cmake) -endif() +install(FILES "cmake/FindEigen3.cmake" + DESTINATION lib/cmake/OusterSDK) +install(FILES "cmake/Findlibtins.cmake" + DESTINATION lib/cmake/OusterSDK) +install(FILES "cmake/FindCURL.cmake" + DESTINATION lib/cmake/OusterSDK) +install(FILES "cmake/Findglfw3.cmake" + DESTINATION lib/cmake/OusterSDK) +install(FILES "cmake/FindPcap.cmake" + DESTINATION lib/cmake/OusterSDK) +install(FILES "cmake/FindFlatbuffers.cmake" + DESTINATION lib/cmake/OusterSDK) + install(FILES LICENSE LICENSE-bin DESTINATION share) diff --git a/CMakeSettings.json b/CMakeSettings.json index dcf61699..78517021 100644 --- a/CMakeSettings.json +++ b/CMakeSettings.json @@ -12,7 +12,7 @@ "inheritEnvironments": [ "msvc_x64_x64" ], "variables": [ { - "name": "BUILD_EXAMPLES", + "name": "VCPKG_MANIFEST_MODE", "value": "True", "type": "BOOL" } @@ -30,7 +30,7 @@ "ctestCommandArgs": "", "variables": [ { - "name": "BUILD_EXAMPLES", + "name": "VCPKG_MANIFEST_MODE", "value": "True", "type": "BOOL" } diff --git a/LICENSE b/LICENSE index d6e599d0..827d523a 100644 --- a/LICENSE +++ b/LICENSE @@ -11,10 +11,52 @@ Files: include/optional-lite/* Copyright: 2014-2021 Martin Moene License: BSL-1.0 -Files: include/jsoncons* -Copyright Daniel Parker 2013 - 2020 +Files: thirdparty/include/jsoncons* +Copyright: Daniel Parker 2013 - 2020 License: BSL-1.0 +Files: thirdparty/spdlog/* +Copyright: 2016 Gabi Melman. +License: MIT + +Files: thirdparty/glad/* +Copyright: The Khronos Group, Public Domain +License: Apache-2.0 + +Files: thirdparty/glad/include/khrplatform.h +Copyright: 2008-2018 The Khronos Group Inc. +License: MIT + +Files: thirdparty/spdlog/fmt/* +Copyright: 2012 - present, Victor Zverovich and {fmt} contributors +Availability: https://github.com/fmtlib/fmt/ +License: MIT derivative + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be + included in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE + LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION + OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + --- Optional exception to the license --- + + As an exception, if, as a result of your compiling your source code, portions + of this Software are embedded into a machine-executable object form of such + source code, you may redistribute such embedded portions in such object form + without including the above copyright and permission notices. + License: BSD-3-Clause Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: @@ -64,4 +106,74 @@ License: BSL-1.0 SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - DEALINGS IN THE SOFTWARE. \ No newline at end of file + DEALINGS IN THE SOFTWARE. + +License: Apache-2.0 + Apache License - Version 2.0, January 2004 + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. + + "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: + + You must give any other recipients of the Work or Derivative Works a copy of this License; and + You must cause any modified files to carry prominent notices stating that You changed the files; and + You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and + If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. + + You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. + +License: MIT + Permission is hereby granted, free of charge, to any person obtaining a + copy of this software and/or associated documentation files (the + "Materials"), to deal in the Materials without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Materials, and to + permit persons to whom the Materials are furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Materials. + + THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. diff --git a/LICENSE-bin b/LICENSE-bin index 6a0d9f8b..da219f25 100644 --- a/LICENSE-bin +++ b/LICENSE-bin @@ -7,70 +7,11 @@ Description: compiled-in header-only library Availability: https://gitlab.com/libeigen/eigen License: MPL2 -Name: glew -Description: statically linked -Availability: https://github.com/nigels-com/glew -License: BSD 3-clause - The OpenGL Extension Wrangler Library - Copyright (C) 2002-2007, Milan Ikits - Copyright (C) 2002-2007, Marcelo E. Magallon - Copyright (C) 2002, Lev Povalahev - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - * The name of the author may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF - THE POSSIBILITY OF SUCH DAMAGE. - Name: glfw Description: statically linked Availability: https://github.com/glfw/glfw License: zlib -Name: jsoncpp -Description: statically linked -Availability: https://github.com/open-source-parsers/jsoncpp -License: MIT - Copyright (c) 2007-2010 Baptiste Lepilleur and The JsonCpp Authors - - Permission is hereby granted, free of charge, to any person - obtaining a copy of this software and associated documentation - files (the "Software"), to deal in the Software without - restriction, including without limitation the rights to use, copy, - modify, merge, publish, distribute, sublicense, and/or sell copies - of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be - included in all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - SOFTWARE. - Name: jsoncons Description: statically linked vendored header only library Availability: https://github.com/danielaparker/jsoncons/ @@ -234,30 +175,6 @@ License: Zlib License 3. This notice may not be removed or altered from any source distribution. -Name: glad -Description: statically linked -Availability: https://github.com/Dav1dde/glad/ -License: MIT - Copyright (c) 2013-2021 David Herberth - - Permission is hereby granted, free of charge, to any person obtaining a copy of - this software and associated documentation files (the "Software"), to deal in - the Software without restriction, including without limitation the rights to - use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - the Software, and to permit persons to whom the Software is furnished to do so, - subject to the following conditions: - - The above copyright notice and this permission notice shall be included in all - copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - Name: curl Description: statically linked Availability: https://github.com/curl/curl @@ -284,7 +201,7 @@ License: Curl License in this Software without prior written authorization of the copyright holder. Name: spdlog -Description: statically linked +Description: statically linked vendored header only library Availability: https://github.com/gabime/spdlog License: MIT Copyright (c) 2016 Gabi Melman. @@ -311,6 +228,37 @@ License: MIT This software depends on the fmt lib (MIT License), and users must comply to its license: https://github.com/fmtlib/fmt/blob/master/LICENSE.rst +Name: fmt +Description: statically linked vendored header only library +Availability: https://github.com/fmtlib/fmt/ +License: MIT derivative + Copyright (c) 2012 - present, Victor Zverovich and {fmt} contributors + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be + included in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE + LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION + OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + --- Optional exception to the license --- + + As an exception, if, as a result of your compiling your source code, portions + of this Software are embedded into a machine-executable object form of such + source code, you may redistribute such embedded portions in such object form + without including the above copyright and permission notices. Name: flatbuffers Description: statically linked @@ -528,4 +476,4 @@ subject to the following restrictions: not be misrepresented as being the original software. 3. This Copyright notice may not be removed or altered from any - source or altered source distribution. \ No newline at end of file + source or altered source distribution. diff --git a/Security.md b/Security.md index 49be5e11..daf444a6 100644 --- a/Security.md +++ b/Security.md @@ -34,6 +34,6 @@ Impact of the issue, including how an attacker might exploit the issue We prefer all communications to be in English. ### Response time -You should receive a response within 24 hours. +You should receive a response within 3 business days. If for some reason you do not, please follow up via email to ensure we received your original message. \ No newline at end of file diff --git a/_clang-tidy.py b/_clang-tidy.py new file mode 100644 index 00000000..0934376d --- /dev/null +++ b/_clang-tidy.py @@ -0,0 +1,195 @@ +import argparse +import re +import shutil +import glob +import os +import subprocess +from multiprocessing import Pool, cpu_count +import time +import json +import sys + +class ClangTidy: + class ClangTidyEntry: + def __init__(self, path, line_number, column_number, + msg_level, msg, name, split_names): + self.path = path + self.line_number = line_number + self.column_number = column_number + self.msg_level = msg_level + self.msg = msg + if name: + if split_names: + self.name = name.split(',') + else: + self.name = [name] + else: + self.name = "" + + def __str__(self): + return str(self.__dict__) + + def __eq__(self, other): + return (self.path == other.path and self.line_number == other.line_number and + self.column_number == other.column_number and self.msg_level == other.msg_level and + self.msg == other.msg and self.name == other.name) + + def __hash__(self): + return hash((self.path, self.line_number, self.column_number, + self.msg_level, self.msg, tuple(self.name))) + + + def __init__(self, clang_tidy_bin, paths, threads, compile_commands, clang_tidy_config, build_dir, split_names): + self._clang_tidy_bin = clang_tidy_bin + self._files = [] + self._split_names = split_names + for item in paths: + if os.path.isdir(item): + self._files.extend(glob.glob(item + "/*.h")) + self._files.extend(glob.glob(item + "/*.cpp")) + self._files.extend(glob.glob(item + "/**/*.h")) + self._files.extend(glob.glob(item + "/**/*.cpp")) + else: + self._files.append(item) + self._threads = threads + self._compile_commands = compile_commands + self._clang_tidy_config = clang_tidy_config + self._build_dir = build_dir + self._clang_message_regex = re.compile(r"^(?P.+):(?P\d+):(?P\d+): " + r"(?P\S+): (?P.*?)( \[(?P.*)\])?$") + self._entries = set() + self._count = 0 + + def _tidy_thread(self, file_path): + clang_tidy_args = [self._clang_tidy_bin, + "-extra-arg=-ferror-limit=0", + "-p", self._compile_commands, + f"--config-file={self._clang_tidy_config}", + file_path + ] + return subprocess.run(clang_tidy_args, stdout=subprocess.PIPE, stderr=subprocess.STDOUT).stdout + + def _flush_entry(self, current_result): + entry = self.ClangTidyEntry(current_result.group('path'), current_result.group('line_number'), + current_result.group('column_number'), current_result.group('msg_level'), + current_result.group('msg'), current_result.group('name'), self._split_names) + self._entries.add(entry) + self._count += 1 + + def run_tidy(self, raw_output_file=None, json_output_file=None, json_summary_output_file=None, progress_bar=True, quiet=True): + if progress_bar: + try: + from tqdm import tqdm + except: + print("tqdm not found, cant display progress bar. please install tqdm") + progress_bar = False + _pool = Pool(processes=self._threads) + results = [_pool.apply_async(self._tidy_thread, args=(item, )) for item in self._files] + print("Processing Files") + if raw_output_file: + if os.path.exists(raw_output_file): + os.remove(raw_output_file) + bar = None + if progress_bar: + bar = tqdm(total=len(self._files)) + while len(results) > 0: + if progress_bar: + bar.refresh() + time.sleep(1) + for item in results: + if item.ready(): + results.remove(item) + raw_output = item.get().decode('utf-8') + if raw_output_file: + with open(raw_output_file, 'a') as f: + f.write(raw_output) + for line in raw_output.split("\n"): + result = self._clang_message_regex.match(line) + if result: + self._flush_entry(result) + if progress_bar: + bar.update() + bar.refresh() + break + if progress_bar: + bar.clear() + bar.close() + temp_json = json.dumps([x.__dict__ for x in list(self._entries)], indent=4) + if not quiet: + print("Raw Output:") + with open(raw_output_file, 'r') as f: + print(f.read()) + print(f"Number of Unique entries: {len(self._entries)}") + print(f"Number of Entries Encountered: {self._count}") + if json_output_file: + with open(json_output_file, 'w') as f: + f.write(temp_json) + buckets = {} + for item in list(self._entries): + for name in item.name: + if name not in buckets: + buckets[name] = 0 + buckets[name] += 1 + + issue_categories = dict(sorted(buckets.items(), key=lambda item: item[1], reverse=True)) + summary = { + "unique_entries": len(self._entries), + "total_entries": self._count, + "issue_categories": issue_categories + } + if json_summary_output_file: + with open(json_summary_output_file, 'w') as f: + f.write(json.dumps(summary, indent=4)) + + print("Most Frequent Issue Categories:") + print(issue_categories) + print ("Summary") + print(summary) + + return self._entries + +if __name__ == "__main__": + parser = argparse.ArgumentParser(description='Run Clang Tidy') + parser.add_argument("--clang-tidy-bin", + help='Path to clang-tidy binary', + required=True, + type=str) + parser.add_argument("-j", "--threads-to-use", + help='Number Of Threads To Use', + default=cpu_count(), + type=int) + parser.add_argument("--compile-commands-json", + help='Path to compile_commands.json file', + required=True, + type=str) + parser.add_argument("--clang-tidy-config", + help='Path to .clang-tidy file', + required=True, + type=str) + parser.add_argument("--build-dir", + help='Path to the build directory', + required=True, + type=str) + parser.add_argument('-p', "--paths", nargs='+', + help='Paths to Scan', + required=True) + parser.add_argument("--json-output", type=str, default=None, + help='Json Output File') + parser.add_argument("--json-summary-output", type=str, default=None, + help='Json Summary Output File') + parser.add_argument("--raw-output", type=str, default=None, + help='Raw Output File') + + parser.add_argument("--split-names", default=False, action='store_true', + help='Split the names into their own buckets') + + parser.add_argument("--quiet", default=True, action='store_true', + help='Do not emit stdout messages') + + args = parser.parse_args() + + tidy = ClangTidy(args.clang_tidy_bin, args.paths, + args.threads_to_use, args.compile_commands_json, + args.clang_tidy_config, args.build_dir, args.split_names) + + tidy.run_tidy(args.raw_output, args.json_output, args.json_summary_output, sys.stdout.isatty(), args.quiet) diff --git a/check_exports.py b/check_exports.py new file mode 100644 index 00000000..b86f4387 --- /dev/null +++ b/check_exports.py @@ -0,0 +1,255 @@ +import sys +import clang.cindex +import glob +import os +import atexit +import shutil +import subprocess +import tempfile +import argparse +import time +from multiprocessing import Pool, cpu_count + +def find_annotation(node): + for child in node.get_children(): + if child.kind == clang.cindex.CursorKind.ANNOTATE_ATTR: + return child.spelling + +CLASS_TEMPLATE_METHOD = "" + +def process_ast(node): + wrong_annotation = [] + correct_annotation = [] + missing_annotation = [] + initial_queue = [node] + ouster_queue = [] + ast_type_match = { + clang.cindex.CursorKind.CLASS_DECL: "OUSTER_API_CLASS", + clang.cindex.CursorKind.CONSTRUCTOR: "OUSTER_API_FUNCTION", + clang.cindex.CursorKind.DESTRUCTOR: "OUSTER_API_FUNCTION", + clang.cindex.CursorKind.CXX_METHOD: "OUSTER_API_FUNCTION", + clang.cindex.CursorKind.STRUCT_DECL: "OUSTER_API_CLASS", + clang.cindex.CursorKind.FUNCTION_DECL: "OUSTER_API_FUNCTION", + + } + ouster_api_ignore = "OUSTER_API_IGNORE" + while len(initial_queue) > 0: + current_node = initial_queue.pop(0) + if current_node.kind == clang.cindex.CursorKind.NAMESPACE and current_node.spelling == "ouster": + ouster_queue.append(current_node) + else: + initial_queue.extend([x for x in current_node.get_children()]) + + while len(ouster_queue) > 0: + current_node = ouster_queue.pop(0) + kind = current_node.kind + + in_class = current_node.lexical_parent and (current_node.lexical_parent.kind == clang.cindex.CursorKind.CLASS_DECL or + current_node.lexical_parent.kind == clang.cindex.CursorKind.STRUCT_DECL) + in_class_template = current_node.lexical_parent and current_node.lexical_parent.kind == clang.cindex.CursorKind.CLASS_TEMPLATE + + # make sure it actually is a class method if template + if kind == clang.cindex.CursorKind.FUNCTION_TEMPLATE: + if in_class or in_class_template: + kind = CLASS_TEMPLATE_METHOD + if current_node.access_specifier != clang.cindex.AccessSpecifier.PUBLIC: + continue + + if (kind == clang.cindex.CursorKind.CXX_METHOD or + kind == clang.cindex.CursorKind.CONSTRUCTOR or + kind == clang.cindex.CursorKind.DESTRUCTOR) and in_class_template: + kind = CLASS_TEMPLATE_METHOD + if current_node.access_specifier != clang.cindex.AccessSpecifier.PUBLIC: + if kind == clang.cindex.CursorKind.CONSTRUCTOR: + continue + if kind == clang.cindex.CursorKind.CXX_METHOD: + continue + if kind == clang.cindex.CursorKind.STRUCT_DECL: + continue + if kind == clang.cindex.CursorKind.FUNCTION_DECL: + continue + if kind == clang.cindex.CursorKind.FUNCTION_TEMPLATE: + if len([x for x in current_node.get_children()]) == 0: + continue + + if kind == clang.cindex.CursorKind.FUNCTION_DECL and in_class: + continue + + if kind == clang.cindex.CursorKind.CLASS_DECL: + if len([x for x in current_node.get_children()]) == 0: + continue + + if kind == clang.cindex.CursorKind.CLASS_TEMPLATE: + template_count = 0 + total_count = 0 + for item in current_node.get_children(): + if item.kind == clang.cindex.CursorKind.TEMPLATE_TYPE_PARAMETER: + template_count += 1 + if item.kind == clang.cindex.CursorKind.TEMPLATE_NON_TYPE_PARAMETER: + template_count += 1 + total_count += 1 + if total_count == template_count: + continue + + if kind == clang.cindex.CursorKind.STRUCT_DECL: + if len([x for x in current_node.get_children()]) == 0: + continue + + if kind in ast_type_match: + annotation = find_annotation(current_node) + if annotation: + if annotation == ouster_api_ignore: + continue + if annotation != ast_type_match[kind]: + wrong_annotation.append((current_node, ast_type_match[kind], annotation)) + else: + correct_annotation.append((current_node, ast_type_match[kind], annotation)) + else: + missing_annotation.append((current_node, ast_type_match[kind], annotation)) + ouster_queue.extend([x for x in current_node.get_children()]) + + wrong_annotation.sort(key=lambda x: str(list(x)[0].location.file)) + wrong_annotation = [item_to_string(*x) for x in wrong_annotation] + correct_annotation.sort(key=lambda x: str(list(x)[0].location.file)) + correct_annotation = [item_to_string(*x) for x in correct_annotation] + missing_annotation.sort(key=lambda x: str(list(x)[0].location.file)) + missing_annotation = [item_to_string(*x) for x in missing_annotation] + + return (wrong_annotation, correct_annotation, missing_annotation) + + +def get_full_name(item): + output = "" + stack = [item.displayname] + filename = item.location.file + current_node = item.lexical_parent + while current_node is not None and current_node.spelling != filename: + stack.append(current_node.spelling) + current_node = current_node.lexical_parent + + return "::".join(reversed(stack[:-1])) + + +def item_to_string(item, expected, actual): + return f"\t{item.location.file}:[{item.location.line}:{item.location.column}] {get_full_name(item)} Kind: {item.kind}: Expected: {expected} Actual: {actual}" + + +def process(file_to_check, tempdir): + index = clang.cindex.Index.create() + token_dict = {} + compdb = clang.cindex.CompilationDatabase.fromDirectory(tempdir) + commands = compdb.getCompileCommands(file_to_check) + + file_args = ["-D OUSTER_CHECK_EXPORTS=1"] + for command in commands: + for argument in command.arguments: + file_args.append(argument) + tu = index.parse(file_to_check, file_args[:-2]) + wrong_annotation, correct_annotation, missing_annotation = process_ast(tu.cursor) + + return missing_annotation, wrong_annotation, file_to_check + +if __name__ == '__main__': + parser = argparse.ArgumentParser( + prog='check_exports.py', + description='Check the linker exports for the project') + + + parser.add_argument('--vcpkg-toolchain', default=None) + parser.add_argument('--vcpkg-triplet', default=None) + parser.add_argument("-j", "--threads-to-use", + help='Number Of Threads To Use', + default=cpu_count(), + type=int) + parser.add_argument('-v', '--verbose', action='store_true', default=False) + + args = parser.parse_args() + + vcpkg_toolchain = args.vcpkg_toolchain + vcpkg_triplet = args.vcpkg_triplet + threads = args.threads_to_use + verbose = args.verbose + + wrong = [] + missing = [] + source_dir = os.path.dirname(os.path.abspath(__file__)) + files = [] + files.extend(glob.glob(f"{source_dir}/ouster_client/include/ouster/*.h")) + files.extend(glob.glob(f"{source_dir}/ouster_osf/include/ouster/osf/*.h")) + files.extend(glob.glob(f"{source_dir}/ouster_pcap/include/ouster/*.h")) + files.extend(glob.glob(f"{source_dir}/ouster_viz/include/ouster/*.h")) + + tempdir = tempfile.mkdtemp() + def cleanup(): + shutil.rmtree(tempdir) + + atexit.register(cleanup) + + + if vcpkg_toolchain and vcpkg_triplet: + subprocess.check_output(['cmake', source_dir, + f"-DCMAKE_TOOLCHAIN_FILE={vcpkg_toolchain}", + f"-DVCPKG_DEFAULT_TRIPLET={vcpkg_triplet}", + "-DVCPKG_MANIFEST_MODE=OFF"], + cwd=tempdir) + else: + subprocess.check_output(['cmake', '-B', tempdir, source_dir], cwd=tempdir) + + pool = Pool(processes=threads) + + progress_bar = sys.stdout.isatty() + bar = None + if progress_bar: + try: + from tqdm import tqdm + except: + print("tqdm not found, cant display progress bar. please install tqdm") + progress_bar = False + if progress_bar: + bar = tqdm(total=len(files)) + + results = [pool.apply_async(process, args=(file_to_check, tempdir)) + for file_to_check in files] + + missing = [] + wrong = [] + files_complete = [] + while len(results) > 0: + if progress_bar: + bar.refresh() + time.sleep(0.1) + for item in results: + if item.ready(): + results.remove(item) + missing_annotation, wrong_annotation, file_to_check = item.get() + missing.extend(missing_annotation) + wrong.extend(wrong_annotation) + files_complete.append(file_to_check) + if progress_bar: + if verbose: + tqdm.write(f"Finished File: {file_to_check}") + tqdm.write(f"Remaining Files:") + for remaining in list(set(files) - set(files_complete)): + tqdm.write(f" {remaining}") + bar.update() + bar.refresh() + break + if progress_bar: + bar.clear() + bar.close() + issues = False + if len(wrong) > 0: + issues = True + print(f"Wrong:") + for item in set(wrong): + print(item) + if len(missing) > 0: + issues = True + print(f"Missing:") + for item in set(missing): + print(item) + + if issues: + sys.exit(1) + else: + print("No issues detected") diff --git a/clang-linting.sh b/clang-linting.sh index 349c2126..21c02ccb 100755 --- a/clang-linting.sh +++ b/clang-linting.sh @@ -49,4 +49,4 @@ if [ -z "$OUTPUT" ]; then else run_command exit 1; -fi \ No newline at end of file +fi diff --git a/clang-tidy.sh b/clang-tidy.sh new file mode 100755 index 00000000..5d4c4663 --- /dev/null +++ b/clang-tidy.sh @@ -0,0 +1,82 @@ +#! /bin/bash +set -e +# Variables +BUILD_DIR=$(mktemp -d) +SOURCE_DIR=$(cd $(dirname $0) && pwd) +CURRENT_DIR=$PWD +CLANG_TIDY_THREADS=${CLANG_TIDY_THREADS:-$(nproc)} + +# Check For Tools +which clang-tidy 2>&1 > /dev/null +if [ $? -ne 0 ]; +then + echo "ERROR: clang-tidy needs to be installed to run this tool" + exit 1 +else + clang-tidy --help | grep "config-file" 2>&1 > /dev/null + if [ $? -ne 0 ]; + then + echo "ERROR: clang-tidy needs to be updated, missing --config-file cli support" + exit 2 + fi +fi + +which python3 2>&1 > /dev/null +if [ $? -ne 0 ]; +then + echo "ERROR: python3 needs to be installed to run this tool" + exit 3 +fi + +which cmake 2>&1 > /dev/null +if [ $? -ne 0 ]; +then + echo "ERROR: cmake needs to be installed to run this tool" + exit 4 +fi + +python3 -c "import pybind11" 2>&1 > /dev/null +if [ $? -ne 0 ]; +then + echo "ERROR: pybind11 (via pip) to be installed to run this tool" + echo "ERROR: run python3 -m pip install pybind11" + exit 5 +fi +python3 -c "import tqdm" 2>&1 > /dev/null +if [ $? -ne 0 ]; +then + echo "ERROR: tqdm (via pip) to be installed to run this tool" + echo "ERROR: run python3 -m pip install tqdm" + exit 6 +fi + +# Register an on exit cleanup function to delete the temporary +# directory. +cleanup() { + rm -rf "$BUILD_DIR" +} +trap cleanup EXIT + +# Map out the files to be checked, if no files are specified on the command line +# include all of the source files +FILES="$SOURCE_DIR/ouster_client $SOURCE_DIR/ouster_pcap $SOURCE_DIR/ouster_osf $SOURCE_DIR/ouster_viz $SOURCE_DIR/python $SOURCE_DIR/examples" +if [ "$#" -ne 0 ]; then + FILES="" + for item in "$@" + do + # Grab the realpath of the files before we change directories + FILES="$FILES $(realpath $item)" + done +fi + +# Enter the temporary build directory +pushd $BUILD_DIR > /dev/null + +# Generate the compile_commands.json file for the tidy step +cmake $SOURCE_DIR -DBUILD_EXAMPLES=ON -DBUILD_PCAP=ON -DBUILD_OSF=ON -DBUILD_VIZ=ON -DBUILD_PYTHON_MODULE=ON -DSKIP_SDK_FIND=ON -DBUILD_TESTING=ON -DPYTHON_EXECUTABLE=$(which python3) +cmake --build . --target ouster_generate_header cpp_gen + +# Run tidy +python3 $SOURCE_DIR/_clang-tidy.py --clang-tidy-bin $(which clang-tidy) --compile-commands-json $PWD/compile_commands.json --clang-tidy-config $SOURCE_DIR/.clang-tidy -j $CLANG_TIDY_THREADS --build-dir $PWD --json-output $CURRENT_DIR/clang-tidy-output.json --raw-output $CURRENT_DIR/clang-tidy-output.txt --paths $FILES --json-summary-output $CURRENT_DIR/clang-tidy-output-summary.json + +popd > /dev/null \ No newline at end of file diff --git a/cmake/FindCURL.cmake b/cmake/FindCURL.cmake index 0c3d0591..69b70708 100644 --- a/cmake/FindCURL.cmake +++ b/cmake/FindCURL.cmake @@ -2,12 +2,16 @@ # Note: curl from VCPKG appears to completely ignore curl find modules despite # CMAKE_MODULE_PATH settings -include(FindPackageHandleStandardArgs) +if(NOT OUSTER_SKIP_FIND_PACKAGE_STANDARD) + include(FindPackageHandleStandardArgs) +endif() # Prefer package config if it exists -find_package(CURL CONFIG QUIET) +find_package(CURL CONFIG QUIET NO_CMAKE_FIND_ROOT_PATH) if(CURL_FOUND) - find_package_handle_standard_args(CURL CONFIG_MODE) + if(NOT OUSTER_SKIP_FIND_PACKAGE_STANDARD) + find_package_handle_standard_args(CURL CONFIG_MODE) + endif() return() endif() @@ -32,9 +36,11 @@ find_library(CURL_LIBRARIES NAMES mark_as_advanced(CURL_LIBRARIES) # Check that we have everything that we need -find_package_handle_standard_args(CURL - REQUIRED_VARS CURL_INCLUDE_DIRS CURL_LIBRARIES - VERSION_VAR CURL_VERSION_STRING) +if(NOT OUSTER_SKIP_FIND_PACKAGE_STANDARD) + find_package_handle_standard_args(CURL + REQUIRED_VARS CURL_INCLUDE_DIRS CURL_LIBRARIES + VERSION_VAR CURL_VERSION_STRING) +endif() if(NOT TARGET CURL::libcurl) add_library(CURL::libcurl UNKNOWN IMPORTED) diff --git a/cmake/FindEigen3.cmake b/cmake/FindEigen3.cmake index 8ba8cbba..1988b86e 100644 --- a/cmake/FindEigen3.cmake +++ b/cmake/FindEigen3.cmake @@ -1,10 +1,14 @@ # Define forwards-compatible imported target for old platforms (Ubuntu 16.04) -include(FindPackageHandleStandardArgs) +if(NOT OUSTER_SKIP_FIND_PACKAGE_STANDARD) + include(FindPackageHandleStandardArgs) +endif() -find_package(Eigen3 CONFIG QUIET) +find_package(Eigen3 CONFIG QUIET NO_CMAKE_FIND_ROOT_PATH) -find_package_handle_standard_args(Eigen3 CONFIG_MODE) +if(NOT OUSTER_SKIP_FIND_PACKAGE_STANDARD) + find_package_handle_standard_args(Eigen3 CONFIG_MODE) +endif() if(NOT TARGET Eigen3::Eigen) add_library(Eigen3::Eigen INTERFACE IMPORTED) diff --git a/cmake/FindFlatbuffers.cmake b/cmake/FindFlatbuffers.cmake new file mode 100644 index 00000000..767da664 --- /dev/null +++ b/cmake/FindFlatbuffers.cmake @@ -0,0 +1,59 @@ +# Find flatbuffers and set flatc +# Set OUSTER_SKIP_FIND_PACKAGE_STANDARD to FALSE on APPLE +# When set to TRUE, there are: flatbuffers/flatbuffers.h not found errors +if(APPLE) + set(OUSTER_SKIP_FIND_PACKAGE_STANDARD FALSE) +else() + set(OUSTER_SKIP_FIND_PACKAGE_STANDARD TRUE) +endif() + +if(NOT OUSTER_SKIP_FIND_PACKAGE_STANDARD) + include(FindPackageHandleStandardArgs) +endif() + +find_package(Flatbuffers CONFIG REQUIRED QUIET NO_CMAKE_FIND_ROOT_PATH) + +if(NOT TARGET flatbuffers::flatbuffers) + add_library(flatbuffers::flatbuffers INTERFACE IMPORTED) + set_target_properties(flatbuffers::flatbuffers PROPERTIES + INTERFACE_INCLUDE_DIRECTORIES "${FLATBUFFERS_INCLUDE_DIR}" + INTERFACE_LINK_LIBRARIES "${FLATBUFFERS_LIBRARY}" + ) + message(STATUS "FlatBuffers found: ${FLATBUFFERS_INCLUDE_DIR}") +endif() + +# Flatbuffers flatc resolution and different search name 'flatbuffers` with Conan +# NOTE2[pb]: 200221007: We changed Conan cmake package to look to `flatbuffers` +# because it started failing out of blue :idk:scream: will see. +if(NOT CONAN_EXPORTED) + if(NOT DEFINED FLATBUFFERS_FLATC_EXECUTABLE) + set(FLATBUFFERS_FLATC_EXECUTABLE flatbuffers::flatc) + endif() + message(STATUS "FLATBUFFERS_FLATC_EXECUTABLE found: ${FLATBUFFERS_FLATC_EXECUTABLE}" ) +else() + if(WIN32) + set(FLATBUFFERS_FLATC_EXECUTABLE flatc.exe) + else() + set(FLATBUFFERS_FLATC_EXECUTABLE flatc) + endif() + message(STATUS "flatbuffers found: ${Flatbuffers_DIR}" ) +endif() + + +if(NOT OUSTER_SKIP_FIND_PACKAGE_STANDARD) + # Find flatc executable + if(NOT DEFINED FLATBUFFERS_FLATC_EXECUTABLE) + if(WIN32) + find_program(FLATBUFFERS_FLATC_EXECUTABLE NAMES flatc.exe) + else() + find_program(FLATBUFFERS_FLATC_EXECUTABLE NAMES flatc) + endif() + endif() + + # Find the FlatBuffers include directory + find_path(FLATBUFFERS_INCLUDE_DIR NAMES flatbuffers/flatbuffers.h) + find_package_handle_standard_args( + Flatbuffers + DEFAULT_MSG FLATBUFFERS_FLATC_EXECUTABLE FLATBUFFERS_INCLUDE_DIR + ) +endif() \ No newline at end of file diff --git a/cmake/FindGTest.cmake b/cmake/FindGTest.cmake index 7929834f..ffecb646 100644 --- a/cmake/FindGTest.cmake +++ b/cmake/FindGTest.cmake @@ -1,5 +1,4 @@ # Attempt to deal with gtest cmake differences across platforms - function(find_gtest) # use system find module in this scope set(CMAKE_MODULE_PATH "") diff --git a/cmake/FindPcap.cmake b/cmake/FindPcap.cmake index b7c91f66..aa572ee1 100644 --- a/cmake/FindPcap.cmake +++ b/cmake/FindPcap.cmake @@ -22,11 +22,12 @@ if(NOT TARGET libpcap::libpcap) IMPORTED_LOCATION "${PCAP_LIBRARY}") endif() -include(FindPackageHandleStandardArgs) -find_package_handle_standard_args(Pcap - REQUIRED_VARS PCAP_LIBRARY PCAP_INCLUDE_DIR - VERSION_VAR PCAP_VERSION_STRING) - +if(NOT OUSTER_SKIP_FIND_PACKAGE_STANDARD) + include(FindPackageHandleStandardArgs) + find_package_handle_standard_args(Pcap + REQUIRED_VARS PCAP_LIBRARY PCAP_INCLUDE_DIR + VERSION_VAR PCAP_VERSION_STRING) +endif() mark_as_advanced( PCAP_INCLUDE_DIR PCAP_LIBRARY) diff --git a/cmake/Findglfw3.cmake b/cmake/Findglfw3.cmake index cb473cff..8e61da89 100644 --- a/cmake/Findglfw3.cmake +++ b/cmake/Findglfw3.cmake @@ -1,7 +1,9 @@ # For ROS/catkin compatibility only. Set variables expected by catkin to allow exporting GLFW3 in # the DEPENDS clause of the catkin_package() macro. -include(FindPackageHandleStandardArgs) +if(NOT OUSTER_SKIP_FIND_PACKAGE_STANDARD) + include(FindPackageHandleStandardArgs) +endif() find_package(glfw3 CONFIG REQUIRED) @@ -11,4 +13,6 @@ if(TARGET glfw) get_target_property(GLFW3_INCLUDE_DIRS glfw INTERFACE_INCLUDE_DIRECTORIES) endif() -find_package_handle_standard_args(glfw3 CONFIG_MODE) +if(NOT OUSTER_SKIP_FIND_PACKAGE_STANDARD) + find_package_handle_standard_args(glfw3 CONFIG_MODE) +endif() diff --git a/cmake/Findjsoncpp.cmake b/cmake/Findjsoncpp.cmake deleted file mode 100644 index 967e7326..00000000 --- a/cmake/Findjsoncpp.cmake +++ /dev/null @@ -1,57 +0,0 @@ -# Targets defined for jsoncpp differ a good amount between distributions -include(FindPackageHandleStandardArgs) - -# Recent jsoncpp cmake config fails if called twice -if(NOT jsoncpp_FOUND) - find_package(jsoncpp CONFIG QUIET) -endif() - -# This target exists on ubuntu / debian. For some reason debian bullseye doesn't -# ship a static lib / define the jsoncpp_lib_static target. -if(jsoncpp_FOUND AND TARGET jsoncpp_lib) - find_package_handle_standard_args(jsoncpp CONFIG_MODE) - return() -endif() - -# With vcpkg, only a static lib is available so create a target for compatibility -if(jsoncpp_FOUND AND TARGET jsoncpp_static) - add_library(jsoncpp_lib INTERFACE) - target_link_libraries(jsoncpp_lib INTERFACE jsoncpp_static) - install(TARGETS jsoncpp_lib EXPORT ouster-sdk-targets) - find_package_handle_standard_args(jsoncpp CONFIG_MODE) - return() -endif() - -# Fall back to find_library with hints from pkgconfig -find_package(PkgConfig QUIET) -if(PKG_CONFIG_FOUND) - pkg_check_modules(PC_JSONCPP QUIET jsoncpp) - if(PC_JSONCPP_FOUND) - set(jsoncpp_VERSION_STRING ${PC_JSONCPP_VERSION}) - endif() -endif() - -find_library(jsoncpp_LIBRARY NAMES libjsoncpp.so libjsoncpp.dylib - PATHS ${PC_JSONCPP_LIBDIR} ${PC_JSONCPP_LIBRARY_DIRS}) -find_library(jsoncpp_STATIC_LIBRARY NAMES libjsoncpp.a - PATHS ${PC_JSONCPP_LIBDIR} ${PC_JSONCPP_LIBRARY_DIRS}) - -find_path(jsoncpp_INCLUDE_DIR - NAMES json/json.h - PATHS ${PC_JSONCPP_INCLUDE_DIRS}) - -find_package_handle_standard_args(jsoncpp - REQUIRED_VARS jsoncpp_LIBRARY jsoncpp_INCLUDE_DIR - VERSION_VAR jsoncpp_VERSION_STRING) - -if(jsoncpp_FOUND) - add_library(jsoncpp_lib_static STATIC IMPORTED) - set_target_properties(jsoncpp_lib_static PROPERTIES - INTERFACE_INCLUDE_DIRECTORIES ${jsoncpp_INCLUDE_DIR} - IMPORTED_LOCATION ${jsoncpp_STATIC_LIBRARY}) - - add_library(jsoncpp_lib SHARED IMPORTED) - set_target_properties(jsoncpp_lib PROPERTIES - INTERFACE_INCLUDE_DIRECTORIES ${jsoncpp_INCLUDE_DIR} - IMPORTED_LOCATION ${jsoncpp_LIBRARY}) -endif() diff --git a/cmake/Findlibtins.cmake b/cmake/Findlibtins.cmake index 55c87d38..a45a992a 100644 --- a/cmake/Findlibtins.cmake +++ b/cmake/Findlibtins.cmake @@ -8,8 +8,9 @@ # Try to find a cmake config compatible with vcpkg and fall back to defining # targets using pkgconfig. -include(FindPackageHandleStandardArgs) - +if(NOT OUSTER_SKIP_FIND_PACKAGE_STANDARD) + include(FindPackageHandleStandardArgs) +endif() # Prefer config, if found find_package(libtins CONFIG QUIET) if(libtins_FOUND AND TARGET tins) @@ -24,7 +25,9 @@ if(libtins_FOUND AND TARGET tins) set_target_properties(tins PROPERTIES INTERFACE_INCLUDE_DIRECTORIES ${LIBTINS_INCLUDE_DIRS}) - find_package_handle_standard_args(libtins CONFIG_MODE) + if(NOT OUSTER_SKIP_FIND_PACKAGE_STANDARD) + find_package_handle_standard_args(libtins CONFIG_MODE) + endif() else() # Fall back to find_library with hints from pkgconfig find_package(PkgConfig QUIET) @@ -43,9 +46,12 @@ else() NAMES tins/tins.h PATHS ${PC_TINS_INCLUDE_DIRS}) - find_package_handle_standard_args(libtins - REQUIRED_VARS LIBTINS_LIBRARIES LIBTINS_INCLUDE_DIRS - VERSION_VAR LIBTINS_VERSION) + if(NOT OUSTER_SKIP_FIND_PACKAGE_STANDARD) + find_package_handle_standard_args(libtins + REQUIRED_VARS LIBTINS_LIBRARIES LIBTINS_INCLUDE_DIRS + VERSION_VAR LIBTINS_VERSION) + endif() + endif() # LIBTINS_LIBRARIES is set, add target with a name compatible with the conan diff --git a/cmake/OusterSDKConfig.cmake.in b/cmake/OusterSDKConfig.cmake.in index 136243bf..c55688c4 100644 --- a/cmake/OusterSDKConfig.cmake.in +++ b/cmake/OusterSDKConfig.cmake.in @@ -1,38 +1,94 @@ +# configure vcpkg from environment variables, if present +include("${CMAKE_CURRENT_LIST_DIR}/VcpkgEnv.cmake") + +cmake_minimum_required(VERSION 3.12) + message(STATUS "Found OusterSDK: ${CMAKE_CURRENT_LIST_FILE}") include(CMakeFindDependencyMacro) -# ouster_client dependencies -find_dependency(Eigen3) -find_dependency(jsoncpp) -find_dependency(CURL) -find_dependency(spdlog) +get_filename_component(OUSTER_LINK_DIRS "${CMAKE_CURRENT_LIST_DIR}/../../" ABSOLUTE) +get_filename_component(OUSTER_INCLUDE_DIRS "${CMAKE_CURRENT_LIST_DIR}/../../../include/" ABSOLUTE) + +set(BUILD_SHARED_LIBRARY "@BUILD_SHARED_LIBRARY@") +set(OUSTER_SDK_COMPONENT_STATIC FALSE) +set(OUSTER_SDK_COMPONENT_SHARED FALSE) +set(OUSTER_SDK_COMPONENT_NUMBER 0) +foreach(component ${OusterSDK_FIND_COMPONENTS}) + set(OUSTER_SDK_COMPONENT_FOUND FALSE) + if("${component}" STREQUAL "Static") + set(OUSTER_SDK_COMPONENT_FOUND TRUE) + set(OUSTER_SDK_COMPONENT_STATIC TRUE) + elseif("${component}" STREQUAL "Shared" AND BUILD_SHARED_LIBRARY) + set(OUSTER_SDK_COMPONENT_FOUND TRUE) + set(OUSTER_SDK_COMPONENT_SHARED TRUE) + endif() + if(OUSTER_SDK_COMPONENT_FOUND) + math(EXPR OUSTER_SDK_COMPONENT_NUMBER "${OUSTER_SDK_COMPONENT_NUMBER} + 1") + else() + message(FATAL_ERROR "Unknown OusterSDK Component: ${component}") + endif() +endforeach() +if(OUSTER_SDK_COMPONENT_NUMBER EQUAL 0) + set(OUSTER_SDK_COMPONENT_STATIC TRUE) + set(OUSTER_SDK_COMPONENT_SHARED TRUE) +endif() +include("${CMAKE_CURRENT_LIST_DIR}/Coverage.cmake") + +if(OUSTER_SDK_COMPONENT_STATIC) + # ouster_client dependencies + SET(OUSTER_SKIP_FIND_PACKAGE_STANDARD TRUE) + include("${CMAKE_CURRENT_LIST_DIR}/FindEigen3.cmake") + include("${CMAKE_CURRENT_LIST_DIR}/Findlibtins.cmake") + include("${CMAKE_CURRENT_LIST_DIR}/FindPcap.cmake") + include("${CMAKE_CURRENT_LIST_DIR}/FindCURL.cmake") + include("${CMAKE_CURRENT_LIST_DIR}/Findglfw3.cmake") + include("${CMAKE_CURRENT_LIST_DIR}/FindFlatbuffers.cmake") + SET(OUSTER_SKIP_FIND_PACKAGE_STANDARD FALSE) -# ouster_osf dependencies -if(@BUILD_OSF@) + find_package(Threads REQUIRED) find_package(ZLIB REQUIRED) find_package(PNG REQUIRED) - find_package(Flatbuffers NAMES Flatbuffers FlatBuffers) + include("${CMAKE_CURRENT_LIST_DIR}/OusterSDKTargets.cmake") endif() -# viz dependencies -if(@BUILD_VIZ@) - set(OpenGL_GL_PREFERENCE GLVND) - find_dependency(OpenGL) - find_dependency(glfw3) +if(OUSTER_SDK_COMPONENT_SHARED) + SET(OUSTER_SKIP_FIND_PACKAGE_STANDARD TRUE) + include("${CMAKE_CURRENT_LIST_DIR}/FindEigen3.cmake") + include("${CMAKE_CURRENT_LIST_DIR}/FindFlatbuffers.cmake") + SET(OUSTER_SKIP_FIND_PACKAGE_STANDARD FALSE) + + add_library(shared_library SHARED IMPORTED) + # find shared library + find_library(OUSTER_SHARED_LIBRARY shared_library REQUIRED + HINTS "${OUSTER_LINK_DIRS}" + ) + if(NOT OUSTER_SHARED_LIBRARY) + message(FATAL_ERROR "FAILED FINDING LIBRARY: ${OUSTER_SHARED_LIBRARY}") + endif() - if(@OUSTER_VIZ_USE_GLAD@) - find_dependency(glad) + message("OusterSDK::shared_library: \"${OUSTER_SHARED_LIBRARY}\"") + if(WIN32) + set_target_properties(shared_library PROPERTIES + IMPORTED_IMPLIB ${OUSTER_SHARED_LIBRARY} + ) else() - find_dependency(GLEW) + set_target_properties(shared_library PROPERTIES + IMPORTED_LOCATION ${OUSTER_SHARED_LIBRARY} + ) endif() -endif() + get_target_property(target_location shared_library LOCATION) + message("OusterSDK::shared_library target_location: \"${target_location}\"") -if(@BUILD_PCAP@) - # make libtins dependency optional; on debian distros, libtins doesn't include - # a config module and sdk targets will just include paths in that case - find_package(libtins QUIET) - find_package(Pcap REQUIRED HINTS ${CMAKE_CURRENT_LIST_DIR}) + set_target_properties(shared_library PROPERTIES + IMPORTED_GLOBAL TRUE + ) + target_link_libraries(shared_library INTERFACE Eigen3::Eigen) + set_property(TARGET shared_library APPEND PROPERTY INTERFACE_COMPILE_DEFINITIONS BUILD_SHARED_LIBS_IMPORT) + target_include_directories(shared_library INTERFACE + ${OUSTER_INCLUDE_DIRS} + ${OUSTER_INCLUDE_DIRS}/optional-lite + ${OUSTER_INCLUDE_DIRS}/fb_generated + ) + add_library(OusterSDK::shared_library ALIAS shared_library) endif() - -include("${CMAKE_CURRENT_LIST_DIR}/OusterSDKTargets.cmake") diff --git a/conan/test_package/CMakeLists.txt b/conan/test_package/CMakeLists.txt deleted file mode 100644 index dacc3d41..00000000 --- a/conan/test_package/CMakeLists.txt +++ /dev/null @@ -1,7 +0,0 @@ -cmake_minimum_required(VERSION 3.10.0) - -project(PackageTest CXX) - -find_package(OusterSDK REQUIRED) - -add_subdirectory(../../examples examples) diff --git a/conan/test_package/conanfile.py b/conan/test_package/conanfile.py deleted file mode 100644 index 34f29785..00000000 --- a/conan/test_package/conanfile.py +++ /dev/null @@ -1,39 +0,0 @@ -import os - -from conans import ConanFile, CMake, tools - - -class OusterSDKTestConan(ConanFile): - settings = "os", "compiler", "build_type", "arch" - generators = "cmake_paths", "cmake_find_package" - - def build(self): - cmake = CMake(self) - # Current dir is "test_package/build/" and CMakeLists.txt is - # in "test_package" - cmake.definitions["BUILD_OSF"] = True - cmake.definitions[ - "CMAKE_PROJECT_PackageTest_INCLUDE"] = os.path.join( - self.build_folder, "conan_paths.cmake") - cmake.configure() - cmake.build() - - def imports(self): - self.copy("*.dll", dst="bin", src="bin") - self.copy("*.dylib*", dst="bin", src="lib") - self.copy('*.so*', dst='bin', src='lib') - - def test(self): - if not tools.cross_building(self): - os.chdir("examples") - # on Windows VS puts execulables under `./Release` or `./Debug` folders - exec_path = f"{os.sep}{self.settings.build_type}" if self.settings.os == "Windows" else "" - self.run(f".{exec_path}{os.sep}client_example") - - # List files + ldd for verbosity - if self.settings.os == "Linux": - self.run(f"ls -al .{exec_path}{os.sep}") - self.run(f"ldd .{exec_path}{os.sep}osf_reader_example") - - # Smoke test OSF lib - self.run(f".{exec_path}{os.sep}osf_reader_example") diff --git a/conanfile.py b/conanfile.py deleted file mode 100644 index f6e92e11..00000000 --- a/conanfile.py +++ /dev/null @@ -1,156 +0,0 @@ -import os -import re -from conan import ConanFile -from conan.tools.cmake import CMakeToolchain, CMake, cmake_layout, CMakeDeps -from conan.tools.files import collect_libs, load -from conan.tools.scm import Git - - -class ousterSdkRecipe(ConanFile): - name = "ouster_sdk" - package_type = "library" - license = "BSD 3-Clause License" - author = "Ouster, Inc." - url = "https://github.com/ouster-lidar/ouster-sdk" - description = "Ouster SDK - tools for working with Ouster Lidars" - topics = ("lidar", "driver", "hardware", "point cloud", "3d", "robotics", "automotive") - settings = "os", "compiler", "build_type", "arch" - - options = { - "build_viz": [True, False], - "build_pcap": [True, False], - "build_osf": [True, False], - "shared": [True, False], - "fPIC": [True, False], - "ensure_cpp17": [True, False], - "eigen_max_align_bytes": [True, False], - } - default_options = { - "build_viz": False, - "build_pcap": False, - "build_osf": False, - "shared": False, - "fPIC": True, - "ensure_cpp17": False, - "eigen_max_align_bytes": False, - } - - exports_sources = [ - "cmake/*", - "conan/*", - "ouster_client/*", - "ouster_pcap/*", - "ouster_osf/*", - "ouster_viz/*", - "tests/*", - "thirdparty/*", - "CMakeLists.txt", - "CMakeSettings.json", - "LICENSE", - "LICENSE-bin", - "README.rst" - ] - - # https://docs.conan.io/2/reference/conanfile/methods/set_version.html - def set_version(self): - content = load(self, os.path.join(self.recipe_folder, "CMakeLists.txt")) - version = re.search("set\(OusterSDK_VERSION_STRING (.*)\)", content).group(1) - self.version = version.strip() - - def config_options(self): - if self.settings.os == "Windows": - self.options.rm_safe("fPIC") - - def configure(self): - if self.options.shared: - self.options.rm_safe("fPIC") - - def requirements(self): - # not required directly here but because boost and openssl pulling - # slightly different versions of zlib we need to set it - # here explicitly - self.requires("zlib/1.3") - - # Since Eigen is a header only library, and the SDK includes Eigen - # headers in its headers, we must set transitive_headers=True so that - # packages consuming the SDK will also have access to the Eigen headers. - self.requires("eigen/3.4.0", transitive_headers=True) - self.requires("jsoncpp/1.9.5") - self.requires("spdlog/1.12.0") - self.requires("fmt/9.1.0", override=True) - self.requires("libcurl/7.86.0") - - if self.options.build_pcap: - self.requires("libtins/4.3") - - if self.options.build_osf: - self.requires("flatbuffers/23.5.26") - self.requires("libpng/1.6.39") - - if self.options.build_viz: - self.requires("glad/0.1.34") - if self.settings.os != "Windows": - self.requires("xorg/system") - self.requires("glfw/3.3.6") - # maybe needed for cpp examples, but not for the lib - # self.requires("tclap/1.2.4") - - def build_requirements(self): - if self.options.build_osf: - self.build_requires("flatbuffers/") - - def layout(self): - cmake_layout(self) - - def generate(self): - deps = CMakeDeps(self) - deps.generate() - tc = CMakeToolchain(self) - tc.variables["BUILD_VIZ"] = self.options.build_viz - tc.variables["BUILD_PCAP"] = self.options.build_pcap - tc.variables["BUILD_OSF"] = self.options.build_osf - tc.variables[ - "OUSTER_USE_EIGEN_MAX_ALIGN_BYTES_32" - ] = self.options.eigen_max_align_bytes - tc.variables["BUILD_SHARED_LIBS"] = True if self.options.shared else False - tc.variables["CMAKE_POSITION_INDEPENDENT_CODE"] = ( - True if "fPIC" in self.options and self.options.fPIC else False - ) - - # we use this option until we remove nonstd::optional from SDK codebase (soon) - if self.options.ensure_cpp17: - tc.variables["CMAKE_CXX_STANDARD"] = 17 - - tc.generate() - - def build(self): - cmake = CMake(self) - cmake.configure() - cmake.build() - - def package(self): - cmake = CMake(self) - cmake.install() - - def package_info(self): - self.cpp_info.libs = collect_libs(self) - self.cpp_info.includedirs = [ - "include", - "include/optional-lite" - ] - self.cpp_info.build_modules["cmake_find_package"].append( - "lib/cmake/OusterSDK/OusterSDKConfig.cmake" - ) - - self.cpp_info.set_property( - "cmake_build_modules", - [os.path.join("lib", "cmake", "OusterSDK", "OusterSDKConfig.cmake")], - ) - self.cpp_info.set_property("cmake_file_name", "OusterSDK") - self.cpp_info.set_property("cmake_target_name", "OusterSDK") - - # TODO: to remove in conan v2 once cmake_find_package* generators removed - self.cpp_info.filenames["cmake_find_package"] = "OusterSDK" - self.cpp_info.filenames["cmake_find_package_multi"] = "OusterSDK" - self.cpp_info.names["cmake_find_package"] = "OusterSDK" - self.cpp_info.names["cmake_find_package_multi"] = "OusterSDK" diff --git a/docs/Doxyfile b/docs/Doxyfile index 6f301465..cf2971ce 100644 --- a/docs/Doxyfile +++ b/docs/Doxyfile @@ -2167,7 +2167,7 @@ ENABLE_PREPROCESSING = YES # The default value is: NO. # This tag requires that the tag ENABLE_PREPROCESSING is set to YES. -MACRO_EXPANSION = NO +MACRO_EXPANSION = YES # If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES then # the macro expansion is limited to the macros specified with the PREDEFINED and @@ -2207,7 +2207,9 @@ INCLUDE_FILE_PATTERNS = # recursively expanded use the := operator instead of the = operator. # This tag requires that the tag ENABLE_PREPROCESSING is set to YES. -PREDEFINED = +PREDEFINED = "OUSTER_API_FUNCTION= " \ + "OUSTER_API_CLASS= " \ + "OUSTER_API_IGNORE= " # If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then this # tag can be used to specify a list of macro names that should be expanded. The diff --git a/docs/cli/clip-sessions.rst b/docs/cli/clip-sessions.rst index 43346054..fa20158a 100644 --- a/docs/cli/clip-sessions.rst +++ b/docs/cli/clip-sessions.rst @@ -1,5 +1,5 @@ -Clip Point clouds in the Ouster-CLI -================================= +Clip Point clouds values in Ouster-CLI +====================================== .. _ouster-cli-clip: @@ -7,9 +7,9 @@ Clip Point clouds in the Ouster-CLI Clip Command ------------ -The clip command clips the lidar scan by the given range and streams down the modified lidar -scan to the subsequent commands (like slam, viz, save, etc.). The position of the clip command -in the ouster-cli command chain makes a difference as it only affects the commands that follow it. +The ``clip`` command can be used to limit the range of values of different scan fields. The outcome of this command +can then be consumed by other downstream commands operation (like slam, viz, save, etc.). The position of the ``clip`` +command in the ouster-cli command chain makes a difference as it only affects operations that come afterwords. To explore the parameters you can use with the clip command, you can use the --help flag: @@ -26,32 +26,25 @@ with the visualizer on, run the following command: .. code:: bash - ouster-cli source / clip --min-range 20 --max-range 50 viz save clipped.pcap + ouster-cli source / clip RANGE,RANGE2 20m:50m viz save clipped.pcap -Remember, the clip command only affects the commands after it. In the following example, the +Remember, the ``clip`` command only affects the commands after it. In the following example, the viz command runs before the clip command, which means the point cloud modification won't be reflected in the visualizer but will affect the subsequent save command and the saved PCAP file: .. code:: bash - ouster-cli source / viz clip --min-range 20 --max-range 50 save clipped_2.pcap + ouster-cli source / viz clip RANGE,RANGE2 20m:50m save clipped_2.pcap -In addition to the ``min-range`` and ``max-range`` parameters, the ``clip`` command also includes the -``percent-range`` parameter. This parameter discards points with ranges greater than a specified percentile -in each lidar scan, helping to filter out noise points. - -.. code:: bash - - ouster-cli source / clip --percent-range 99 viz Combined with SLAM Command -------------------------- -The ``slam`` command also has ``min-range`` and ``max-range`` parameters. When the clip command is -used after the ``slam`` command, the ``clip`` command will, by default, use the range settings specified -in the slam command. However, you can explicitly pass in the range settings to the ``clip`` command to -apply different ranges to the clip operation. +The ``slam`` command has ``min-range`` and ``max-range`` parameters. When the clip command is used after +the ``slam`` command, the ``clip`` command will, by default, use the range settings specified in the slam +command. However, you can explicitly pass in the range settings to the ``clip`` command to apply different +ranges to the clip operation. Note that the range settings in the ``slam`` command only affect the point cloud within the SLAM algorithm. The slam range settings will not modify the lidar scan and will not affect the other following commands. @@ -64,8 +57,8 @@ Experiment with the following commands using a pre-recorded PCAP or OSF file: .. code:: bash - ouster-cli source slam clip --min-range 20 --max-range 50 viz save clipped_3.ply - ouster-cli source slam --min-range 10 --max-range 100 clip --min-range 20 --max-range 50 viz save clipped_4.ply + ouster-cli source slam clip RANGE,RANGE2 20m:50m viz save clipped_3.ply + ouster-cli source slam --min-range 10 --max-range 100 clip RANGE,RANGE2 20m:50m viz save clipped_4.ply You can view the output PLY files using the open source software `CloudCompare`_ For more details about the slam command, refer to the :ref:`SLAM Command ` diff --git a/docs/cli/common-use-cases.rst b/docs/cli/common-use-cases.rst index e7ae5a73..f8094330 100644 --- a/docs/cli/common-use-cases.rst +++ b/docs/cli/common-use-cases.rst @@ -126,3 +126,42 @@ metadata json file with the same name as PCAP FILE by default, but you can speci .. code:: bash $ ouster-cli source viz + + +Masking Lidar Data +++++++++++++++++++ + +The following command applies an image mask ``MASK-IMAGE`` to the ``RANGE`` data field of incoming +scans: + +.. code:: bash + + $ ouster-cli source mask --fields RANGE viz + + +The ``MASK-IMAGE`` is expected to be of composed solely of black and white pixels; black pixels +represent the pixels that will be zeroed out and white pixels represent areas of the RANGE that +will stay intact. The ``MASK-IMAGE`` is expected to have the same size of the streamed LidarScans. +If not the command will scale the mask image to the same size as the incoming LidarScans. +The ``MASK-IMAGE`` will be applied to all sensors in case of a multi-sensor dataset. + + +Reduce Beam Count ++++++++++++++++++ +Use the ``reduce`` command to reduce the lower vertical resolution or beam count of stream LidarScans. +For example, let's assume you have an OS-1-128 Ouster sensor which has 128 beams, using the following +command you can reduce the effective vertical resolution of the sensor to 32: + +.. code:: bash + + $ ouster-cli source reduce --fields 32 viz + + +The reduced LidarScans will applied to the rest of the chain, that means if you chain a ``save`` command +afterwords the generated file will have LidarScans with 32 beams only. +One thing to note is that the beams are sampled uniformally across the original beam count. + +.. note:: + + Currently, the ``reduce`` command can't occure more than once in the ouster-cli command chain and needs + to be the very first command after the ``source`` args. diff --git a/docs/cli/getting-started.rst b/docs/cli/getting-started.rst index 02fddb61..033aca42 100644 --- a/docs/cli/getting-started.rst +++ b/docs/cli/getting-started.rst @@ -110,9 +110,12 @@ commands also have subcommands that further extend or specify what * Sensors and files * ``viz`` - visualizes data in a 3D point cloud viewer. + * ``slice`` - use the slice command to extract a subset of lidar frames from a source by specifing a frame index + interval or time duration. + * ``clip`` - the clip command can be used to limit the range of values of scan fields. + * ``mask`` - use the mask command to mask certain pixel from the lidar frames. + * ``reduce`` - use the reduce command to downsample the vertical resolution of any ouster Lidar. * ``slam`` - computes trajectories by determining the change in pose between lidar frames. - * ``slice`` - reads a subset of lidar frames from the source using counts or time duration. - * ``clip`` - restrict the minimum or maximum range of lidar measurements in the source data. * ``stats`` - calculates statistics from the source data. * ``metadata`` - displays the metadata (e.g. sensor information) associated with the source data. * ``save`` - saves the source data, optionally converting to a new format. diff --git a/docs/cli/mapping-sessions.rst b/docs/cli/mapping-sessions.rst index ec156971..ceac9224 100644 --- a/docs/cli/mapping-sessions.rst +++ b/docs/cli/mapping-sessions.rst @@ -131,7 +131,7 @@ file to a PLY file and keep only the point within 20 to 80 meters range you can .. code:: bash - ouster-cli source sample.osf clip --min-range 20 --max-range 80 save clipped_output.ply + ouster-cli source sample.osf clip RANGE,RANGE2 20:80 save clipped_output.ply More details about the clip command usage can be found in the :ref:`Clip Command ` @@ -256,6 +256,50 @@ displaying the preview of the lidar trajectory: palette) +Localize Command +---------------- +Starting with SDK 0.14.0 the ouster-cli has a new command ``localize`` which allows users to load a +map of a given site, then use it to query the position and orientation of the sensor starting from +a known position. Here is an example: + +.. code:: bash + + ouster-cli source localize viz + +Once this command is invoked the viz will load the given map and display it in the background (flattened +by default) while simultaneously streaming the lidar data from the ``SOURCE_URL`` and updating the +position of the sensor relative to the map origin as show in the image below: + +.. figure:: /images/localization-map-main.png + + +.. note:: + + Currently ply is the only supported format for the localization map. + +This above example works fine when the input source begins from the same place as the origin of the map, +however, in many situations this isn't the case. In the case of wanting to start from a different +starting point than the map origin, the user could do that using the following: + +.. code:: bash + + ouster-cli source --initial-pose PX,PY,PZ,R,P,Y localize viz + +This would set the initial pose of the input source with respect to the map origin, where PX,PY,PZ +represent the position and R,P,Y represent orientation in Euler angles (roll, pitch, yaw) +specified in degrees. + +As part of the localization feature the ``viz`` command was extended to give control the visuals of the +localization map. All these options start with the ``--global-map`` prefix. For example, it is possible +to show the localization map in its 3D form without flattening by passing the option +``--global-map-flatten False`` to the ``viz`` command. With this the command becomes like this: + +.. code:: bash + + ouster-cli source localize viz --global-map-flatten False + +To see the full list of available options to modify the map visuals check the ``viz`` help menu + .. _Networking Guide: https://static.ouster.dev/sensor-docs/image_route1/image_route3/networking_guide/networking_guide.html .. _CloudCompare: https://www.cloudcompare.org/ diff --git a/docs/conf.py b/docs/conf.py index da7c6b62..965a359b 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -186,7 +186,7 @@ def do_doxygen_generate_xml(app): raise SystemError( "Expects 'doxygen' command on the PATH to generate C++ docs") - print("===== Generating Doxygen XML ======") + print("====== Generating Doxygen XML ======") # Prepare temp Doxyfile with resolved param values temp_doxy_file_dir = tempfile.mkdtemp() diff --git a/docs/cpp/building.rst b/docs/cpp/building.rst index 5e353e01..edcfc77c 100644 --- a/docs/cpp/building.rst +++ b/docs/cpp/building.rst @@ -5,7 +5,7 @@ Building the C++ Client from Source =================================== Building the example code requires a compiler supporting C++14 and CMake 3.1 or newer and the -jsoncpp, Eigen3, and tins libraries with headers installed on the system. The sample visualizer also +Eigen3 and tins libraries with headers installed on the system. The sample visualizer also requires the GLFW3 and GLEW libraries. The C++ example code is available `on the Ouster Github @@ -18,9 +18,9 @@ To install build dependencies on Ubuntu:20.04+, run: .. code:: console - $ sudo apt install build-essential cmake libjsoncpp-dev libeigen3-dev libcurl4-openssl-dev \ - libtins-dev libpcap-dev libglfw3-dev libglew-dev libspdlog-dev \ - libpng-dev libflatbuffers-dev + $ sudo apt install build-essential cmake libeigen3-dev libcurl4-openssl-dev \ + libtins-dev libpcap-dev libglfw3-dev libpng-dev \ + libflatbuffers-dev You may also install curl with a different ssl backend, for example libcurl4-gnutls-dev or libcurl4-nss-dev. @@ -29,9 +29,9 @@ On macOS, install XCode and `homebrew `_ and run: .. code:: console - $ brew install cmake pkg-config jsoncpp eigen curl libtins glfw glew spdlog libpng flatbuffers + $ brew install cmake pkg-config eigen curl libtins glfw libpng flatbuffers -To build run the following commands: +To build on macOS and Ubuntu:20.04+ run the following commands: .. code:: console @@ -51,7 +51,7 @@ defaults: -DBUILD_OSF=OFF # Do not build OSF lib -DBUILD_EXAMPLES=ON # Build C++ examples -DBUILD_TESTING=ON # Build tests - -DBUILD_SHARED_LIBS=ON # Build shared instead of static libraries + -DBUILD_SHARED_LIBRARY=ON # Build the shared library and binary artifacts Building on Windows @@ -82,7 +82,7 @@ You should be able to install dependencies with .. code:: powershell - PS > .\vcpkg.exe install --triplet x64-windows jsoncpp eigen3 curl libtins glfw3 glew spdlog libpng flatbuffers + PS > .\vcpkg.exe install --triplet x64-windows eigen3 curl libtins glfw3 libpng flatbuffers After these steps are complete, you should be able to open, build and run the ``ouster-sdk`` project using Visual Studio: @@ -125,3 +125,14 @@ supply ``""``, an empty string, to utilize automatic detection. On Windows, you may need to allow the client/visualizer through the Windows firewall to receive sensor data. + +Building Against The Library +============================ + +Navigate to ``examples`` under the ouster-sdk source directory, which should contain several linux +example folders building against the sdk library. To run each use the example.bash script. + +1. compiled_in_linking_example - Compile ouster_sdk as a sub-project under a larger codebase. +2. static_linking_example - Use installed static libs of ouster_sdk under a larger codebase. +3. shared_linking_example - Use installed shared libs of ouster_sdk under a larger codebase. + diff --git a/docs/cpp/examples/index.rst b/docs/cpp/examples/index.rst index 1423a9cb..63ad7e2e 100644 --- a/docs/cpp/examples/index.rst +++ b/docs/cpp/examples/index.rst @@ -6,3 +6,4 @@ CPP Examples :caption: CPP Examples Simple Examples + Linking Examples \ No newline at end of file diff --git a/docs/cpp/examples/linking_examples.rst b/docs/cpp/examples/linking_examples.rst new file mode 100644 index 00000000..737bba9f --- /dev/null +++ b/docs/cpp/examples/linking_examples.rst @@ -0,0 +1,30 @@ +=========================== +C++ Shared Library Examples +=========================== + +Navigate to examples under the ouster-sdk source directory, which should contain several linux example folders building against the sdk library. +To run each use the example.bash script. + +1. `Compiled-In Linking Example `_ + +2. `Shared Linking Example `_ + +3. `Static Linking Example `_ + + +Compiled In Linking example +--------------------------- + +:: + .. include:: ../../../examples/compiled_in_linking_example/readme.rst + +Shared Linking example +----------------------- +:: + .. include:: ../../../examples/shared_linking_example/readme.rst + +Static Linking example +----------------------- + +:: + .. include:: ../../../examples/static_linking_example/readme.rst \ No newline at end of file diff --git a/docs/cpp/ouster_osf/meta_lidar_sensor.rst b/docs/cpp/ouster_osf/meta_lidar_sensor.rst index 8235690a..9adb4e1f 100644 --- a/docs/cpp/ouster_osf/meta_lidar_sensor.rst +++ b/docs/cpp/ouster_osf/meta_lidar_sensor.rst @@ -2,9 +2,6 @@ meta_lidar_sensor.h =================== -.. doxygenclass:: ouster::osf::LidarSensor - :members: - .. doxygengroup:: OSFTraitsLidarSensor :members: :content-only: diff --git a/docs/cpp/ouster_osf/meta_streaming_info.rst b/docs/cpp/ouster_osf/meta_streaming_info.rst index e5148b33..6c441670 100644 --- a/docs/cpp/ouster_osf/meta_streaming_info.rst +++ b/docs/cpp/ouster_osf/meta_streaming_info.rst @@ -9,19 +9,3 @@ ChunkInfo .. doxygenfunction:: ouster::osf::to_string(const ChunkInfo& chunk_info) -StreamStats ------------ -.. doxygenstruct:: ouster::osf::StreamStats - :members: - -.. doxygenfunction:: ouster::osf::to_string(const StreamStats& stream_stats) - -Streaming Info --------------- -.. doxygenclass:: ouster::osf::StreamingInfo - :members: - -.. doxygengroup:: OSFTraitsStreamingInfo - :members: - :content-only: - diff --git a/docs/cpp/ouster_osf/metadata.rst b/docs/cpp/ouster_osf/metadata.rst index 6310df2f..2b492d64 100644 --- a/docs/cpp/ouster_osf/metadata.rst +++ b/docs/cpp/ouster_osf/metadata.rst @@ -11,9 +11,6 @@ Public API .. doxygenclass:: ouster::osf::MetadataEntryRef :members: -.. doxygenclass:: ouster::osf::MetadataStore - :members: - .. doxygenfunction:: ouster::osf::metadata_pointer_as diff --git a/docs/cpp/ouster_osf/stream_lidar_scan.rst b/docs/cpp/ouster_osf/stream_lidar_scan.rst index a1e21ca7..0f40f3c7 100644 --- a/docs/cpp/ouster_osf/stream_lidar_scan.rst +++ b/docs/cpp/ouster_osf/stream_lidar_scan.rst @@ -9,7 +9,4 @@ stream_lidar_scan.h :members: :content-only: -.. doxygenclass:: ouster::osf::LidarScanStream - :members: - .. doxygenfunction:: ouster::osf::slice_with_cast diff --git a/docs/cpp/ouster_pcap/os_pcap.rst b/docs/cpp/ouster_pcap/os_pcap.rst index 0cac0fdb..d8becf58 100644 --- a/docs/cpp/ouster_pcap/os_pcap.rst +++ b/docs/cpp/ouster_pcap/os_pcap.rst @@ -13,13 +13,6 @@ Packet Info .. doxygenfunction:: ouster::sensor_utils::operator<<(std::ostream& stream_in, const packet_info& data) -Handles -======= - -.. doxygenstruct:: ouster::sensor_utils::record_handle - -.. doxygenstruct:: ouster::sensor_utils::playback_handle - Functions ========= diff --git a/docs/images/localization-map-main.png b/docs/images/localization-map-main.png new file mode 100644 index 0000000000000000000000000000000000000000..f60d369c89043edeb4e3a0fb79e894937e922cf6 GIT binary patch literal 1753729 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

#Wt3WOo0{%CzS34vQsB{D}LwCEbt-?G={ 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
UQa+#|%rN-4Eo!Mw<@|_*6GR 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

n!v!FkJW%!t11*-PBhv8UG_ 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

#;4PwWYQyj23!0!tL3$aOE@yWpnF#LB9I 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%0DEe=14)b=XxRiTXIWQX?DLcvzY)dxyr)S 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

RB)m@Ip5opD;HP~<8}4Z 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 z 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%0DS7Q+nZ&5CKx+ExUFXP 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⪼pxr4o;Kg7{)?ottECmNVCU*5I9xtCsV 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

4ZMaou@kk{g8FC$Jq>b|{3tsK`s`GRWzNlq< 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

oKJkNGI&+(35HdK4@5QQ5z98h)__5` zg}k|Yu9G$6zf6MiZfP2(%n5N7@)i_pm&n@S2L-peq`HME!@;uGuoDssS7J%7#C?NQx7?Rx3r zG!C>etxHTZ#i{3qLBB=cNwG(4bcH-M--$`8<;A6O{4$JsEl!Yb`zH8?H~GX;%d?j_ z>T3~VG8yVeiHyL8j!h=dc*r9n%UAfAA-9w$0dpm5BZc~2^F6G}D7w$1?suoghawKp zl|YeF-8h>`Amn0j%A@5Jq)dOZsm#b&XM2=YK6>1k3w*s2{2`fg$E-CSql}BGRcAtc ziWLmJI{(z;WTlyLPdj}8%;vL0gQg~Er<*6d$@s3Z(y$6utziF$lKk)Vd0wAc zxfndqMNjoYGSc1ZPI_nU0rkSTOd8t}7gX2FCr5z*1F2wF zpB=49S&41G>i3PS$hJnU4UvSfOLLQm%H%2c=EqEHGs4XRlQIOgo!CrOfA<7=J%Q%P zAa?P0$P}>tQn}>@FF4=gFFu^F%i>+D;>rrqsCmbu(hp{%{(EWW>?nI%CmAP@DvTJQ zQ{T`)QmcIHV@Cz`;ShLzYSNg4+ZwOGBeyk0{+Ts?5u2Q=Xsue=E=Y8CQq$kDti3Ee zBYz}HmAQ~O(Dz7g0NnC@_3L1ks^j`(9RSN-9uidcUhGd&cr*t9bR>$(wa+V!tdf$F z+uy*2{D$$5jK>k=FOBTOuTsXdM10h}_d}nBIFPdPb8?54ZmxYlKHSMCl$upa6A|oo z>l+oV7h$``VSFlS=wx~}P4La&ESCvv!4YP7!4eyeVwO~yW)|f@4YGXM!|@dx!ol5> zkwfNFK_;^X^=(T7ACfzRDSPmRn@QJeoy*^QzP-XrD2fFl-g2w!5YxgJ(oU9@T+n^O z*QH$?mil>SfxBlRv zku>|+qcaxSO6Uq-kmPS^9PHP)q2B@_QG-vnv{Yg;jgPwgf~{B50$*?FRJm4x^CF*) zLUD(Ed&>T2x(h(5^IDszHX*?LMS)_KRpA`E;NOdw%>E#RR+jav2= z^K^2~(2M-m*9#GPn-9O$Nc`dE>ck zKkUFART<$Oeeh8LxfaU3AXel_a6GmwJ+)`h;RA<1o&Ox zD9Y18#r|#a_g4E``%es-0dx=7?6Sr4#kKei+}6m8%t(lu#xpw0z3#rm~-23x!Qn{)} zXpO^H`;T>x@!M-!e!_gh>4%PJqO*e)wRg!64KkR&F@!;L` znC-u1q;r8_o*lVcY`I-PklEo|tko)YIrB@GIhKs-Bue$(rq63;t7DgKQJ7AxyG5o9 zwPqlw&{V2=KJTjqO;OJt3Ajqovc%QH)B*VfX4v2b(V>&7)*D~w*YSM5Ck7SnJ0CW1 z4Gp*luEga84C%Io`(S6C}(kGV^ZvI(q=R!>32p zz*`O+On~^H1~_TGw�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 z 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

    8%NAIM8y9L}A`=oFbm-LCUJKj`N}iGB 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%0Dj$G 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 Uc|!H`pR`h4RqJ7a@{9NX2fRw7IsgCw literal 0 HcmV?d00001 diff --git a/docs/index.rst b/docs/index.rst index 7333ca16..3b106032 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -58,6 +58,7 @@ Migrating from 20220927/0.5.1 to 20230114/0.7.1 Migrating from 20230114/0.7.1 to 20230403/0.8.1 Migration from 20231031/0.10.0 to 20240423/0.11.0 + Migration from 20241004/0.13.1 to 20250113/0.14.0 .. FAQ diff --git a/docs/migration/migration-20241004-20250113.rst b/docs/migration/migration-20241004-20250113.rst new file mode 100644 index 00000000..5203452e --- /dev/null +++ b/docs/migration/migration-20241004-20250113.rst @@ -0,0 +1,58 @@ +================================================= +Migration from 20241004/0.13.0 to 20250117/0.14.0 +================================================= + +The OusterSDK 0.14.0 release brings a few breaking changes. Here we summarize how to migrate +from 0.13.0 to 0.14.0 + +ouster_client c++ module changes +++++++++++++++++++++++++++++++++ +The ``SensorClient`` ``get_packet`` signature was changed. + +Before, this method was used as follows: + +.. code:: c++ + + ouster::sensor::SensorClient sensor_client(sensors); // sensors is a std::vector + + auto lidar_packet = sensor::LidarPacket(); + auto imu_packet = sensor::ImuPacket(); + + while(true) { + auto client_event = sensor_client.get_packet(lidar_packet, imu_packet, 0.1); + + if (client_event.type == ouster::sensor::ClientEvent::LidarPacket) { + // do something with lidar_packet here + } else if (client_event.type == ouster::sensor::ClientEvent::ImuPacket) { + // do something with imu_packet here + } + } + +This interface would have to be broken every time a new packet type is added. For that reason, +this was changed and the same logic would be written now as follows: + +.. code:: c++ + + ouster::sensor::SensorClient sensor_client(sensors); // sensors is a std::vector + + while(true) { + auto client_event = sensor_client.get_packet(0.1); + + if (client_event.type == ouster::sensor::ClientEvent::Packet) { + if (client_event.packet().type() == ouster::sensor::PacketType::Lidar) { + auto& lidar_packet = client_event.packet().as(); + // do something with lidar_packet here + } else if (client_event.packet().type() == ouster::sensor::PacketType::Imu) { + auto& imu_packet = static_cast(client_event.packet()); + // do something with imu_packet here + } + } + + if (client_event.type == ouster::sensor::ClientEvent::PollTimeout) { + // handle timeout here + } + } + + +Now, ``LidarPacket`` and ``ImuPacket`` provide convenient methods that return the parsed fields that +are specific to each packet type. diff --git a/docs/overview.rst b/docs/overview.rst index 6517443b..48627fd5 100644 --- a/docs/overview.rst +++ b/docs/overview.rst @@ -41,6 +41,10 @@ The Ouster SDK currently provides backwards compatibility with any FW 2.0 and la releases. Older SDK versions are not, however, generally forward-compatible with later FW releases, e.g., the SDK version 20210608 (ouster-sdk 0.2.0) is not compatible with FW 3.0. +.. important:: + + Official SDK support for firmware versions 2.2 and 2.3 will end at the end of June, 2025. + .. note:: Please note that compatibility does not indicate that upgrading between SDK versions can happen @@ -51,6 +55,7 @@ The following table indicates the compatibility of each released SDK version and ===================================== ======= ======= ======= ======= ======= ======= ======= ======= SDK Tag (Release) / Python SDK FW 2.0 FW 2.1 FW 2.2 FW 2.3 FW 2.4 FW 2.5 FW 3.0 FW 3.1 ===================================== ======= ======= ======= ======= ======= ======= ======= ======= +C++ SDK 20250117 / Python SDK 0.14.0 no **yes** **yes** **yes** **yes** **yes** **yes** **yes** C++ SDK 20240703 / Python SDK 0.13.1 no **yes** **yes** **yes** **yes** **yes** **yes** **yes** C++ SDK 20240703 / Python SDK 0.13.0 no **yes** **yes** **yes** **yes** **yes** **yes** **yes** C++ SDK 20240703 / Python SDK 0.12.0 **yes** **yes** **yes** **yes** **yes** **yes** **yes** **yes** diff --git a/docs/python/api/osf.rst b/docs/python/api/osf.rst index 2daf9b05..f4db98d7 100644 --- a/docs/python/api/osf.rst +++ b/docs/python/api/osf.rst @@ -13,39 +13,6 @@ Module :mod:`ouster.sdk.osf` Low-Level API ------------- -Reading -^^^^^^^ - -``Reader`` for OSF files -~~~~~~~~~~~~~~~~~~~~~~~~ - -.. autoclass:: Reader - :members: - :undoc-members: - - -``MessageRef`` wrapper for a `message` -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -.. autoclass:: MessageRef - :members: - :undoc-members: - -``MetadataStore`` for `metadata entries` -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -.. autoclass:: MetadataStore - :members: - :undoc-members: - -``MetadataEntry`` base class for all metadata -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -.. autoclass:: MetadataEntry - :members: - :undoc-members: - - Writing OSF files ^^^^^^^^^^^^^^^^^ @@ -57,42 +24,6 @@ Writing OSF files :undoc-members: -Common `metadata entries` -^^^^^^^^^^^^^^^^^^^^^^^^^ - -``LidarSensor`` Ouster sensor metadata (i.e. ``client.SensorInfo``) -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -.. autoclass:: LidarSensor - :members: - :undoc-members: - -``StreamStats`` statistics per stream -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -.. autoclass:: StreamStats - :members: - :undoc-members: - -``StreamingInfo`` stream statistics -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -.. autoclass:: StreamingInfo - :members: - :undoc-members: - - -Common `streams` -^^^^^^^^^^^^^^^^ - -``LidarScanStream`` stream -~~~~~~~~~~~~~~~~~~~~~~~~~~ - -.. autoclass:: LidarScanStream - :members: - :undoc-members: - - High-Level API -------------- diff --git a/docs/python/devel.rst b/docs/python/devel.rst index 334f26b6..5c9464ba 100644 --- a/docs/python/devel.rst +++ b/docs/python/devel.rst @@ -13,14 +13,11 @@ Building the Python SDK from source requires several dependencies: - `cmake `_ >= 3.5 - `eigen `_ >= 3.3 - `curl `_ >= 7.58 -- `jsoncpp `_ >= 1.7 - `libtins `_ >= 3.4 - `libpcap `_ - `libpng `_ >= 1.6 - `flatbuffers `_ >= 1.1 - `libglfw3 `_ >= 3.2 -- `libglew `_ >= 2.1 or `glad `_ -- `spdlog `_ >= 1.9 - `python `_ >= 3.8 (with headers and development libraries) - `pybind11 `_ >= 2.0 @@ -34,16 +31,15 @@ On supported Debian-based Linux systems, you can install all build dependencies .. code:: console $ sudo apt install build-essential cmake \ - libeigen3-dev libjsoncpp-dev libtins-dev libpcap-dev \ + libeigen3-dev libtins-dev libpcap-dev \ python3-dev python3-pip libcurl4-openssl-dev \ - libglfw3-dev libglew-dev libspdlog-dev \ - libpng-dev libflatbuffers-dev + libglfw3-dev libpng-dev libflatbuffers-dev On macOS >= 11, using Homebrew, you should be able to run: .. code:: console - $ brew install cmake eigen curl jsoncpp libtins python3 glfw glew spdlog libpng flatbuffers + $ brew install cmake eigen curl libtins python3 glfw libpng flatbuffers After you have the system dependencies, you can build the SDK with: @@ -80,7 +76,7 @@ package manager and run: .. code:: powershell - PS > vcpkg install --triplet=x64-windows curl eigen3 jsoncpp libtins glfw3 glad[gl-api-33] spdlog libpng flatbuffers + PS > vcpkg install --triplet=x64-windows curl eigen3 libtins glfw3 glad[gl-api-33] libpng flatbuffers The currently tested vcpkg tag is ``2024.04.26``. After that, using a developer powershell prompt: @@ -108,7 +104,7 @@ The currently tested vcpkg tag is ``2024.04.26``. After that, using a developer # or just install directly (virtualenv recommended) PS > py -m pip install "$env:OUSTER_SDK_PATH\python" -See the top-level README in the `Ouster Example repository`_ for more details on setting up a +See the top-level README in the `Ouster SDK repository`_ for more details on setting up a development environment on Windows. .. _vcpkg: https://github.com/microsoft/vcpkg/blob/master/README.md diff --git a/docs/python/examples/osf-examples.rst b/docs/python/examples/osf-examples.rst index db59e78a..b0be5cd6 100644 --- a/docs/python/examples/osf-examples.rst +++ b/docs/python/examples/osf-examples.rst @@ -35,18 +35,14 @@ Every example is wrapped into a CLI and available for quick tests by running Ouster Python SDK OSF examples. The EXAMPLE must be one of: read-scans - read-messages - split-scans slice-scans - get-lidar-streams get-sensors-info - check-layout -For example to execute the ``get-lidar-streams`` example you can run: +For example to execute the ``read-scans`` example you can run: .. code:: bash - $ python3 -m ouster.sdk.examples.osf get-lidar-streams + $ python3 -m ouster.sdk.examples.osf read-scans Read Lidar Scans with ``osf.Scans`` @@ -87,47 +83,6 @@ case it's of type ``osf.LidarSensor``): :dedent: -Read All Messages with ``osf.Reader`` -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -With ``osf.Reader``, you can use ``reader.messages()`` iterator to read messages in ``timestamp`` -order. - -.. literalinclude:: /../python/src/ouster/sdk/examples/osf.py - :start-after: [doc-stag-osf-read-all-messages] - :end-before: [doc-etag-osf-read-all-messages] - :dedent: - - -Checking Chunks Layout via ``osf.StreamingInfo`` -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -Building on top of an example from above we can check for stream -statistics information from ``osf.StreamingInfo``: - -.. literalinclude:: /../python/src/ouster/sdk/examples/osf.py - :start-after: [doc-stag-osf-check-layout] - :end-before: [doc-etag-osf-check-layout] - :dedent: - -For more information about ``osf.StreamingInfo`` metadata entry please refer to [RFC 0018]_. - - -Get Lidar Scan streams info via ``osf.LidarScanStream`` -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -Every message in an OSF belongs to a stream of a particular type (i.e. ``osf.LidarScanStream``, -``osf.LidarImuStream``, etc.). Streams information stored as **metadata entry** within -``osf.Reader.meta_store`` object that can be read and decoded in various ways. Below is an example -of how we can check parameters of an available LidarScan streams (``osf.LidarScanStream``) by -checking the metadata entries: - -.. literalinclude:: /../python/src/ouster/sdk/examples/osf.py - :start-after: [doc-stag-osf-get-lidar-streams] - :end-before: [doc-etag-osf-get-lidar-streams] - :dedent: - - Write Lidar Scan with sliced fields with ``osf.Writer`` ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -145,16 +100,4 @@ A general scheme of writing scans to the OSF with Writer: .. literalinclude:: /../python/src/ouster/sdk/examples/osf.py :start-after: [doc-stag-osf-slice-scans] :end-before: [doc-etag-osf-slice-scans] - :dedent: - - -Split Lidar Scan stream into multiple files -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -Another example of using ``osf.Writer`` that we will see is the splitting of Lidar Scan stream from -one OSF file into 2 files. - -.. literalinclude:: /../python/src/ouster/sdk/examples/osf.py - :start-after: [doc-stag-osf-split-scans] - :end-before: [doc-etag-osf-split-scans] - :dedent: + :dedent: \ No newline at end of file diff --git a/docs/python/examples/udp-packets.rst b/docs/python/examples/udp-packets.rst index 54853769..b8de8bff 100644 --- a/docs/python/examples/udp-packets.rst +++ b/docs/python/examples/udp-packets.rst @@ -13,11 +13,7 @@ Let's make a :py:class:`.PacketMultiSource` from our sample data using :py:class .. code:: python - from ouster.sdk import pcap - with open(metadata_path, 'r') as f: - metadata = client.SensorInfo(f.read()) - - source = pcap.PcapMultiPacketReader(pcap_path, metadatas=[metadata]) + source = pcap.PcapMultiPacketReader(pcap_path).single_source(0) Now we can read packets from ``source`` with the following code: diff --git a/docs/python/quickstart.rst b/docs/python/quickstart.rst index e14ad9c8..367745e9 100644 --- a/docs/python/quickstart.rst +++ b/docs/python/quickstart.rst @@ -282,6 +282,20 @@ following snippet shows few examples to demonstrate this capability: >>> print("source3 length:", len(source3)) # Should print 2 +Additional ScanSource operators +------------------------------- +besides the indexing and slicing capabilities, the ``ScanSource`` API also supports the following operators: + + * ``clip(fields, lower, upper)``: generates a ``ScanSource`` that limits the range of values of scan fields to [lower, upper]. + * ``reduce(beams)``: returns a downsampled version of the main ``ScanSource`` (vertical resolution only as set by the beams). + * ``mask(fields, mask_image)``: creates a ``ScanSource`` that has the pixels of specified fields masked by the mask_image. + +All of these operations can be invoked directly through the ``ScanSource`` object and yield another ``ScanSource`` allowing +the user to cascade these operations. For example, one could execute the following command chain in one line: +``source.clip(["RANGE"], 0, 1000)[0:10].reduce(16)`` which essentially means to clip any ``RANGE`` value that exceed 1000 +taking a subset of 10 frames from the main dataset and have the vertical resolution of the sensscans reduced to 16 beams. + + Using the client API ==================== diff --git a/docs/python/slam-api-example.rst b/docs/python/slam-api-example.rst index f1c8de3b..c002400b 100644 --- a/docs/python/slam-api-example.rst +++ b/docs/python/slam-api-example.rst @@ -55,7 +55,7 @@ between consecutive scans SLAM with Visualizer and Accumulated Scans -========================================= +========================================== Visualizers and Accumulated Scans are also available for monitoring the performance of the algorithm, as well as for demonstration and feedback purposes. diff --git a/docs/versions.json b/docs/versions.json index 699d8ef7..64052684 100644 --- a/docs/versions.json +++ b/docs/versions.json @@ -1,4 +1,11 @@ [ + { + "version": "0.13.1", + "tags": { + "sdkx": "release-0.13.1", + "sdk": "release-0.13.1" + } + }, { "version": "0.13.0", "tags": { diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt index 4ea04b7a..f0e4282d 100644 --- a/examples/CMakeLists.txt +++ b/examples/CMakeLists.txt @@ -1,3 +1,5 @@ +find_package(Threads REQUIRED) + add_executable(client_example client_example.cpp) target_link_libraries(client_example PRIVATE OusterSDK::ouster_client) diff --git a/examples/client_packet_example.cpp b/examples/client_packet_example.cpp index 07ad45bb..23dff014 100644 --- a/examples/client_packet_example.cpp +++ b/examples/client_packet_example.cpp @@ -103,27 +103,27 @@ int main(int argc, char* argv[]) { */ std::cerr << "Capturing points... "; - // buffer to store raw packet data - auto lidar_packet = sensor::LidarPacket(); - auto imu_packet = sensor::ImuPacket(); - while (true) { - auto ev = client.get_packet(lidar_packet, imu_packet, 0.1); - if (ev.type == ouster::sensor::ClientEvent::LidarPacket) { - if (count[ev.source] == N_SCANS) continue; - // batcher will return "true" when the current scan is complete - if (batch_to_scan[ev.source](lidar_packet, - scans[ev.source][count[ev.source]])) { - // retry until we receive a full set of valid measurements - // (accounting for azimuth_window settings if any) - if (scans[ev.source][count[ev.source]].complete( - client.get_sensor_info()[ev.source] - .format.column_window)) { - count[ev.source]++; + auto ev = client.get_packet(0.1); + if (ev.type == ouster::sensor::ClientEvent::Packet) { + if (ev.packet().type() == ouster::sensor::PacketType::Lidar) { + auto& lidar_packet = + static_cast(ev.packet()); + if (count[ev.source] == N_SCANS) continue; + // batcher will return "true" when the current scan is complete + if (batch_to_scan[ev.source]( + lidar_packet, scans[ev.source][count[ev.source]])) { + // retry until we receive a full set of valid measurements + // (accounting for azimuth_window settings if any) + if (scans[ev.source][count[ev.source]].complete( + client.get_sensor_info()[ev.source] + .format.column_window)) { + count[ev.source]++; + } } + } else if (ev.packet().type() == ouster::sensor::PacketType::Imu) { + // got an IMU packet } - } else if (ev.type == ouster::sensor::ClientEvent::ImuPacket) { - // got an IMU packet } if (ev.type == ouster::sensor::ClientEvent::Error) { diff --git a/examples/linking_example/CMakeLists.txt b/examples/compiled_in_linking_example/CMakeLists.txt similarity index 58% rename from examples/linking_example/CMakeLists.txt rename to examples/compiled_in_linking_example/CMakeLists.txt index e65254f5..c5352026 100644 --- a/examples/linking_example/CMakeLists.txt +++ b/examples/compiled_in_linking_example/CMakeLists.txt @@ -1,11 +1,10 @@ cmake_minimum_required(VERSION 3.21) project(pcap_test) -find_package(OusterSDK REQUIRED) +add_subdirectory(sdk) add_executable(pcap_test main.cpp) target_link_libraries(pcap_test - OusterSDK::ouster_client - OusterSDK::ouster_pcap + OusterSDK::ouster_client OusterSDK::ouster_pcap ) diff --git a/examples/compiled_in_linking_example/Dockerfile b/examples/compiled_in_linking_example/Dockerfile new file mode 100644 index 00000000..c8b96b5b --- /dev/null +++ b/examples/compiled_in_linking_example/Dockerfile @@ -0,0 +1,26 @@ +FROM ubuntu:22.04 + +RUN apt-get update && apt-get install -y \ + libeigen3-dev \ + libtins-dev \ + libpcap-dev \ + libcurl4-openssl-dev \ + git \ + build-essential \ + cmake \ + zlib1g \ + zlib1g-dev \ + libglfw3-dev \ + libpng-dev \ + libflatbuffers-dev + +ENV WORKSPACE=/root +COPY . $WORKSPACE/sdk/ +COPY tests/pcaps/OS-2-32-U0_v2.0.0_1024x10.pcap examples/compiled_in_linking_example/CMakeLists.txt \ + examples/compiled_in_linking_example/main.cpp $WORKSPACE/ + +RUN cd $WORKSPACE && \ + cmake -DBUILD_EXAMPLES=OFF -DCMAKE_BUILD_TYPE=Release -DBUILD_TESTING=OFF . && \ + cmake --build . --parallel 4 + +CMD $WORKSPACE/pcap_test /root/OS-2-32-U0_v2.0.0_1024x10.pcap diff --git a/examples/linking_example/example.bash b/examples/compiled_in_linking_example/example.bash similarity index 88% rename from examples/linking_example/example.bash rename to examples/compiled_in_linking_example/example.bash index 2f9492ce..46e6c987 100755 --- a/examples/linking_example/example.bash +++ b/examples/compiled_in_linking_example/example.bash @@ -12,4 +12,4 @@ cd $baseDir docker build -f $currentDir/Dockerfile --iidfile=$tempDir/iid . -docker run $(cat $tempDir/iid) +docker run --rm $(cat $tempDir/iid) diff --git a/examples/linking_example/main.cpp b/examples/compiled_in_linking_example/main.cpp similarity index 100% rename from examples/linking_example/main.cpp rename to examples/compiled_in_linking_example/main.cpp diff --git a/examples/compiled_in_linking_example/readme.rst b/examples/compiled_in_linking_example/readme.rst new file mode 100644 index 00000000..af32b049 --- /dev/null +++ b/examples/compiled_in_linking_example/readme.rst @@ -0,0 +1,15 @@ +This is a simple example on how to build and link a cpp project with the ouster_pcap +library. + +Bash script to run the example in a container: + +.. literalinclude:: ../../../examples/compiled_in_linking_example/example.bash + :language: bash + :dedent: + +Dockerfile: + +.. literalinclude:: ../../../examples/compiled_in_linking_example/Dockerfile + :language: docker + :dedent: + diff --git a/examples/linking_example/readme.rst b/examples/linking_example/readme.rst deleted file mode 100644 index 6d57f6c8..00000000 --- a/examples/linking_example/readme.rst +++ /dev/null @@ -1,10 +0,0 @@ -============================ -Simple ouster_pcap Example -============================ - -This is a simple example on how to build and link a cpp project with the ouster_pcap -library. - -.. code-block:: bash - ./example.bash - diff --git a/examples/shared_linking_example/CMakeLists.txt b/examples/shared_linking_example/CMakeLists.txt new file mode 100644 index 00000000..031c2a2e --- /dev/null +++ b/examples/shared_linking_example/CMakeLists.txt @@ -0,0 +1,10 @@ +cmake_minimum_required(VERSION 3.21) +project(pcap_test) + +find_package(OusterSDK REQUIRED COMPONENTS Shared) + +add_executable(pcap_test main.cpp) + +target_link_libraries(pcap_test + OusterSDK::shared_library +) diff --git a/examples/shared_linking_example/Dockerfile b/examples/shared_linking_example/Dockerfile new file mode 100644 index 00000000..8761c15e --- /dev/null +++ b/examples/shared_linking_example/Dockerfile @@ -0,0 +1,43 @@ +FROM ubuntu:22.04 + +RUN apt-get update && apt-get install -y \ + git build-essential cmake \ + curl zip unzip tar pkg-config \ + python3 libxinerama-dev libxcursor-dev \ + xorg-dev libglu1-mesa-dev flex bison \ + libeigen3-dev + +ENV WORKSPACE=/root +ENV INSTALL_DIR="/usr/local" +RUN mkdir -p /opt/vcpkg && cd /opt && git clone https://github.com/microsoft/vcpkg.git \ + && cd vcpkg && ./bootstrap-vcpkg.sh && ./vcpkg install "curl[core]" libtins \ + glfw3 "glad[gl-api-33]" libpng flatbuffers zlib gtest openssl +COPY . $WORKSPACE/ +RUN cd $WORKSPACE && \ + cmake -DCMAKE_INSTALL_PREFIX=$INSTALL_DIR -DBUILD_EXAMPLES=OFF \ + -DBUILD_SHARED_LIBRARY=ON -DCMAKE_BUILD_TYPE=Release -DBUILD_TESTING=OFF \ + -DCMAKE_TOOLCHAIN_FILE=/opt/vcpkg/scripts/buildsystems/vcpkg.cmake . &&\ + cmake --build . --parallel 4 --target install + +FROM ubuntu:22.04 + +RUN apt-get update && apt-get install -y \ + libeigen3-dev \ + libflatbuffers-dev \ + git \ + build-essential \ + cmake + +ENV WORKSPACE=/root +ENV INSTALL_DIR="/usr/local" + +COPY --from=0 $INSTALL_DIR $INSTALL_DIR +COPY tests/pcaps/OS-2-32-U0_v2.0.0_1024x10.pcap examples/shared_linking_example/CMakeLists.txt \ + examples/shared_linking_example/main.cpp $WORKSPACE/ + +RUN export CMAKE_PREFIX_PATH="$INSTALL_DIR" &&\ + mkdir -p $WORKSPACE/build &&\ + cd $WORKSPACE/build &&\ + cmake $WORKSPACE && cmake --build . --parallel 4 + +CMD $WORKSPACE/build/pcap_test /root/OS-2-32-U0_v2.0.0_1024x10.pcap diff --git a/examples/shared_linking_example/example.bash b/examples/shared_linking_example/example.bash new file mode 100755 index 00000000..46e6c987 --- /dev/null +++ b/examples/shared_linking_example/example.bash @@ -0,0 +1,15 @@ +#! /bin/bash + +set -e +currentDir="$(cd $(dirname $0) && pwd)" +baseDir=$currentDir/../.. +tempDir="$(mktemp -d)" + +trap 'rm -rf $tempDir' EXIT +trap 'echo \*\*\* ERROR on line: $LINENO exit_code: $?' ERR + +cd $baseDir + +docker build -f $currentDir/Dockerfile --iidfile=$tempDir/iid . + +docker run --rm $(cat $tempDir/iid) diff --git a/examples/shared_linking_example/main.cpp b/examples/shared_linking_example/main.cpp new file mode 100644 index 00000000..2243ee3b --- /dev/null +++ b/examples/shared_linking_example/main.cpp @@ -0,0 +1,17 @@ +#include +#include +#include + +#include +#include + +int main(int argc, char** argv) { + if (argc != 2) { + std::cerr << "\n\nUsage: pcap_test " << std::endl; + + return argc == 1 ? EXIT_SUCCESS : EXIT_FAILURE; + } + const std::string pcap_file = argv[1]; + auto stream_info = ouster::sensor_utils::get_stream_info(pcap_file); + std::cout << *stream_info << std::endl; +} diff --git a/examples/shared_linking_example/readme.rst b/examples/shared_linking_example/readme.rst new file mode 100644 index 00000000..b2a80336 --- /dev/null +++ b/examples/shared_linking_example/readme.rst @@ -0,0 +1,15 @@ +This is a simple example on how to build a shared library and link a cpp project with the ouster_pcap +library. + +Bash script to run the example in a container: + +.. literalinclude:: ../../../examples/shared_linking_example/example.bash + :language: bash + :dedent: + +Dockerfile: + +.. literalinclude:: ../../../examples/shared_linking_example/Dockerfile + :language: docker + :dedent: + diff --git a/examples/static_linking_example/CMakeLists.txt b/examples/static_linking_example/CMakeLists.txt new file mode 100644 index 00000000..8ad55654 --- /dev/null +++ b/examples/static_linking_example/CMakeLists.txt @@ -0,0 +1,10 @@ +cmake_minimum_required(VERSION 3.21) +project(pcap_test) + +find_package(OusterSDK REQUIRED COMPONENTS Static) + +add_executable(pcap_test main.cpp) + +target_link_libraries(pcap_test + OusterSDK::ouster_client OusterSDK::ouster_pcap +) diff --git a/examples/linking_example/Dockerfile b/examples/static_linking_example/Dockerfile similarity index 57% rename from examples/linking_example/Dockerfile rename to examples/static_linking_example/Dockerfile index 19a6809a..007f2b68 100644 --- a/examples/linking_example/Dockerfile +++ b/examples/static_linking_example/Dockerfile @@ -2,45 +2,51 @@ FROM ubuntu:22.04 RUN apt-get update && apt-get install -y \ libeigen3-dev \ - libjsoncpp-dev \ libtins-dev \ libpcap-dev \ libcurl4-openssl-dev \ git \ build-essential \ cmake \ - libspdlog-dev + zlib1g \ + zlib1g-dev \ + libglfw3-dev \ + libpng-dev \ + libflatbuffers-dev ENV WORKSPACE=/root ENV INSTALL_DIR="/usr/local" COPY . $WORKSPACE/ RUN cd $WORKSPACE && \ - cmake -DCMAKE_INSTALL_PREFIX=$INSTALL_DIR -DBUILD_PCAP=ON -DBUILD_OSF=OFF -DBUILD_VIZ=OFF -DBUILD_EXAMPLES=OFF -DCMAKE_BUILD_TYPE=Release -DBUILD_TESTING=OFF . && \ - cmake --build . --target install + cmake -DCMAKE_INSTALL_PREFIX=$INSTALL_DIR -DBUILD_EXAMPLES=OFF -DCMAKE_BUILD_TYPE=Release -DBUILD_TESTING=OFF . && \ + cmake --build . --parallel 4 --target install FROM ubuntu:22.04 RUN apt-get update && apt-get install -y \ libeigen3-dev \ - libjsoncpp-dev \ libtins-dev \ libpcap-dev \ libcurl4-openssl-dev \ git \ build-essential \ cmake \ - libspdlog-dev + libglfw3-dev \ + zlib1g \ + zlib1g-dev \ + libpng-dev \ + libflatbuffers-dev ENV WORKSPACE=/root ENV INSTALL_DIR="/usr/local" COPY --from=0 $INSTALL_DIR $INSTALL_DIR -COPY tests/pcaps/OS-2-32-U0_v2.0.0_1024x10.pcap examples/linking_example/CMakeLists.txt \ - examples/linking_example/main.cpp $WORKSPACE/ +COPY tests/pcaps/OS-2-32-U0_v2.0.0_1024x10.pcap examples/static_linking_example/CMakeLists.txt \ + examples/static_linking_example/main.cpp $WORKSPACE/ RUN export CMAKE_PREFIX_PATH="$INSTALL_DIR" &&\ mkdir -p $WORKSPACE/build &&\ cd $WORKSPACE/build &&\ - cmake $WORKSPACE && cmake --build . + cmake $WORKSPACE && cmake --build . --parallel 4 CMD $WORKSPACE/build/pcap_test /root/OS-2-32-U0_v2.0.0_1024x10.pcap diff --git a/examples/static_linking_example/example.bash b/examples/static_linking_example/example.bash new file mode 100755 index 00000000..46e6c987 --- /dev/null +++ b/examples/static_linking_example/example.bash @@ -0,0 +1,15 @@ +#! /bin/bash + +set -e +currentDir="$(cd $(dirname $0) && pwd)" +baseDir=$currentDir/../.. +tempDir="$(mktemp -d)" + +trap 'rm -rf $tempDir' EXIT +trap 'echo \*\*\* ERROR on line: $LINENO exit_code: $?' ERR + +cd $baseDir + +docker build -f $currentDir/Dockerfile --iidfile=$tempDir/iid . + +docker run --rm $(cat $tempDir/iid) diff --git a/examples/static_linking_example/main.cpp b/examples/static_linking_example/main.cpp new file mode 100644 index 00000000..2243ee3b --- /dev/null +++ b/examples/static_linking_example/main.cpp @@ -0,0 +1,17 @@ +#include +#include +#include + +#include +#include + +int main(int argc, char** argv) { + if (argc != 2) { + std::cerr << "\n\nUsage: pcap_test " << std::endl; + + return argc == 1 ? EXIT_SUCCESS : EXIT_FAILURE; + } + const std::string pcap_file = argv[1]; + auto stream_info = ouster::sensor_utils::get_stream_info(pcap_file); + std::cout << *stream_info << std::endl; +} diff --git a/examples/static_linking_example/readme.rst b/examples/static_linking_example/readme.rst new file mode 100644 index 00000000..130c363a --- /dev/null +++ b/examples/static_linking_example/readme.rst @@ -0,0 +1,15 @@ +This is a simple example on how to build a static shared library and link a cpp project with the ouster_pcap +library. + +Bash script to run the example in a container: + +.. literalinclude:: ../../../examples/static_linking_example/example.bash + :language: bash + :dedent: + +Dockerfile: + +.. literalinclude:: ../../../examples/static_linking_example/Dockerfile + :language: docker + :dedent: + diff --git a/examples/viz_events_example.cpp b/examples/viz_events_example.cpp index febaba31..37e123ef 100644 --- a/examples/viz_events_example.cpp +++ b/examples/viz_events_example.cpp @@ -24,12 +24,14 @@ constexpr int h = 8; float img_data[w * h]; auto img = std::make_shared(); +// returns true if the provided window coordinates were within the image bool set_pixel_from_window_coordinates(ouster::viz::PointViz& viz, const WindowCtx& ctx, double x, double y) { auto pixel = img->window_coordinates_to_image_pixel(ctx, x, y); - if (pixel) { - img_data[pixel->first + pixel->second * w] = 1.0; + if (pixel.first >= 0 && pixel.first < w && pixel.second >= 0 && + pixel.second < h) { + img_data[pixel.first + pixel.second * w] = 1.0; img->set_image(w, h, img_data); viz.update(); return false; diff --git a/ouster_client/CMakeLists.txt b/ouster_client/CMakeLists.txt index 304cceae..824ad5d2 100644 --- a/ouster_client/CMakeLists.txt +++ b/ouster_client/CMakeLists.txt @@ -1,24 +1,32 @@ # ==== Requirements ==== find_package(Eigen3 REQUIRED) -find_package(jsoncpp REQUIRED) find_package(CURL REQUIRED) -find_package(spdlog REQUIRED) +find_package(Threads REQUIRED) + include(Coverage) # ==== Libraries ==== -add_library(ouster_client src/client.cpp src/types.cpp src/sensor_info.cpp src/netcompat.cpp src/lidar_scan.cpp +add_library(ouster_client STATIC src/client.cpp src/types.cpp src/sensor_info.cpp src/netcompat.cpp src/lidar_scan.cpp src/image_processing.cpp src/parsing.cpp src/sensor_client.cpp src/sensor_http.cpp src/sensor_http_imp.cpp src/sensor_scan_source.cpp - src/sensor_tcp_imp.cpp src/logging.cpp src/field.cpp src/profile_extension.cpp src/util.cpp src/metadata.cpp) + src/sensor_tcp_imp.cpp src/logging.cpp src/field.cpp src/profile_extension.cpp src/metadata.cpp src/packet.cpp) target_link_libraries(ouster_client PUBLIC Eigen3::Eigen - jsoncpp_lib $ - spdlog::spdlog + Threads::Threads + $ PRIVATE - CURL::libcurl) + $ + ) target_compile_definitions(ouster_client PRIVATE EIGEN_MPL2_ONLY) +if(BUILD_SHARED_LIBRARY) + target_compile_definitions(ouster_client PRIVATE BUILD_SHARED_LIBS_EXPORT) +endif() +set_property(TARGET ouster_client PROPERTY POSITION_INDEPENDENT_CODE ON) +if(BUILD_SHARED_LIBRARY) + set_target_properties(ouster_client PROPERTIES CXX_VISIBILITY_PRESET hidden) +endif() CodeCoverageFunctionality(ouster_client) add_library(OusterSDK::ouster_client ALIAS ouster_client) @@ -42,9 +50,9 @@ target_include_directories(ouster_client SYSTEM # ==== Install ==== install(TARGETS ouster_client EXPORT ouster-sdk-targets - LIBRARY DESTINATION lib - ARCHIVE DESTINATION lib RUNTIME DESTINATION bin INCLUDES DESTINATION include) -install(DIRECTORY include/ouster include/optional-lite DESTINATION include) +install(DIRECTORY include/ouster include/optional-lite + DESTINATION include +) diff --git a/ouster_client/include/ouster/array_view.h b/ouster_client/include/ouster/array_view.h index bc8d044f..7598a1a4 100644 --- a/ouster_client/include/ouster/array_view.h +++ b/ouster_client/include/ouster/array_view.h @@ -13,6 +13,7 @@ #include "ouster/impl/cuda_macros.h" #include "ouster/impl/idx_range.h" +#include "ouster/visibility.h" namespace ouster { diff --git a/ouster_client/include/ouster/client.h b/ouster_client/include/ouster/client.h index 63c4552b..b75ef748 100644 --- a/ouster_client/include/ouster/client.h +++ b/ouster_client/include/ouster/client.h @@ -14,13 +14,15 @@ #include #include "ouster/defaults.h" +#include "ouster/packet.h" #include "ouster/types.h" #include "ouster/version.h" +#include "ouster/visibility.h" namespace ouster { namespace sensor { -struct client; +struct OUSTER_API_CLASS client; /** Returned by poll_client. */ enum client_state { @@ -57,6 +59,7 @@ const util::version min_version = {1, 12, 0, "", "", "", ""}; * * @return true on success, otherwise false. */ +OUSTER_API_FUNCTION bool init_logger(const std::string& log_level, const std::string& log_file_path = "", bool rotating = false, int max_size_in_bytes = 0, int max_files = 0); @@ -74,6 +77,7 @@ bool init_logger(const std::string& log_level, * * @return pointer owning the resources associated with the connection. */ +OUSTER_API_FUNCTION std::shared_ptr init_client(const std::string& hostname, int lidar_port, int imu_port); @@ -96,6 +100,7 @@ std::shared_ptr init_client(const std::string& hostname, int lidar_port, * * @return pointer owning the resources associated with the connection. */ +OUSTER_API_FUNCTION std::shared_ptr init_client( const std::string& hostname, const std::string& udp_dest_host, lidar_mode ld_mode = MODE_UNSPEC, timestamp_mode ts_mode = TIME_FROM_UNSPEC, @@ -123,6 +128,7 @@ std::shared_ptr init_client( * the sensor, otherwise only the port values within the config object will be * used and the rest will be ignored. */ +OUSTER_API_FUNCTION std::shared_ptr mtp_init_client( const std::string& hostname, const sensor_config& config, const std::string& mtp_dest_host, bool main, @@ -144,6 +150,7 @@ std::shared_ptr mtp_init_client( * LIDAR_DATA) is true if lidar data is ready to read, and (s & IMU_DATA) is * true if imu data is ready to read. */ +OUSTER_API_FUNCTION client_state poll_client(const client& cli, int timeout_sec = 1); /** @@ -156,6 +163,7 @@ client_state poll_client(const client& cli, int timeout_sec = 1); * * @return true if a lidar packet was successfully read. */ +OUSTER_API_FUNCTION bool read_lidar_packet(const client& cli, uint8_t* buf, const packet_format& pf); @@ -169,6 +177,7 @@ bool read_lidar_packet(const client& cli, uint8_t* buf, * * @return true if a lidar packet was successfully read. */ +OUSTER_API_FUNCTION bool read_lidar_packet(const client& cli, uint8_t* buf, size_t bytes); /** @@ -181,6 +190,7 @@ bool read_lidar_packet(const client& cli, uint8_t* buf, size_t bytes); * * @return true if a lidar packet was successfully read. */ +OUSTER_API_FUNCTION bool read_lidar_packet(const client& cli, LidarPacket& packet); /** @@ -193,6 +203,7 @@ bool read_lidar_packet(const client& cli, LidarPacket& packet); * * @return true if a lidar packet was successfully read. */ +OUSTER_API_FUNCTION bool read_imu_packet(const client& cli, uint8_t* buf, size_t bytes); /** @@ -205,6 +216,7 @@ bool read_imu_packet(const client& cli, uint8_t* buf, size_t bytes); * * @return true if an imu packet was successfully read. */ +OUSTER_API_FUNCTION bool read_imu_packet(const client& cli, uint8_t* buf, const packet_format& pf); /** @@ -217,6 +229,7 @@ bool read_imu_packet(const client& cli, uint8_t* buf, const packet_format& pf); * * @return true if an imu packet was successfully read. */ +OUSTER_API_FUNCTION bool read_imu_packet(const client& cli, ImuPacket& packet); /** @@ -235,6 +248,7 @@ bool read_imu_packet(const client& cli, ImuPacket& packet); * * @return a text blob of metadata parseable into a sensor_info struct. */ +OUSTER_API_FUNCTION std::string get_metadata(client& cli, int timeout_sec = LONG_HTTP_REQUEST_TIMEOUT_SECONDS); @@ -251,6 +265,7 @@ std::string get_metadata(client& cli, * * @return true if sensor config successfully populated. */ +OUSTER_API_FUNCTION bool get_config(const std::string& hostname, sensor_config& config, bool active = true, int timeout_sec = LONG_HTTP_REQUEST_TIMEOUT_SECONDS); @@ -281,6 +296,7 @@ enum config_flags : uint8_t { * * @return true if config params successfuly set on sensor. */ +OUSTER_API_FUNCTION bool set_config(const std::string& hostname, const sensor_config& config, uint8_t config_flags = 0, int timeout_sec = LONG_HTTP_REQUEST_TIMEOUT_SECONDS); @@ -292,6 +308,7 @@ bool set_config(const std::string& hostname, const sensor_config& config, * * @return the port number. */ +OUSTER_API_FUNCTION int get_lidar_port(const client& cli); /** @@ -301,6 +318,7 @@ int get_lidar_port(const client& cli); * * @return the port number. */ +OUSTER_API_FUNCTION int get_imu_port(const client& cli); /** @@ -310,6 +328,7 @@ int get_imu_port(const client& cli); * * @return true if addr is in multicast range. */ +OUSTER_API_FUNCTION bool in_multicast(const std::string& addr); } // namespace sensor diff --git a/ouster_client/include/ouster/field.h b/ouster_client/include/ouster/field.h index 3cf9a121..4b1d3bbe 100644 --- a/ouster_client/include/ouster/field.h +++ b/ouster_client/include/ouster/field.h @@ -17,6 +17,7 @@ #include "ouster/array_view.h" #include "ouster/types.h" +#include "ouster/visibility.h" namespace ouster { @@ -29,6 +30,7 @@ namespace impl { * * @return vector of stride offsets */ +OUSTER_API_FUNCTION std::vector calculate_strides(const std::vector& shape); } // namespace impl @@ -39,24 +41,24 @@ namespace impl { // clang-format off template int type_size() { return sizeof(T); } -template <> int type_size(); +template <> OUSTER_API_FUNCTION int type_size(); template size_t type_hash() { return typeid(T).hash_code(); } -template <> size_t type_hash(); +template <> OUSTER_API_FUNCTION size_t type_hash(); template ChanFieldType type_cft() { return ChanFieldType::UNREGISTERED; } -template <> ChanFieldType type_cft(); -template <> ChanFieldType type_cft(); -template <> ChanFieldType type_cft(); -template <> ChanFieldType type_cft(); -template <> ChanFieldType type_cft(); -template <> ChanFieldType type_cft(); -template <> ChanFieldType type_cft(); -template <> ChanFieldType type_cft(); -template <> ChanFieldType type_cft(); -template <> ChanFieldType type_cft(); -template <> ChanFieldType type_cft(); +template <> OUSTER_API_FUNCTION ChanFieldType type_cft(); +template <> OUSTER_API_FUNCTION ChanFieldType type_cft(); +template <> OUSTER_API_FUNCTION ChanFieldType type_cft(); +template <> OUSTER_API_FUNCTION ChanFieldType type_cft(); +template <> OUSTER_API_FUNCTION ChanFieldType type_cft(); +template <> OUSTER_API_FUNCTION ChanFieldType type_cft(); +template <> OUSTER_API_FUNCTION ChanFieldType type_cft(); +template <> OUSTER_API_FUNCTION ChanFieldType type_cft(); +template <> OUSTER_API_FUNCTION ChanFieldType type_cft(); +template <> OUSTER_API_FUNCTION ChanFieldType type_cft(); +template <> OUSTER_API_FUNCTION ChanFieldType type_cft(); // clang-format on @@ -68,7 +70,7 @@ template <> ChanFieldType type_cft(); * Unlike FieldType this fully describes a Field's dimensions rather than * abstract away the lidar width and height or packet count. */ -struct FieldDescriptor { +struct OUSTER_API_CLASS FieldDescriptor { /** * type hash of the described field */ @@ -79,6 +81,7 @@ struct FieldDescriptor { * * @return type size in bytes */ + OUSTER_API_FUNCTION size_t bytes() const; // TODO: ideally we need something like llvm::SmallVector here -- Tim T. @@ -117,6 +120,7 @@ struct FieldDescriptor { * * @return size in elements */ + OUSTER_API_FUNCTION size_t size() const; /** @@ -125,8 +129,10 @@ struct FieldDescriptor { * * @return ChanFieldType */ + OUSTER_API_FUNCTION sensor::ChanFieldType tag() const; + OUSTER_API_FUNCTION bool operator==(const FieldDescriptor& other) const noexcept { return type == other.type && shape == other.shape && strides == other.strides && element_size == other.element_size; @@ -137,6 +143,7 @@ struct FieldDescriptor { * * @param[in,out] other Handle to swapped FieldDescriptor. */ + OUSTER_API_FUNCTION void swap(FieldDescriptor& other); /** @@ -160,6 +167,7 @@ struct FieldDescriptor { * @param[in] other A constant of type FieldDescriptor. * @return true if compatible, otherwise false. */ + OUSTER_API_FUNCTION bool is_type_compatible(const FieldDescriptor& other) const noexcept; /** @@ -167,6 +175,7 @@ struct FieldDescriptor { * * @return number of dimensions. */ + OUSTER_API_FUNCTION size_t ndim() const noexcept; // Factory functions @@ -262,13 +271,14 @@ auto fd_array(sensor::ChanFieldType tag, Args&&... args) -> FieldDescriptor { * Non-owning wrapper over a memory pointer that allows for type safe * conversion to typed pointer, eigen array or ArrayView */ -class FieldView { +class OUSTER_API_CLASS FieldView { protected: void* ptr_; FieldDescriptor desc_; public: /** Default constructor for empty FieldView */ + OUSTER_API_FUNCTION FieldView() noexcept; /** @@ -277,6 +287,7 @@ class FieldView { * @param[in] ptr Memory pointer. * @param[in] desc Field descriptor. */ + OUSTER_API_FUNCTION FieldView(void* ptr, const FieldDescriptor& desc); /** @@ -298,7 +309,10 @@ class FieldView { const T* get() const { if (!desc_.eligible_type()) { throw std::invalid_argument( - "FieldView: ineligible dereference type"); + "FieldView: ineligible dereference type for field of element " + "type " + + ouster::sensor::to_string(desc_.tag()) + + ". Dereference type must match or be void."); } return reinterpret_cast(ptr_); } @@ -336,7 +350,9 @@ class FieldView { if (desc_.ndim() != Dim) { throw std::invalid_argument( "FieldView: ArrayView conversion failed due to dimension " - "mismatch"); + "mismatch. Expected " + + std::to_string(desc_.ndim()) + " got " + std::to_string(Dim) + + " dimensions."); } return ArrayView(get(), desc_.shape, desc_.strides); @@ -353,7 +369,9 @@ class FieldView { if (desc_.ndim() != Dim) { throw std::invalid_argument( "FieldView: ArrayView conversion failed due to dimension " - "mismatch"); + "mismatch. Expected " + + std::to_string(desc_.ndim()) + " got " + std::to_string(Dim) + + " dimensions."); } return ConstArrayView(get(), desc_.shape, desc_.strides); @@ -370,7 +388,9 @@ class FieldView { if (desc_.ndim() != 2) { throw std::invalid_argument( "Field: Eigen array conversion failed due to dimension " - "mismatch"); + "mismatch. Underlying data has " + + std::to_string(desc_.ndim()) + + " dimensions but must have 2 dimensions."); } if (sparse()) { @@ -393,7 +413,9 @@ class FieldView { if (desc_.ndim() != 2) { throw std::invalid_argument( "Field: Eigen array conversion failed due to dimension " - "mismatch"); + "mismatch. Underlying data has " + + std::to_string(desc_.ndim()) + + " dimensions but must have 2 dimensions."); } if (sparse()) { @@ -416,7 +438,9 @@ class FieldView { if (desc_.ndim() != 1) { throw std::invalid_argument( "Field: Eigen array conversion failed due to dimension " - "mismatch"); + "mismatch. Underlying data has " + + std::to_string(desc_.ndim()) + + " dimensions but must have 1 dimensions."); } if (sparse()) { @@ -439,7 +463,9 @@ class FieldView { if (desc_.ndim() != 1) { throw std::invalid_argument( "Field: Eigen array conversion failed due to dimension " - "mismatch"); + "mismatch. Underlying data has " + + std::to_string(desc_.ndim()) + + " dimensions but must have 1 dimensions."); } if (sparse()) { @@ -457,6 +483,7 @@ class FieldView { * * @return true if FieldView is owning a resource */ + OUSTER_API_FUNCTION explicit operator bool() const noexcept; /** @@ -533,9 +560,13 @@ class FieldView { "FieldView: cannot reshape sparse views"); } - if (impl::product{}(dims...) != size()) { + auto requested_size = impl::product{}(dims...); + if (requested_size != size()) { throw std::invalid_argument( - "ArrayView: cannot reshape due to size mismatch"); + "ArrayView: cannot reshape due to size mismatch. Requested " + "dimensions had " + + std::to_string(requested_size) + " but we have " + + std::to_string(size()) + " elements."); } auto new_desc = FieldDescriptor{}; @@ -551,6 +582,7 @@ class FieldView { * * @return size in bytes */ + OUSTER_API_FUNCTION size_t bytes() const noexcept; /** @@ -558,6 +590,7 @@ class FieldView { * * @return size in elements */ + OUSTER_API_FUNCTION size_t size() const; /** @@ -567,6 +600,7 @@ class FieldView { * * @return true if matched, otherwise false */ + OUSTER_API_FUNCTION bool matches(const FieldDescriptor& d) const noexcept; /** @@ -574,6 +608,7 @@ class FieldView { * * @return FieldDescriptor */ + OUSTER_API_FUNCTION const FieldDescriptor& desc() const; /** @@ -583,6 +618,7 @@ class FieldView { * * @return vector of dimensions */ + OUSTER_API_FUNCTION const std::vector& shape() const; /** @@ -590,6 +626,7 @@ class FieldView { * * @return ChanFieldType */ + OUSTER_API_FUNCTION sensor::ChanFieldType tag() const; /** @@ -597,6 +634,7 @@ class FieldView { * * @return true if sparse */ + OUSTER_API_FUNCTION bool sparse() const; }; @@ -634,6 +672,7 @@ enum class FieldClass { * * @return string representation of the FieldClass, or "UNKNOWN". */ +OUSTER_API_FUNCTION std::string to_string(FieldClass f); /** @@ -642,15 +681,17 @@ std::string to_string(FieldClass f); * * For usage examples, check unit tests */ -class Field : public FieldView { +class OUSTER_API_CLASS Field : public FieldView { protected: FieldClass class_; public: /** Default constructor, representing invalid Field */ + OUSTER_API_FUNCTION Field() noexcept; /** Field destructor */ + OUSTER_API_FUNCTION ~Field(); /** @@ -659,6 +700,7 @@ class Field : public FieldView { * @param[in] desc FieldDescriptor * @param[in] field_class FieldClass */ + OUSTER_API_FUNCTION Field(const FieldDescriptor& desc, FieldClass field_class = {}); /** @@ -666,6 +708,7 @@ class Field : public FieldView { * * @param[in] other Field to copy */ + OUSTER_API_FUNCTION Field(const Field& other); /** @@ -673,6 +716,7 @@ class Field : public FieldView { * * @param[in] other Field to copy */ + OUSTER_API_FUNCTION Field& operator=(const Field& other); /** @@ -680,6 +724,7 @@ class Field : public FieldView { * * @param[in] other Field to steal resource from */ + OUSTER_API_FUNCTION Field(Field&& other) noexcept; /** @@ -687,6 +732,7 @@ class Field : public FieldView { * * @param[in] other Field to steal resource from */ + OUSTER_API_FUNCTION Field& operator=(Field&& other) noexcept; /** @@ -694,6 +740,7 @@ class Field : public FieldView { * * @return FieldClass */ + OUSTER_API_FUNCTION FieldClass field_class() const; /** @@ -701,6 +748,7 @@ class Field : public FieldView { * * @param[in] other Field to swap resources with */ + OUSTER_API_FUNCTION void swap(Field& other) noexcept; /** @@ -708,6 +756,7 @@ class Field : public FieldView { * * @return true if type, shape and memory contents are equal to other */ + OUSTER_API_FUNCTION bool operator==(const Field& other) const; }; @@ -725,6 +774,7 @@ class Field : public FieldView { * * @return reinterpreted view of uint8_t, uint16_t, uint32_t or uint64_t type */ +OUSTER_API_FUNCTION FieldView uint_view(const FieldView& other); } // namespace ouster @@ -737,6 +787,7 @@ namespace std { * @param[in] a Field to swap with b * @param[in] b Field to swap with a */ +OUSTER_API_FUNCTION void swap(ouster::Field& a, ouster::Field& b); } // namespace std diff --git a/ouster_client/include/ouster/image_processing.h b/ouster_client/include/ouster/image_processing.h index a222e556..3b7441af 100644 --- a/ouster_client/include/ouster/image_processing.h +++ b/ouster_client/include/ouster/image_processing.h @@ -11,12 +11,13 @@ #include #include "ouster/types.h" +#include "ouster/visibility.h" namespace ouster { namespace viz { /** Adjusts brightness to between 0 and 1. */ -class AutoExposure { +class OUSTER_API_CLASS AutoExposure { const double lo_percentile, hi_percentile; // percentiles used for scaling const int ae_update_every; @@ -33,6 +34,7 @@ class AutoExposure { public: /** Default constructor using default percentile and update values. */ + OUSTER_API_FUNCTION AutoExposure(); /** @@ -40,6 +42,7 @@ class AutoExposure { * * @param[in] update_every update every this number of frames. */ + OUSTER_API_FUNCTION AutoExposure(int update_every); /** @@ -49,6 +52,7 @@ class AutoExposure { * @param[in] hi_percentile high percentile to use for adjustment. * @param[in] update_every update every this number of frames. */ + OUSTER_API_FUNCTION AutoExposure(double lo_percentile, double hi_percentile, int update_every); /** @@ -60,6 +64,7 @@ class AutoExposure { * @param[in] image Reference to the image, modified in place. * @param[in] update_state Update lo/hi percentiles if true. */ + OUSTER_API_FUNCTION void operator()(Eigen::Ref> image, bool update_state = true); /** @@ -71,6 +76,7 @@ class AutoExposure { * @param[in] image Reference to the image, modified in place. * @param[in] update_state Update lo/hi percentiles if true. */ + OUSTER_API_FUNCTION void operator()(Eigen::Ref> image, bool update_state = true); }; @@ -79,7 +85,7 @@ class AutoExposure { * thereby correcting subtle horizontal line artifacts in images, especially the * ambient image. */ -class BeamUniformityCorrector { +class OUSTER_API_CLASS BeamUniformityCorrector { private: int counter = 0; Eigen::ArrayXd dark_count; @@ -95,6 +101,7 @@ class BeamUniformityCorrector { * @param[in] image Reference to the image, modified in-place. * @param[in] update_state Update dark counts if true. */ + OUSTER_API_FUNCTION void operator()(Eigen::Ref> image, bool update_state = true); /** @@ -104,6 +111,7 @@ class BeamUniformityCorrector { * @param[in] image Reference to the image, modified in-place. * @param[in] update_state Update dark counts if true. */ + OUSTER_API_FUNCTION void operator()(Eigen::Ref> image, bool update_state = true); }; } // namespace viz diff --git a/ouster_client/include/ouster/impl/client_poller.h b/ouster_client/include/ouster/impl/client_poller.h index 28a9221e..e7052d4f 100644 --- a/ouster_client/include/ouster/impl/client_poller.h +++ b/ouster_client/include/ouster/impl/client_poller.h @@ -5,6 +5,9 @@ #pragma once +#include "ouster/client.h" +#include "ouster/visibility.h" + namespace ouster { namespace sensor { namespace impl { @@ -12,11 +15,12 @@ namespace impl { /** * Poller used in multiclient scenarios */ -struct client_poller; +struct OUSTER_API_CLASS client_poller; /** * produces uninitialized poller */ +OUSTER_API_FUNCTION std::shared_ptr make_poller(); /** @@ -24,6 +28,7 @@ std::shared_ptr make_poller(); * * @param[in] poller client_poller to reset */ +OUSTER_API_FUNCTION void reset_poll(client_poller& poller); /** @@ -32,6 +37,7 @@ void reset_poll(client_poller& poller); * @param[in] poller client_poller * @param[in] cli client to watch */ +OUSTER_API_FUNCTION void set_poll(client_poller& poller, const client& cli); /** @@ -42,6 +48,7 @@ void set_poll(client_poller& poller, const client& cli); * * @return -1 for error, 0 for timeout, otherwise number of messages received */ +OUSTER_API_FUNCTION int poll(client_poller& poller, int timeout_sec = 1); /** @@ -52,6 +59,7 @@ int poll(client_poller& poller, int timeout_sec = 1); * @return client_state which is one of CLIENT_ERROR or EXIT on error, * otherwise returning TIMEOUT if no error occurred */ +OUSTER_API_FUNCTION client_state get_error(const client_poller& poller); /** @@ -63,6 +71,7 @@ client_state get_error(const client_poller& poller); * @return client_state comprising of either LIDAR_DATA or IMU_DATA, or TIMEOUT * if no data was received */ +OUSTER_API_FUNCTION client_state get_poll(const client_poller& poller, const client& cli); } // namespace impl diff --git a/ouster_client/include/ouster/impl/idx_range.h b/ouster_client/include/ouster/impl/idx_range.h index ad14823d..011c626b 100644 --- a/ouster_client/include/ouster/impl/idx_range.h +++ b/ouster_client/include/ouster/impl/idx_range.h @@ -10,11 +10,16 @@ #include #include "ouster/impl/cuda_macros.h" - +#include "ouster/visibility.h" namespace ouster { namespace impl { -struct idx_range { +struct OUSTER_API_CLASS idx_range { + OUSTER_API_FUNCTION + idx_range(){}; + OUSTER_API_FUNCTION + idx_range(int start, int end) : start(start), end(end){}; + int start = 0; int end = 0; }; @@ -50,7 +55,9 @@ OSDK_FN int range_or_idx(T idx) { return idx; } -inline OSDK_FN int range_or_idx(idx_range e) { return e.start; } +inline OSDK_FN OUSTER_API_FUNCTION int range_or_idx(idx_range e) { + return e.start; +} template OSDK_FN std::enable_if_t::v, T> range_replace_dim(T dim, U) { @@ -148,8 +155,10 @@ OSDK_FN_HOST std::vector range_args_reshape(const std::vector& shape, } // namespace impl OSDK_FN +OUSTER_API_FUNCTION inline impl::idx_range keep() { return {0, 0}; } OSDK_FN +OUSTER_API_FUNCTION inline impl::idx_range keep(int start, int end) { return {start, end}; } } // namespace ouster diff --git a/ouster_client/include/ouster/impl/lidar_scan_impl.h b/ouster_client/include/ouster/impl/lidar_scan_impl.h index 56dbabdf..49f6cd47 100644 --- a/ouster_client/include/ouster/impl/lidar_scan_impl.h +++ b/ouster_client/include/ouster/impl/lidar_scan_impl.h @@ -13,6 +13,7 @@ #include "ouster/impl/packet_writer.h" #include "ouster/lidar_scan.h" #include "ouster/types.h" +#include "ouster/visibility.h" namespace ouster { namespace impl { @@ -23,52 +24,52 @@ template struct FieldTag; template <> -struct FieldTag { +struct OUSTER_API_CLASS FieldTag { static constexpr ChanFieldType tag = ChanFieldType::UINT8; }; template <> -struct FieldTag { +struct OUSTER_API_CLASS FieldTag { static constexpr ChanFieldType tag = ChanFieldType::UINT16; }; template <> -struct FieldTag { +struct OUSTER_API_CLASS FieldTag { static constexpr ChanFieldType tag = ChanFieldType::UINT32; }; template <> -struct FieldTag { +struct OUSTER_API_CLASS FieldTag { static constexpr ChanFieldType tag = ChanFieldType::UINT64; }; template <> -struct FieldTag { +struct OUSTER_API_CLASS FieldTag { static constexpr ChanFieldType tag = ChanFieldType::INT8; }; template <> -struct FieldTag { +struct OUSTER_API_CLASS FieldTag { static constexpr ChanFieldType tag = ChanFieldType::INT16; }; template <> -struct FieldTag { +struct OUSTER_API_CLASS FieldTag { static constexpr ChanFieldType tag = ChanFieldType::INT32; }; template <> -struct FieldTag { +struct OUSTER_API_CLASS FieldTag { static constexpr ChanFieldType tag = ChanFieldType::INT64; }; template <> -struct FieldTag { +struct OUSTER_API_CLASS FieldTag { static constexpr ChanFieldType tag = ChanFieldType::FLOAT32; }; template <> -struct FieldTag { +struct OUSTER_API_CLASS FieldTag { static constexpr ChanFieldType tag = ChanFieldType::FLOAT64; }; @@ -209,17 +210,20 @@ void visit_field(SCAN&& ls, const std::string& name, OP&& op, Args&&... args) { std::forward(args)...); } +// clang-format off /* * Call a generic operation op(f, Args...) for each field of the lidar scan * with type parameter T having the correct field type */ template -[[deprecated("Use either ls.fields() or foreach_channel_field instead")]] void -foreach_field(SCAN&& ls, OP&& op, Args&&... args) { +[[deprecated("Use either ls.fields() or foreach_channel_field instead")]] + +void foreach_field(SCAN&& ls, OP&& op, Args&&... args) { for (const auto& ft : ls) visit_field(std::forward(ls), ft.first, std::forward(op), ft.first, std::forward(args)...); } +// clang-format on /* * Call a generic operation op(f, Args...) for each parsed channel field of @@ -237,7 +241,7 @@ void foreach_channel_field(SCAN&& ls, const sensor::packet_format& pf, OP&& op, } // Read LidarScan field and cast to the destination -struct read_and_cast { +struct OUSTER_API_CLASS read_and_cast { template void operator()(Eigen::Ref> src, Eigen::Ref> dest) { dest = src.template cast(); @@ -258,7 +262,7 @@ struct read_and_cast { // Copy fields from `ls_source` LidarScan to `field_dest` img with casting // to the img_t type of `field_dest`. -struct copy_and_cast { +struct OUSTER_API_CLASS copy_and_cast { template void operator()(Eigen::Ref> field_dest, const LidarScan& ls_source, const std::string& ls_source_field) { @@ -269,7 +273,7 @@ struct copy_and_cast { /** * Zeros fields in LidarScans */ -struct zero_field { +struct OUSTER_API_CLASS zero_field { /** * Zeros the field dest. * @@ -288,6 +292,7 @@ struct zero_field { * @param[in] pf packet format * @param[in] ls lidar scan to check for RAW_HEADERS field presence. */ +OUSTER_API_FUNCTION bool raw_headers_enabled(const sensor::packet_format& pf, const LidarScan& ls); /** @@ -321,7 +326,8 @@ void scan_to_packets(const LidarScan& ls, auto frame_id = ls.frame_id; LidarPacket packet(pw.lidar_packet_size); - + // TODO: avoid this copy if we combine packet_writer and packet_format + packet.format = std::make_shared(pw); for (size_t p_id = 0; p_id < total_packets; ++p_id) { uint8_t* lidar_buf = packet.buf.data(); std::memset(packet.buf.data(), 0, packet.buf.size()); diff --git a/ouster_client/include/ouster/impl/logging.h b/ouster_client/include/ouster/impl/logging.h index 4ae9f197..7b339cc8 100644 --- a/ouster_client/include/ouster/impl/logging.h +++ b/ouster_client/include/ouster/impl/logging.h @@ -1,34 +1,120 @@ +/** + * Copyright (c) 2024, Ouster, Inc. + * All rights reserved. + */ + #pragma once -#include +#include +#include namespace ouster { namespace sensor { namespace impl { class Logger { + private: + struct format_builder; + std::string finalize_format_builder( + std::shared_ptr); + struct internal_logger; + public: - static Logger& instance(); + Logger(); + ~Logger(); - spdlog::logger& get_logger(); + enum LOG_LEVEL { + LOG_TRACE, + LOG_DEBUG, + LOG_INFO, + LOG_WARN, + LOG_ERROR, + LOG_CRITICAL + }; + + static Logger& instance(); - void configure_generic_sink(spdlog::sink_ptr sink, - const std::string& log_level); bool configure_stdout_sink(const std::string& log_level); bool configure_file_sink(const std::string& log_level, const std::string& log_file_path, bool rotating, int max_size_in_bytes, int max_files); + template + void trace(const std::string& format_string, Args&&... args) { + return log(LOG_LEVEL::LOG_TRACE, format_string, + std::forward(args)...); + }; + + template + void debug(const std::string& format_string, Args&&... args) { + return log(LOG_LEVEL::LOG_DEBUG, format_string, + std::forward(args)...); + }; + + template + void info(const std::string& format_string, Args&&... args) { + return log(LOG_LEVEL::LOG_INFO, format_string, + std::forward(args)...); + }; + + template + void warn(const std::string& format_string, Args&&... args) { + return log(LOG_LEVEL::LOG_WARN, format_string, + std::forward(args)...); + }; + + template + void error(const std::string& format_string, Args&&... args) { + return log(LOG_LEVEL::LOG_ERROR, format_string, + std::forward(args)...); + }; + + template + void critical(const std::string& format_string, Args&&... args) { + return log(LOG_LEVEL::LOG_CRITICAL, format_string, + std::forward(args)...); + }; + + template + void log(LOG_LEVEL level, const std::string& format_string, + Args&&... args) { + std::shared_ptr builder = + make_builder(format_string); + process_args(builder, std::forward(args)...); + return log(level, finalize_format_builder(builder)); + } + + void log(LOG_LEVEL level, const std::string& msg); + private: - Logger(); + // Base Case + template + void process_args(std::shared_ptr builder, + T next_arg) { + process_arg(builder, next_arg); + } + + // Recursive Case + template + void process_args(std::shared_ptr builder, + T next_arg, Args&&... args) { + process_arg(builder, next_arg); + process_args(builder, std::forward(args)...); + } + + template + void process_arg(std::shared_ptr builder, T data); + + std::shared_ptr make_builder( + const std::string& format_string); static const std::string logger_name; - std::unique_ptr logger_; + std::unique_ptr internal_logger_; }; } // namespace impl -spdlog::logger& logger(); +ouster::sensor::impl::Logger& logger(); } // namespace sensor } // namespace ouster diff --git a/ouster_client/include/ouster/impl/netcompat.h b/ouster_client/include/ouster/impl/netcompat.h index c5d90a06..d78952b7 100644 --- a/ouster_client/include/ouster/impl/netcompat.h +++ b/ouster_client/include/ouster/impl/netcompat.h @@ -21,6 +21,13 @@ #include #define ssize_t SSIZE_T #endif +/** + * Windows for some reason globally defines BAUD_9600 and BAUD_115200 + * which causes issues when you try and use those inside of something + * like an enum. Undefine BAUD_9600 and BAUD_115200 coming from windows. + */ +#undef BAUD_9600 +#undef BAUD_115200 #else // --------- Compiling on *nix --------- @@ -41,15 +48,6 @@ #endif #define SOCKET_ERROR -1 - -/** - * Windows for some reason globally defines BAUD_9600 and BAUD_115200 - * which causes issues when you try and use those inside of something - * like an enum. Undefine BAUD_9600 and BAUD_115200 coming from windows. - */ -#undef BAUD_9600 -#undef BAUD_115200 - #endif // --------- End Platform Differentiation Block --------- namespace ouster { diff --git a/ouster_client/include/ouster/impl/packet_writer.h b/ouster_client/include/ouster/impl/packet_writer.h index e64d7b80..2f82bfbc 100644 --- a/ouster_client/include/ouster/impl/packet_writer.h +++ b/ouster_client/include/ouster/impl/packet_writer.h @@ -6,6 +6,7 @@ #pragma once #include "ouster/types.h" +#include "ouster/visibility.h" namespace ouster { namespace sensor { @@ -14,28 +15,44 @@ namespace impl { /** * Writing counterpart to packet_format, used for packet generation */ -class packet_writer : public packet_format { +class OUSTER_API_CLASS packet_writer : public packet_format { public: using packet_format::packet_format; // construct from packet format - packet_writer(const packet_format& pf) : packet_format(pf) {} + OUSTER_API_FUNCTION + packet_writer(const packet_format& pf); + OUSTER_API_FUNCTION uint8_t* nth_col(int n, uint8_t* lidar_buf) const; + OUSTER_API_FUNCTION uint8_t* nth_px(int n, uint8_t* col_buf) const; + OUSTER_API_FUNCTION uint8_t* footer(uint8_t* lidar_buf) const; + OUSTER_API_FUNCTION void set_alert_flags(uint8_t* lidar_buf, uint8_t alert_flags) const; + OUSTER_API_FUNCTION void set_col_status(uint8_t* col_buf, uint32_t status) const; + OUSTER_API_FUNCTION void set_col_timestamp(uint8_t* col_buf, uint64_t ts) const; + OUSTER_API_FUNCTION void set_col_measurement_id(uint8_t* col_buf, uint16_t m_id) const; + OUSTER_API_FUNCTION void set_frame_id(uint8_t* lidar_buf, uint32_t frame_id) const; + OUSTER_API_FUNCTION void set_init_id(uint8_t* lidar_buf, uint32_t init_id) const; - void set_packet_type(uint8_t* lidar_buf, uint16_t packet_type) const; + OUSTER_API_FUNCTION + void set_packet_type(uint8_t* packet_buf, uint16_t packet_type) const; + OUSTER_API_FUNCTION void set_prod_sn(uint8_t* lidar_buf, uint64_t sn) const; + OUSTER_API_FUNCTION void set_shot_limiting(uint8_t* lidar_buf, uint8_t status) const; + OUSTER_API_FUNCTION void set_shot_limiting_countdown(uint8_t* lidar_buf, uint8_t shot_limiting_countdown) const; + OUSTER_API_FUNCTION void set_shutdown(uint8_t* lidar_buf, uint8_t status) const; + OUSTER_API_FUNCTION void set_shutdown_countdown(uint8_t* lidar_buf, uint8_t shutdown_countdown) const; diff --git a/ouster_client/include/ouster/impl/profile_extension.h b/ouster_client/include/ouster/impl/profile_extension.h index a405788a..d3467198 100644 --- a/ouster_client/include/ouster/impl/profile_extension.h +++ b/ouster_client/include/ouster/impl/profile_extension.h @@ -10,12 +10,13 @@ #include #include "ouster/types.h" +#include "ouster/visibility.h" namespace ouster { namespace sensor { namespace impl { -struct FieldInfo { +struct OUSTER_API_CLASS FieldInfo { ChanFieldType ty_tag; size_t offset; uint64_t mask; @@ -24,6 +25,7 @@ struct FieldInfo { } // namespace impl +OUSTER_API_FUNCTION void add_custom_profile( int profile_nr, const std::string& name, const std::vector>& fields, diff --git a/ouster_client/include/ouster/impl/ring_buffer.h b/ouster_client/include/ouster/impl/ring_buffer.h index 7a35b4e3..30e9ccfb 100644 --- a/ouster_client/include/ouster/impl/ring_buffer.h +++ b/ouster_client/include/ouster/impl/ring_buffer.h @@ -8,9 +8,13 @@ #include #include #include +#include +#include #include #include +#include "ouster/visibility.h" + namespace ouster { namespace sensor { namespace impl { @@ -47,6 +51,7 @@ class RingBuffer { std::atomic r_idx_, w_idx_; std::vector bufs_; + OUSTER_API_IGNORE size_t _capacity() const { return bufs_.size(); } public: diff --git a/ouster_client/include/ouster/impl/threadsafe_queue.h b/ouster_client/include/ouster/impl/threadsafe_queue.h new file mode 100644 index 00000000..204d5071 --- /dev/null +++ b/ouster_client/include/ouster/impl/threadsafe_queue.h @@ -0,0 +1,104 @@ +/** + * Copyright(c) 2024, Ouster, Inc. + * All rights reserved. + */ + +#pragma once + +#include +#include +#include +#include + +#include "nonstd/optional.hpp" + +/** + * @brief a threadsafe queue. + * + * This is a blocking threadsafe queue class: pushing blocks forever until there + * is room in the queue for a new item; popping blocks until an item is + * available or the queue is "shut down" by another thread, causing all threads + * waiting for a pop() to receive a nonstd::nullopt. + * + * This queue also requires that items be movable. + */ +template +class ThreadsafeQueue { + std::queue queue_{}; + std::mutex mutex_{}; + std::condition_variable empty_condition_{}; + std::condition_variable full_condition_{}; + bool shutdown_{false}; + size_t capacity_{}; + + public: + /** + * Instantiates a ThreadsafeQueue with the given capacity. + */ + ThreadsafeQueue(size_t capacity) : capacity_(capacity) {} + + /** + * Adds an item to the queue, blocking until there is room for the item. + * + * @throws std::logic_error if the queue has been shut down. + */ + void push(T&& t) { + std::unique_lock lock(mutex_); + + if (shutdown_) { + throw std::logic_error("queue is shutdown"); + } + + // Block until there is room for the item. + while (queue_.size() >= capacity_) { + full_condition_.wait(lock); + } + queue_.push(std::move(t)); + + // Wake up a thread waiting to pop. + empty_condition_.notify_one(); + } + + /** + * Returns the oldest item in the queue, + * or std::nullopt if there are no more items and the queue is shut down. + * + * This method blocks the calling thread indefinitely, + * until either an item is available or shutdown() is called from another + * thread, after which std::nullopt is returned. + * + * @throws std::logic_error if it would return a nonstd::nullopt + * but the queue is not shut down (a contradiction.) + */ + nonstd::optional pop() { + std::unique_lock lock(mutex_); + + // Wait for the queue to have an item in it, or to be shutdown. + while (queue_.empty() && !shutdown_) { + empty_condition_.wait(lock); + } + + if (queue_.empty()) { + if (!shutdown_) { + throw std::logic_error("queue is empty but not shut down"); + } + return nonstd::nullopt; + } + + auto front = std::move(queue_.front()); + queue_.pop(); + + // Wake up a thread waiting to push. + full_condition_.notify_one(); + return front; + } + + /** + * Shuts down the queue, waking up any threads that have called "pop". + */ + void shutdown() { + std::unique_lock lock(mutex_); + shutdown_ = true; + empty_condition_.notify_all(); + } +}; diff --git a/ouster_client/include/ouster/lidar_scan.h b/ouster_client/include/ouster/lidar_scan.h index a18c6818..b6f92250 100644 --- a/ouster_client/include/ouster/lidar_scan.h +++ b/ouster_client/include/ouster/lidar_scan.h @@ -11,19 +11,20 @@ #include #include #include -#include #include #include "ouster/defaults.h" #include "ouster/field.h" +#include "ouster/packet.h" #include "ouster/types.h" +#include "ouster/visibility.h" namespace ouster { /* * Description for a field that we desire in a lidar scan */ -struct FieldType { +struct OUSTER_API_CLASS FieldType { std::string name; ///< Name of the field sensor::ChanFieldType element_type; ///< Type of field elements std::vector extra_dims; ///< Additional dimensions of the field @@ -34,6 +35,7 @@ struct FieldType { /** * Initialize a default FieldType with no name. */ + OUSTER_API_FUNCTION FieldType(); /** @@ -46,6 +48,7 @@ struct FieldType { * @param[in] class_ Category of field, determins the first dimensions of the field */ + OUSTER_API_FUNCTION FieldType(const std::string& name_, sensor::ChanFieldType element_type_, const std::vector extra_dims_ = {}, FieldClass class_ = FieldClass::PIXEL_FIELD); @@ -57,6 +60,7 @@ struct FieldType { * * @return if the name is "less than" the provided FieldType */ + OUSTER_API_FUNCTION inline bool operator<(const FieldType& other) const { return name < other.name; } @@ -69,6 +73,7 @@ struct FieldType { * * @return string representation of the FieldType. */ +OUSTER_API_FUNCTION std::string to_string(const FieldType& field_type); /** @@ -79,6 +84,7 @@ std::string to_string(const FieldType& field_type); * * @return if a == b. */ +OUSTER_API_FUNCTION bool operator==(const FieldType& a, const FieldType& b); /** @@ -89,6 +95,7 @@ bool operator==(const FieldType& a, const FieldType& b); * * @return if a != b. */ +OUSTER_API_FUNCTION bool operator!=(const FieldType& a, const FieldType& b); /** @@ -107,7 +114,7 @@ using LidarScanFieldTypes = std::vector; * to a single measurement in time. Use the destagger() function to create an * image where columns correspond to a single azimuth angle. */ -class LidarScan { +class OUSTER_API_CLASS LidarScan { public: template using Header = Eigen::Array; ///< Header typedef @@ -190,7 +197,13 @@ class LidarScan { */ int64_t frame_id{-1}; + /** + * The associated sensor info for this lidar scan + */ + std::shared_ptr sensor_info; + /** The default constructor creates an invalid 0 x 0 scan. */ + OUSTER_API_FUNCTION LidarScan(); /** @@ -203,6 +216,7 @@ class LidarScan { * Note, the number of columns per packet is set to the default * (DEFAULT_COLUMNS_PER_PACKET). */ + OUSTER_API_FUNCTION LidarScan(size_t w, size_t h); /** @@ -211,8 +225,18 @@ class LidarScan { * * @param[in] sensor_info description of sensor to create scan for */ + OUSTER_API_FUNCTION LidarScan(const sensor::sensor_info& sensor_info); + /** + * Initialize a scan with fields configured as default for the provided + * SensorInfo's configuration + * + * @param[in] sensor_info a shared_ptr to the sensor_info object + */ + OUSTER_API_FUNCTION + LidarScan(std::shared_ptr sensor_info); + /** * Initialize a scan with the default fields for a particular udp profile. * @@ -223,6 +247,7 @@ class LidarScan { * @param[in] columns_per_packet The number of columns per packet, * this argument is optional. */ + OUSTER_API_FUNCTION LidarScan(size_t w, size_t h, sensor::UDPProfileLidar profile, size_t columns_per_packet = DEFAULT_COLUMNS_PER_PACKET); @@ -249,6 +274,7 @@ class LidarScan { * * @param[in] other The other lidar scan to initialize from. */ + OUSTER_API_FUNCTION LidarScan(const LidarScan& other); /** @@ -260,9 +286,11 @@ class LidarScan { * @param[in] other The other lidar scan to initialize from. * @param[in] fields Fields to have in new lidar scan. */ + OUSTER_API_FUNCTION LidarScan(const LidarScan& other, const LidarScanFieldTypes& fields); /** @copydoc LidarScan(const LidarScan& other) */ + OUSTER_API_FUNCTION LidarScan(LidarScan&& other); /** @@ -270,6 +298,7 @@ class LidarScan { * * @param[in] other The lidar scan to copy from. */ + OUSTER_API_FUNCTION LidarScan& operator=(const LidarScan& other); /** @@ -277,11 +306,13 @@ class LidarScan { * * @param[in] other The lidar scan to copy from. */ + OUSTER_API_FUNCTION LidarScan& operator=(LidarScan&& other); /** * Lidar scan destructor. */ + OUSTER_API_FUNCTION ~LidarScan(); /** @@ -289,6 +320,7 @@ class LidarScan { * * @return true if sensor is shot limiting */ + OUSTER_API_FUNCTION sensor::ShotLimitingStatus shot_limiting() const; /** @@ -296,6 +328,7 @@ class LidarScan { * * @return true if sensor is in thermal shutdown state. */ + OUSTER_API_FUNCTION sensor::ThermalShutdownStatus thermal_shutdown() const; /** @@ -337,11 +370,13 @@ class LidarScan { /** * @copydoc ClientLidarScanFieldString */ + OUSTER_API_FUNCTION Field& field(const std::string& name); /** * @copydoc ClientLidarScanFieldString */ + OUSTER_API_FUNCTION const Field& field(const std::string& name) const; /** @@ -351,6 +386,7 @@ class LidarScan { * * @return true if the lidar scan has the field, else false */ + OUSTER_API_FUNCTION bool has_field(const std::string& name) const; /** @@ -366,6 +402,7 @@ class LidarScan { * * @return field */ + OUSTER_API_FUNCTION Field& add_field(const std::string& name, FieldDescriptor d, FieldClass field_class = FieldClass::PIXEL_FIELD); @@ -378,6 +415,7 @@ class LidarScan { * * @return field The value of the field added. */ + OUSTER_API_FUNCTION Field& add_field(const FieldType& type); /** @@ -389,6 +427,7 @@ class LidarScan { * * @return field The deleted field. */ + OUSTER_API_FUNCTION Field del_field(const std::string& name); /** @@ -398,6 +437,7 @@ class LidarScan { * * @return the type associated with the field. */ + OUSTER_API_FUNCTION FieldType field_type(const std::string& name) const; /** @@ -405,6 +445,7 @@ class LidarScan { * * @return The type associated with every field in the scan. */ + OUSTER_API_FUNCTION LidarScanFieldTypes field_types() const; /** @@ -412,9 +453,11 @@ class LidarScan { * * @return The unordered map of field type and field. */ + OUSTER_API_FUNCTION std::unordered_map& fields(); /** @copydoc fields() */ + OUSTER_API_FUNCTION const std::unordered_map& fields() const; /** @@ -422,11 +465,13 @@ class LidarScan { * * @return a view of timestamp as a w-element vector. */ + OUSTER_API_FUNCTION Eigen::Ref> timestamp(); /** * @copydoc timestamp() */ + OUSTER_API_FUNCTION Eigen::Ref> timestamp() const; /** @@ -435,6 +480,7 @@ class LidarScan { * @return a view of timestamp as a vector with w / columns-per-packet * elements. */ + OUSTER_API_FUNCTION Eigen::Ref> packet_timestamp(); /** @@ -443,6 +489,7 @@ class LidarScan { * @return a view of timestamp as a vector with w / columns-per-packet * elements. */ + OUSTER_API_FUNCTION Eigen::Ref> packet_timestamp() const; /** @@ -451,6 +498,7 @@ class LidarScan { * @return a view of timestamp as a vector with w / columns-per-packet * elements. */ + OUSTER_API_FUNCTION Eigen::Ref> alert_flags(); /** @@ -459,6 +507,7 @@ class LidarScan { * @return a view of timestamp as a vector with w / columns-per-packet * elements. */ + OUSTER_API_FUNCTION Eigen::Ref> alert_flags() const; /** @@ -466,6 +515,7 @@ class LidarScan { * * @return the first valid packet timestamp, 0 if none available */ + OUSTER_API_FUNCTION uint64_t get_first_valid_packet_timestamp() const; /** @@ -473,6 +523,7 @@ class LidarScan { * * @return the first valid column timestamp, 0 if none available */ + OUSTER_API_FUNCTION uint64_t get_first_valid_column_timestamp() const; /** @@ -480,9 +531,11 @@ class LidarScan { * * @return a view of measurement ids as a w-element vector. */ + OUSTER_API_FUNCTION Eigen::Ref> measurement_id(); /** @copydoc measurement_id() */ + OUSTER_API_FUNCTION Eigen::Ref> measurement_id() const; /** @@ -490,9 +543,11 @@ class LidarScan { * * @return a view of measurement statuses as a w-element vector. */ + OUSTER_API_FUNCTION Eigen::Ref> status(); /** @copydoc status() */ + OUSTER_API_FUNCTION Eigen::Ref> status() const; /** @@ -500,9 +555,11 @@ class LidarScan { * ArrayView3 in order to access as 3d * @return 3d field of homogenous pose matrices, shaped (w, 4, 4). */ + OUSTER_API_FUNCTION Field& pose(); /** @copydoc pose() */ + OUSTER_API_FUNCTION const Field& pose() const; /** @@ -510,6 +567,7 @@ class LidarScan { * @param[in] window The column window to use for validity assessment * @return whether all columns within given column window were valid */ + OUSTER_API_FUNCTION bool complete(sensor::ColumnWindow window) const; /** @@ -517,11 +575,42 @@ class LidarScan { * * @return the number of packets */ + OUSTER_API_FUNCTION size_t packet_count() const; - friend bool operator==(const LidarScan& a, const LidarScan& b); + /** + * Equality for scans. + * + * @param[in] other The other scan to compare to. + * + * @return if a == b. + */ + OUSTER_API_FUNCTION + bool equals(const LidarScan& other) const; }; +/** + * Equality for LidarScan. + * + * @param[in] a The first scan to compare. + * @param[in] b The second scan to compare. + * + * @return if a == b. + */ +OUSTER_API_FUNCTION +bool operator==(const LidarScan& a, const LidarScan& b); + +/** + * Inequality for LidarScan. + * + * @param[in] a The first scan to compare. + * @param[in] b The second scan to compare. + * + * @return if a != b. + */ +OUSTER_API_FUNCTION +bool operator!=(const LidarScan& a, const LidarScan& b); + /** * Get string representation of lidar scan field types. * @@ -529,6 +618,7 @@ class LidarScan { * * @return string representation of the lidar scan field types. */ +OUSTER_API_FUNCTION std::string to_string(const LidarScanFieldTypes& field_types); /** @@ -538,6 +628,7 @@ std::string to_string(const LidarScanFieldTypes& field_types); * * @return The lidar scan field types */ +OUSTER_API_FUNCTION LidarScanFieldTypes get_field_types(sensor::UDPProfileLidar udp_profile_lidar); /** @@ -547,6 +638,7 @@ LidarScanFieldTypes get_field_types(sensor::UDPProfileLidar udp_profile_lidar); * * @return The lidar scan field types */ +OUSTER_API_FUNCTION LidarScanFieldTypes get_field_types(const sensor::sensor_info& info); /** @@ -556,6 +648,7 @@ LidarScanFieldTypes get_field_types(const sensor::sensor_info& info); * * @return string representation of the lidar scan. */ +OUSTER_API_FUNCTION std::string to_string(const LidarScan& ls); /** \defgroup ouster_client_lidar_scan_operators Ouster Client lidar_scan.h @@ -563,31 +656,10 @@ std::string to_string(const LidarScan& ls); * @{ */ -/** - * Equality for scans. - * - * @param[in] a The first scan to compare. - * @param[in] b The second scan to compare. - * - * @return if a == b. - */ -bool operator==(const LidarScan& a, const LidarScan& b); - -/** - * NOT Equality for scans. - * - * @param[in] a The first scan to compare. - * @param[in] b The second scan to compare. - * - * @return if a != b. - */ -inline bool operator!=(const LidarScan& a, const LidarScan& b) { - return !(a == b); -} /** @}*/ /** Lookup table of beam directions and offsets. */ -struct XYZLut { +struct OUSTER_API_CLASS XYZLut { LidarScan::Points direction; ///< Lookup table of beam directions LidarScan::Points offset; ///< Lookup table of beam offsets }; @@ -619,6 +691,7 @@ struct XYZLut { * * @return xyz direction and offset vectors for each point in the lidar scan. */ +OUSTER_API_FUNCTION XYZLut make_xyz_lut(size_t w, size_t h, double range_unit, const mat4d& beam_to_lidar_transform, const mat4d& transform, @@ -638,6 +711,7 @@ XYZLut make_xyz_lut(size_t w, size_t h, double range_unit, * * @return xyz direction and offset vectors for each point in the lidar scan. */ +OUSTER_API_FUNCTION XYZLut make_xyz_lut(const sensor::sensor_info& sensor, bool use_extrinsics); /** \defgroup ouster_client_lidar_scan_cartesian Ouster Client lidar_scan.h @@ -653,6 +727,7 @@ XYZLut make_xyz_lut(const sensor::sensor_info& sensor, bool use_extrinsics); * @return Cartesian points where ith row is a 3D point which corresponds * to ith pixel in LidarScan where i = row * w + col. */ +OUSTER_API_FUNCTION LidarScan::Points cartesian(const LidarScan& scan, const XYZLut& lut); /** @@ -665,6 +740,7 @@ LidarScan::Points cartesian(const LidarScan& scan, const XYZLut& lut); * @return Cartesian points where ith row is a 3D point which corresponds * to ith pixel in LidarScan where i = row * w + col. */ +OUSTER_API_FUNCTION LidarScan::Points cartesian(const Eigen::Ref>& range, const XYZLut& lut); /** @}*/ @@ -718,22 +794,27 @@ inline img_t stagger(const Eigen::Ref>& img, * Make a function that batches a single scan (revolution) of data to a * LidarScan. */ -class ScanBatcher { +class OUSTER_API_CLASS ScanBatcher { size_t w; size_t h; uint16_t next_valid_m_id; uint16_t next_headers_m_id; uint16_t next_valid_packet_id; - std::vector cache; - uint64_t cache_packet_ts; + sensor::LidarPacket cache; bool cached_packet = false; int64_t finished_scan_id = -1; size_t expected_packets; size_t batched_packets = 0; + std::shared_ptr sensor_info; + + void parse_by_col(const uint8_t* packet_buf, LidarScan& ls); + void parse_by_block(const uint8_t* packet_buf, LidarScan& ls); + + void cache_packet(const sensor::LidarPacket& packet); + void batch_cached_packet(LidarScan& ls); - void _parse_by_col(const uint8_t* packet_buf, LidarScan& ls); - void _parse_by_block(const uint8_t* packet_buf, LidarScan& ls); - void finalize_scan(LidarScan& ls, bool raw_headers); + bool check_scan_complete(const LidarScan& ls) const; + void finalize_scan(LidarScan& ls); public: sensor::packet_format pf; ///< The packet format object used for decoding @@ -747,6 +828,7 @@ class ScanBatcher { * 2048. * @param[in] pf expected format of the incoming packets used for parsing. */ + OUSTER_API_FUNCTION ScanBatcher(size_t w, const sensor::packet_format& pf); // clang-format on @@ -755,8 +837,11 @@ class ScanBatcher { * * @param[in] info sensor metadata returned from the client. */ + OUSTER_API_FUNCTION ScanBatcher(const sensor::sensor_info& info); + // clang-format off + /** * Add a packet to the scan. * @deprecated this method is deprecated in favor of one that accepts a @@ -767,32 +852,40 @@ class ScanBatcher { * * @return true when the provided lidar scan is ready to use. */ + // clang-format off [[deprecated( - "Use ScanBatcher::operator(LidarPacket&, LidarScan&) instead.")]] bool - operator()(const uint8_t* packet_buf, LidarScan& ls); + "Use ScanBatcher::operator(const LidarPacket&, LidarScan&) instead.")]] + OUSTER_API_FUNCTION + bool operator()(const uint8_t* packet_buf, LidarScan& ls); /** * Add a packet to the scan. * - * @param[in] packet a LidarPacket. + * @param[in] packet_buf a buffer containing raw bytes from a lidar packet. + * @param[in] packet_ts timestamp of the packet (usually HOST time on + * receive). * @param[in] ls lidar scan to populate. * * @return true when the provided lidar scan is ready to use. */ - bool operator()(const ouster::sensor::LidarPacket& packet, LidarScan& ls); + [[deprecated( + "Use ScanBatcher::operator(const LidarPacket&, LidarScan&) instead.")]] + OUSTER_API_FUNCTION + bool operator()(const uint8_t* packet_buf, uint64_t packet_ts, + LidarScan& ls); + + // clang-format on /** * Add a packet to the scan. * - * @param[in] packet_buf a buffer containing raw bytes from a lidar packet. - * @param[in] packet_ts timestamp of the packet (usually HOST time on - * receive). + * @param[in] packet a LidarPacket. * @param[in] ls lidar scan to populate. * * @return true when the provided lidar scan is ready to use. */ - bool operator()(const uint8_t* packet_buf, uint64_t packet_ts, - LidarScan& ls); + OUSTER_API_FUNCTION + bool operator()(const ouster::sensor::LidarPacket& packet, LidarScan& ls); }; namespace pose_util { @@ -811,7 +904,7 @@ typedef Eigen::Matrix Pose; * @param[in] poses A Eigen matrix of shape (W, 16) representing W 4x4 * transformation matrices. Each row is a flattened 4x4 pose matrix */ - +OUSTER_API_FUNCTION void dewarp(Eigen::Ref dewarped, const Eigen::Ref points, const Eigen::Ref poses); @@ -827,7 +920,7 @@ void dewarp(Eigen::Ref dewarped, const Eigen::Ref points, * where the same number of points are transformed by each corresponding pose * matrix. */ - +OUSTER_API_FUNCTION Points dewarp(const Eigen::Ref points, const Eigen::Ref poses); @@ -844,7 +937,7 @@ Points dewarp(const Eigen::Ref points, * @param[in] pose A vector of 16 elements representing a flattened 4x4 * transformation matrix. */ - +OUSTER_API_FUNCTION void transform(Eigen::Ref transformed, const Eigen::Ref points, const Eigen::Ref pose); @@ -862,7 +955,7 @@ void transform(Eigen::Ref transformed, * @return A matrix of shape (N, 3) containing the transformed 3D points, * where each point is rotated and translated by the given pose. */ - +OUSTER_API_FUNCTION Points transform(const Eigen::Ref points, const Eigen::Ref pose); diff --git a/ouster_client/include/ouster/metadata.h b/ouster_client/include/ouster/metadata.h index 976e14a2..82c1360a 100644 --- a/ouster_client/include/ouster/metadata.h +++ b/ouster_client/include/ouster/metadata.h @@ -14,18 +14,19 @@ #include "nonstd/optional.hpp" #include "ouster/types.h" +#include "ouster/visibility.h" namespace ouster { /** * Class for representing metadata issues. */ -struct ValidatorIssues { +struct OUSTER_API_CLASS ValidatorIssues { public: /** * Subclass for recording validator issues */ - class ValidatorEntry { + class OUSTER_API_CLASS ValidatorEntry { public: /** * Construct a validator issue entry. @@ -33,13 +34,24 @@ struct ValidatorIssues { * @param[in] path The json path associated with the issue. * @param[in] msg The specific issue. */ + OUSTER_API_FUNCTION ValidatorEntry(const std::string& path, const std::string& msg); + /** + * Construct a validator issue entry from another validator + * issue entry. + * + * @param[in] other The other validator entry to copy from. + */ + OUSTER_API_FUNCTION + ValidatorEntry(const ValidatorEntry& other); + /** * Return the string representation of the validation issue. * * @return the string representation of the validation issue. */ + OUSTER_API_FUNCTION std::string to_string() const; /** @@ -47,6 +59,7 @@ struct ValidatorIssues { * * @return the json path associated with the issue. */ + OUSTER_API_FUNCTION const std::string& get_path() const; /** @@ -54,6 +67,7 @@ struct ValidatorIssues { * * @return the specific issue. */ + OUSTER_API_FUNCTION const std::string& get_msg() const; protected: @@ -65,18 +79,41 @@ struct ValidatorIssues { * Convenience alias for the issue list */ using EntryList = std::vector; + + /** + * Return the string representation of all of the validation issues. + * + * @return the string representation of all of the validation issues. + */ + OUSTER_API_FUNCTION + std::string to_string() const; + EntryList information; ///< Validation issues at the information level EntryList warning; ///< Validation issues at the warning level EntryList critical; ///< Validation issues at the critical level }; +/** + * Return the string representation of all of the validation issues in an + * EntryList. + * + * @param[in] list The EntryList to get the string representation for. + * + * @return the string representation of all of the validation issues in an + * EntryList. + */ +OUSTER_API_FUNCTION +std::string to_string(const ValidatorIssues::EntryList& list); + /** * Parse and validate a metadata stream. * * @param[in] json_data The metadata data. - * @param[in] issues The issues that occured during parsing. + * @param[out] issues The issues that occured during parsing. + * * @return If parsing was successful(no critical issues) */ +OUSTER_API_FUNCTION bool parse_and_validate_metadata(const std::string& json_data, ValidatorIssues& issues); @@ -86,11 +123,48 @@ bool parse_and_validate_metadata(const std::string& json_data, * @param[in] json_data The metadata data. * @param[in] sensor_info The optional sensor_info to populate. * @param[in] issues The issues that occurred during parsing. + * * @return If parsing was successful(no critical issues) */ +OUSTER_API_FUNCTION bool parse_and_validate_metadata( const std::string& json_data, nonstd::optional& sensor_info, ValidatorIssues& issues); +/** + * Parse config text blob from the sensor into a sensor_config struct. + * + * All fields are optional, and will only be set if found. + * + * @throw runtime_error if the text is not valid json. + * + * @param[in] config a text blob given by get_config from client.h. + * @param[out] sensor_config The optional sensor config object, if parsing + * issues occur, will be empty. + * + * @return If parsing was successful(no critical issues) + */ +OUSTER_API_FUNCTION +bool parse_and_validate_config(const std::string& config, + ouster::sensor::sensor_config& sensor_config); + +/** + * Parse config text blob from the sensor into a sensor_config struct. + * + * All fields are optional, and will only be set if found. + * + * @throw runtime_error if the text is not valid json. + * + * @param[in] config a text blob given by get_config from client.h. + * @param[out] sensor_config The optional sensor config object, if parsing + * issues occur, will be empty. + * @param[out] issues The specific issues parsing the sensor config + * + * @return If parsing was successful(no critical issues) + */ +OUSTER_API_FUNCTION +bool parse_and_validate_config(const std::string& config, + ouster::sensor::sensor_config& sensor_config, + ValidatorIssues& issues); }; // namespace ouster diff --git a/ouster_client/include/ouster/packet.h b/ouster_client/include/ouster/packet.h new file mode 100644 index 00000000..8ee761da --- /dev/null +++ b/ouster_client/include/ouster/packet.h @@ -0,0 +1,354 @@ +/** + * Copyright (c) 2024, Ouster, Inc. + * All rights reserved. + * + * @file + * @brief Ouster client packet datatypes + */ + +#pragma once + +#include +#include + +#include "types.h" + +namespace ouster { +namespace sensor { + +/// Types of Ouster packets that can come from a sensor +enum class PacketType { + Unknown, ///< Packet type could not or has not been determined + Lidar, ///< Pointcloud data packet + Imu ///< IMU data packet +}; + +/// Encapsulate a packet buffer and attributes associated with it. +struct OUSTER_API_CLASS Packet { + private: + /// Type of the packet + PacketType type_; + + public: + /// Timestamp in nanoseconds of packet capture + uint64_t host_timestamp; + + /// Packet data + std::vector buf; + + /// packet_format associated with this packet + std::shared_ptr format; + + /// Returns the type of the packet + /// @return the packet type + OUSTER_API_FUNCTION PacketType type() const { return type_; } + + protected: + /// Construct an empty packet with a given type + Packet(PacketType type ///< [in] type packet type (imu or lidar) + ); + + /// Construct a packet with given type and a pre-allocated size + Packet(PacketType type, ///< [in] type packet type (imu or lidar) + int size ///< [in] size in bytes to allocate + ); + + public: + /// Attempt to cast the packet to the desired concrete PacketType. + /// @throw runtime_error if packet is not that of that type + /// @tparam Type Type of packet to cast to. Either LidarPacker or ImuPacket. + /// @return reference to the packet as the desired type + template + Type& as() { + if (type() != Type::MyType) { + throw std::runtime_error("Tried to cast packet to incorrect type."); + } + return static_cast(*this); + } +}; + +/// Reasons for failure of packet validation. +enum class PacketValidationFailure { + NONE = 0, ///< No validation errors were found + PACKET_SIZE = 1, ///< The packet size does not match the expected size + ID = 2 ///< The prod_sn or init_id does not match the metadata +}; + +/// Validate a packet buffer against a given type. +/// +/// @param[in] info The sensor info to try to check the buffer against. +/// @param[in] format The packet format to try to check the buffer against. +/// @param[in] buf The packet buffer to validate. +/// @param[in] buf_size The size of the packet buffer. +/// @param[in] type Optional type of packet to try and validate as. Unknown will +/// try and guess the packet type +/// @return Result of the validation +PacketValidationFailure validate_packet( + const sensor_info& info, const ouster::sensor::packet_format& format, + const uint8_t* buf, uint64_t buf_size, + PacketType type = PacketType::Unknown); + +/// Encapsulate a lidar packet buffer and attributes associated with it. +struct OUSTER_API_CLASS LidarPacket : public Packet { + using Packet::Packet; + + /// PacketType enum for this packet type + const static PacketType MyType = PacketType::Lidar; + + /// Construct a new empty Lidar Packet + OUSTER_API_FUNCTION LidarPacket(); + + /// Construct a new Lidar packet with a pre-allocated size + OUSTER_API_FUNCTION LidarPacket( + int size ///< [in] size in bytes to allocate + ); + + /// Validates that the packet matches the expected format and metadata. + /// @return a PacketValdationFailure with either NONE or a failure reason. + OUSTER_API_FUNCTION PacketValidationFailure validate( + const sensor_info& info, ///< [in] expected sensor_metadata + const ouster::sensor::packet_format& + format ///< [in] expected packet_format + ) const; + + /// Validates that the packet matches the expected format and metadata. + /// @return a PacketValdationFailure with either NONE or a failure reason. + OUSTER_API_FUNCTION PacketValidationFailure validate( + const sensor_info& info ///< [in] expected sensor_metadata + ) const; + + /// Get pointer to the nth column in the packet. + /// @return pointer to the nth column in this packet + OUSTER_API_FUNCTION inline auto nth_col(int n ///< [in] which column + ) const { + return format->nth_col(n, buf.data()); + } + + /// Get pointer to the nth pixel of a column buffer + /// @return pointer to the nth pixel of a column buffer + OUSTER_API_FUNCTION inline auto nth_px( + int n, ///< [in] which pixel + const uint8_t* col_buf ///< [in] pointer to column data + ) const { + return format->nth_px(n, col_buf); + } + + /// Read column timestamp from a column buffer + /// @return column timestamp + OUSTER_API_FUNCTION inline auto col_timestamp( + const uint8_t* col_buf ///< [in] pointer to column data + ) const { + return format->col_timestamp(col_buf); + } + + /// Read column measurement id from a column buffer + /// @return column measurement id + OUSTER_API_FUNCTION inline auto col_measurement_id( + const uint8_t* col_buf ///< [in] pointer to column data + ) const { + return format->col_measurement_id(col_buf); + } + + /// Read column status from a column buffer + /// @return column status + OUSTER_API_FUNCTION inline auto col_status( + const uint8_t* col_buf ///< [in] pointer to column data + ) const { + return format->col_status(col_buf); + } + + /// Copy the specified channel field out of a packet measurement block. + /// + /// @tparam T T should be a numeric type large enough to store + /// values of the specified field. Otherwise, data will be truncated. + /// + /// @param[in] col_buf a measurement block pointer returned by `nth_col()`. + /// @param[in] f the channel field to copy. + /// @param[out] dst destination array of size pixels_per_column * + /// dst_stride. + /// @param[in] dst_stride stride for writing to the destination array. + template + void col_field(const uint8_t* col_buf, const std::string& f, T* dst, + int dst_stride = 1) const { + format->col_field(col_buf, f, dst, dst_stride); + } + + /// Read the packet type from the packet header. + /// @return packet type + OUSTER_API_FUNCTION inline auto packet_type() const { + return format->packet_type(buf.data()); + } + + /// Read the frame id from the packet header. + /// @return frame id + OUSTER_API_FUNCTION inline auto frame_id() const { + return format->frame_id(buf.data()); + } + + /// Read the init id from the packet header. + /// @return init id + OUSTER_API_FUNCTION inline auto init_id() const { + return format->init_id(buf.data()); + } + + /// Read the product serial number from the packet header. + /// @return product serial number + OUSTER_API_FUNCTION inline auto prod_sn() const { + return format->prod_sn(buf.data()); + } + + /// Read the alert flags from the packet header. + /// @return alert flags + OUSTER_API_FUNCTION inline auto alert_flags() const { + return format->alert_flags(buf.data()); + } + + /// Read the thermal shutdown countdown from the packet header. + /// @return thermal shutdown countdown + OUSTER_API_FUNCTION inline auto countdown_thermal_shutdown() const { + return format->countdown_thermal_shutdown(buf.data()); + } + + /// Read the shot limiting countdown from the packet header. + /// @return shot limiting countdown + OUSTER_API_FUNCTION inline auto countdown_shot_limiting() const { + return format->countdown_shot_limiting(buf.data()); + } + + /// Read the thermal shutdown state from the packet header. + /// @return thermal shutdown state + OUSTER_API_FUNCTION inline auto thermal_shutdown() const { + return format->thermal_shutdown(buf.data()); + } + + /// Read the shot limiting state from the packet header. + /// @return shot limiting state + OUSTER_API_FUNCTION inline auto shot_limiting() const { + return format->shot_limiting(buf.data()); + } + + /// Get a pointer to the packet footer. + /// @return pointer to packet footer of lidar buffer, can be nullptr if + /// packet format doesn't have packet footer. + OUSTER_API_FUNCTION inline auto footer() const { + return format->footer(buf.data()); + } + + /// Return the CRC contained in the packet footer if present. + /// @return crc contained in the packet if present + OUSTER_API_FUNCTION inline auto crc() const { + return format->crc(buf.data()); + } + + /// Calculate the CRC for the given packet data. + /// @return calculated crc of the packet + OUSTER_API_FUNCTION inline auto calculate_crc() const { + return format->calculate_crc(buf.data()); + } + + /// Returns maximum available size of parsing block usable with block_field + /// @return if packet format does not allow for block parsing, returns 0 + OUSTER_API_FUNCTION inline auto block_parsable() const { + return format->block_parsable(); + } + + /// Copy the specified channel field out of a packet measurement block. + /// Faster traversal than col_field, but has to copy the entire packet all + /// at once. + /// + /// @tparam T T should be a numeric type large enough to store + /// values of the specified field. Otherwise, data will be truncated. + template + void block_field( + Eigen::Ref> field, ///< [out] destination eigen array + const std::string& f ///< [in] the channel field to copy + ) const { + format->block_field(field, f, buf.data()); + } +}; + +/// Encapsulate an imu packet buffer and attributes associated with it. +struct OUSTER_API_CLASS ImuPacket : public Packet { + using Packet::Packet; + + /// PacketType enum for this packet type + const static PacketType MyType = PacketType::Imu; + + /// Construct a new empty Imu Packet + OUSTER_API_FUNCTION ImuPacket(); + + /// Construct a new Imu packet with a pre-allocated size + OUSTER_API_FUNCTION ImuPacket(int size ///< [in] size in bytes to allocate + ); + + /// Validates that the packet matches the expected format and metadata. + /// @return a PacketValdationFailure with either NONE or a failure reason. + OUSTER_API_FUNCTION PacketValidationFailure validate( + const sensor_info& info, ///< [in] expected sensor_metadata + const ouster::sensor::packet_format& + format ///< [in] expected packet_format + ) const; + + /// Validates that the packet matches the expected format and metadata. + /// @return a PacketValdationFailure with either NONE or a failure reason. + OUSTER_API_FUNCTION PacketValidationFailure validate( + const sensor_info& info ///< [in] expected sensor_metadata + ) const; + + /// Read system timestamp from the packet. + /// @return system timestamp + OUSTER_API_FUNCTION inline auto sys_ts() const { + return format->imu_sys_ts(buf.data()); + } + + /// Read accelerometer timestamp from the packet. + /// @return accelerometer timestamp + OUSTER_API_FUNCTION inline auto accel_ts() const { + return format->imu_accel_ts(buf.data()); + } + + /// Read gyroscope timestamp from the packet. + /// @return gyroscope timestamp + OUSTER_API_FUNCTION inline auto gyro_ts() const { + return format->imu_gyro_ts(buf.data()); + } + + /// Read acceleration in X direction from the packet. + /// @return acceleration in the X direction + OUSTER_API_FUNCTION inline auto la_x() const { + return format->imu_la_x(buf.data()); + } + + /// Read acceleration in Y direction from the packet. + /// @return acceleration in the Y direction + OUSTER_API_FUNCTION inline auto la_y() const { + return format->imu_la_y(buf.data()); + } + + /// Read acceleration in Z direction from the packet. + /// @return acceleration in the Z direction + OUSTER_API_FUNCTION inline auto la_z() const { + return format->imu_la_z(buf.data()); + } + + /// Read angular velocity on the X axis from the packet. + /// @return angular velocity on the X axis + OUSTER_API_FUNCTION inline auto av_x() const { + return format->imu_av_x(buf.data()); + } + + /// Read angular velocity on the Y axis from the packet. + /// @return angular velocity on the Y axis + OUSTER_API_FUNCTION inline auto av_y() const { + return format->imu_av_y(buf.data()); + } + + /// Read angular velocity on the Z axis from the packet. + /// @return angular velocity on the Z axis + OUSTER_API_FUNCTION inline auto av_z() const { + return format->imu_av_z(buf.data()); + } +}; + +} // namespace sensor +} // namespace ouster diff --git a/ouster_client/include/ouster/sensor_client.h b/ouster_client/include/ouster/sensor_client.h index fb533ddc..5802c4db 100644 --- a/ouster_client/include/ouster/sensor_client.h +++ b/ouster_client/include/ouster/sensor_client.h @@ -23,14 +23,22 @@ #include "ouster/impl/netcompat.h" #include "ouster/impl/ring_buffer.h" #include "ouster/lidar_scan.h" +#include "ouster/packet.h" #include "ouster/sensor_http.h" #include "ouster/types.h" +#include "ouster/visibility.h" namespace ouster { namespace sensor { /// Struct that describes a result from retriving a packet from SensorClient -struct ClientEvent { +class SensorClient; +class OUSTER_API_CLASS ClientEvent { + friend class SensorClient; + + public: + OUSTER_API_FUNCTION ClientEvent(); + /// Types of events that can occur enum EventType { Error, ///< An error occurred in the SensorClient, it may no longer @@ -38,39 +46,52 @@ struct ClientEvent { Exit, ///< The client has been closed and will not return any more /// packets. PollTimeout, ///< get_packet has timed out waiting for an event/packet - ImuPacket, ///< An IMU packet from a sensor - LidarPacket ///< A Lidar packet from a sensor + Packet, ///< An packet from a sensor }; int source; ///< negative if not applicable to a source, like PollTimeout ///< or Error EventType type; ///< The type of event that occurred. + + OUSTER_API_FUNCTION inline ouster::sensor::Packet& packet() { + return *packet_; + } + + private: + ouster::sensor::Packet* packet_; + ClientEvent(ouster::sensor::Packet* packet, int src, EventType tpe) + : source{src}, type{tpe}, packet_{packet} {} }; /// Class that indicates a sensor and its desired configuration -class Sensor { +class OUSTER_API_CLASS Sensor { public: /// Construct a sensor descriptor with the given hostname and desired config + OUSTER_API_FUNCTION Sensor(const std::string& hostname, ///< [in] sensor hostname const sensor_config& config ///< [in] desired sensor configuration ); /// Queries the sensor metadata. /// @return the parsed sensor_info object containing the metadata. + OUSTER_API_FUNCTION sensor_info fetch_metadata( int timeout = 10 ///< [in] timeout for the request in seconds ) const; /// Get a SensorHttp client for this sensor. /// @return the SensorHttp client + OUSTER_API_FUNCTION std::shared_ptr http_client() const; /// Get the desired config of this sensor. /// @return the desired config + OUSTER_API_FUNCTION inline const sensor_config& desired_config() const { return config_; } /// Get the hostname of this sensor. /// @return the sensor hostname + OUSTER_API_FUNCTION inline const std::string& hostname() const { return hostname_; } private: @@ -81,10 +102,11 @@ class Sensor { }; /// An interface to configure and retrieve packets from one or multiple lidars -class SensorClient { +class OUSTER_API_CLASS SensorClient { public: /// Build a sensor client to retrieve packets for the provided sensors. /// Configures the sensors if necessary according to their desired configs. + OUSTER_API_FUNCTION SensorClient( const std::vector& sensors, ///< [in] sensors to connect to double config_timeout_sec = 45, ///< [in] timeout for sensor config @@ -96,6 +118,7 @@ class SensorClient { /// Build a sensor client to retrieve packets for the provided sensors. /// If provided, uses the provided metadata for each sensor rather /// configuring and retrieving them from each sensor. + OUSTER_API_FUNCTION SensorClient( const std::vector& sensors, ///< [in] sensors to connect to const std::vector& @@ -108,49 +131,60 @@ class SensorClient { ); /// Destruct the sensor client + OUSTER_API_FUNCTION ~SensorClient(); /// Retrieve a packet from the sensor with a given timeout. - /// timeout_sec of 0 = return instantly, timeout_sec < 0 = wait forever + /// timeout_sec of 0 = return immediately, timeout_sec < 0 = wait forever /// Important: may return a timeout event if the underlying condition var /// experiences a spurious wakeup. /// @return a ClientEvent representing the result of the call + OUSTER_API_FUNCTION ClientEvent get_packet( - LidarPacket& lp, ///< [out] output LidarPacket if received - ImuPacket& ip, ///< [out] output ImuPacket if received double timeout_sec ///< [in] timeout in seconds to wait for a packet ); /// Get the sensor_infos for each connected sensor /// @return the sensor_infos for each connected sensor + OUSTER_API_FUNCTION inline const std::vector& get_sensor_info() { return sensor_info_; } /// Get the number of packets dropped due to buffer overflow. /// @return the number of dropped packets + OUSTER_API_FUNCTION uint64_t dropped_packets(); /// Flush the internal packet buffer (if enabled) + OUSTER_API_FUNCTION void flush(); /// Shut down the client, closing any sockets and threads + OUSTER_API_FUNCTION void close(); /// Get the number of packets in the internal buffer. /// @return the number of packets in the internal buffer + OUSTER_API_FUNCTION size_t buffer_size(); private: - struct BufferEvent { - ClientEvent event; + struct OUSTER_API_IGNORE InternalEvent { + int source; + PacketType packet_type; + ClientEvent::EventType event_type; + }; + + struct OUSTER_API_IGNORE BufferEvent { + InternalEvent event; uint64_t timestamp; std::vector data; }; std::vector sensor_info_; std::vector sockets_; - std::vector formats_; + std::vector> formats_; bool do_buffer_ = false; uint64_t dropped_packets_ = 0; @@ -159,15 +193,19 @@ class SensorClient { std::thread buffer_thread_; std::deque buffer_; - struct Addr { + std::vector staging_buffer; + ImuPacket imu_packet_; + LidarPacket lidar_packet_; + + struct OUSTER_API_IGNORE Addr { uint32_t ipv4; uint8_t ipv6[16]; uint8_t ipv6_4[16]; }; std::vector addresses_; - ClientEvent get_packet_internal(std::vector& data, uint64_t& ts, - double timeout_sec); + InternalEvent get_packet_internal(std::vector& data, uint64_t& ts, + double timeout_sec); /// Start a background thread to do buffering if requested void start_buffer_thread(double buffer_time ///< [in] time in seconds diff --git a/ouster_client/include/ouster/sensor_http.h b/ouster_client/include/ouster/sensor_http.h index d92dd525..4c49596e 100644 --- a/ouster_client/include/ouster/sensor_http.h +++ b/ouster_client/include/ouster/sensor_http.h @@ -9,12 +9,14 @@ #pragma once -#include #include +#include #include #include +#include "ouster/visibility.h" + namespace ouster { namespace sensor { namespace util { @@ -22,7 +24,7 @@ namespace util { /** * Result for get_user_data_and_policy on SensorHttp */ -struct UserDataAndPolicy { +struct OUSTER_API_CLASS UserDataAndPolicy { bool keep_on_config_delete; std::string data; }; @@ -30,7 +32,7 @@ struct UserDataAndPolicy { /** * An interface to communicate with Ouster sensors via http requests */ -class SensorHttp { +class OUSTER_API_CLASS SensorHttp { ouster::util::version version_; std::string hostname_; @@ -44,6 +46,7 @@ class SensorHttp { /** * Deconstruct the sensor http interface. */ + OUSTER_API_FUNCTION virtual ~SensorHttp() = default; /** @@ -51,6 +54,7 @@ class SensorHttp { * * @return returns the sensor FW version */ + OUSTER_API_FUNCTION inline const ouster::util::version& firmware_version() const { return version_; } @@ -60,6 +64,7 @@ class SensorHttp { * * @return returns the sensor FW version */ + OUSTER_API_FUNCTION inline const std::string& hostname() const { return hostname_; } /** @@ -67,9 +72,10 @@ class SensorHttp { * * @param[in] timeout_sec The timeout for the request in seconds. * - * @return returns a Json object of the sensor metadata. + * @return returns a json string of the sensor metadata. */ - virtual Json::Value metadata( + OUSTER_API_FUNCTION + virtual std::string metadata( int timeout_sec = SHORT_HTTP_REQUEST_TIMEOUT_SECONDS) const = 0; /** @@ -77,9 +83,10 @@ class SensorHttp { * * @param[in] timeout_sec The timeout for the request in seconds. * - * @return returns a Json object representing the sensor_info. + * @return returns a json string representing the sensor_info. */ - virtual Json::Value sensor_info( + OUSTER_API_FUNCTION + virtual std::string sensor_info( int timeout_sec = SHORT_HTTP_REQUEST_TIMEOUT_SECONDS) const = 0; /** @@ -88,8 +95,9 @@ class SensorHttp { * @param[in] active if true retrieve active, otherwise get staged configs. * @param[in] timeout_sec The timeout for the request in seconds. * - * @return a string represnting the active or staged config + * @return a string representing the active or staged config */ + OUSTER_API_FUNCTION virtual std::string get_config_params( bool active, int timeout_sec = SHORT_HTTP_REQUEST_TIMEOUT_SECONDS) const = 0; @@ -102,6 +110,7 @@ class SensorHttp { * @param[in] value the new value to set for the selected configuration. * @param[in] timeout_sec The timeout for the request in seconds. */ + OUSTER_API_FUNCTION virtual void set_config_param( const std::string& key, const std::string& value, int timeout_sec = SHORT_HTTP_REQUEST_TIMEOUT_SECONDS) const = 0; @@ -111,9 +120,10 @@ class SensorHttp { * * @param[in] timeout_sec The timeout for the request in seconds. * - * @return active configuration parameters set on the sensor + * @return json string of active configuration parameters set on the sensor */ - virtual Json::Value active_config_params( + OUSTER_API_FUNCTION + virtual std::string active_config_params( int timeout_sec = SHORT_HTTP_REQUEST_TIMEOUT_SECONDS) const = 0; /** @@ -121,9 +131,10 @@ class SensorHttp { * * @param[in] timeout_sec The timeout for the request in seconds. * - * @return staged configuration parameters set on the sensor + * @return json string of staged configuration parameters set on the sensor */ - virtual Json::Value staged_config_params( + OUSTER_API_FUNCTION + virtual std::string staged_config_params( int timeout_sec = SHORT_HTTP_REQUEST_TIMEOUT_SECONDS) const = 0; /** @@ -131,6 +142,7 @@ class SensorHttp { * * @param[in] timeout_sec The timeout for the request in seconds. */ + OUSTER_API_FUNCTION virtual void set_udp_dest_auto( int timeout_sec = SHORT_HTTP_REQUEST_TIMEOUT_SECONDS) const = 0; @@ -139,9 +151,10 @@ class SensorHttp { * * @param[in] timeout_sec The timeout for the request in seconds. * - * @return beam_intrinsics retrieved from sensor + * @return json string of beam_intrinsics retrieved from sensor */ - virtual Json::Value beam_intrinsics( + OUSTER_API_FUNCTION + virtual std::string beam_intrinsics( int timeout_sec = SHORT_HTTP_REQUEST_TIMEOUT_SECONDS) const = 0; /** @@ -149,9 +162,10 @@ class SensorHttp { * * @param[in] timeout_sec The timeout for the request in seconds. * - * @return imu_intrinsics received from sensor + * @return json string of imu_intrinsics received from sensor */ - virtual Json::Value imu_intrinsics( + OUSTER_API_FUNCTION + virtual std::string imu_intrinsics( int timeout_sec = SHORT_HTTP_REQUEST_TIMEOUT_SECONDS) const = 0; /** @@ -159,9 +173,10 @@ class SensorHttp { * * @param[in] timeout_sec The timeout for the request in seconds. * - * @return lidar_intrinsics retrieved from sensor + * @return json string of lidar_intrinsics retrieved from sensor */ - virtual Json::Value lidar_intrinsics( + OUSTER_API_FUNCTION + virtual std::string lidar_intrinsics( int timeout_sec = SHORT_HTTP_REQUEST_TIMEOUT_SECONDS) const = 0; /** @@ -169,9 +184,10 @@ class SensorHttp { * * @param[in] timeout_sec The timeout for the request in seconds. * - * @return lidar_data_format received from sensor + * @return json string of lidar_data_format received from sensor */ - virtual Json::Value lidar_data_format( + OUSTER_API_FUNCTION + virtual std::string lidar_data_format( int timeout_sec = SHORT_HTTP_REQUEST_TIMEOUT_SECONDS) const = 0; /** @@ -179,9 +195,10 @@ class SensorHttp { * * @param[in] timeout_sec The timeout for the request in seconds. * - * @return calibration status received from sensor + * @return json string ofcalibration status received from sensor */ - virtual Json::Value calibration_status( + OUSTER_API_FUNCTION + virtual std::string calibration_status( int timeout_sec = SHORT_HTTP_REQUEST_TIMEOUT_SECONDS) const = 0; /** @@ -189,6 +206,7 @@ class SensorHttp { * * @param[in] timeout_sec The timeout for the request in seconds. */ + OUSTER_API_FUNCTION virtual void reinitialize( int timeout_sec = SHORT_HTTP_REQUEST_TIMEOUT_SECONDS) const = 0; @@ -197,6 +215,7 @@ class SensorHttp { * * @param[in] timeout_sec The timeout for the request in seconds. */ + OUSTER_API_FUNCTION virtual void save_config_params( int timeout_sec = SHORT_HTTP_REQUEST_TIMEOUT_SECONDS) const = 0; @@ -207,6 +226,7 @@ class SensorHttp { * * @return user data retrieved from sensor */ + OUSTER_API_FUNCTION virtual std::string get_user_data( int timeout_sec = SHORT_HTTP_REQUEST_TIMEOUT_SECONDS) const = 0; @@ -217,6 +237,7 @@ class SensorHttp { * * @return user data and policy setting retrieved from the sensor */ + OUSTER_API_FUNCTION virtual UserDataAndPolicy get_user_data_and_policy( int timeout_sec = SHORT_HTTP_REQUEST_TIMEOUT_SECONDS) const = 0; @@ -228,6 +249,7 @@ class SensorHttp { configuration is deleted from the sensor * @param[in] timeout_sec The timeout for the request in seconds. */ + OUSTER_API_FUNCTION virtual void set_user_data( const std::string& data, bool keep_on_config_delete = true, int timeout_sec = SHORT_HTTP_REQUEST_TIMEOUT_SECONDS) const = 0; @@ -240,17 +262,50 @@ class SensorHttp { * * @return a JSON string containing sensor IP address information. */ + OUSTER_API_FUNCTION virtual std::string network( int timeout_sec = SHORT_HTTP_REQUEST_TIMEOUT_SECONDS) const = 0; + /** + * Set's the sensor's static IP address. + * + * @param[in] ip_address The static IP to set on the sensor. + * @param[in] timeout_sec The timeout for the request in seconds. + */ + OUSTER_API_FUNCTION + virtual void set_static_ip( + const std::string& ip_address, + int timeout_sec = SHORT_HTTP_REQUEST_TIMEOUT_SECONDS) const = 0; + + /** + * Deletes any static IP address stored on the sensor. + * + * @param[in] timeout_sec The timeout for the request in seconds. + */ + OUSTER_API_FUNCTION + virtual void delete_static_ip( + int timeout_sec = SHORT_HTTP_REQUEST_TIMEOUT_SECONDS) const = 0; + /** * Deletes the user data stored on the sensor. * * @param[in] timeout_sec The timeout for the request in seconds. */ + OUSTER_API_FUNCTION virtual void delete_user_data( int timeout_sec = SHORT_HTTP_REQUEST_TIMEOUT_SECONDS) const = 0; + /** + * Downloads diagnostics data in zip format from the sensor. + * + * @param[in] timeout_sec The timeout for the request in seconds. + * + * @return diagnostics dump file contents + */ + OUSTER_API_FUNCTION + virtual std::vector diagnostics_dump( + int timeout_sec = LONG_HTTP_REQUEST_TIMEOUT_SECONDS) const = 0; + /** * Retrieves sensor firmware version information as a string. * @@ -260,6 +315,7 @@ class SensorHttp { * * @return firmware version string from sensor */ + OUSTER_API_FUNCTION static std::string firmware_version_string( const std::string& hostname, int timeout_sec = SHORT_HTTP_REQUEST_TIMEOUT_SECONDS); @@ -273,6 +329,7 @@ class SensorHttp { * * @return parsed firmware version from sensor */ + OUSTER_API_FUNCTION static ouster::util::version firmware_version( const std::string& hostname, int timeout_sec = SHORT_HTTP_REQUEST_TIMEOUT_SECONDS); @@ -286,6 +343,7 @@ class SensorHttp { * * @return a version specific implementation of the SensorHTTP instance */ + OUSTER_API_FUNCTION static std::unique_ptr create( const std::string& hostname, int timeout_sec = SHORT_HTTP_REQUEST_TIMEOUT_SECONDS); diff --git a/ouster_client/include/ouster/sensor_scan_source.h b/ouster_client/include/ouster/sensor_scan_source.h index 2743b2aa..7dede75c 100644 --- a/ouster_client/include/ouster/sensor_scan_source.h +++ b/ouster_client/include/ouster/sensor_scan_source.h @@ -16,15 +16,17 @@ #include #include "ouster/sensor_client.h" +#include "ouster/visibility.h" namespace ouster { namespace sensor { /// Provides a simple API for configuring sensors and retreiving LidarScans from /// them -class SensorScanSource { +class OUSTER_API_CLASS SensorScanSource { public: /// Construct a SensorScanSource to connect to the listed sensors + OUSTER_API_FUNCTION SensorScanSource( const std::vector& sensors, ///< [in] sensors to connect to double config_timeout = @@ -38,6 +40,7 @@ class SensorScanSource { /// Construct a SensorScanSource to connect to the listed sensors /// If infos are provided, they are used instead of configuring the sensors /// and retrieving the sensor info from them. + OUSTER_API_FUNCTION SensorScanSource( const std::vector& sensors, ///< [in] sensors to connect to const std::vector& @@ -53,6 +56,7 @@ class SensorScanSource { /// Construct a SensorScanSource to connect to the listed sensors /// If infos are provided, they are used instead of configuring the sensors /// and retrieving the sensor info from them. + OUSTER_API_FUNCTION SensorScanSource( const std::vector& sensors, ///< [in] sensors to connect to const std::vector& @@ -69,19 +73,23 @@ class SensorScanSource { ); /// Destruct the SensorScanSource + OUSTER_API_FUNCTION ~SensorScanSource(); /// Get the sensor_infos for each connected sensor /// @return the sensor_infos for each connected sensor + OUSTER_API_FUNCTION inline const std::vector& get_sensor_info() { return client_.get_sensor_info(); } /// Flush any buffered scans. + OUSTER_API_FUNCTION void flush(); /// Get the number of scans that were dropped due to buffer overflow. /// @return the number of dropped scans + OUSTER_API_FUNCTION inline uint64_t dropped_scans() { std::unique_lock lock(buffer_mutex_); return dropped_scans_; @@ -89,6 +97,7 @@ class SensorScanSource { /// Get the number of packets that had an id verification error /// @return the number of errors + OUSTER_API_FUNCTION inline uint64_t id_error_count() { return id_error_count_; } /// Retrieves a scan from the queue or waits up to timeout_sec until one is @@ -97,11 +106,13 @@ class SensorScanSource { /// experiences a spurious wakeup. /// @return the resulting lidar scan with the idx of the producing sensor /// if no result, the returned scan will be nullptr + OUSTER_API_FUNCTION std::pair> get_scan( double timeout_sec = 0.0 /// [in] timeout for retrieving a scan ); /// Shut down the scan source, closing any sockets and threads + OUSTER_API_FUNCTION void close(); private: diff --git a/ouster_client/include/ouster/types.h b/ouster_client/include/ouster/types.h index c97c10a1..dce0e13e 100644 --- a/ouster_client/include/ouster/types.h +++ b/ouster_client/include/ouster/types.h @@ -19,8 +19,8 @@ #include #include -#include "json/json.h" #include "nonstd/optional.hpp" +#include "ouster/visibility.h" #include "version.h" namespace ouster { @@ -153,6 +153,26 @@ enum Polarity { POLARITY_ACTIVE_HIGH ///< ACTIVE_HIGH }; +#if defined(_WIN32) +#if defined(BAUD_9600) +/** + * @note On windows platforms, the windows headers do a global define on + * BAUD_9600 which causes issues with defines in types.h. Netcompat.h must + * be included after every other header file to avoid this issue. This #error + * is included to notify people of the issue. + */ +#undef BAUD_9600 +#endif +#if defined(BAUD_115200) +/** + * @note On windows platforms, the windows headers do a global define on + * BAUD_115200 which causes issues with defines in types.h. Netcompat.h must + * be included after every other header file to avoid this issue. This #error + * is included to notify people of the issue. + */ +#undef BAUD_115200 +#endif +#endif /** * Baud rate the sensor attempts for NMEA UART input $GPRMC messages * See sensor docs for more details. @@ -261,7 +281,7 @@ using ColumnWindow = std::pair; /** * Struct for sensor configuration parameters. */ -struct sensor_config { +struct OUSTER_API_CLASS sensor_config { optional udp_dest; ///< The destination address for the ///< lidar/imu data to be sent to optional udp_port_lidar; ///< The destination port for the lidar @@ -415,7 +435,7 @@ struct sensor_config { }; /** Stores data format information. */ -struct data_format { +struct OUSTER_API_CLASS data_format { uint32_t pixels_per_column; ///< pixels per column uint32_t columns_per_packet; ///< columns per packet uint32_t @@ -429,13 +449,13 @@ struct data_format { }; /** Stores from-sensor calibration information */ -struct calibration_status { +struct OUSTER_API_CLASS calibration_status { optional reflectivity_status; optional reflectivity_timestamp; }; /** Stores parsed information about the prod line */ -class product_info { +class OUSTER_API_CLASS product_info { public: /** * The original full product line string. @@ -472,12 +492,14 @@ class product_info { * the product_info class from. * @return The new product_info class. */ + OUSTER_API_FUNCTION static product_info create_product_info(std::string product_info_string); /** * Default constructor for product_info that * sets everything to blank. */ + OUSTER_API_FUNCTION product_info(); protected: @@ -493,6 +515,7 @@ class product_info { * * @internal */ + OUSTER_API_FUNCTION product_info(std::string product_info_string, std::string form_factor, bool short_range, std::string beam_config, int beam_count); }; @@ -505,6 +528,7 @@ class product_info { * * @return lhs == rhs */ +OUSTER_API_FUNCTION bool operator==(const product_info& lhs, const product_info& rhs); /** @@ -515,6 +539,7 @@ bool operator==(const product_info& lhs, const product_info& rhs); * * @return lhs != rhs */ +OUSTER_API_FUNCTION bool operator!=(const product_info& lhs, const product_info& rhs); /** @@ -524,12 +549,25 @@ bool operator!=(const product_info& lhs, const product_info& rhs); * * @return string representation of the product info. */ +OUSTER_API_FUNCTION std::string to_string(const product_info& info); -/** Stores parsed information from metadata and */ -struct sensor_info { +/** + * Stores parsed information from metadata. + */ +class OUSTER_API_CLASS sensor_info { + public: + OUSTER_API_FUNCTION + sensor_info(const sensor_info&) = default; + OUSTER_API_FUNCTION + sensor_info(sensor_info&&) = default; + OUSTER_API_FUNCTION + ~sensor_info() = default; + OUSTER_API_FUNCTION + sensor_info& operator=(const ouster::sensor::sensor_info&) = default; + // clang-format off - std::string sn{}; ///< sensor serial number corresponding to prod_sn in + uint64_t sn{}; ///< sensor serial number corresponding to prod_sn in ///< metadata.json std::string fw_rev{}; ///< fw revision corresponding to build_rev in metadata.json @@ -566,15 +604,22 @@ struct sensor_info { /* Constructor from metadata */ [[deprecated("skip_beam_validation does not do anything anymore")]] - explicit sensor_info(const std::string& metadata, bool skip_beam_validation); + OUSTER_API_FUNCTION + explicit sensor_info(const std::string& metadata, bool skip_beam_validation); + OUSTER_API_FUNCTION explicit sensor_info(const std::string& metadata); /* Empty constructor -- keep for */ + OUSTER_API_FUNCTION sensor_info(); - /* Return an updated version of the metadata string reflecting any + /** Return an updated version of the metadata string reflecting any * changes to the sensor_info. - * Errors out if changes are incompatible but does not check for validity */ + * Errors out if changes are incompatible but does not check for validity + * + * @return json serialized version of this object + */ + OUSTER_API_FUNCTION std::string to_json_string() const; /** @@ -582,10 +627,13 @@ struct sensor_info { * * @return sensor version info */ + OUSTER_API_FUNCTION ouster::util::version get_version() const; + OUSTER_API_FUNCTION product_info get_product_info() const; + OUSTER_API_FUNCTION bool has_fields_equal(const sensor_info& other) const; /** @@ -593,6 +641,7 @@ struct sensor_info { * * @return width of a frame. */ + OUSTER_API_FUNCTION auto w() const -> decltype(format.columns_per_frame); ///< returns the width of a frame (equivalent to format.columns_per_frame) /** @@ -600,6 +649,7 @@ struct sensor_info { * * @return height of a frame. */ + OUSTER_API_FUNCTION auto h() const -> decltype(format.pixels_per_column); ///< returns the height of a frame (equivalent to format.pixels_per_column) private: @@ -615,6 +665,7 @@ struct sensor_info { * * @return lhs == rhs */ +OUSTER_API_FUNCTION bool operator==(const data_format& lhs, const data_format& rhs); /** @@ -625,6 +676,7 @@ bool operator==(const data_format& lhs, const data_format& rhs); * * @return lhs != rhs */ +OUSTER_API_FUNCTION bool operator!=(const data_format& lhs, const data_format& rhs); /** @@ -635,6 +687,7 @@ bool operator!=(const data_format& lhs, const data_format& rhs); * * @return lhs == rhs */ +OUSTER_API_FUNCTION bool operator==(const sensor_info& lhs, const sensor_info& rhs); /** @@ -645,6 +698,7 @@ bool operator==(const sensor_info& lhs, const sensor_info& rhs); * * @return lhs != rhs */ +OUSTER_API_FUNCTION bool operator!=(const sensor_info& lhs, const sensor_info& rhs); /** @@ -655,6 +709,7 @@ bool operator!=(const sensor_info& lhs, const sensor_info& rhs); * * @return lhs == rhs */ +OUSTER_API_FUNCTION bool operator==(const sensor_config& lhs, const sensor_config& rhs); /** @@ -665,6 +720,7 @@ bool operator==(const sensor_config& lhs, const sensor_config& rhs); * * @return lhs != rhs */ +OUSTER_API_FUNCTION bool operator!=(const sensor_config& lhs, const sensor_config& rhs); /** @@ -673,6 +729,7 @@ bool operator!=(const sensor_config& lhs, const sensor_config& rhs); * @param[in] lhs The first object to compare. * @param[out] rhs The second object to compare. */ +OUSTER_API_FUNCTION bool operator==(const calibration_status& lhs, const calibration_status& rhs); /** @@ -681,6 +738,7 @@ bool operator==(const calibration_status& lhs, const calibration_status& rhs); * @param[in] lhs The first object to compare. * @param[out] rhs The second object to compare. */ +OUSTER_API_FUNCTION bool operator!=(const calibration_status& lhs, const calibration_status& rhs); /** @@ -690,6 +748,7 @@ bool operator!=(const calibration_status& lhs, const calibration_status& rhs); * * @return default sensor_info for the OS1-64. */ +OUSTER_API_FUNCTION sensor_info default_sensor_info(lidar_mode mode); /** @@ -699,6 +758,7 @@ sensor_info default_sensor_info(lidar_mode mode); * * @return string representation of the lidar mode, or "UNKNOWN". */ +OUSTER_API_FUNCTION std::string to_string(lidar_mode mode); /** @@ -708,6 +768,7 @@ std::string to_string(lidar_mode mode); * * @return lidar mode corresponding to the string, or 0 on error. */ +OUSTER_API_FUNCTION lidar_mode lidar_mode_of_string(const std::string& s); /** @@ -717,6 +778,7 @@ lidar_mode lidar_mode_of_string(const std::string& s); * * @return number of columns per rotation for the mode. */ +OUSTER_API_FUNCTION uint32_t n_cols_of_lidar_mode(lidar_mode mode); /** @@ -726,6 +788,7 @@ uint32_t n_cols_of_lidar_mode(lidar_mode mode); * * @return lidar rotation frequency in Hz. */ +OUSTER_API_FUNCTION int frequency_of_lidar_mode(lidar_mode mode); /** @@ -735,6 +798,7 @@ int frequency_of_lidar_mode(lidar_mode mode); * * @return string representation of the timestamp mode, or "UNKNOWN". */ +OUSTER_API_FUNCTION std::string to_string(timestamp_mode mode); /** @@ -744,6 +808,7 @@ std::string to_string(timestamp_mode mode); * * @return timestamp mode corresponding to the string, or 0 on error. */ +OUSTER_API_FUNCTION timestamp_mode timestamp_mode_of_string(const std::string& s); /** @@ -753,6 +818,7 @@ timestamp_mode timestamp_mode_of_string(const std::string& s); * * @return string representation of the operating mode, or "UNKNOWN". */ +OUSTER_API_FUNCTION std::string to_string(OperatingMode mode); /** @@ -762,6 +828,7 @@ std::string to_string(OperatingMode mode); * * @return operating mode corresponding to the string, or 0 on error. */ +OUSTER_API_FUNCTION optional operating_mode_of_string(const std::string& s); /** @@ -771,6 +838,7 @@ optional operating_mode_of_string(const std::string& s); * * @return string representation of the multipurpose io mode, or "UNKNOWN". */ +OUSTER_API_FUNCTION std::string to_string(MultipurposeIOMode mode); /** @@ -780,6 +848,7 @@ std::string to_string(MultipurposeIOMode mode); * * @return multipurpose io mode corresponding to the string, or 0 on error. */ +OUSTER_API_FUNCTION optional multipurpose_io_mode_of_string( const std::string& s); @@ -790,6 +859,7 @@ optional multipurpose_io_mode_of_string( * * @return string representation of the polarity, or "UNKNOWN". */ +OUSTER_API_FUNCTION std::string to_string(Polarity polarity); /** @@ -799,6 +869,7 @@ std::string to_string(Polarity polarity); * * @return polarity corresponding to the string, or 0 on error. */ +OUSTER_API_FUNCTION optional polarity_of_string(const std::string& s); /** @@ -808,6 +879,7 @@ optional polarity_of_string(const std::string& s); * * @return string representation of the NMEA baud rate, or "UNKNOWN". */ +OUSTER_API_FUNCTION std::string to_string(NMEABaudRate rate); /** @@ -817,6 +889,7 @@ std::string to_string(NMEABaudRate rate); * * @return nmea baud rate corresponding to the string, or 0 on error. */ +OUSTER_API_FUNCTION optional nmea_baud_rate_of_string(const std::string& s); /** @@ -827,6 +900,7 @@ representation. of * * @return string representation of the azimuth window. */ +OUSTER_API_FUNCTION std::string to_string(AzimuthWindow azimuth_window); /** @@ -836,6 +910,7 @@ std::string to_string(AzimuthWindow azimuth_window); * * @return string representation of the lidar profile. */ +OUSTER_API_FUNCTION std::string to_string(UDPProfileLidar profile); /** @@ -845,6 +920,7 @@ std::string to_string(UDPProfileLidar profile); * * @return lidar profile corresponding to the string, or nullopt on error. */ +OUSTER_API_FUNCTION optional udp_profile_lidar_of_string(const std::string& s); /** @@ -854,6 +930,7 @@ optional udp_profile_lidar_of_string(const std::string& s); * * @return string representation of the lidar profile. */ +OUSTER_API_FUNCTION std::string to_string(UDPProfileIMU profile); /** @@ -863,6 +940,7 @@ std::string to_string(UDPProfileIMU profile); * * @return imu profile corresponding to the string, or nullopt on error. */ +OUSTER_API_FUNCTION optional udp_profile_imu_of_string(const std::string& s); /** @@ -872,6 +950,7 @@ optional udp_profile_imu_of_string(const std::string& s); * * @return full scale range corresponding to the string, or nullopt on error. */ +OUSTER_API_FUNCTION optional full_scale_range_of_string(const std::string& s); /** @@ -881,6 +960,7 @@ optional full_scale_range_of_string(const std::string& s); * * @return return order corresponding to the string, or nullopt on error. */ +OUSTER_API_FUNCTION optional return_order_of_string(const std::string& s); /** @@ -891,6 +971,7 @@ optional return_order_of_string(const std::string& s); * * @return string representation of the return order. */ +OUSTER_API_FUNCTION std::string to_string(ReturnOrder return_order); /** @@ -901,6 +982,7 @@ std::string to_string(ReturnOrder return_order); * * @return string representation of the full scale range. */ +OUSTER_API_FUNCTION std::string to_string(FullScaleRange full_scale_range); /** @@ -911,6 +993,7 @@ std::string to_string(FullScaleRange full_scale_range); * * @return string representation of the shot limiting status. */ +OUSTER_API_FUNCTION std::string to_string(ShotLimitingStatus shot_limiting_status); /** @@ -921,6 +1004,7 @@ std::string to_string(ShotLimitingStatus shot_limiting_status); * * @return string representation of thermal shutdown status. */ +OUSTER_API_FUNCTION std::string to_string(ThermalShutdownStatus thermal_shutdown_status); /** @@ -928,6 +1012,7 @@ std::string to_string(ThermalShutdownStatus thermal_shutdown_status); * * @param[in] signal_multiplier Signal multiplier value. */ +OUSTER_API_FUNCTION void check_signal_multiplier(const double signal_multiplier); /** @@ -942,9 +1027,11 @@ void check_signal_multiplier(const double signal_multiplier); * * @return a sensor_info struct populated with a subset of the metadata. */ +OUSTER_API_FUNCTION sensor_info metadata_from_json(const std::string& json_file, bool skip_beam_validation = false); +// clang-format off /** * String representation of the sensor_info. All fields included. NOT equivalent * or interchangeable with metadata from sensor. @@ -953,10 +1040,11 @@ sensor_info metadata_from_json(const std::string& json_file, * * @return a debug string in json format */ -// clang-format off [[deprecated("This is a debug function. Use original_string() or " - "updated_metadata_string()")]] std::string -to_string(const sensor_info& info); + "updated_metadata_string()")]] +OUSTER_API_FUNCTION +std::string to_string(const sensor_info& info); + // clang-format on /** @@ -971,7 +1059,10 @@ to_string(const sensor_info& info); * @return a sensor_config struct populated with the sensor config. * parameters. */ -sensor_config parse_config(const std::string& config); +[[deprecated( + "Please switch to using parse_and_validate_config")]] OUSTER_API_FUNCTION + sensor_config + parse_config(const std::string& config); /** * Get a string representation of sensor config. Only set fields will be @@ -981,6 +1072,7 @@ sensor_config parse_config(const std::string& config); * * @return a json sensor config string. */ +OUSTER_API_FUNCTION std::string to_string(const sensor_config& config); /** @@ -991,7 +1083,7 @@ std::string to_string(const sensor_config& config); * * @return string representation of sensor calibration. */ - +OUSTER_API_FUNCTION std::string to_string(const calibration_status& cal); /** @@ -999,8 +1091,10 @@ std::string to_string(const calibration_status& cal); * * @return client version string */ +OUSTER_API_FUNCTION std::string client_version(); +// clang-format off /** * Get version information from the metadata. * @@ -1008,10 +1102,10 @@ std::string client_version(); * * @return version corresponding to the string, or invalid_version on error. */ -[[deprecated("Use sensor_info::get_version() instead")]] ouster::util::version -firmware_version_from_metadata(const std::string& metadata); +[[deprecated("Use sensor_info::get_version() instead")]] +OUSTER_API_FUNCTION +ouster::util::version firmware_version_from_metadata(const std::string& metadata); -// clang-format off typedef const char* cf_type; /** * @namespace ChanField @@ -1041,11 +1135,16 @@ namespace ChanField { static constexpr cf_type RAW32_WORD3 = "RAW32_WORD3"; ///< raw word access to packet for dev use static constexpr cf_type RAW32_WORD4 = "RAW32_WORD4"; ///< raw word access to packet for dev use }; -// clang-format on +// clang-format on /** * Types of channel fields. */ +#if defined(VOID) +#define OUSTER_REMOVED_VOID +#pragma push_macro("VOID") +#undef VOID +#endif enum ChanFieldType { VOID = 0, UINT8 = 1, @@ -1060,6 +1159,10 @@ enum ChanFieldType { FLOAT64 = 10, UNREGISTERED = 100 }; +#if defined(OUSTER_REMOVED_VOID) +#pragma pop_macro("VOID") +#undef OUSTER_REMOVED_VOID +#endif /** * Get the size of the ChanFieldType in bytes. @@ -1068,6 +1171,7 @@ enum ChanFieldType { * * @return size of the field type in bytes */ +OUSTER_API_FUNCTION size_t field_type_size(ChanFieldType ft); /** @@ -1077,6 +1181,7 @@ size_t field_type_size(ChanFieldType ft); * * @return 64 bit mask */ +OUSTER_API_FUNCTION uint64_t field_type_mask(ChanFieldType ft); /** @@ -1086,6 +1191,7 @@ uint64_t field_type_mask(ChanFieldType ft); * * @return string representation of the channel field type. */ +OUSTER_API_FUNCTION std::string to_string(ChanFieldType ft); /** @@ -1101,7 +1207,7 @@ std::string to_string(ChanFieldType ft); * Use imu_la_{x,y,z} to access the acceleration in the corresponding * direction. Use imu_av_{x,y,z} to read the angular velocity. */ -class packet_format { +class OUSTER_API_CLASS packet_format { protected: struct Impl; std::shared_ptr impl_; @@ -1109,9 +1215,11 @@ class packet_format { std::vector> field_types_; public: + OUSTER_API_FUNCTION packet_format(UDPProfileLidar udp_profile_lidar, size_t pixels_per_column, size_t columns_per_packet); + OUSTER_API_FUNCTION packet_format( const sensor_info& info); //< create packet_format from sensor_info @@ -1141,6 +1249,7 @@ class packet_format { * * @return the packet type. */ + OUSTER_API_FUNCTION uint16_t packet_type(const uint8_t* lidar_buf) const; /** @@ -1150,6 +1259,7 @@ class packet_format { * * @return the frame id. */ + OUSTER_API_FUNCTION uint32_t frame_id(const uint8_t* lidar_buf) const; /** @@ -1159,6 +1269,7 @@ class packet_format { * * @return the init id. */ + OUSTER_API_FUNCTION uint32_t init_id(const uint8_t* lidar_buf) const; /** @@ -1168,6 +1279,7 @@ class packet_format { * * @return the serial number. */ + OUSTER_API_FUNCTION uint64_t prod_sn(const uint8_t* lidar_buf) const; /** @@ -1177,6 +1289,7 @@ class packet_format { * * @return the alert flags byte. */ + OUSTER_API_FUNCTION uint8_t alert_flags(const uint8_t* lidar_buf) const; /** @@ -1186,6 +1299,7 @@ class packet_format { * * @return the thermal shutdown countdown. */ + OUSTER_API_FUNCTION uint16_t countdown_thermal_shutdown(const uint8_t* lidar_buf) const; /** @@ -1195,6 +1309,7 @@ class packet_format { * * @return the shot limiting countdown. */ + OUSTER_API_FUNCTION uint16_t countdown_shot_limiting(const uint8_t* lidar_buf) const; /** @@ -1204,6 +1319,7 @@ class packet_format { * * @return the thermal shutdown status */ + OUSTER_API_FUNCTION uint8_t thermal_shutdown(const uint8_t* lidar_buf) const; /** @@ -1213,6 +1329,7 @@ class packet_format { * * @return the shot limiting status */ + OUSTER_API_FUNCTION uint8_t shot_limiting(const uint8_t* lidar_buf) const; /** @@ -1223,6 +1340,7 @@ class packet_format { * @return a type tag specifying the bitwidth of the requested field or * ChannelFieldType::VOID if it is not supported by the packet format. */ + OUSTER_API_FUNCTION ChanFieldType field_type(const std::string& f) const; /** @@ -1232,6 +1350,7 @@ class packet_format { * packets. * */ + OUSTER_API_FUNCTION FieldIter begin() const; /** @@ -1240,6 +1359,7 @@ class packet_format { * @return Iterator pointing to the last element in the field type of * packets. */ + OUSTER_API_FUNCTION FieldIter end() const; /** @@ -1250,6 +1370,7 @@ class packet_format { * @return pointer to packet footer of lidar buffer, can be nullptr if * packet format doesn't have packet footer. */ + OUSTER_API_FUNCTION const uint8_t* footer(const uint8_t* lidar_buf) const; // Measurement block accessors @@ -1261,6 +1382,7 @@ class packet_format { * * @return pointer to nth column of lidar buffer. */ + OUSTER_API_FUNCTION const uint8_t* nth_col(int n, const uint8_t* lidar_buf) const; /** @@ -1270,6 +1392,7 @@ class packet_format { * * @return column timestamp. */ + OUSTER_API_FUNCTION uint64_t col_timestamp(const uint8_t* col_buf) const; /** @@ -1279,6 +1402,7 @@ class packet_format { * * @return column measurement id. */ + OUSTER_API_FUNCTION uint16_t col_measurement_id(const uint8_t* col_buf) const; /** @@ -1288,7 +1412,10 @@ class packet_format { * * @return column status. */ + OUSTER_API_FUNCTION uint32_t col_status(const uint8_t* col_buf) const; + + // clang-format off /** * @brief Encodes the column value. * @@ -1301,11 +1428,16 @@ class packet_format { * * @return Encoded column value. */ - [[deprecated("Use col_measurement_id instead")]] uint32_t col_encoder( + [[deprecated("Use col_measurement_id instead")]] + OUSTER_API_FUNCTION + uint32_t col_encoder( const uint8_t* col_buf) const; ///< @deprecated Encoder count is deprecated as it is redundant ///< with measurement id, barring a multiplication factor which ///< varies by lidar mode. Use col_measurement_id instead + // clang-format on + + // clang-format off /** * @brief Retrieves the current frame id * @@ -1318,8 +1450,11 @@ class packet_format { * * @return The current frame id. */ - [[deprecated("Use frame_id instead")]] uint16_t col_frame_id( + [[deprecated("Use frame_id instead")]] + OUSTER_API_FUNCTION + uint16_t col_frame_id( const uint8_t* col_buf) const; ///< @deprecated Use frame_id instead + // clang-format on /** * Copy the specified channel field out of a packet measurement block. @@ -1341,6 +1476,7 @@ class packet_format { * * @return if packet format does not allow for block parsing, returns 0 */ + OUSTER_API_FUNCTION int block_parsable() const; /** @@ -1368,6 +1504,7 @@ class packet_format { * * @return pointer to nth pixel of a column buffer. */ + OUSTER_API_FUNCTION const uint8_t* nth_px(int n, const uint8_t* col_buf) const; // IMU packet accessors @@ -1377,6 +1514,7 @@ class packet_format { * * @return sys ts from imu pacet buffer. */ + OUSTER_API_FUNCTION uint64_t imu_sys_ts(const uint8_t* imu_buf) const; /** @@ -1386,6 +1524,7 @@ class packet_format { * * @return acceleration ts from imu packet buffer. */ + OUSTER_API_FUNCTION uint64_t imu_accel_ts(const uint8_t* imu_buf) const; /** @@ -1395,6 +1534,7 @@ class packet_format { * * @return gyro ts from imu packet buffer. */ + OUSTER_API_FUNCTION uint64_t imu_gyro_ts(const uint8_t* imu_buf) const; /** @@ -1404,6 +1544,7 @@ class packet_format { * * @return acceleration in x. */ + OUSTER_API_FUNCTION float imu_la_x(const uint8_t* imu_buf) const; /** @@ -1413,6 +1554,7 @@ class packet_format { * * @return acceleration in y. */ + OUSTER_API_FUNCTION float imu_la_y(const uint8_t* imu_buf) const; /** @@ -1422,6 +1564,7 @@ class packet_format { * * @return acceleration in z. */ + OUSTER_API_FUNCTION float imu_la_z(const uint8_t* imu_buf) const; /** @@ -1431,6 +1574,7 @@ class packet_format { * * @return angular velocity in x. */ + OUSTER_API_FUNCTION float imu_av_x(const uint8_t* imu_buf) const; /** @@ -1440,6 +1584,7 @@ class packet_format { * * @return angular velocity in y. */ + OUSTER_API_FUNCTION float imu_av_y(const uint8_t* imu_buf) const; /** @@ -1449,6 +1594,7 @@ class packet_format { * * @return angular velocity in z. */ + OUSTER_API_FUNCTION float imu_av_z(const uint8_t* imu_buf) const; /** @@ -1458,6 +1604,7 @@ class packet_format { * * @return mask of possible values */ + OUSTER_API_FUNCTION uint64_t field_value_mask(const std::string& f) const; /** @@ -1467,6 +1614,7 @@ class packet_format { * * @return number of bits */ + OUSTER_API_FUNCTION int field_bitness(const std::string& f) const; /** @@ -1476,6 +1624,7 @@ class packet_format { * * @return crc contained in the packet if present */ + OUSTER_API_FUNCTION optional crc(const uint8_t* lidar_buf) const; /** @@ -1485,6 +1634,7 @@ class packet_format { * * @return calculated crc of the packet */ + OUSTER_API_FUNCTION uint64_t calculate_crc(const uint8_t* lidar_buf) const; }; @@ -1499,6 +1649,7 @@ class packet_format { * * @return a packet_format suitable for parsing UDP packets sent by the sensor. */ +OUSTER_API_FUNCTION const packet_format& get_format(const sensor_info& info); /** @@ -1512,99 +1663,11 @@ const packet_format& get_format(const sensor_info& info); * * @return a packet_format suitable for parsing UDP packets sent by the sensor. */ +OUSTER_API_FUNCTION const packet_format& get_format(UDPProfileLidar udp_profile_lidar, size_t pixels_per_column, size_t columns_per_packet); -/** - * Encapsulate a packet buffer and attributes associated with it. - */ -struct Packet { - uint64_t host_timestamp; - std::vector buf; - - Packet(int size = 65536) : host_timestamp{0} { - // this is necessary due to how client works - it may read size() + 1 - // bytes into the packet in case of rogue packet coming through - buf.reserve(size + 1); - buf.resize(size, 0); - } - - template - PacketType& as() { - return static_cast(*this); - } -}; - -/** - * Reasons for failure of packet validation. - */ -enum class PacketValidationFailure { - NONE = 0, ///< No validation errors were found - PACKET_SIZE = 1, ///< The packet size does not match the expected size - ID = 2 ///< The prod_sn or init_id does not match the metadata -}; - -/** - * Enum for packet validation types. - */ -enum class PacketValidationType { - LIDAR, ///< Validate as if the buffer was a lidar buffer - IMU, ///< Validate as if the buffer was an imu buffer - GUESS_TYPE ///< Try to guess the type and validate as that -}; - -/** - * Validate a packet buffer against a given type. - * - * @param[in] info The sensor info to try to check the buffer against. - * @param[in] format The packet format to try to check the buffer against. - * @param[in] buf The packet buffer to validate. - * @param[in] buf_size The size of the packet buffer. - * @param[in] type Optional type of packet to try and validate as. - * @return Result of the validation - */ -PacketValidationFailure validate_packet( - const sensor_info& info, const packet_format& format, const uint8_t* buf, - uint64_t buf_size, - PacketValidationType type = PacketValidationType::GUESS_TYPE); - -/** - * Encapsulate a lidar packet buffer and attributes associated with it. - */ -struct LidarPacket : public Packet { - using Packet::Packet; - - /** - * Validates that the packet matches the expected format and metadata. - * - * @param[in] info expected sensor metadata - * @param[in] format expected packet_format - * - * @return a PacketValdationFailure with either NONE or a failure reason. - */ - PacketValidationFailure validate(const sensor_info& info, - const packet_format& format); -}; - -/** - * Encapsulate an imu packet buffer and attributes associated with it. - */ -struct ImuPacket : public Packet { - using Packet::Packet; - - /** - * Validates that the packet matches the expected format and metadata. - * - * @param[in] info expected sensor metadata - * @param[in] format expected packet_format - * - * @return a PacketValdationFailure with either NONE or a failure reason. - */ - PacketValidationFailure validate(const sensor_info& info, - const packet_format& format); -}; - namespace impl { /** Maximum number of allowed lidar profiles */ @@ -1613,4 +1676,8 @@ constexpr int MAX_NUM_PROFILES = 32; } // namespace impl } // namespace sensor +/** + * The type to represent json data in string form. + */ +typedef std::string json_string; } // namespace ouster diff --git a/ouster_client/include/ouster/util.h b/ouster_client/include/ouster/util.h deleted file mode 100644 index b31117f0..00000000 --- a/ouster_client/include/ouster/util.h +++ /dev/null @@ -1,19 +0,0 @@ -/** - * Copyright (c) 2023, Ouster, Inc. - * All rights reserved. - */ - -#include - -/* Helper function which produces a combination of the two roots, with - * any value in root_orig that exists in root_new replaced with the root_new - * value. The vector changed indicates each field changed in the result - * from the original - */ - -namespace ouster { - -Json::Value combined(const Json::Value& root_orig, const Json::Value& root_new, - std::vector& changed); - -} diff --git a/ouster_client/include/ouster/version.h b/ouster_client/include/ouster/version.h index d7bc62e6..2ee54c4b 100644 --- a/ouster_client/include/ouster/version.h +++ b/ouster_client/include/ouster/version.h @@ -5,19 +5,21 @@ * @file * @brief Simple version struct */ +#pragma once #include #include -#pragma once +#include "ouster/visibility.h" namespace ouster { namespace util { -struct version { - uint16_t major; ///< Major version number - uint16_t minor; ///< Minor version number - uint16_t patch; ///< Patch(or revision) version number +struct OUSTER_API_CLASS version { + uint16_t major; ///< Major version number + uint16_t minor; ///< Minor version number + uint16_t patch; ///< Patch(or revision) version number + std::string stage; ///< Release stage name, if present. std::string machine; ///< Machine name, if present. std::string prerelease; ///< Prerelease name (e.g. rc1), if present. @@ -37,6 +39,7 @@ const version invalid_version = {0, 0, 0, "", "", "", ""}; * * @return If the versions are the same. */ +OUSTER_API_FUNCTION inline bool operator==(const version& u, const version& v) { return u.major == v.major && u.minor == v.minor && u.patch == v.patch && u.stage == v.stage && u.machine == v.machine && u.build == v.build && @@ -51,6 +54,7 @@ inline bool operator==(const version& u, const version& v) { * * @return If the first version is less than the second version. */ +OUSTER_API_FUNCTION inline bool operator<(const version& u, const version& v) { return (u.major < v.major) || (u.major == v.major && u.minor < v.minor) || (u.major == v.major && u.minor == v.minor && u.patch < v.patch); @@ -64,6 +68,7 @@ inline bool operator<(const version& u, const version& v) { * * @return If the first version is less than or equal to the second version. */ +OUSTER_API_FUNCTION inline bool operator<=(const version& u, const version& v) { return u < v || u == v; } @@ -76,6 +81,7 @@ inline bool operator<=(const version& u, const version& v) { * * @return If the versions are not the same. */ +OUSTER_API_FUNCTION inline bool operator!=(const version& u, const version& v) { return !(u == v); } /** @@ -86,6 +92,7 @@ inline bool operator!=(const version& u, const version& v) { return !(u == v); } * * @return If the first version is greater than or equal to the second version. */ +OUSTER_API_FUNCTION inline bool operator>=(const version& u, const version& v) { return !(u < v); } /** @@ -96,6 +103,7 @@ inline bool operator>=(const version& u, const version& v) { return !(u < v); } * * @return If the first version is greater than the second version. */ +OUSTER_API_FUNCTION inline bool operator>(const version& u, const version& v) { return !(u <= v); } /** @}*/ @@ -108,6 +116,7 @@ inline bool operator>(const version& u, const version& v) { return !(u <= v); } * * @return version corresponding to the string, or invalid_version on error. */ +OUSTER_API_FUNCTION version version_from_string(const std::string& ver); } // namespace util diff --git a/ouster_client/include/ouster/visibility.h b/ouster_client/include/ouster/visibility.h new file mode 100644 index 00000000..2c8555bb --- /dev/null +++ b/ouster_client/include/ouster/visibility.h @@ -0,0 +1,86 @@ +/** + * Copyright (c) 2024, Ouster, Inc. + * All rights reserved. + */ + +#pragma once + +/** + * Turn off formatting to better organise the ifdefs with indents, + * otherwise the code is hard to read. + */ +// clang-format off + +/** + * Defines for the check_exports.py script to be able to analyze + * missing attributes. + */ +#if defined OUSTER_CHECK_EXPORTS + #define OUSTER_API_FUNCTION __attribute__((annotate("OUSTER_API_FUNCTION"))) + #define OUSTER_API_CLASS __attribute__((annotate("OUSTER_API_CLASS"))) + #define OUSTER_API_IGNORE __attribute__((annotate("OUSTER_API_IGNORE"))) + #define OUSTER_API_DEFINES + +/** + * We are not running the check_exports.py script. + */ +#else + + /** + * Tag to use for items that the check_exports.py script stubbornly insists needs + * an attribute. For some reason clang returns public visibility for some protected + * members of classes. + */ + #define OUSTER_API_IGNORE + + /** + * Currently compiling for windows. + */ + #if defined _WIN32 + + /** + * Currently compiling the DLL for exports. + */ + #ifdef BUILD_SHARED_LIBS_EXPORT + #define OUSTER_API_FUNCTION __declspec( dllexport ) + #define OUSTER_API_CLASS + #define OUSTER_API_DEFINES + + /** + * Currently compiling the code requiring the ouster + * shared library. + */ + #elif defined(BUILD_SHARED_LIBS_IMPORT) + #define OUSTER_API_FUNCTION __declspec( dllimport ) + #define OUSTER_API_CLASS + #define OUSTER_API_DEFINES + #endif + + /** + * Currently compiling for linux or macos. + */ + #else + + /** + * Only add for linux and macos, and not emscripten. + */ + #ifndef __EMSCRIPTEN__ + #define _OUSTER_API_UNIX_ATTR __attribute__((visibility("default"))) + #define OUSTER_API_FUNCTION _OUSTER_API_UNIX_ATTR + #define OUSTER_API_CLASS _OUSTER_API_UNIX_ATTR + #define OUSTER_API_DEFINES + #endif + #endif +#endif + +/** + * Check to make sure we defined all of the defines, if not + * define them as empty. Emscripten usage also falls into this + * ifndef. + */ +#ifndef OUSTER_API_DEFINES + #define OUSTER_API_FUNCTION + #define OUSTER_API_CLASS + #define OUSTER_API_DEFINES +#endif +// clang-format on diff --git a/ouster_client/src/client.cpp b/ouster_client/src/client.cpp index 76299472..6398c68b 100644 --- a/ouster_client/src/client.cpp +++ b/ouster_client/src/client.cpp @@ -5,8 +5,6 @@ #include "ouster/client.h" -#include - #include #include #include @@ -15,6 +13,9 @@ #include #include #include +#include +#include +#include #include #include #include @@ -26,6 +27,7 @@ #include "ouster/impl/client_poller.h" #include "ouster/impl/logging.h" #include "ouster/impl/netcompat.h" +#include "ouster/metadata.h" #include "ouster/sensor_http.h" #include "ouster/types.h" @@ -48,7 +50,7 @@ struct client { }; // defined in types.cpp -Json::Value config_to_json(const sensor_config& config); +jsoncons::json config_to_json(const sensor_config& config); // default udp receive buffer size on windows is very low -- use 1MB const int RCVBUF_SIZE = 1024 * 1024; @@ -87,7 +89,8 @@ SOCKET mtp_data_socket(int port, const std::vector& udp_dest_hosts, if (preferred_af == AF_INET6 && setsockopt(sock_fd, IPPROTO_IPV6, IPV6_V6ONLY, (char*)&off, sizeof(off))) { - logger().warn("udp setsockopt(): {}", impl::socket_get_error()); + logger().warn("udp setsockopt(IPV6_V6ONLY): {}", + impl::socket_get_error()); impl::socket_close(sock_fd); continue; } @@ -134,7 +137,8 @@ SOCKET mtp_data_socket(int port, const std::vector& udp_dest_hosts, if (setsockopt(sock_fd, IPPROTO_IP, IP_ADD_MEMBERSHIP, (char*)&mreq, sizeof(mreq))) { - logger().warn("udp setsockopt(): {}", impl::socket_get_error()); + logger().warn("udp setsockopt(IP_ADD_MEMBERSHIP): {}", + impl::socket_get_error()); impl::socket_close(sock_fd); continue; } @@ -149,7 +153,8 @@ SOCKET mtp_data_socket(int port, const std::vector& udp_dest_hosts, if (setsockopt(sock_fd, SOL_SOCKET, SO_RCVBUF, (char*)&RCVBUF_SIZE, sizeof(RCVBUF_SIZE))) { - logger().warn("udp setsockopt(): {}", impl::socket_get_error()); + logger().warn("udp setsockopt(SO_RCVBUF): {}", + impl::socket_get_error()); impl::socket_close(sock_fd); continue; } @@ -164,7 +169,7 @@ SOCKET mtp_data_socket(int port, const std::vector& udp_dest_hosts, SOCKET udp_data_socket(int port) { return mtp_data_socket(port, {}); } -Json::Value collect_metadata(SensorHttp& sensor_http, int timeout_sec) { +jsoncons::json collect_metadata(SensorHttp& sensor_http, int timeout_sec) { // Note, this function throws std::runtime_error if // 1. the metadata couldn't be retrieved // 2. the sensor is in the INITIALIZING state when timeout is reached @@ -179,7 +184,10 @@ Json::Value collect_metadata(SensorHttp& sensor_http, int timeout_sec) { "A timeout occurred while waiting for the sensor to " "initialize."); } - status = sensor_http.sensor_info(timeout_sec)["status"].asString(); + + status = jsoncons::json::parse( + sensor_http.sensor_info(timeout_sec))["status"] + .as(); if (status != "INITIALIZING") { break; } @@ -197,7 +205,8 @@ Json::Value collect_metadata(SensorHttp& sensor_http, int timeout_sec) { } try { - auto metadata = sensor_http.metadata(timeout_sec); + auto metadata = + jsoncons::json::parse(sensor_http.metadata(timeout_sec)); metadata["ouster-sdk"]["client_version"] = client_version(); metadata["ouster-sdk"]["output_source"] = "collect_metadata"; @@ -235,7 +244,10 @@ bool get_config(SensorHttp& sensor_http, sensor_config& config, bool active = true, int timeout_sec = LONG_HTTP_REQUEST_TIMEOUT_SECONDS) { auto res = sensor_http.get_config_params(active, timeout_sec); - config = parse_config(res); + ValidatorIssues issues; + if (!parse_and_validate_config(res, config, issues)) { + throw std::runtime_error(to_string(issues.critical)); + } return true; } @@ -248,17 +260,18 @@ bool get_config(const std::string& hostname, sensor_config& config, bool active, bool set_config(SensorHttp& sensor_http, const sensor_config& config, uint8_t config_flags, int timeout_sec) { // reset staged config to avoid spurious errors - auto config_params = sensor_http.active_config_params(timeout_sec); - Json::Value config_params_copy = config_params; + jsoncons::json config_params = + jsoncons::json::parse(sensor_http.active_config_params(timeout_sec)); + jsoncons::json config_params_copy = config_params; // set all desired config parameters - Json::Value config_json = config_to_json(config); - for (const auto& key : config_json.getMemberNames()) { - config_params[key] = config_json[key]; + jsoncons::json config_json = config_to_json(config); + for (const auto& it : config_json.object_range()) { + config_params[it.key()] = it.value(); } - if (config_json.isMember("operating_mode") && - config_params.isMember("auto_start_flag")) { + if (config_json.contains("operating_mode") && + config_params.contains("auto_start_flag")) { // we're setting operating mode and this sensor has a FW with // auto_start_flag config_params["auto_start_flag"] = @@ -268,12 +281,13 @@ bool set_config(SensorHttp& sensor_http, const sensor_config& config, // Signal multiplier changed from int to double for FW 3.0/2.5+, with // corresponding change to config.signal_multiplier. // Change values 1, 2, 3 back to ints to support older FWs - if (config_json.isMember("signal_multiplier")) { - check_signal_multiplier(config_params["signal_multiplier"].asDouble()); - if (config_params["signal_multiplier"].asDouble() != 0.25 && - config_params["signal_multiplier"].asDouble() != 0.5) { + if (config_json.contains("signal_multiplier")) { + check_signal_multiplier( + config_params["signal_multiplier"].as()); + if (config_params["signal_multiplier"].as() != 0.25 && + config_params["signal_multiplier"].as() != 0.5) { config_params["signal_multiplier"] = - config_params["signal_multiplier"].asInt(); + config_params["signal_multiplier"].as(); } } @@ -289,15 +303,16 @@ bool set_config(SensorHttp& sensor_http, const sensor_config& config, "UDP_DEST_AUTO flag set but provided config has udp_dest"); sensor_http.set_udp_dest_auto(timeout_sec); - auto staged = sensor_http.staged_config_params(timeout_sec); + auto staged = jsoncons::json::parse( + sensor_http.staged_config_params(timeout_sec)); // now we set config_params according to the staged udp_dest from the // sensor - if (staged.isMember("udp_ip")) { // means the FW version carries udp_ip - config_params["udp_ip"] = staged["udp_ip"]; - config_params["udp_dest"] = staged["udp_ip"]; + if (staged.contains("udp_ip")) { // means the FW version carries udp_ip + config_params["udp_ip"] = staged["udp_ip"].as(); + config_params["udp_dest"] = staged["udp_ip"].as(); } else { // don't need to worry about udp_ip - config_params["udp_dest"] = staged["udp_dest"]; + config_params["udp_dest"] = staged["udp_dest"].as(); } } @@ -306,11 +321,10 @@ bool set_config(SensorHttp& sensor_http, const sensor_config& config, // introduced after the verison of FW the sensor is on if (config_flags & CONFIG_FORCE_REINIT || config_params_copy != config_params) { - Json::StreamWriterBuilder builder; - builder["indentation"] = ""; // send full string -- depends on older FWs not rejecting a blob even // when it contains unknown keys - auto config_params_str = Json::writeString(builder, config_params); + std::string config_params_str; + config_params.dump(config_params_str); sensor_http.set_config_param(".", config_params_str, timeout_sec); // reinitialize to make all staged parameters effective sensor_http.reinitialize(timeout_sec); @@ -334,20 +348,16 @@ std::string get_metadata(client& cli, int timeout_sec) { // Note, this function calls functions that throw std::runtime_error // on timeout. auto sensor_http = SensorHttp::create(cli.hostname, timeout_sec); - Json::Value meta; + std::string meta; try { - meta = collect_metadata(*sensor_http, timeout_sec); + auto temp_data = collect_metadata(*sensor_http, timeout_sec); + temp_data.dump(meta); } catch (const std::exception& e) { logger().warn(std::string("Unable to retrieve sensor metadata: ") + e.what()); throw; } - - Json::StreamWriterBuilder builder; - builder["enableYAMLCompatibility"] = true; - builder["precision"] = 6; - builder["indentation"] = " "; - return Json::writeString(builder, meta); + return meta; } bool init_logger(const std::string& log_level, const std::string& log_file_path, @@ -413,9 +423,10 @@ std::shared_ptr init_client(const std::string& hostname, // will block until no longer INITIALIZING auto meta = collect_metadata(*sensor_http, timeout_sec); // check for sensor error states - auto status = meta["sensor_info"]["status"].asString(); - if (status == "ERROR" || status == "UNCONFIGURED") + std::string status = meta["sensor_info"]["status"].as(); + if (status == "ERROR" || status == "UNCONFIGURED") { return std::shared_ptr(); + } } catch (const std::runtime_error& e) { // log error message logger().error("init_client(): {}", e.what()); @@ -465,7 +476,7 @@ std::shared_ptr mtp_init_client(const std::string& hostname, // will block until no longer INITIALIZING auto meta = collect_metadata(*sensor_http, timeout_sec); // check for sensor error states - auto status = meta["sensor_info"]["status"].asString(); + auto status = meta["sensor_info"]["status"].as(); if (status == "ERROR" || status == "UNCONFIGURED") return std::shared_ptr(); } catch (const std::runtime_error& e) { diff --git a/ouster_client/src/lidar_scan.cpp b/ouster_client/src/lidar_scan.cpp index e62286c4..a69dbfdc 100644 --- a/ouster_client/src/lidar_scan.cpp +++ b/ouster_client/src/lidar_scan.cpp @@ -17,6 +17,7 @@ #include "ouster/impl/logging.h" #include "ouster/strings.h" #include "ouster/types.h" +#include "ouster/visibility.h" #ifndef M_PI #define M_PI 3.14159265358979323846 @@ -109,7 +110,7 @@ static const Table fusa_two_word_slots{{ {sensor::ChanField::FLAGS2, ChanFieldType::UINT8}, }}; -struct DefaultFieldsEntry { +struct OUSTER_API_CLASS DefaultFieldsEntry { const std::pair* fields; size_t n_fields; }; @@ -201,6 +202,14 @@ static FieldDescriptor get_field_type_descriptor(const LidarScan& scan, LidarScan::LidarScan(const sensor::sensor_info& info) : LidarScan{info.format.columns_per_frame, info.format.pixels_per_column, info.format.udp_profile_lidar, info.format.columns_per_packet} { + sensor_info = std::make_shared(info); +} + +LidarScan::LidarScan(std::shared_ptr info) + : LidarScan{info->format.columns_per_frame, info->format.pixels_per_column, + info->format.udp_profile_lidar, + info->format.columns_per_packet} { + sensor_info = info; } // specify sensor:: namespace for doxygen matching @@ -247,7 +256,8 @@ LidarScan::LidarScan(const LidarScan& ls_src, h(ls_src.h), columns_per_packet_(ls_src.columns_per_packet_), frame_status(ls_src.frame_status), - frame_id(ls_src.frame_id) { + frame_id(ls_src.frame_id), + sensor_info(ls_src.sensor_info) { for (const auto& ft : field_types) { const std::string& name = ft.name; FieldDescriptor dst_desc = get_field_type_descriptor(*this, ft); @@ -302,10 +312,20 @@ sensor::ThermalShutdownStatus LidarScan::thermal_shutdown() const { frame_status_shifts::FRAME_STATUS_THERMAL_SHUTDOWN_SHIFT); } -Field& LidarScan::field(const std::string& name) { return fields().at(name); } +Field& LidarScan::field(const std::string& name) { + try { + return fields().at(name); + } catch (std::out_of_range& e) { + throw std::out_of_range("Field '" + name + "' not found in LidarScan."); + } +} const Field& LidarScan::field(const std::string& name) const { - return fields().at(name); + try { + return fields().at(name); + } catch (std::out_of_range& e) { + throw std::out_of_range("Field '" + name + "' not found in LidarScan."); + } } bool LidarScan::has_field(const std::string& name) const { @@ -544,15 +564,19 @@ bool LidarScan::complete(sensor::ColumnWindow window) const { size_t LidarScan::packet_count() const { return packet_count_; } -bool operator==(const LidarScan& a, const LidarScan& b) { - return a.frame_id == b.frame_id && a.w == b.w && a.h == b.h && - a.frame_status == b.frame_status && - a.measurement_id_ == b.measurement_id_ && - a.timestamp_ == b.timestamp_ && - a.packet_timestamp_ == b.packet_timestamp_ && a.pose() == b.pose() && - a.fields() == b.fields(); +bool LidarScan::equals(const LidarScan& other) const { + return frame_id == other.frame_id && w == other.w && h == other.h && + frame_status == other.frame_status && + measurement_id_ == other.measurement_id_ && + timestamp_ == other.timestamp_ && + packet_timestamp_ == other.packet_timestamp_ && + pose() == other.pose() && fields() == other.fields(); } +bool operator==(const LidarScan& a, const LidarScan& b) { return a.equals(b); } + +bool operator!=(const LidarScan& a, const LidarScan& b) { return !(a == b); } + LidarScanFieldTypes LidarScan::field_types() const { LidarScanFieldTypes ft; for (const auto& kv : fields()) { @@ -771,8 +795,7 @@ ScanBatcher::ScanBatcher(size_t w, const sensor::packet_format& pf) h(pf.pixels_per_column), next_valid_m_id(0), next_headers_m_id(0), - cache(pf.lidar_packet_size), - cache_packet_ts(0), + cache(0), pf(pf) { if (pf.columns_per_packet == 0) throw std::invalid_argument("unexpected columns_per_packet: 0"); @@ -806,6 +829,7 @@ ScanBatcher::ScanBatcher(const sensor::sensor_info& info) expected_packets = end_packet - start_packet + 1; } + sensor_info = std::make_shared(info); } namespace { @@ -911,7 +935,7 @@ struct pack_raw_headers_col { } // namespace -void ScanBatcher::_parse_by_col(const uint8_t* packet_buf, LidarScan& ls) { +void ScanBatcher::parse_by_col(const uint8_t* packet_buf, LidarScan& ls) { const bool raw_headers = impl::raw_headers_enabled(pf, ls); for (int icol = 0; icol < pf.columns_per_packet; icol++) { const uint8_t* col_buf = pf.nth_col(icol, packet_buf); @@ -972,7 +996,7 @@ struct parse_field_block { } }; -void ScanBatcher::_parse_by_block(const uint8_t* packet_buf, LidarScan& ls) { +void ScanBatcher::parse_by_block(const uint8_t* packet_buf, LidarScan& ls) { // zero out missing columns if we jumped forward const uint16_t first_m_id = pf.col_measurement_id(pf.nth_col(0, packet_buf)); @@ -1013,26 +1037,8 @@ void ScanBatcher::_parse_by_block(const uint8_t* packet_buf, LidarScan& ls) { } } -bool ScanBatcher::operator()(const uint8_t* packet_buf, LidarScan& ls) { - return this->operator()(packet_buf, 0, ls); -} - bool ScanBatcher::operator()(const ouster::sensor::LidarPacket& packet, LidarScan& ls) { - return (*this)(packet.buf.data(), packet.host_timestamp, ls); -} - -void ScanBatcher::finalize_scan(LidarScan& ls, bool raw_headers) { - impl::foreach_channel_field(ls, pf, zero_field_cols{}, next_valid_m_id, w); - - if (raw_headers) { - impl::visit_field(ls, sensor::ChanField::RAW_HEADERS, zero_field_cols{}, - "", next_headers_m_id, w); - } -} - -bool ScanBatcher::operator()(const uint8_t* packet_buf, uint64_t packet_ts, - LidarScan& ls) { if (ls.w != w || ls.h != h) throw std::invalid_argument("unexpected scan dimensions"); if (static_cast(ls.packet_timestamp().rows()) != @@ -1040,12 +1046,10 @@ bool ScanBatcher::operator()(const uint8_t* packet_buf, uint64_t packet_ts, throw std::invalid_argument("unexpected scan columns_per_packet: " + std::to_string(pf.columns_per_packet)); - // process cached packet and packet ts - if (cached_packet) { - cached_packet = false; - this->operator()(cache.data(), cache_packet_ts, ls); - } + // process cached packet and packet ts, if present + batch_cached_packet(ls); + const uint8_t* packet_buf = packet.buf.data(); const int64_t f_id = pf.frame_id(packet_buf); const bool raw_headers = impl::raw_headers_enabled(pf, ls); @@ -1079,19 +1083,17 @@ bool ScanBatcher::operator()(const uint8_t* packet_buf, uint64_t packet_ts, // given scan. ls.shutdown_countdown = pf.countdown_thermal_shutdown(packet_buf); ls.shot_limiting_countdown = pf.countdown_shot_limiting(packet_buf); + ls.sensor_info = sensor_info; } else if (ls.frame_id == ((f_id + 1) % (static_cast(pf.max_frame_id) + 1))) { // drop reordered packets from the previous frame return false; } else if (ls.frame_id != f_id) { // got a packet from a new frame, release the old one - finished_scan_id = ls.frame_id; - finalize_scan(ls, raw_headers); + finalize_scan(ls); // store packet buf and ts data to the cache for later processing - std::memcpy(cache.data(), packet_buf, cache.size()); - cache_packet_ts = packet_ts; - cached_packet = true; + cache_packet(packet); return true; } @@ -1102,7 +1104,7 @@ bool ScanBatcher::operator()(const uint8_t* packet_buf, uint64_t packet_ts, const uint16_t packet_id = pf.col_measurement_id(col0_buf) / pf.columns_per_packet; if (packet_id < ls.packet_timestamp().rows()) { - ls.packet_timestamp()[packet_id] = packet_ts; + ls.packet_timestamp()[packet_id] = packet.host_timestamp; ls.alert_flags()[packet_id] = pf.alert_flags(packet_buf); } @@ -1121,22 +1123,63 @@ bool ScanBatcher::operator()(const uint8_t* packet_buf, uint64_t packet_ts, } if (pf.block_parsable() && happy_packet && !raw_headers) { - _parse_by_block(packet_buf, ls); + parse_by_block(packet_buf, ls); } else { - _parse_by_col(packet_buf, ls); + parse_by_col(packet_buf, ls); } // if we have enough packets and are packet-complete release the scan - if (batched_packets >= expected_packets && - (size_t)ls.packet_timestamp().count() == expected_packets) { - finished_scan_id = f_id; - finalize_scan(ls, raw_headers); + if (check_scan_complete(ls)) { + finalize_scan(ls); return true; } return false; } +void ScanBatcher::cache_packet(const sensor::LidarPacket& packet) { + cache = packet; + cached_packet = true; +} + +void ScanBatcher::batch_cached_packet(LidarScan& ls) { + if (cached_packet) { + cached_packet = false; + this->operator()(cache.as(), ls); + } +} + +bool ScanBatcher::check_scan_complete(const LidarScan& ls) const { + return batched_packets >= expected_packets && + static_cast(ls.packet_timestamp().count()) == + expected_packets; +} + +void ScanBatcher::finalize_scan(LidarScan& ls) { + impl::foreach_channel_field(ls, pf, zero_field_cols{}, next_valid_m_id, w); + + if (impl::raw_headers_enabled(pf, ls)) { + impl::visit_field(ls, sensor::ChanField::RAW_HEADERS, zero_field_cols{}, + "", next_headers_m_id, w); + } + + finished_scan_id = ls.frame_id; +} + +bool ScanBatcher::operator()(const uint8_t* packet_buf, LidarScan& ls) { + return this->operator()(packet_buf, 0, ls); +} + +bool ScanBatcher::operator()(const uint8_t* packet_buf, uint64_t packet_ts, + LidarScan& ls) { + // backwards compatibility method + // induces an extra copy but this is a deprecated method + sensor::LidarPacket packet(pf.lidar_packet_size); + packet.host_timestamp = packet_ts; + std::memcpy(packet.buf.data(), packet_buf, packet.buf.size()); + return this->operator()(packet, ls); +} + FieldType::FieldType() {} FieldType::FieldType(const std::string& name_, diff --git a/ouster_client/src/logging.cpp b/ouster_client/src/logging.cpp index 16ea6a87..179e3b35 100644 --- a/ouster_client/src/logging.cpp +++ b/ouster_client/src/logging.cpp @@ -1,45 +1,56 @@ #include "ouster/impl/logging.h" +#include #include #include #include #include #include +#include #include +#include using namespace ouster::sensor::impl; const std::string Logger::logger_name{"ouster::sensor"}; +struct Logger::internal_logger { + std::unique_ptr logger_; + + internal_logger(const std::string& logger_name) + : logger_(std::make_unique( + logger_name, std::make_shared())) { + } + + void configure_generic_sink(spdlog::sink_ptr sink, + const std::string& log_level) { + // replace the logger sink with the new sink + logger_->sinks() = {sink}; + + auto ll = spdlog::level::from_str(log_level); + + logger_->set_level(ll); + logger_->flush_on(ll); + } + + ~internal_logger() {} +}; + Logger& Logger::instance() { static Logger logger_singleton; return logger_singleton; } -spdlog::logger& Logger::get_logger() { return *logger_; } - Logger::Logger() - : logger_(std::make_unique( - logger_name, std::make_shared())) { - logger_->set_level(spdlog::level::info); - logger_->flush_on(spdlog::level::info); -} - -void Logger::configure_generic_sink(spdlog::sink_ptr sink, - const std::string& log_level) { - // replace the logger sink with the new sink - logger_->sinks() = {sink}; - - auto ll = spdlog::level::from_str(log_level); - - logger_->set_level(ll); - logger_->flush_on(ll); + : internal_logger_(std::make_unique(logger_name)) { + internal_logger_->logger_->set_level(spdlog::level::info); + internal_logger_->logger_->flush_on(spdlog::level::info); } bool Logger::configure_stdout_sink(const std::string& log_level) { try { - configure_generic_sink( + internal_logger_->configure_generic_sink( std::make_shared(), log_level); } catch (const spdlog::spdlog_ex& ex) { std::cerr << logger_name << " init_logger failed: " << ex.what() @@ -64,7 +75,7 @@ bool Logger::configure_file_sink(const std::string& log_level, file_sink = std::make_shared( log_file_path, true); } - configure_generic_sink(file_sink, log_level); + internal_logger_->configure_generic_sink(file_sink, log_level); } catch (const spdlog::spdlog_ex& ex) { std::cerr << logger_name << " init_logger failed: " << ex.what() << std::endl; @@ -74,8 +85,98 @@ bool Logger::configure_file_sink(const std::string& log_level, return true; } +std::shared_ptr Logger::make_builder( + const std::string& format_string) { + return std::make_shared(format_string); +} + +struct Logger::format_builder { + ~format_builder() = default; + format_builder(const std::string& format_string) + : format_string(format_string){}; + + const std::string& format_string; + fmt::dynamic_format_arg_store store; +}; + +Logger::~Logger() {} + +std::string Logger::finalize_format_builder( + std::shared_ptr builder) { + return fmt::vformat(builder->format_string, builder->store); +} + +void Logger::log(LOG_LEVEL level, const std::string& msg) { + spdlog::level::level_enum level_out = spdlog::level::debug; + + switch (level) { + case Logger::LOG_LEVEL::LOG_TRACE: + level_out = spdlog::level::trace; + break; + case Logger::LOG_LEVEL::LOG_DEBUG: + level_out = spdlog::level::debug; + break; + case Logger::LOG_LEVEL::LOG_INFO: + level_out = spdlog::level::info; + break; + case Logger::LOG_LEVEL::LOG_WARN: + level_out = spdlog::level::warn; + break; + case Logger::LOG_LEVEL::LOG_ERROR: + level_out = spdlog::level::err; + break; + case Logger::LOG_LEVEL::LOG_CRITICAL: + level_out = spdlog::level::critical; + break; + }; + + internal_logger_->logger_->log(level_out, msg); +} + +#define LOGGER_PROCESS_ARG(SINGLE_LOGGER_PROCESS_ARG_type) \ + template void Logger::process_arg( \ + std::shared_ptr builder, \ + SINGLE_LOGGER_PROCESS_ARG_type data); + +LOGGER_PROCESS_ARG(std::string); +LOGGER_PROCESS_ARG(std::string&); +LOGGER_PROCESS_ARG(const std::string&); + +LOGGER_PROCESS_ARG(char*); +LOGGER_PROCESS_ARG(const char*); + +LOGGER_PROCESS_ARG(int8_t); +LOGGER_PROCESS_ARG(int16_t); +LOGGER_PROCESS_ARG(int32_t); +LOGGER_PROCESS_ARG(int64_t); +#if defined(__EMSCRIPTEN__) || defined(__APPLE__) || defined(WIN32) +LOGGER_PROCESS_ARG(long); +#endif + +LOGGER_PROCESS_ARG(uint8_t); +LOGGER_PROCESS_ARG(uint16_t); +LOGGER_PROCESS_ARG(uint32_t); +LOGGER_PROCESS_ARG(uint64_t); +#if defined(__EMSCRIPTEN__) || defined(__APPLE__) || defined(WIN32) +LOGGER_PROCESS_ARG(unsigned long); +#endif + +LOGGER_PROCESS_ARG(float); +LOGGER_PROCESS_ARG(double); +LOGGER_PROCESS_ARG(long double); + +LOGGER_PROCESS_ARG(bool); + +template +void Logger::process_arg(std::shared_ptr builder, + T data) { + builder->store.push_back(data); +} + namespace ouster { namespace sensor { -spdlog::logger& logger() { return Logger::instance().get_logger(); } +ouster::sensor::impl::Logger& logger() { + return ouster::sensor::impl::Logger::instance(); +} } // namespace sensor } // namespace ouster diff --git a/ouster_client/src/metadata.cpp b/ouster_client/src/metadata.cpp index 322a3330..75203a6f 100644 --- a/ouster_client/src/metadata.cpp +++ b/ouster_client/src/metadata.cpp @@ -8,6 +8,7 @@ #include "ouster/metadata.h" +#include #include #include #include @@ -63,6 +64,9 @@ ValidatorIssues::ValidatorEntry::ValidatorEntry(const std::string& path, const std::string& msg) : path(path), msg(msg) {} +ValidatorIssues::ValidatorEntry::ValidatorEntry(const ValidatorEntry& other) + : path(other.path), msg(other.msg) {} + std::string ValidatorIssues::ValidatorEntry::to_string() const { std::stringstream errorMessage; errorMessage << path << ": "; @@ -74,58 +78,57 @@ std::string ValidatorIssues::ValidatorEntry::to_string() const { const std::string& ValidatorIssues::ValidatorEntry::get_path() const { return path; } + const std::string& ValidatorIssues::ValidatorEntry::get_msg() const { return msg; } +std::string to_string(const ValidatorIssues::EntryList& list) { + std::stringstream output_string; + for (auto it : list) { + output_string << it.to_string() << std::endl; + } + return output_string.str(); +} + +std::string ValidatorIssues::to_string() const { + std::stringstream output_string; + if (critical.size() > 0) { + output_string << "Critical Issues:" << std::endl; + output_string << ouster::to_string(critical); + } + if (warning.size() > 0) { + output_string << "Warning Issues:" << std::endl; + output_string << ouster::to_string(warning); + } + if (information.size() > 0) { + output_string << "Information Issues:" << std::endl; + output_string << ouster::to_string(information); + } + return output_string.str(); +} + class MetadataImpl { - public: + protected: /** * Internal class for parsing and validating metadata. * * @param[in] root The root of the json object to parse and validate. * @param[out] result The resulting metadata parsed and validated. */ - MetadataImpl(const jsoncons::json& root, - ouster::sensor::sensor_info& sensor_info, - ValidatorIssues& issues) + MetadataImpl(const jsoncons::json& root, ValidatorIssues& issues) : root(root), - sensor_info(sensor_info), issues(issues), have_prod_line(false), prod_line_string("$.sensor_info.prod_line"), have_lidar_mode(false), lidar_mode_string("$.config_params.lidar_mode"), have_pixels_per_column(false), - pixels_per_column_string("$.lidar_data_format.pixels_per_column") { - parse_and_validate_sensor_info(); - parse_and_validate_config_params(); - // parse_and_validate_sensor_info must be run before - // parse_and_validate_data_format - // due to requirements on prod_line - // parse_and_validate_config_params must be run before - // parse_and_validate_data_format - // due to requirements on lidar_mode - parse_and_validate_data_format(); - parse_and_validate_calibration_status(); - // parse_and_validate_sensor_info must be run before - // parse_and_validate_data_format - // due to requirements on prod_line - // parse_and_validate_config_params must be run before - // parse_and_validate_data_format due to requirements on lidar_mode - // parse_and_validate_data_format must be run before - // parse_and_validate_intrinsics due to requirements on - // pixels_per_column - parse_and_validate_intrinsics(); - parse_and_validate_misc(); - } + pixels_per_column_string("$.lidar_data_format.pixels_per_column") {} - protected: // Data const jsoncons::json& root; ///< The json root - - ouster::sensor::sensor_info& sensor_info; ///< The output sensor info - ValidatorIssues& issues; ///< The validation output + ValidatorIssues& issues; ///< The validation output /** * Variable to keep track of the status of the prodline. @@ -182,9 +185,10 @@ class MetadataImpl { const std::string& cause_item, const std::string explanation = "") { std::stringstream errorMessage; - errorMessage << "Item \"" << item_skipped << "\" Skipped" - << " Due to failures with \"" << cause_item << "\" " - << explanation; + errorMessage << "Validation step for path: \"" << item_skipped + << "\" skipped" + << " due to failures validating path: \"" << cause_item + << "\"." << explanation; auto entry = ValidatorIssues::ValidatorEntry(item_skipped, errorMessage.str()); @@ -225,7 +229,7 @@ class MetadataImpl { */ void default_message(const std::string& path) { auto entry = ValidatorIssues::ValidatorEntry( - path, "Item not found, using defaults"); + path, "Metadata entry not found (" + path + "), using defaults"); issues.information.push_back(entry); } @@ -257,7 +261,8 @@ class MetadataImpl { if (zeros == data.size()) { std::stringstream errorMessage; - errorMessage << "Expected at least some non-zero values in path"; + errorMessage + << "Expected at least some non-zero values in metadata array"; auto entry = ValidatorIssues::ValidatorEntry(path, errorMessage.str()); @@ -287,7 +292,7 @@ class MetadataImpl { } else { std::stringstream errorMessage; errorMessage << "String that was expected to contain data" - << " was empty."; + << " was empty"; auto entry = ValidatorIssues::ValidatorEntry(path, errorMessage.str()); @@ -376,6 +381,8 @@ class MetadataImpl { if (value.is() || (relaxed_number_verification && value.is_number() && std::is_arithmetic::value)) { + // Warning: ran into a really weird argument swapping issue here + // we think it was related to ABI issues. output = value.as(); bool temp_result = verification_callback(severity, path, value.as()); @@ -396,7 +403,7 @@ class MetadataImpl { } } else { std::stringstream errorMessage; - errorMessage << "Expected One Item In Query, " + errorMessage << "Expected One Item In Data, " << "Number Of Items: " << value_array.size() << " Values: \"" << value_array << "\""; auto entry = @@ -529,8 +536,8 @@ class MetadataImpl { bool result = (index == matches && matches > 0); if (verify_count > 0 && matches != verify_count) { std::stringstream errorMessage; - errorMessage << "Invalid array, got " << index << " items, " - << matches << " matching items," + errorMessage << "Invalid metadata array, got " << index + << " items, " << matches << " matching items," << " was expecting " << verify_count << " matching items"; severity.push_back( @@ -586,8 +593,8 @@ class MetadataImpl { bool result = (index == matches && matches > 0); if (verify_count > 0 && matches != verify_count) { std::stringstream errorMessage; - errorMessage << "Invalid array, got " << index << " items, " - << matches << " matching items," + errorMessage << "Invalid metadata array, got " << index + << " items, " << matches << " matching items," << " was expecting " << verify_count << " matching items"; severity.push_back( @@ -625,7 +632,7 @@ class MetadataImpl { output = f(data); } catch (std::exception& e) { std::stringstream errorMessage; - errorMessage << "Failed To Parse: " << data + errorMessage << "Failed To Parse Enum: " << data << " Error Message: \"" << e.what() << "\""; severity.push_back( ValidatorIssues::ValidatorEntry(path, errorMessage.str())); @@ -694,7 +701,7 @@ class MetadataImpl { verify_string_not_empty)) { std::istringstream date_data(data); std::tm t = {}; - date_data.imbue(std::locale("en_US.utf-8")); + date_data.imbue(std::locale("C")); date_data >> std::get_time(&t, date_format.c_str()); if (date_data.fail()) { std::stringstream errorMessage; @@ -744,7 +751,8 @@ class MetadataImpl { } // Sections - void parse_and_validate_sensor_info() { + void parse_and_validate_sensor_info( + ouster::sensor::sensor_info& sensor_info) { parse_and_validate_datetime(issues.information, "$.sensor_info.build_date", "%Y-%m-%dT%TZ", sensor_info.build_date); @@ -774,82 +782,106 @@ class MetadataImpl { parse_and_validate_item(issues.information, "$.sensor_info.prod_pn", sensor_info.prod_pn, verify_string_not_empty); + std::string sn_string; parse_and_validate_item(issues.information, "$.sensor_info.prod_sn", - sensor_info.sn, verify_string_not_empty); + sn_string, verify_string_not_empty); + char* end; + sensor_info.sn = std::strtoull(sn_string.c_str(), &end, 10); + const char* expected_end = sn_string.c_str() + sn_string.length(); + if (end != expected_end) { + std::stringstream errorMessage; + errorMessage << "prod_sn not a valid integer string: \""; + errorMessage << sn_string << "\""; + + auto entry = ValidatorIssues::ValidatorEntry( + "$.sensor_info.prod_sn", errorMessage.str()); + issues.information.push_back(entry); + } parse_and_validate_item(issues.information, "$.sensor_info.status", sensor_info.status, verify_string_not_empty); } - void parse_and_validate_config_params() { + void parse_and_validate_config_params( + ouster::sensor::sensor_config& config) { std::vector azimuth_window_data; if (parse_and_validate_item( issues.information, "$.config_params.azimuth_window.*", azimuth_window_data, 2, make_verify_in_bounds(0, 360000))) { - sensor_info.config.azimuth_window = {azimuth_window_data[0], - azimuth_window_data[1]}; + config.azimuth_window = {azimuth_window_data[0], + azimuth_window_data[1]}; } parse_and_validate_item(issues.information, "$.config_params.columns_per_packet", - sensor_info.config.columns_per_packet); + config.columns_per_packet); if (parse_and_validate_enum( - issues.information, lidar_mode_string, - sensor_info.config.lidar_mode, sensor::lidar_mode_of_string)) { + issues.information, lidar_mode_string, config.lidar_mode, + sensor::lidar_mode_of_string)) { have_lidar_mode = true; } parse_and_validate_enum( issues.information, "$.config_params.multipurpose_io_mode", - sensor_info.config.multipurpose_io_mode, + config.multipurpose_io_mode, ouster::sensor::multipurpose_io_mode_of_string); parse_and_validate_enum( issues.information, "$.config_params.nmea_baud_rate", - sensor_info.config.nmea_baud_rate, - ouster::sensor::nmea_baud_rate_of_string); + config.nmea_baud_rate, ouster::sensor::nmea_baud_rate_of_string); uint64_t nmea_ignore_valid_char; if (parse_and_validate_item(issues.information, "$.config_params.nmea_ignore_valid_char", nmea_ignore_valid_char)) { - sensor_info.config.nmea_ignore_valid_char = - (nmea_ignore_valid_char != 0); + config.nmea_ignore_valid_char = (nmea_ignore_valid_char != 0); } parse_and_validate_enum( issues.information, "$.config_params.nmea_in_polarity", - sensor_info.config.nmea_in_polarity, - ouster::sensor::polarity_of_string); + config.nmea_in_polarity, ouster::sensor::polarity_of_string); parse_and_validate_item(issues.information, "$.config_params.nmea_leap_seconds", - sensor_info.config.nmea_leap_seconds, true); + config.nmea_leap_seconds, true); const std::string operating_mode_string = "$.config_params.operating_mode"; if (!parse_and_validate_enum( issues.information, operating_mode_string, - sensor_info.config.operating_mode, + config.operating_mode, ouster::sensor::operating_mode_of_string)) { const std::string auto_start_flag_string = "$.config_params.auto_start_flag"; bool auto_start_flag; + int auto_start_int; + std::string auto_start_flag_deprecation = + "Please note that auto_start_flag has been deprecated in " + "favor " + "of operating_mode. Will set operating_mode " + "appropriately..."; if (parse_and_validate_item(issues.information, auto_start_flag_string, auto_start_flag)) { auto entry = ValidatorIssues::ValidatorEntry( - auto_start_flag_string, - "Please note that auto_start_flag has been deprecated in " - "favor " - "of operating_mode. Will set operating_mode " - "appropriately..."); + auto_start_flag_string, auto_start_flag_deprecation); issues.information.push_back(entry); - sensor_info.config.operating_mode = - auto_start_flag ? sensor::OPERATING_NORMAL - : sensor::OPERATING_STANDBY; + config.operating_mode = auto_start_flag + ? sensor::OPERATING_NORMAL + : sensor::OPERATING_STANDBY; + } else if (parse_and_validate_item(issues.information, + auto_start_flag_string, + auto_start_int, true)) { + auto entry = ValidatorIssues::ValidatorEntry( + auto_start_flag_string, auto_start_flag_deprecation); + issues.information.push_back(entry); + auto_start_flag = (auto_start_int != 0); + config.operating_mode = auto_start_flag + ? sensor::OPERATING_NORMAL + : sensor::OPERATING_STANDBY; + } else { default_message(operating_mode_string); } @@ -857,108 +889,100 @@ class MetadataImpl { parse_and_validate_item(issues.information, "$.config_params.phase_lock_enable", - sensor_info.config.phase_lock_enable); + config.phase_lock_enable); parse_and_validate_item(issues.information, "$.config_params.phase_lock_offset", - sensor_info.config.phase_lock_offset, true); + config.phase_lock_offset, true); const std::string signal_multiplier_string = "$.config_params.signal_multiplier"; - if (parse_and_validate_item( - issues.information, signal_multiplier_string, - sensor_info.config.signal_multiplier, true)) { + if (parse_and_validate_item(issues.information, + signal_multiplier_string, + config.signal_multiplier, true)) { try { ouster::sensor::check_signal_multiplier( - *sensor_info.config.signal_multiplier); + *config.signal_multiplier); } catch (std::runtime_error& e) { auto entry = ValidatorIssues::ValidatorEntry( signal_multiplier_string, e.what()); - issues.information.push_back(entry); + issues.critical.push_back(entry); } } parse_and_validate_enum( issues.information, "$.config_params.sync_pulse_in_polarity", - sensor_info.config.sync_pulse_in_polarity, - ouster::sensor::polarity_of_string); + config.sync_pulse_in_polarity, ouster::sensor::polarity_of_string); parse_and_validate_item(issues.information, "$.config_params.sync_pulse_out_angle", - sensor_info.config.sync_pulse_out_angle, + config.sync_pulse_out_angle, make_verify_in_bounds(0, 360), true); - parse_and_validate_item( - issues.information, "$.config_params.sync_pulse_out_frequency", - sensor_info.config.sync_pulse_out_frequency, true); + parse_and_validate_item(issues.information, + "$.config_params.sync_pulse_out_frequency", + config.sync_pulse_out_frequency, true); parse_and_validate_enum( issues.information, "$.config_params.sync_pulse_out_polarity", - sensor_info.config.sync_pulse_out_polarity, - ouster::sensor::polarity_of_string); + config.sync_pulse_out_polarity, ouster::sensor::polarity_of_string); - parse_and_validate_item( - issues.information, "$.config_params.sync_pulse_out_pulse_width", - sensor_info.config.sync_pulse_out_pulse_width, true); + parse_and_validate_item(issues.information, + "$.config_params.sync_pulse_out_pulse_width", + config.sync_pulse_out_pulse_width, true); parse_and_validate_enum( issues.information, "$.config_params.timestamp_mode", - sensor_info.config.timestamp_mode, - ouster::sensor::timestamp_mode_of_string); + config.timestamp_mode, ouster::sensor::timestamp_mode_of_string); if (!parse_and_validate_item( - issues.information, "$.config_params.udp_dest", - sensor_info.config.udp_dest, verify_string_not_empty)) { - parse_and_validate_item( - issues.information, "$.config_params.udp_ip", - sensor_info.config.udp_dest, verify_string_not_empty); + issues.information, "$.config_params.udp_dest", config.udp_dest, + verify_string_not_empty)) { + parse_and_validate_item(issues.information, + "$.config_params.udp_ip", config.udp_dest, + verify_string_not_empty); } - parse_and_validate_item(issues.information, - "$.config_params.udp_port_imu", - sensor_info.config.udp_port_imu, - make_verify_in_bounds(0, 65535)); + parse_and_validate_item( + issues.information, "$.config_params.udp_port_imu", + config.udp_port_imu, make_verify_in_bounds(0, 65535)); - parse_and_validate_item(issues.information, - "$.config_params.udp_port_lidar", - sensor_info.config.udp_port_lidar, - make_verify_in_bounds(0, 65535)); + parse_and_validate_item( + issues.information, "$.config_params.udp_port_lidar", + config.udp_port_lidar, make_verify_in_bounds(0, 65535)); parse_and_validate_enum( issues.information, "$.config_params.udp_profile_imu", - sensor_info.config.udp_profile_imu, - ouster::sensor::udp_profile_imu_of_string); + config.udp_profile_imu, ouster::sensor::udp_profile_imu_of_string); parse_and_validate_enum( issues.information, "$.config_params.udp_profile_lidar", - sensor_info.config.udp_profile_lidar, + config.udp_profile_lidar, ouster::sensor::udp_profile_lidar_of_string); parse_and_validate_enum( - issues.information, "$.config_params.gyro_fsr", - sensor_info.config.gyro_fsr, + issues.information, "$.config_params.gyro_fsr", config.gyro_fsr, ouster::sensor::full_scale_range_of_string); parse_and_validate_enum( - issues.information, "$.config_params.accel_fsr", - sensor_info.config.accel_fsr, + issues.information, "$.config_params.accel_fsr", config.accel_fsr, ouster::sensor::full_scale_range_of_string); parse_and_validate_enum( issues.information, "$.config_params.return_order", - sensor_info.config.return_order, - ouster::sensor::return_order_of_string); + config.return_order, ouster::sensor::return_order_of_string); parse_and_validate_item(issues.information, "$.config_params.min_range_threshold_cm", - sensor_info.config.min_range_threshold_cm); + config.min_range_threshold_cm); } // parse_and_validate_sensor_info must be run before // parse_and_validate_data_format due to requirements on prod_line // parse_and_validate_config_params must be run before // parse_and_validate_data_format due to requirements on lidar_mode - void parse_and_validate_data_format() { + void parse_and_validate_data_format( + ouster::sensor::sensor_info& sensor_info) { if (have_lidar_mode) { // lidar mode is present, create default data format sensor_info.format = ouster::sensor::default_data_format( @@ -992,9 +1016,10 @@ class MetadataImpl { } else { // lidar mode not present but columns_per_frame available, // nothing to match - skipped_due_to_item(issues.information, - columns_per_frame_string, - lidar_mode_string); + skipped_due_to_item( + issues.information, columns_per_frame_string, + lidar_mode_string, + "Lidar mode not found, can't verify columns per frame"); } } else { // need either lidar mode or columns_per_frame @@ -1013,7 +1038,8 @@ class MetadataImpl { if (!columns_per_frame_success) { skipped_due_to_item(issues.information, column_window_string, columns_per_frame_string, - "Couldnt verify bounds on column window data"); + "Columns per frame not found, can't verify " + "numeric bounds on column window"); } auto column_window_callback = [&](ValidatorIssues::EntryList& severity, const std::string& path, @@ -1087,7 +1113,9 @@ class MetadataImpl { } else { skipped_due_to_item(issues.information, pixel_shift_string + ".length()", - prod_line_string); + prod_line_string, + "Product line not found, can't verify size of " + "pixel shift array"); } parse_and_validate_item(issues.information, pixel_shift_string, sensor_info.format.pixel_shift_by_row, @@ -1118,13 +1146,15 @@ class MetadataImpl { frequency_of_lidar_mode(*sensor_info.config.lidar_mode); default_message(fps_string); } else { - skipped_due_to_item(issues.information, fps_string, - lidar_mode_string); + skipped_due_to_item( + issues.information, fps_string, lidar_mode_string, + "Lidar mode not found, can't verify FPS value"); } } } - void parse_and_validate_calibration_status() { + void parse_and_validate_calibration_status( + ouster::sensor::sensor_info& sensor_info) { parse_and_validate_datetime( issues.information, "$.calibration_status.reflectivity.timestamp", "%Y-%m-%dT%T", sensor_info.cal.reflectivity_timestamp); @@ -1195,7 +1225,7 @@ class MetadataImpl { } if (count != height) { auto entry = ValidatorIssues::ValidatorEntry( - path, "Each sub-array must have " + + path, "Each beam angle sub-array must have " + std::to_string(height) + " elements."); issues.critical.push_back(entry); return; @@ -1217,7 +1247,7 @@ class MetadataImpl { if (is_doubles || is_arrays) { if (angles.size() != width) { auto entry = ValidatorIssues::ValidatorEntry( - path, "Must have " + std::to_string(width) + + path, "Must have beam angle " + std::to_string(width) + " elements. Had " + std::to_string(angles.size()) + " elements."); issues.critical.push_back(entry); @@ -1226,7 +1256,7 @@ class MetadataImpl { } else { // zero size auto entry = ValidatorIssues::ValidatorEntry( - path, "Cannot be empty array."); + path, "Cannot be empty beam angle array."); issues.critical.push_back(entry); return; } @@ -1235,7 +1265,8 @@ class MetadataImpl { verify_all_not_zero(issues.warning, path, output); } else { // error - auto entry = ValidatorIssues::ValidatorEntry(path, "Missing."); + auto entry = + ValidatorIssues::ValidatorEntry(path, "Missing beam angle."); issues.warning.push_back(entry); } } @@ -1246,7 +1277,8 @@ class MetadataImpl { // parse_and_validate_data_format due to requirements on lidar_mode // parse_and_validate_data_format must be run before // parse_and_validate_intrinsics due to requirements on pixels_per_column - void parse_and_validate_intrinsics() { + void parse_and_validate_intrinsics( + ouster::sensor::sensor_info& sensor_info) { std::vector imu_intrinsics_data; const std::string imu_intrinsics_string = "$.imu_intrinsics.imu_to_sensor_transform.*"; @@ -1313,7 +1345,7 @@ class MetadataImpl { } } - void parse_and_validate_misc() { + void parse_and_validate_misc(ouster::sensor::sensor_info& sensor_info) { std::vector extrinsic_data; const std::string extrinsic_string = "$.'ouster-sdk'.extrinsic.*"; if (parse_and_validate_item(issues.information, @@ -1330,6 +1362,44 @@ class MetadataImpl { } }; +class SensorInfoImpl : public MetadataImpl { + public: + SensorInfoImpl(const jsoncons::json& root, + ouster::sensor::sensor_info& sensor_info, + ValidatorIssues& issues) + : MetadataImpl(root, issues) { + parse_and_validate_sensor_info(sensor_info); + parse_and_validate_config_params(sensor_info.config); + // parse_and_validate_sensor_info must be run before + // parse_and_validate_data_format + // due to requirements on prod_line + // parse_and_validate_config_params must be run before + // parse_and_validate_data_format + // due to requirements on lidar_mode + parse_and_validate_data_format(sensor_info); + parse_and_validate_calibration_status(sensor_info); + // parse_and_validate_sensor_info must be run before + // parse_and_validate_data_format + // due to requirements on prod_line + // parse_and_validate_config_params must be run before + // parse_and_validate_data_format due to requirements on lidar_mode + // parse_and_validate_data_format must be run before + // parse_and_validate_intrinsics due to requirements on + // pixels_per_column + parse_and_validate_intrinsics(sensor_info); + parse_and_validate_misc(sensor_info); + } +}; + +class ConfigImpl : public MetadataImpl { + public: + ConfigImpl(const jsoncons::json& root, + ouster::sensor::sensor_config& config, ValidatorIssues& issues) + : MetadataImpl(root, issues) { + parse_and_validate_config_params(config); + } +}; + const std::map nonlegacy_metadata_fields = { {"sensor_info", true}, {"beam_intrinsics", true}, {"imu_intrinsics", true}, {"lidar_intrinsics", true}, @@ -1355,8 +1425,9 @@ bool is_new_format(const jsoncons::json& root) { return nonlegacy_fields_present == nonlegacy_metadata_fields.size(); } -jsoncons::json convert_legacy_to_nonlegacy(jsoncons::json& root) { +jsoncons::json convert_legacy_to_nonlegacy(const jsoncons::json& root) { jsoncons::json result; + std::vector skip; // just convert to non-legacy and run the non-legacy parse const std::vector config_fields{ @@ -1377,57 +1448,58 @@ jsoncons::json convert_legacy_to_nonlegacy(jsoncons::json& root) { if (root.contains("lidar_to_sensor_transform")) { result["lidar_intrinsics"]["lidar_to_sensor_transform"] = root.at("lidar_to_sensor_transform"); - root.erase("lidar_to_sensor_transform"); + skip.push_back("lidar_to_sensor_transform"); } if (root.contains("imu_to_sensor_transform")) { result["imu_intrinsics"]["imu_to_sensor_transform"] = root.at("imu_to_sensor_transform"); - root.erase("imu_to_sensor_transform"); + skip.push_back("imu_to_sensor_transform"); } + if (root.contains("data_format")) { result["lidar_data_format"] = root.at("data_format"); - root.erase("data_format"); + skip.push_back("data_format"); } if (root.contains("client_version")) { result["ouster-sdk"]["client_version"] = root.at("client_version"); - root.erase("client_version"); + skip.push_back("client_version"); } for (const auto& field : config_fields) { if (root.contains(field)) { result["config_params"][field] = root.at(field); - root.erase(field); + skip.push_back(field); } } for (const auto& field : beam_intrinsics_fields) { if (root.contains(field)) { result["beam_intrinsics"][field] = root.at(field); - root.erase(field); + skip.push_back(field); } } for (const auto& field : sensor_info_fields) { if (root.contains(field)) { result["sensor_info"][field] = root.at(field); - root.erase(field); + skip.push_back(field); } } for (const auto& it : root.object_range()) { - result[it.key()] = it.value(); + if (std::find(skip.begin(), skip.end(), it.key()) == skip.end()) { + result[it.key()] = it.value(); + } } return result; } -bool parse_and_validate_metadata(const std::string& json_data, +bool parse_and_validate_metadata(const jsoncons::json& root, ouster::sensor::sensor_info& sensor_info, ValidatorIssues& issues) { - auto root = jsoncons::json::parse(json_data); - size_t nonlegacy_fields_present = 0; std::vector missing_fields; for (const auto& field_pair : nonlegacy_metadata_fields) { @@ -1442,9 +1514,12 @@ bool parse_and_validate_metadata(const std::string& json_data, } if (nonlegacy_fields_present != nonlegacy_metadata_fields.size()) { - root = convert_legacy_to_nonlegacy(root); + SensorInfoImpl impl(convert_legacy_to_nonlegacy(root), sensor_info, + issues); + } else { + SensorInfoImpl impl(root, sensor_info, issues); } - MetadataImpl impl(root, sensor_info, issues); + if (nonlegacy_fields_present > 0 && nonlegacy_fields_present < nonlegacy_metadata_fields.size()) { for (auto it : missing_fields) { @@ -1473,6 +1548,13 @@ bool parse_and_validate_metadata(const std::string& json_data, return issues.critical.size() == 0; } +bool parse_and_validate_metadata(const std::string& json_data, + ouster::sensor::sensor_info& sensor_info, + ValidatorIssues& issues) { + jsoncons::json data = jsoncons::json::parse(json_data); + return parse_and_validate_metadata(data, sensor_info, issues); +} + bool parse_and_validate_metadata(const std::string& json_data, ValidatorIssues& issues) { nonstd::optional sensor_info; @@ -1495,4 +1577,31 @@ bool parse_and_validate_metadata( return result; } + +bool parse_and_validate_config(const std::string& json_data, + ouster::sensor::sensor_config& config_out, + ValidatorIssues& issues) { + jsoncons::json root; + root["config_params"] = jsoncons::json::parse(json_data); + + ConfigImpl impl(root, config_out, issues); + + return issues.critical.size() == 0; +} + +bool parse_and_validate_config(const std::string& json_data, + ouster::sensor::sensor_config& sensor_config) { + ValidatorIssues issues; + return parse_and_validate_config(json_data, sensor_config, issues); +} + +namespace sensor { +sensor_config parse_config(const std::string& config) { + ouster::sensor::sensor_config sensor_config; + parse_and_validate_config(config, sensor_config); + + return sensor_config; +} +} // namespace sensor + }; // namespace ouster diff --git a/ouster_client/src/packet.cpp b/ouster_client/src/packet.cpp new file mode 100644 index 00000000..c41fdef8 --- /dev/null +++ b/ouster_client/src/packet.cpp @@ -0,0 +1,84 @@ +#include "ouster/packet.h" + +namespace ouster { +namespace sensor { +Packet::Packet(PacketType type) : type_(type), host_timestamp{0} {} + +Packet::Packet(PacketType type, int size) : type_(type), host_timestamp{0} { + // this is necessary due to how client works - it may read size() + 1 + // bytes into the packet in case of rogue packet coming through + buf.reserve(size + 1); + buf.resize(size, 0); +} + +PacketValidationFailure validate_packet( + const sensor_info& info, const ouster::sensor::packet_format& format, + const uint8_t* buf, uint64_t buf_size, PacketType type) { + // Check if we need to guess the type + if (type == PacketType::Unknown) { + if (buf_size == format.imu_packet_size) { + type = PacketType::Imu; + } else { + type = PacketType::Lidar; + } + } + + if (type == PacketType::Lidar) { + if (buf_size != format.lidar_packet_size) { + return PacketValidationFailure::PACKET_SIZE; + } + + auto init_id = format.init_id(buf); + if (info.init_id != 0 && init_id != 0 && init_id != info.init_id) { + return PacketValidationFailure::ID; + } + + if (info.sn != 0) { + uint64_t p_sn = format.prod_sn(buf); + if ((p_sn != 0) && (p_sn != info.sn)) { + return PacketValidationFailure::ID; + } + } + return PacketValidationFailure::NONE; + } else if (type == PacketType::Imu) { + if (buf_size != format.imu_packet_size) { + return PacketValidationFailure::PACKET_SIZE; + } + return PacketValidationFailure::NONE; + } + return PacketValidationFailure::NONE; +}; + +LidarPacket::LidarPacket() : Packet{MyType} {} + +LidarPacket::LidarPacket(int size) : Packet{MyType, size} {} + +PacketValidationFailure LidarPacket::validate( + const sensor_info& info, + const ouster::sensor::packet_format& format) const { + return validate_packet(info, format, buf.data(), buf.size(), + PacketType::Lidar); +} + +PacketValidationFailure LidarPacket::validate(const sensor_info& info) const { + return validate_packet(info, *format, buf.data(), buf.size(), + PacketType::Lidar); +} + +ImuPacket::ImuPacket() : Packet{MyType} {} + +ImuPacket::ImuPacket(int size) : Packet{MyType, size} {} + +PacketValidationFailure ImuPacket::validate( + const sensor_info& info, + const ouster::sensor::packet_format& format) const { + return validate_packet(info, format, buf.data(), buf.size(), + PacketType::Imu); +} + +PacketValidationFailure ImuPacket::validate(const sensor_info& info) const { + return validate_packet(info, *format, buf.data(), buf.size(), + PacketType::Imu); +} +} // namespace sensor +} // namespace ouster diff --git a/ouster_client/src/parsing.cpp b/ouster_client/src/parsing.cpp index cd28c37a..1ea9e37d 100644 --- a/ouster_client/src/parsing.cpp +++ b/ouster_client/src/parsing.cpp @@ -153,6 +153,7 @@ static int count_set_bits(uint64_t value) { return count; }; +OUSTER_API_FUNCTION uint64_t get_value_mask(const FieldInfo& f) { uint64_t type_mask = sensor::field_type_mask(f.ty_tag); @@ -166,6 +167,7 @@ uint64_t get_value_mask(const FieldInfo& f) { return mask; } +OUSTER_API_FUNCTION int get_bitness(const FieldInfo& f) { return count_set_bits(get_value_mask(f)); } @@ -251,20 +253,26 @@ static const Table fusa_two_word_pixel_info{{ {ChanField::RAW32_WORD2, field_info(32, 32)}, }}; -Table profiles{{ - {UDPProfileLidar::PROFILE_LIDAR_LEGACY, - {legacy_field_info.data(), legacy_field_info.size(), 12}}, - {UDPProfileLidar::PROFILE_RNG19_RFL8_SIG16_NIR16_DUAL, - {dual_field_info.data(), dual_field_info.size(), 16}}, - {UDPProfileLidar::PROFILE_RNG19_RFL8_SIG16_NIR16, - {single_field_info.data(), single_field_info.size(), 12}}, - {UDPProfileLidar::PROFILE_RNG15_RFL8_NIR8, - {lb_field_info.data(), lb_field_info.size(), 4}}, - {UDPProfileLidar::PROFILE_FIVE_WORD_PIXEL, - {five_word_pixel_info.data(), five_word_pixel_info.size(), 20}}, - {UDPProfileLidar::PROFILE_FUSA_RNG15_RFL8_NIR8_DUAL, - {fusa_two_word_pixel_info.data(), fusa_two_word_pixel_info.size(), 8}}, -}}; +Table OUSTER_API_FUNCTION + profiles{{ + {UDPProfileLidar::PROFILE_LIDAR_LEGACY, + {legacy_field_info.data(), legacy_field_info.size(), 12}}, + {UDPProfileLidar::PROFILE_RNG19_RFL8_SIG16_NIR16_DUAL, + {dual_field_info.data(), dual_field_info.size(), 16}}, + {UDPProfileLidar::PROFILE_RNG19_RFL8_SIG16_NIR16, + {single_field_info.data(), single_field_info.size(), 12}}, + {UDPProfileLidar::PROFILE_RNG15_RFL8_NIR8, + {lb_field_info.data(), lb_field_info.size(), 4}}, + {UDPProfileLidar::PROFILE_FIVE_WORD_PIXEL, + {five_word_pixel_info.data(), five_word_pixel_info.size(), 20}}, + {UDPProfileLidar::PROFILE_FUSA_RNG15_RFL8_NIR8_DUAL, + {fusa_two_word_pixel_info.data(), fusa_two_word_pixel_info.size(), 8}}, + }}; + +OUSTER_API_FUNCTION Table +get_profiles() { + return profiles; +} static const ProfileEntry& lookup_profile_entry(UDPProfileLidar profile) { auto end = profiles.end(); @@ -819,6 +827,7 @@ int packet_format::field_bitness(const std::string& i) const { /* packet_writer implementation */ namespace impl { +packet_writer::packet_writer(const packet_format& pf) : packet_format(pf) {} uint8_t* packet_writer::nth_col(int n, uint8_t* lidar_buf) const { return const_cast(packet_format::nth_col(n, lidar_buf)); @@ -853,9 +862,9 @@ void packet_writer::set_init_id(uint8_t* lidar_buf, uint32_t init_id) const { impl_->init_id_info.set(lidar_buf, init_id); } -void packet_writer::set_packet_type(uint8_t* lidar_buf, +void packet_writer::set_packet_type(uint8_t* packet_buf, uint16_t packet_type) const { - impl_->packet_type_info.set(lidar_buf, packet_type); + impl_->packet_type_info.set(packet_buf, packet_type); } void packet_writer::set_prod_sn(uint8_t* lidar_buf, uint64_t sn) const { diff --git a/ouster_client/src/sensor_client.cpp b/ouster_client/src/sensor_client.cpp index 2991586f..99dcf193 100644 --- a/ouster_client/src/sensor_client.cpp +++ b/ouster_client/src/sensor_client.cpp @@ -5,19 +5,26 @@ #include "ouster/sensor_client.h" +#include + #include "ouster/defaults.h" #include "ouster/impl/logging.h" +#include "ouster/metadata.h" using ouster::sensor::impl::Logger; using ouster::sensor::util::SensorHttp; namespace ouster { +bool parse_and_validate_metadata(const jsoncons::json& json_data, + ouster::sensor::sensor_info& sensor_info, + ValidatorIssues& issues); namespace sensor { // External imports of internal methods SOCKET udp_data_socket(int port); int32_t get_sock_port(SOCKET sock_fd); -Json::Value collect_metadata(SensorHttp& sensor_http, int timeout_sec); +jsoncons::json collect_metadata(SensorHttp& sensor_http, int timeout_sec); + SOCKET mtp_data_socket(int port, const std::vector& udp_dest_hosts, const std::string& mtp_dest_host = ""); bool set_config(SensorHttp& sensor_http, const sensor_config& config, @@ -47,8 +54,16 @@ Sensor::Sensor(const std::string& hostname, const sensor_config& config) : hostname_(hostname), config_(config) {} sensor_info Sensor::fetch_metadata(int timeout) const { - Json::FastWriter writer; - return sensor_info(writer.write(collect_metadata(*http_client(), timeout))); + auto data = collect_metadata(*http_client(), timeout); + + sensor_info result; + ValidatorIssues issues; + ouster::parse_and_validate_metadata(data, result, issues); + if (issues.critical.size() > 0) { + throw std::runtime_error(to_string(issues.critical)); + } + + return result; } std::shared_ptr Sensor::http_client() const { @@ -226,7 +241,7 @@ SensorClient::SensorClient(const std::vector& sensors, for (const auto& info : sensor_info_) { ports[info.config.udp_port_lidar.value()] = true; ports[info.config.udp_port_imu.value()] = true; - formats_.push_back(packet_format(info)); + formats_.push_back(std::make_shared(info)); } // now open sockets @@ -262,8 +277,8 @@ void SensorClient::start_buffer_thread(double buffer_time) { const uint64_t buffer_ns = buffer_time * 1000000000.0; while (do_buffer_) { uint64_t ts; - ClientEvent ev = get_packet_internal(data, ts, 0.01); - if (ev.type == ClientEvent::PollTimeout) { + InternalEvent ev = get_packet_internal(data, ts, 0.01); + if (ev.event_type == ClientEvent::PollTimeout) { continue; } // Enqueue received packets @@ -273,6 +288,8 @@ void SensorClient::start_buffer_thread(double buffer_time) { be.event = ev; be.timestamp = ts; std::swap(be.data, data); + be.data.shrink_to_fit(); // can save a lot of memory, though + // does force a copy buffer_.push_back(std::move(be)); // Discard old buffered packets if our consumer couldn't keep up @@ -317,16 +334,16 @@ size_t SensorClient::buffer_size() { return 0; } -ClientEvent SensorClient::get_packet_internal(std::vector& data, - uint64_t& ts, - double timeout_sec) { +SensorClient::InternalEvent SensorClient::get_packet_internal( + std::vector& data, uint64_t& ts, double timeout_sec) { if (sockets_.size() == 0) { auto now = std::chrono::system_clock::now(); auto now_ts = std::chrono::duration_cast( now.time_since_epoch()) .count(); ts = now_ts; - return {-1, ClientEvent::Exit}; // someone called us while shut down + return {-1, PacketType::Unknown, + ClientEvent::Exit}; // someone called us while shut down } // setup poll SOCKET max_fd = 0; @@ -349,19 +366,18 @@ ClientEvent SensorClient::get_packet_internal(std::vector& data, now.time_since_epoch()) .count(); if (ret == 0) { - return {-1, ClientEvent::PollTimeout}; + return {-1, PacketType::Unknown, ClientEvent::PollTimeout}; } else if (ret < 0) { - return {-1, ClientEvent::Error}; + return {-1, PacketType::Unknown, ClientEvent::Error}; } struct sockaddr_storage from_addr; socklen_t addr_len = sizeof(from_addr); - char buffer[65535]; // this isnt great, but otherwise have to reserve this - // much in every packet + data.resize(65535); // need enough room for maximum possible packet size for (auto sock : sockets_) { if (!FD_ISSET(sock, &fds)) continue; - auto size = recvfrom(sock, buffer, 65535, 0, + auto size = recvfrom(sock, (char*)data.data(), 65535, 0, (struct sockaddr*)&from_addr, &addr_len); if (size <= 0) continue; // this is unexpected @@ -387,33 +403,30 @@ ClientEvent SensorClient::get_packet_internal(std::vector& data, } if (source == -1) { // if we got a random packet, just say we got nothing - return {-1, ClientEvent::PollTimeout}; + return {-1, PacketType::Unknown, ClientEvent::PollTimeout}; } // detect packet type by size - const int imu_size = formats_[source].imu_packet_size; + const int imu_size = formats_[source]->imu_packet_size; if (size > imu_size) { data.resize(size); - memcpy(data.data(), buffer, size); - return {(int)source, ClientEvent::LidarPacket}; + return {source, PacketType::Lidar, ClientEvent::Packet}; } else if (size == imu_size) { data.resize(size); - memcpy(data.data(), buffer, size); - return {(int)source, ClientEvent::ImuPacket}; + return {source, PacketType::Imu, ClientEvent::Packet}; } else { // The sensor returned an invalid packet size, say we got nothing - return {-1, ClientEvent::PollTimeout}; + return {-1, PacketType::Unknown, ClientEvent::PollTimeout}; } } - return {-1, ClientEvent::Error}; // this shouldnt happen + return {-1, PacketType::Unknown, + ClientEvent::Error}; // this shouldnt happen } -ClientEvent SensorClient::get_packet(LidarPacket& lp, ImuPacket& ip, - double timeout_sec) { +ClientEvent SensorClient::get_packet(double timeout_sec) { // poll on all our sockets - ClientEvent ev; + InternalEvent ev; uint64_t ts; - std::vector data; if (do_buffer_) { std::unique_lock lock(buffer_mutex_); // if the buffer if empty, wait for a new event @@ -423,28 +436,38 @@ ClientEvent SensorClient::get_packet(LidarPacket& lp, ImuPacket& ip, // check for timeout or for spurious wakeup of "wait_for" // by checking whether the buffer is empty if (res == std::cv_status::timeout || buffer_.empty()) { - return {-1, ClientEvent::PollTimeout}; + return ClientEvent(0, -1, ClientEvent::PollTimeout); } } // dequeue auto& buf = buffer_.front(); ev = buf.event; ts = buf.timestamp; - std::swap(data, buf.data); + std::swap(staging_buffer, buf.data); buffer_.pop_front(); lock.unlock(); // unlock asap } else { - ev = get_packet_internal(data, ts, timeout_sec); + ev = get_packet_internal(staging_buffer, ts, timeout_sec); } - if (ev.type == ClientEvent::LidarPacket) { - lp.host_timestamp = ts; - std::swap(data, lp.buf); - } else if (ev.type == ClientEvent::ImuPacket) { - ip.host_timestamp = ts; - std::swap(data, ip.buf); + ClientEvent rev; + rev.source = ev.source; + rev.type = ev.event_type; + if (ev.event_type == ClientEvent::Packet) { + if (ev.packet_type == PacketType::Imu) { + rev.packet_ = &imu_packet_; + } else if (ev.packet_type == PacketType::Lidar) { + rev.packet_ = &lidar_packet_; + } else { + throw; // Should never happen, but who knows + } + rev.packet_->host_timestamp = ts; + rev.packet_->format = formats_[ev.source]; + std::swap(rev.packet_->buf, staging_buffer); + } else { + rev.packet_ = 0; } - return ev; // todo finish + return rev; } uint64_t SensorClient::dropped_packets() { @@ -452,5 +475,7 @@ uint64_t SensorClient::dropped_packets() { return dropped_packets_; } +ClientEvent::ClientEvent() {} + } // namespace sensor } // namespace ouster diff --git a/ouster_client/src/sensor_http.cpp b/ouster_client/src/sensor_http.cpp index 8d8358f2..e32fa67e 100644 --- a/ouster_client/src/sensor_http.cpp +++ b/ouster_client/src/sensor_http.cpp @@ -1,41 +1,33 @@ #include "ouster/sensor_http.h" +#include #include #include "curl_client.h" #include "sensor_http_imp.h" #include "sensor_tcp_imp.h" -using std::string; - using namespace ouster::util; using namespace ouster::sensor; using namespace ouster::sensor::util; using namespace ouster::sensor::impl; -string SensorHttp::firmware_version_string(const string& hostname, - int timeout_sec) { +std::string SensorHttp::firmware_version_string(const std::string& hostname, + int timeout_sec) { auto http_client = std::make_unique(hostname); auto fwjson = http_client->get("api/v1/system/firmware", timeout_sec); - Json::Value root{}; - Json::CharReaderBuilder builder{}; - std::string errors{}; - std::stringstream ss{fwjson}; - - if (!Json::parseFromStream(builder, ss, &root, &errors)) - throw std::runtime_error{ - "Errors parsing firmware for firmware_version_string: " + errors}; - - return root["fw"].asString(); + // This will exception out on bad parse + return jsoncons::json::parse(fwjson)["fw"].as(); } -version SensorHttp::firmware_version(const string& hostname, int timeout_sec) { +version SensorHttp::firmware_version(const std::string& hostname, + int timeout_sec) { auto result = firmware_version_string(hostname, timeout_sec); return ouster::util::version_from_string(result); } -std::unique_ptr SensorHttp::create(const string& hostname, +std::unique_ptr SensorHttp::create(const std::string& hostname, int timeout_sec) { auto fw = firmware_version(hostname, timeout_sec); diff --git a/ouster_client/src/sensor_http_imp.cpp b/ouster_client/src/sensor_http_imp.cpp index 36f4ce13..ba3bdb0e 100644 --- a/ouster_client/src/sensor_http_imp.cpp +++ b/ouster_client/src/sensor_http_imp.cpp @@ -1,31 +1,38 @@ #include "sensor_http_imp.h" +#include +#include + #include "curl_client.h" +#include "ouster/types.h" using ouster::sensor::util::UserDataAndPolicy; -using std::string; + using namespace ouster::sensor::impl; -SensorHttpImp::SensorHttpImp(const string& hostname) +SensorHttpImp::SensorHttpImp(const std::string& hostname) : http_client(std::make_unique(hostname)) {} SensorHttpImp::~SensorHttpImp() = default; -Json::Value SensorHttpImp::metadata(int timeout_sec) const { - return get_json("api/v1/sensor/metadata", timeout_sec); +std::string SensorHttpImp::metadata(int timeout_sec) const { + return get("api/v1/sensor/metadata", timeout_sec); } -Json::Value SensorHttpImp::sensor_info(int timeout_sec) const { - return get_json("api/v1/sensor/metadata/sensor_info", timeout_sec); +std::string SensorHttpImp::sensor_info(int timeout_sec) const { + return get("api/v1/sensor/metadata/sensor_info", timeout_sec); } -string SensorHttpImp::get_config_params(bool active, int timeout_sec) const { +std::string SensorHttpImp::get_config_params(bool active, + int timeout_sec) const { auto config_type = active ? "active" : "staged"; - return get(string("api/v1/sensor/cmd/get_config_param?args=") + config_type, - timeout_sec); + return get( + std::string("api/v1/sensor/cmd/get_config_param?args=") + config_type, + timeout_sec); } -void SensorHttpImp::set_config_param(const string& key, const string& value, +void SensorHttpImp::set_config_param(const std::string& key, + const std::string& value, int timeout_sec) const { auto encoded_value = http_client->encode(value); // encode config params auto url = @@ -33,38 +40,36 @@ void SensorHttpImp::set_config_param(const string& key, const string& value, execute(url, "\"set_config_param\"", timeout_sec); } -Json::Value SensorHttpImp::active_config_params(int timeout_sec) const { - return get_json("api/v1/sensor/cmd/get_config_param?args=active", - timeout_sec); +std::string SensorHttpImp::active_config_params(int timeout_sec) const { + return get("api/v1/sensor/cmd/get_config_param?args=active", timeout_sec); } -Json::Value SensorHttpImp::staged_config_params(int timeout_sec) const { - return get_json("api/v1/sensor/cmd/get_config_param?args=staged", - timeout_sec); +std::string SensorHttpImp::staged_config_params(int timeout_sec) const { + return get("api/v1/sensor/cmd/get_config_param?args=staged", timeout_sec); } void SensorHttpImp::set_udp_dest_auto(int timeout_sec) const { execute("api/v1/sensor/cmd/set_udp_dest_auto", "{}", timeout_sec); } -Json::Value SensorHttpImp::beam_intrinsics(int timeout_sec) const { - return get_json("api/v1/sensor/metadata/beam_intrinsics", timeout_sec); +std::string SensorHttpImp::beam_intrinsics(int timeout_sec) const { + return get("api/v1/sensor/metadata/beam_intrinsics", timeout_sec); } -Json::Value SensorHttpImp::imu_intrinsics(int timeout_sec) const { - return get_json("api/v1/sensor/metadata/imu_intrinsics", timeout_sec); +std::string SensorHttpImp::imu_intrinsics(int timeout_sec) const { + return get("api/v1/sensor/metadata/imu_intrinsics", timeout_sec); } -Json::Value SensorHttpImp::lidar_intrinsics(int timeout_sec) const { - return get_json("api/v1/sensor/metadata/lidar_intrinsics", timeout_sec); +std::string SensorHttpImp::lidar_intrinsics(int timeout_sec) const { + return get("api/v1/sensor/metadata/lidar_intrinsics", timeout_sec); } -Json::Value SensorHttpImp::lidar_data_format(int timeout_sec) const { - return get_json("api/v1/sensor/metadata/lidar_data_format", timeout_sec); +std::string SensorHttpImp::lidar_data_format(int timeout_sec) const { + return get("api/v1/sensor/metadata/lidar_data_format", timeout_sec); } -Json::Value SensorHttpImp::calibration_status(int timeout_sec) const { - return get_json("api/v1/sensor/metadata/calibration_status", timeout_sec); +std::string SensorHttpImp::calibration_status(int timeout_sec) const { + return get("api/v1/sensor/metadata/calibration_status", timeout_sec); } std::string SensorHttpImp::network(int timeout_sec) const { @@ -81,23 +86,36 @@ void SensorHttpImp::save_config_params(int timeout_sec) const { } std::string SensorHttpImp::get_user_data(int timeout_sec) const { - return get_json("api/v1/user/data", timeout_sec).asString(); + // the API returns a jsonified string (quoted and escaped), parse it and + // return the actual string value to the user + return jsoncons::json::parse(get("api/v1/user/data", timeout_sec)) + .as(); } UserDataAndPolicy SensorHttpImp::get_user_data_and_policy( int timeout_sec) const { - auto json = get_json("api/v1/user/data?include_metadata=true", timeout_sec); - return {json["policy"].asString() != "clear_on_config_delete", - json["value"].asString()}; + std::string url = "api/v1/user/data?include_metadata=true"; + auto json_data = get(url, timeout_sec); + jsoncons::json root; + + try { + root = jsoncons::json::parse(json_data); + return {root["policy"].as() != "clear_on_config_delete", + root["value"].as()}; + } catch (const jsoncons::ser_error& e) { + throw std::runtime_error("Http response parse failed! url: " + url + + " Error: " + e.what()); + } } void SensorHttpImp::set_user_data(const std::string& data, bool keep_on_config_delete, int timeout_sec) const { - Json::StreamWriterBuilder wbuilder; - std::string json = Json::writeString(wbuilder, Json::Value(data)); + std::string json; + auto temp_data = jsoncons::json(data); + temp_data.dump(json); http_client->put( - string("api/v1/user/data") + + std::string("api/v1/user/data") + (keep_on_config_delete ? "?policy=keep_on_config_delete" : ""), json, timeout_sec); } @@ -106,22 +124,12 @@ void SensorHttpImp::delete_user_data(int timeout_sec) const { http_client->del("api/v1/user/data", timeout_sec); } -string SensorHttpImp::get(const string& url, int timeout_sec) const { +std::string SensorHttpImp::get(const std::string& url, int timeout_sec) const { return http_client->get(url, timeout_sec); } -Json::Value SensorHttpImp::get_json(const string& url, int timeout_sec) const { - Json::CharReaderBuilder builder; - auto reader = std::unique_ptr{builder.newCharReader()}; - Json::Value root; - auto result = get(url, timeout_sec); - if (!reader->parse(result.c_str(), result.c_str() + result.size(), &root, - nullptr)) - throw std::runtime_error("SensorHttpImp::get_json failed! url: " + url); - return root; -} - -void SensorHttpImp::execute(const string& url, const string& validation, +void SensorHttpImp::execute(const std::string& url, + const std::string& validation, int timeout_sec) const { auto result = get(url, timeout_sec); if (result != validation) @@ -130,7 +138,24 @@ void SensorHttpImp::execute(const string& url, const string& validation, validation + "]"); } -SensorHttpImp_2_2::SensorHttpImp_2_2(const string& hostname) +void SensorHttpImp::set_static_ip(const std::string& ip_address, + int timeout_sec) const { + std::string json; + auto temp_data = jsoncons::json(ip_address); + temp_data.dump(json); + http_client->put("api/v1/system/network/ipv4/override", json, timeout_sec); +} + +void SensorHttpImp::delete_static_ip(int timeout_sec) const { + http_client->del("api/v1/system/network/ipv4/override", timeout_sec); +} + +std::vector SensorHttpImp::diagnostics_dump(int timeout_sec) const { + std::string str = http_client->get("/api/v1/diagnostics/dump", timeout_sec); + return std::vector(str.begin(), str.end()); +} + +SensorHttpImp_2_2::SensorHttpImp_2_2(const std::string& hostname) : SensorHttpImp_2_4_or_3(hostname) {} void SensorHttpImp_2_2::set_udp_dest_auto(int timeout_sec) const { @@ -138,53 +163,59 @@ void SensorHttpImp_2_2::set_udp_dest_auto(int timeout_sec) const { "\"set_config_param\"", timeout_sec); } -SensorHttpImp_2_1::SensorHttpImp_2_1(const string& hostname) +SensorHttpImp_2_1::SensorHttpImp_2_1(const std::string& hostname) : SensorHttpImp_2_2(hostname) {} -Json::Value SensorHttpImp_2_1::metadata(int timeout_sec) const { - Json::Value root; - root["sensor_info"] = sensor_info(timeout_sec); - root["beam_intrinsics"] = beam_intrinsics(timeout_sec); - root["imu_intrinsics"] = imu_intrinsics(timeout_sec); - root["lidar_intrinsics"] = lidar_intrinsics(timeout_sec); - root["lidar_data_format"] = lidar_data_format(timeout_sec); - root["calibration_status"] = calibration_status(timeout_sec); +std::string SensorHttpImp_2_1::metadata(int timeout_sec) const { + jsoncons::json root; + try { + root["sensor_info"] = jsoncons::json::parse(sensor_info(timeout_sec)); + root["beam_intrinsics"] = + jsoncons::json::parse(beam_intrinsics(timeout_sec)); + root["imu_intrinsics"] = + jsoncons::json::parse(imu_intrinsics(timeout_sec)); + root["lidar_intrinsics"] = + jsoncons::json::parse(lidar_intrinsics(timeout_sec)); + root["lidar_data_format"] = + jsoncons::json::parse(lidar_data_format(timeout_sec)); + root["calibration_status"] = + jsoncons::json::parse(calibration_status(timeout_sec)); + root["config_params"] = + jsoncons::json::parse(get_config_params(true, timeout_sec)); + } catch (const jsoncons::ser_error& e) { + throw std::runtime_error(e.what()); + } - Json::CharReaderBuilder builder; - auto reader = std::unique_ptr{builder.newCharReader()}; - Json::Value node; - auto res = get_config_params(true, timeout_sec); - auto parse_success = - reader->parse(res.c_str(), res.c_str() + res.size(), &node, nullptr); - root["config_params"] = parse_success ? node : res; - return root; + std::string result; + root.dump(result); + return result; } -Json::Value SensorHttpImp_2_1::sensor_info(int timeout_sec) const { - return get_json("api/v1/sensor/cmd/get_sensor_info", timeout_sec); +std::string SensorHttpImp_2_1::sensor_info(int timeout_sec) const { + return get("api/v1/sensor/cmd/get_sensor_info", timeout_sec); } -Json::Value SensorHttpImp_2_1::beam_intrinsics(int timeout_sec) const { - return get_json("api/v1/sensor/cmd/get_beam_intrinsics", timeout_sec); +std::string SensorHttpImp_2_1::beam_intrinsics(int timeout_sec) const { + return get("api/v1/sensor/cmd/get_beam_intrinsics", timeout_sec); } -Json::Value SensorHttpImp_2_1::imu_intrinsics(int timeout_sec) const { - return get_json("api/v1/sensor/cmd/get_imu_intrinsics", timeout_sec); +std::string SensorHttpImp_2_1::imu_intrinsics(int timeout_sec) const { + return get("api/v1/sensor/cmd/get_imu_intrinsics", timeout_sec); } -Json::Value SensorHttpImp_2_1::lidar_intrinsics(int timeout_sec) const { - return get_json("api/v1/sensor/cmd/get_lidar_intrinsics", timeout_sec); +std::string SensorHttpImp_2_1::lidar_intrinsics(int timeout_sec) const { + return get("api/v1/sensor/cmd/get_lidar_intrinsics", timeout_sec); } -Json::Value SensorHttpImp_2_1::lidar_data_format(int timeout_sec) const { - return get_json("api/v1/sensor/cmd/get_lidar_data_format", timeout_sec); +std::string SensorHttpImp_2_1::lidar_data_format(int timeout_sec) const { + return get("api/v1/sensor/cmd/get_lidar_data_format", timeout_sec); } -Json::Value SensorHttpImp_2_1::calibration_status(int timeout_sec) const { - return get_json("api/v1/sensor/cmd/get_calibration_status", timeout_sec); +std::string SensorHttpImp_2_1::calibration_status(int timeout_sec) const { + return get("api/v1/sensor/cmd/get_calibration_status", timeout_sec); } -SensorHttpImp_2_4_or_3::SensorHttpImp_2_4_or_3(const string& hostname) +SensorHttpImp_2_4_or_3::SensorHttpImp_2_4_or_3(const std::string& hostname) : SensorHttpImp(hostname) {} std::string SensorHttpImp_2_4_or_3::get_user_data(int /*timeout_sec*/) const { diff --git a/ouster_client/src/sensor_http_imp.h b/ouster_client/src/sensor_http_imp.h index c755edd9..ddbe7a40 100644 --- a/ouster_client/src/sensor_http_imp.h +++ b/ouster_client/src/sensor_http_imp.h @@ -11,6 +11,7 @@ #include "http_client.h" #include "ouster/sensor_http.h" +#include "ouster/types.h" namespace ouster { namespace sensor { @@ -38,7 +39,7 @@ class SensorHttpImp : public util::SensorHttp { * * @return returns a Json object of the sensor metadata. */ - Json::Value metadata( + std::string metadata( int timeout_sec = SHORT_HTTP_REQUEST_TIMEOUT_SECONDS) const override; /** @@ -46,7 +47,7 @@ class SensorHttpImp : public util::SensorHttp { * * @return returns a Json object representing the sensor_info. */ - Json::Value sensor_info( + std::string sensor_info( int timeout_sec = SHORT_HTTP_REQUEST_TIMEOUT_SECONDS) const override; /** @@ -55,7 +56,7 @@ class SensorHttpImp : public util::SensorHttp { * @param[in] active if true retrieve active, otherwise get staged configs. * @param[in] timeout_sec The timeout for the request in seconds. * - * @return a string represnting the active or staged config + * @return a string representing the active or staged config */ std::string get_config_params( bool active, @@ -76,13 +77,13 @@ class SensorHttpImp : public util::SensorHttp { /** * Retrieves the active configuration on the sensor */ - Json::Value active_config_params( + std::string active_config_params( int timeout_sec = SHORT_HTTP_REQUEST_TIMEOUT_SECONDS) const override; /** * Retrieves the staged configuration on the sensor */ - Json::Value staged_config_params( + std::string staged_config_params( int timeout_sec = SHORT_HTTP_REQUEST_TIMEOUT_SECONDS) const override; /** @@ -94,31 +95,31 @@ class SensorHttpImp : public util::SensorHttp { /** * Retrieves beam intrinsics of the sensor. */ - Json::Value beam_intrinsics( + std::string beam_intrinsics( int timeout_sec = SHORT_HTTP_REQUEST_TIMEOUT_SECONDS) const override; /** * Retrieves imu intrinsics of the sensor. */ - Json::Value imu_intrinsics( + std::string imu_intrinsics( int timeout_sec = SHORT_HTTP_REQUEST_TIMEOUT_SECONDS) const override; /** * Retrieves lidar intrinsics of the sensor. */ - Json::Value lidar_intrinsics( + std::string lidar_intrinsics( int timeout_sec = SHORT_HTTP_REQUEST_TIMEOUT_SECONDS) const override; /** * Retrieves lidar data format. */ - Json::Value lidar_data_format( + std::string lidar_data_format( int timeout_sec = SHORT_HTTP_REQUEST_TIMEOUT_SECONDS) const override; /** * Gets the calibaration status of the sensor. */ - Json::Value calibration_status( + std::string calibration_status( int timeout_sec = SHORT_HTTP_REQUEST_TIMEOUT_SECONDS) const override; /** @@ -169,11 +170,19 @@ class SensorHttpImp : public util::SensorHttp { std::string network( int timeout_sec = SHORT_HTTP_REQUEST_TIMEOUT_SECONDS) const override; + void set_static_ip( + const std::string& ip_address, + int timeout_sec = SHORT_HTTP_REQUEST_TIMEOUT_SECONDS) const override; + + void delete_static_ip( + int timeout_sec = SHORT_HTTP_REQUEST_TIMEOUT_SECONDS) const override; + + std::vector diagnostics_dump( + int timeout_sec = SHORT_HTTP_REQUEST_TIMEOUT_SECONDS) const override; + protected: std::string get(const std::string& url, int timeout_sec) const; - Json::Value get_json(const std::string& url, int timeout_sec) const; - void execute(const std::string& url, const std::string& validation, int timeout_sec) const; @@ -235,47 +244,47 @@ class SensorHttpImp_2_1 : public SensorHttpImp_2_2 { /** * Queries the sensor metadata. * - * @return returns a Json object of the sensor metadata. + * @return returns a Json string of the sensor metadata. */ - Json::Value metadata( + std::string metadata( int timeout_sec = SHORT_HTTP_REQUEST_TIMEOUT_SECONDS) const override; /** * Queries the sensor_info. * - * @return returns a Json object representing the sensor_info. + * @return returns a Json string representing the sensor_info. */ - Json::Value sensor_info( + std::string sensor_info( int timeout_sec = SHORT_HTTP_REQUEST_TIMEOUT_SECONDS) const override; /** * Retrieves beam intrinsics of the sensor. */ - Json::Value beam_intrinsics( + std::string beam_intrinsics( int timeout_sec = SHORT_HTTP_REQUEST_TIMEOUT_SECONDS) const override; /** * Retrieves imu intrinsics of the sensor. */ - Json::Value imu_intrinsics( + std::string imu_intrinsics( int timeout_sec = SHORT_HTTP_REQUEST_TIMEOUT_SECONDS) const override; /** * Retrieves lidar intrinsics of the sensor. */ - Json::Value lidar_intrinsics( + std::string lidar_intrinsics( int timeout_sec = SHORT_HTTP_REQUEST_TIMEOUT_SECONDS) const override; /** * Retrieves lidar data format. */ - Json::Value lidar_data_format( + std::string lidar_data_format( int timeout_sec = SHORT_HTTP_REQUEST_TIMEOUT_SECONDS) const override; /** * Gets the calibaration status of the sensor. */ - Json::Value calibration_status( + std::string calibration_status( int timeout_sec = SHORT_HTTP_REQUEST_TIMEOUT_SECONDS) const override; }; diff --git a/ouster_client/src/sensor_info.cpp b/ouster_client/src/sensor_info.cpp index 4b9ea832..0356c14f 100644 --- a/ouster_client/src/sensor_info.cpp +++ b/ouster_client/src/sensor_info.cpp @@ -3,12 +3,13 @@ * All rights reserved. */ -#include - #include #include #include #include +#include +#include +#include #include #include #include @@ -19,7 +20,6 @@ #include "ouster/impl/logging.h" #include "ouster/metadata.h" #include "ouster/types.h" -#include "ouster/util.h" #include "ouster/version.h" namespace ouster { @@ -50,10 +50,8 @@ extern data_format default_data_format(lidar_mode mode); extern double default_lidar_origin_to_beam_origin(std::string prod_line); extern mat4d default_beam_to_lidar_transform(std::string prod_line); extern calibration_status default_calibration_status(); -extern sensor_config parse_config(const Json::Value& root); -extern data_format parse_data_format(const Json::Value& root); -extern Json::Value cal_to_json(const calibration_status& cal); -extern Json::Value config_to_json(const sensor_config& config); +extern jsoncons::json cal_to_json(const calibration_status& cal); +extern jsoncons::json config_to_json(const sensor_config& config); /* Equality operators and functions */ @@ -95,7 +93,7 @@ auto sensor_info::h() const -> decltype(format.pixels_per_column) { sensor_info default_sensor_info(lidar_mode mode) { auto info = sensor_info(); - info.sn = "000000000000"; + info.sn = 0; info.fw_rev = "UNKNOWN"; info.prod_line = "OS-1-64"; @@ -105,7 +103,7 @@ sensor_info default_sensor_info(lidar_mode mode) { info.beam_altitude_angles = gen1_altitude_angles; info.lidar_origin_to_beam_origin_mm = default_lidar_origin_to_beam_origin(info.prod_line); - info.beam_to_lidar_transform = + info.beam_to_lidar_transform = default_beam_to_lidar_transform(info.prod_line); info.imu_to_sensor_transform = default_imu_to_sensor_transform; info.lidar_to_sensor_transform = default_lidar_to_sensor_transform; @@ -182,8 +180,6 @@ sensor_info::sensor_info() { } sensor_info::sensor_info(const std::string& metadata) { - Json::Value root{}; - Json::CharReaderBuilder builder{}; ValidatorIssues issues; if (metadata.size() > 0) { @@ -201,122 +197,129 @@ sensor_info::sensor_info(const std::string& metadata) { throw std::runtime_error("ERROR: empty metadata passed in"); } } + sensor_info::sensor_info(const std::string& metadata, bool /*skip_beam_validation*/) : sensor_info(metadata) {} -void mat4d_to_json(Json::Value& val, mat4d mat) { +void mat4d_to_json(jsoncons::json& val, mat4d mat) { for (size_t i = 0; i < 4; i++) { for (size_t j = 0; j < 4; j++) { - val.append(mat(i, j)); + val.emplace_back(mat(i, j)); } } } -/* DO NOT make public - internal logic use only - * Powers outputting a sensor_info to a nested json resembling non-legacy - * metadata - */ -Json::Value info_to_nested_json(const sensor_info& info) { - Json::Value result{}; - - result["sensor_info"]["build_date"] = info.build_date; - result["sensor_info"]["build_rev"] = info.fw_rev; - result["sensor_info"]["image_rev"] = info.image_rev; - result["sensor_info"]["initialization_id"] = info.init_id; - result["sensor_info"]["prod_line"] = info.prod_line; - result["sensor_info"]["prod_pn"] = info.prod_pn; - result["sensor_info"]["prod_sn"] = info.sn; - result["sensor_info"]["status"] = info.status; +std::string sensor_info::to_json_string() const { + jsoncons::json result; + + result["sensor_info"]["build_date"] = build_date; + result["sensor_info"]["build_rev"] = fw_rev; + result["sensor_info"]["image_rev"] = image_rev; + result["sensor_info"]["initialization_id"] = init_id; + result["sensor_info"]["prod_line"] = prod_line; + result["sensor_info"]["prod_pn"] = prod_pn; + result["sensor_info"]["prod_sn"] = std::to_string(sn); + result["sensor_info"]["status"] = status; // data_format - result["lidar_data_format"]["pixels_per_column"] = - info.format.pixels_per_column; + result["lidar_data_format"]["pixels_per_column"] = format.pixels_per_column; result["lidar_data_format"]["columns_per_packet"] = - info.format.columns_per_packet; - result["lidar_data_format"]["columns_per_frame"] = - info.format.columns_per_frame; - result["lidar_data_format"]["fps"] = info.format.fps; - result["lidar_data_format"]["column_window"].append( - info.format.column_window.first); - result["lidar_data_format"]["column_window"].append( - info.format.column_window.second); + format.columns_per_packet; + result["lidar_data_format"]["columns_per_frame"] = format.columns_per_frame; + result["lidar_data_format"]["fps"] = format.fps; + result["lidar_data_format"]["column_window"] = + jsoncons::json(jsoncons::json_array_arg); + result["lidar_data_format"]["column_window"].emplace_back( + format.column_window.first); + result["lidar_data_format"]["column_window"].emplace_back( + format.column_window.second); result["lidar_data_format"]["udp_profile_lidar"] = - to_string(info.format.udp_profile_lidar); + to_string(format.udp_profile_lidar); result["lidar_data_format"]["udp_profile_imu"] = - to_string(info.format.udp_profile_imu); + to_string(format.udp_profile_imu); - for (auto i : info.format.pixel_shift_by_row) - result["lidar_data_format"]["pixel_shift_by_row"].append(i); + result["lidar_data_format"]["pixel_shift_by_row"] = + jsoncons::json(jsoncons::json_array_arg); + for (auto i : format.pixel_shift_by_row) + result["lidar_data_format"]["pixel_shift_by_row"].emplace_back(i); // beam intrinsics // + result["beam_intrinsics"] = jsoncons::json(); + result["beam_intrinsics"]["beam_to_lidar_transform"] = + jsoncons::json(jsoncons::json_array_arg); mat4d_to_json(result["beam_intrinsics"]["beam_to_lidar_transform"], - info.beam_to_lidar_transform); + beam_to_lidar_transform); result["beam_intrinsics"]["lidar_origin_to_beam_origin_mm"] = - info.lidar_origin_to_beam_origin_mm; + lidar_origin_to_beam_origin_mm; - if (info.beam_azimuth_angles.size() == info.format.pixels_per_column) { + result["beam_intrinsics"]["beam_azimuth_angles"] = + jsoncons::json(jsoncons::json_array_arg); + result["beam_intrinsics"]["beam_altitude_angles"] = + jsoncons::json(jsoncons::json_array_arg); + if (beam_azimuth_angles.size() == format.pixels_per_column) { // OS sensor path - for (auto angle : info.beam_azimuth_angles) - result["beam_intrinsics"]["beam_azimuth_angles"].append(angle); - for (auto angle : info.beam_altitude_angles) - result["beam_intrinsics"]["beam_altitude_angles"].append(angle); + for (auto angle : beam_azimuth_angles) + result["beam_intrinsics"]["beam_azimuth_angles"].emplace_back( + angle); + for (auto angle : beam_altitude_angles) + result["beam_intrinsics"]["beam_altitude_angles"].emplace_back( + angle); } else { // DF sensor path int j = 0; - for (size_t i = 0; i < info.beam_azimuth_angles.size(); i++) { - int col_index_within_row = i % info.format.columns_per_frame; - if (col_index_within_row == 0) { // start new array - result["beam_intrinsics"]["beam_azimuth_angles"].append( - Json::Value(Json::arrayValue)); + for (size_t i = 0; i < beam_azimuth_angles.size(); i++) { + int col_index_within_row = i % format.columns_per_frame; + if (col_index_within_row == 0) { + result["beam_intrinsics"]["beam_azimuth_angles"].emplace_back( + jsoncons::json(jsoncons::json_array_arg)); j++; } - result["beam_intrinsics"]["beam_azimuth_angles"][j - 1].append( - info.beam_azimuth_angles[i]); + result["beam_intrinsics"]["beam_azimuth_angles"][j - 1] + .emplace_back(beam_azimuth_angles[i]); } j = 0; - for (size_t i = 0; i < info.beam_altitude_angles.size(); i++) { - int col_index_within_row = i % info.format.columns_per_frame; - if (col_index_within_row == 0) { // start new array - result["beam_intrinsics"]["beam_altitude_angles"].append( - Json::Value(Json::arrayValue)); + for (size_t i = 0; i < beam_altitude_angles.size(); i++) { + int col_index_within_row = i % format.columns_per_frame; + if (col_index_within_row == 0) { + result["beam_intrinsics"]["beam_altitude_angles"].emplace_back( + jsoncons::json(jsoncons::json_array_arg)); j++; } - result["beam_intrinsics"]["beam_altitude_angles"][j - 1].append( - info.beam_altitude_angles[i]); + result["beam_intrinsics"]["beam_altitude_angles"][j - 1] + .emplace_back(beam_altitude_angles[i]); } } + result["calibration_status"] = cal_to_json(cal); - result["calibration_status"] = cal_to_json(info.cal); + result["config_params"] = config_to_json(config); - result["config_params"] = config_to_json(info.config); - - result["user_data"] = info.user_data; + result["user_data"] = user_data; + result["imu_intrinsics"] = jsoncons::json(); + result["imu_intrinsics"]["imu_to_sensor_transform"] = + jsoncons::json(jsoncons::json_array_arg); mat4d_to_json(result["imu_intrinsics"]["imu_to_sensor_transform"], - info.imu_to_sensor_transform); + imu_to_sensor_transform); + result["lidar_intrinsics"] = jsoncons::json(); + result["lidar_intrinsics"]["lidar_to_sensor_transform"] = + jsoncons::json(jsoncons::json_array_arg); mat4d_to_json(result["lidar_intrinsics"]["lidar_to_sensor_transform"], - info.lidar_to_sensor_transform); - - mat4d_to_json(result["ouster-sdk"]["extrinsic"], info.extrinsic); + lidar_to_sensor_transform); - return result; -} - -std::string sensor_info::to_json_string() const { - Json::Value result = info_to_nested_json(*this); + result["ouster-sdk"] = jsoncons::json(); + result["ouster-sdk"]["extrinsic"] = + jsoncons::json(jsoncons::json_array_arg); + mat4d_to_json(result["ouster-sdk"]["extrinsic"], extrinsic); result["ouster-sdk"]["output_source"] = "sensor_info_to_string"; result["ouster-sdk"]["client_version"] = client_version(); - - Json::StreamWriterBuilder write_builder; - write_builder["enableYAMLCompatibility"] = true; - write_builder["precision"] = 6; - write_builder["indentation"] = " "; - return Json::writeString(write_builder, result); + std::string out; + result.dump(out); + return out; } ouster::util::version sensor_info::get_version() const { @@ -346,17 +349,6 @@ sensor_info metadata_from_json(const std::string& json_file, std::string to_string(const sensor_info& info) { return info.to_json_string(); } -std::string get_firmware_version(const Json::Value& metadata_root) { - auto fw_ver = std::string{}; - if (metadata_root["sensor_info"].isObject()) { - if (metadata_root["sensor_info"].isMember("image_rev")) { - // image_rev is preferred over build_rev - fw_ver = metadata_root["sensor_info"]["image_rev"].asString(); - } - } - return fw_ver; -} - ouster::util::version firmware_version_from_metadata( const std::string& metadata) { if (metadata.empty()) { @@ -364,23 +356,16 @@ ouster::util::version firmware_version_from_metadata( "firmware_version_from_metadata metadata empty!"); } - Json::Value root{}; - Json::CharReaderBuilder builder{}; - std::string errors{}; - std::stringstream ss{metadata}; - - if (!Json::parseFromStream(builder, ss, &root, &errors)) - throw std::runtime_error{ - "Errors parsing metadata for parse_metadata: " + errors}; - - auto fw_ver = get_firmware_version(root); - if (fw_ver.empty()) { - throw std::runtime_error( + jsoncons::json value_array = jsoncons::jsonpath::json_query( + jsoncons::json::parse(metadata), "$.sensor_info.image_rev"); + if (value_array.size() == 1) { + return ouster::util::version_from_string( + value_array[0].as()); + } else { + throw std::invalid_argument( "firmware_version_from_metadata failed to deduce version info from " "metadata!"); } - - return ouster::util::version_from_string(fw_ver); } } // namespace sensor diff --git a/ouster_client/src/sensor_scan_source.cpp b/ouster_client/src/sensor_scan_source.cpp index 23d7cc10..f56a7f90 100644 --- a/ouster_client/src/sensor_scan_source.cpp +++ b/ouster_client/src/sensor_scan_source.cpp @@ -54,11 +54,8 @@ SensorScanSource::SensorScanSource( run_thread_ = true; batcher_thread_ = std::thread([this, queue_size, soft_id_check]() { - LidarPacket lp; - ImuPacket ip; std::vector> scans; std::vector batchers; - std::vector pfs; auto infos = get_sensor_info(); for (size_t i = 0; i < infos.size(); i++) { const auto& info = infos[i]; @@ -68,24 +65,22 @@ SensorScanSource::SensorScanSource( scans.push_back(std::make_unique( w, h, fields_[i].begin(), fields_[i].end(), info.format.columns_per_packet)); - pfs.push_back(packet_format(info)); } while (run_thread_) { - auto p = client_.get_packet(lp, ip, 0.05); - if (p.type == ClientEvent::LidarPacket) { - const auto& pf = pfs[p.source]; + auto p = client_.get_packet(0.05); + if (p.type == ClientEvent::Packet && + p.packet().type() == PacketType::Lidar) { const auto& info = infos[p.source]; - auto result = lp.validate(info, pf); + const auto& lp = static_cast(p.packet()); + auto result = lp.validate(info); if (result == PacketValidationFailure::ID) { id_error_count_++; if (!soft_id_check) { - auto init_id = pf.init_id(lp.buf.data()); - auto prod_sn = pf.prod_sn(lp.buf.data()); logger().warn( "Metadata init_id/sn does not match: expected by " "metadata - {}/{}, but got from packet buffer - " "{}/{}", - info.init_id, info.sn, init_id, prod_sn); + info.init_id, info.sn, lp.init_id(), lp.prod_sn()); continue; } } diff --git a/ouster_client/src/sensor_tcp_imp.cpp b/ouster_client/src/sensor_tcp_imp.cpp index b1c20866..f7093c4b 100644 --- a/ouster_client/src/sensor_tcp_imp.cpp +++ b/ouster_client/src/sensor_tcp_imp.cpp @@ -7,43 +7,54 @@ #include #include +#include +#include #include #include "ouster/impl/logging.h" using ouster::sensor::util::UserDataAndPolicy; -using std::string; using namespace ouster::sensor::impl; -SensorTcpImp::SensorTcpImp(const string& hostname) +SensorTcpImp::SensorTcpImp(const std::string& hostname) : socket_handle(cfg_socket(hostname.c_str())), read_buf(std::unique_ptr{new char[MAX_RESULT_LENGTH + 1]}) {} SensorTcpImp::~SensorTcpImp() { socket_close(socket_handle); } -Json::Value SensorTcpImp::metadata(int timeout_sec) const { - Json::Value root; - root["sensor_info"] = sensor_info(timeout_sec); - root["beam_intrinsics"] = beam_intrinsics(timeout_sec); - root["imu_intrinsics"] = imu_intrinsics(timeout_sec); - root["lidar_intrinsics"] = lidar_intrinsics(timeout_sec); - root["lidar_data_format"] = lidar_data_format(timeout_sec); - root["calibration_status"] = calibration_status(timeout_sec); - Json::CharReaderBuilder builder; - auto reader = std::unique_ptr{builder.newCharReader()}; +std::string SensorTcpImp::metadata(int timeout_sec) const { auto res = get_config_params(true, timeout_sec); - Json::Value node; - auto parse_success = - reader->parse(res.c_str(), res.c_str() + res.size(), &node, nullptr); - root["config_params"] = parse_success ? node : res; - return root; -} - -Json::Value SensorTcpImp::sensor_info(int /*timeout_sec*/) const { - return tcp_cmd_json({"get_sensor_info"}); -} + jsoncons::json config_params; + bool parse_success = false; + try { + config_params = jsoncons::json::parse(res); + parse_success = true; + } catch (jsoncons::ser_error&) { + } -string SensorTcpImp::get_config_params(bool active, int /*timeout_sec*/) const { + jsoncons::json root; + root["sensor_info"] = jsoncons::json::parse(sensor_info(timeout_sec)); + root["beam_intrinsics"] = + jsoncons::json::parse(beam_intrinsics(timeout_sec)); + root["imu_intrinsics"] = jsoncons::json::parse(imu_intrinsics(timeout_sec)); + root["lidar_intrinsics"] = + jsoncons::json::parse(lidar_intrinsics(timeout_sec)); + root["lidar_data_format"] = + jsoncons::json::parse(lidar_data_format(timeout_sec)); + root["calibration_status"] = + jsoncons::json::parse(calibration_status(timeout_sec)); + root["config_params"] = (parse_success) ? config_params : res; + std::string result; + root.dump(result); + return result; +} + +std::string SensorTcpImp::sensor_info(int /*timeout_sec*/) const { + return tcp_cmd({"get_sensor_info"}); +} + +std::string SensorTcpImp::get_config_params(bool active, + int /*timeout_sec*/) const { auto config_type = active ? "active" : "staged"; return tcp_cmd({"get_config_param", config_type}); } @@ -59,42 +70,43 @@ std::string rtrim(const std::string& s) { } } // namespace -void SensorTcpImp::set_config_param(const string& key, const string& value, +void SensorTcpImp::set_config_param(const std::string& key, + const std::string& value, int /*timeout_sec*/) const { tcp_cmd_with_validation({"set_config_param", key, rtrim(value)}, "set_config_param"); } -Json::Value SensorTcpImp::active_config_params(int /*timeout_sec*/) const { - return tcp_cmd_json({"get_config_param", "active"}); +std::string SensorTcpImp::active_config_params(int /*timeout_sec*/) const { + return tcp_cmd({"get_config_param", "active"}); } -Json::Value SensorTcpImp::staged_config_params(int /*timeout_sec*/) const { - return tcp_cmd_json({"get_config_param", "staged"}); +std::string SensorTcpImp::staged_config_params(int /*timeout_sec*/) const { + return tcp_cmd({"get_config_param", "staged"}); } void SensorTcpImp::set_udp_dest_auto(int /*timeout_sec*/) const { tcp_cmd_with_validation({"set_udp_dest_auto"}, "set_udp_dest_auto"); } -Json::Value SensorTcpImp::beam_intrinsics(int /*timeout_sec*/) const { - return tcp_cmd_json({"get_beam_intrinsics"}); +std::string SensorTcpImp::beam_intrinsics(int /*timeout_sec*/) const { + return tcp_cmd({"get_beam_intrinsics"}); } -Json::Value SensorTcpImp::imu_intrinsics(int /*timeout_sec*/) const { - return tcp_cmd_json({"get_imu_intrinsics"}); +std::string SensorTcpImp::imu_intrinsics(int /*timeout_sec*/) const { + return tcp_cmd({"get_imu_intrinsics"}); } -Json::Value SensorTcpImp::lidar_intrinsics(int /*timeout_sec*/) const { - return tcp_cmd_json({"get_lidar_intrinsics"}); +std::string SensorTcpImp::lidar_intrinsics(int /*timeout_sec*/) const { + return tcp_cmd({"get_lidar_intrinsics"}); } -Json::Value SensorTcpImp::lidar_data_format(int /*timeout_sec*/) const { - return tcp_cmd_json({"get_lidar_data_format"}, false); +std::string SensorTcpImp::lidar_data_format(int /*timeout_sec*/) const { + return tcp_cmd({"get_lidar_data_format"}); } -Json::Value SensorTcpImp::calibration_status(int /*timeout_sec*/) const { - return tcp_cmd_json({"get_calibration_status"}, false); +std::string SensorTcpImp::calibration_status(int /*timeout_sec*/) const { + return tcp_cmd({"get_calibration_status"}); } void SensorTcpImp::reinitialize(int /*timeout_sec*/) const { @@ -130,6 +142,22 @@ std::string SensorTcpImp::network(int /*timeout_sec*/) const { "This endpoint is not supported on this FW version"); } +void SensorTcpImp::set_static_ip(const std::string& /*ip_address*/, + int /*timeout_sec*/) const { + throw std::runtime_error( + "This endpoint is not supported on this FW version"); +} + +void SensorTcpImp::delete_static_ip(int /*timeout_sec*/) const { + throw std::runtime_error( + "This endpoint is not supported on this FW version"); +} + +std::vector SensorTcpImp::diagnostics_dump(int /*timeout_sec*/) const { + throw std::runtime_error( + "This endpoint is not supported on this FW version"); +} + SOCKET SensorTcpImp::cfg_socket(const char* addr) { struct addrinfo hints, *info_start, *ai; @@ -185,11 +213,12 @@ SOCKET SensorTcpImp::cfg_socket(const char* addr) { return sock_fd; } -string SensorTcpImp::tcp_cmd(const std::vector& cmd_tokens) const { +std::string SensorTcpImp::tcp_cmd( + const std::vector& cmd_tokens) const { std::stringstream ss; for (const auto& token : cmd_tokens) ss << token << " "; ss << "\n"; - string cmd = ss.str(); + std::string cmd = ss.str(); ssize_t len = send(socket_handle, cmd.c_str(), cmd.length(), 0); if (len != (ssize_t)cmd.length()) { @@ -213,24 +242,9 @@ string SensorTcpImp::tcp_cmd(const std::vector& cmd_tokens) const { return res; } -Json::Value SensorTcpImp::tcp_cmd_json(const std::vector& cmd_tokens, - bool exception_on_parse_errors) const { - Json::CharReaderBuilder builder; - auto reader = std::unique_ptr{builder.newCharReader()}; - Json::Value root; - auto result = tcp_cmd(cmd_tokens); - auto success = reader->parse(result.c_str(), result.c_str() + result.size(), - &root, nullptr); - if (success) return root; - if (!exception_on_parse_errors) return result; - - throw std::runtime_error( - "SensorTcp::tcp_cmd_json failed for " + cmd_tokens[0] + - " command. returned json string [" + result + "] couldn't be parsed ["); -} - void SensorTcpImp::tcp_cmd_with_validation( - const std::vector& cmd_tokens, const string& validation) const { + const std::vector& cmd_tokens, + const std::string& validation) const { auto result = tcp_cmd(cmd_tokens); if (result != validation) { throw std::runtime_error("SensorTcp::tcp_cmd failed: " + cmd_tokens[0] + diff --git a/ouster_client/src/sensor_tcp_imp.h b/ouster_client/src/sensor_tcp_imp.h index 725585f2..d228a52e 100644 --- a/ouster_client/src/sensor_tcp_imp.h +++ b/ouster_client/src/sensor_tcp_imp.h @@ -9,8 +9,17 @@ #pragma once -#include "ouster/impl/netcompat.h" #include "ouster/sensor_http.h" +#include "ouster/types.h" + +/** + * @note On windows platforms, the windows headers do a global define on + * BAUD_9600 which causes issues with defines in types.h. Netcompat.h must + * be included after every other header file to avoid this issue. + */ +// clang-format off +#include "ouster/impl/netcompat.h" +// clang-format on namespace ouster { namespace sensor { @@ -44,7 +53,7 @@ class SensorTcpImp : public util::SensorHttp { * * @return returns a Json object of the sensor metadata. */ - Json::Value metadata(int timeout_sec = 1) const override; + std::string metadata(int timeout_sec = 1) const override; /** * Queries the sensor_info. @@ -53,7 +62,7 @@ class SensorTcpImp : public util::SensorHttp { * * @return returns a Json object representing the sensor_info. */ - Json::Value sensor_info(int timeout_sec = 1) const override; + std::string sensor_info(int timeout_sec = 1) const override; /** * Queries active/staged configuration on the sensor @@ -61,7 +70,7 @@ class SensorTcpImp : public util::SensorHttp { * @param[in] active if true retrieve active, otherwise get staged configs. * @param[in] timeout_sec The timeout for the request in seconds. * - * @return a string represnting the active or staged config + * @return a string representing the active or staged config */ std::string get_config_params(bool active, int timeout_sec = 1) const override; @@ -82,14 +91,14 @@ class SensorTcpImp : public util::SensorHttp { * * @param[in] timeout_sec The timeout for the request in seconds. */ - Json::Value active_config_params(int timeout_sec = 1) const override; + std::string active_config_params(int timeout_sec = 1) const override; /** * Retrieves the staged configuration on the sensor * * @param[in] timeout_sec The timeout for the request in seconds. */ - Json::Value staged_config_params(int timeout_sec = 1) const override; + std::string staged_config_params(int timeout_sec = 1) const override; /** * Enables automatic assignment of udp destination ports. @@ -103,35 +112,35 @@ class SensorTcpImp : public util::SensorHttp { * * @param[in] timeout_sec The timeout for the request in seconds. */ - Json::Value beam_intrinsics(int timeout_sec = 1) const override; + std::string beam_intrinsics(int timeout_sec = 1) const override; /** * Retrieves imu intrinsics of the sensor. * * @param[in] timeout_sec The timeout for the request in seconds. */ - Json::Value imu_intrinsics(int timeout_sec = 1) const override; + std::string imu_intrinsics(int timeout_sec = 1) const override; /** * Retrieves lidar intrinsics of the sensor. * * @param[in] timeout_sec The timeout for the request in seconds. */ - Json::Value lidar_intrinsics(int timeout_sec = 1) const override; + std::string lidar_intrinsics(int timeout_sec = 1) const override; /** * Retrieves lidar data format. * * @param[in] timeout_sec The timeout for the request in seconds. */ - Json::Value lidar_data_format(int timeout_sec = 1) const override; + std::string lidar_data_format(int timeout_sec = 1) const override; /** * Gets the calibaration status of the sensor. * * @param[in] timeout_sec The timeout for the request in seconds. */ - Json::Value calibration_status(int timeout_sec = 1) const override; + std::string calibration_status(int timeout_sec = 1) const override; /** * Restarts the sensor applying all staged configurations. @@ -192,6 +201,16 @@ class SensorTcpImp : public util::SensorHttp { std::string network( int timeout_sec = SHORT_HTTP_REQUEST_TIMEOUT_SECONDS) const override; + void set_static_ip( + const std::string& ip_address, + int timeout_sec = SHORT_HTTP_REQUEST_TIMEOUT_SECONDS) const override; + + void delete_static_ip( + int timeout_sec = SHORT_HTTP_REQUEST_TIMEOUT_SECONDS) const override; + + std::vector diagnostics_dump( + int timeout_sec = SHORT_HTTP_REQUEST_TIMEOUT_SECONDS) const override; + private: SOCKET cfg_socket(const char* addr); @@ -200,9 +219,6 @@ class SensorTcpImp : public util::SensorHttp { void tcp_cmd_with_validation(const std::vector& cmd_tokens, const std::string& validation) const; - Json::Value tcp_cmd_json(const std::vector& cmd_tokens, - bool exception_on_parse_errors = true) const; - private: SOCKET socket_handle; std::unique_ptr read_buf; diff --git a/ouster_client/src/types.cpp b/ouster_client/src/types.cpp index 10bdcfe6..41c298b2 100644 --- a/ouster_client/src/types.cpp +++ b/ouster_client/src/types.cpp @@ -5,13 +5,13 @@ #include "ouster/types.h" -#include - #include #include #include #include #include +#include +#include #include #include #include @@ -70,8 +70,15 @@ extern const Table polarity_strings{ {{POLARITY_ACTIVE_LOW, "ACTIVE_LOW"}, {POLARITY_ACTIVE_HIGH, "ACTIVE_HIGH"}}}; +#if defined(BAUD_9600) +#undef BAUD_9600 +#endif +#if defined(BAUD_115200) +#undef BAUD_115200 +#endif extern const Table nmea_baud_rate_strings{ - {{BAUD_9600, "BAUD_9600"}, {BAUD_115200, "BAUD_115200"}}}; + {{NMEABaudRate::BAUD_9600, "BAUD_9600"}, + {NMEABaudRate::BAUD_115200, "BAUD_115200"}}}; Table udp_profile_lidar_strings{ { @@ -383,6 +390,11 @@ std::string to_string(AzimuthWindow azimuth_window) { return ss.str(); } +#if defined(VOID) +#define OUSTER_REMOVED_VOID +#pragma push_macro("VOID") +#undef VOID +#endif std::string to_string(ChanFieldType ft) { switch (ft) { case sensor::ChanFieldType::VOID: @@ -411,6 +423,10 @@ std::string to_string(ChanFieldType ft) { return "UNKNOWN"; } } +#if defined(OUSTER_REMOVED_VOID) +#pragma pop_macro("VOID") +#undef OUSTER_REMOVED_VOID +#endif size_t field_type_size(ChanFieldType ft) { switch (ft) { @@ -500,89 +516,8 @@ void check_signal_multiplier(const double signal_multiplier) { } } -data_format parse_data_format(const Json::Value& root) { - const std::vector data_format_required_fields{ - "pixels_per_column", "columns_per_packet", "columns_per_frame"}; - - for (const auto& field : data_format_required_fields) { - if (!root.isMember(field)) { - throw std::runtime_error{ - "Metadata field data_format must include field: " + field}; - } - } - data_format format; - - format.pixels_per_column = root["pixels_per_column"].asInt(); - format.columns_per_packet = root["columns_per_packet"].asInt(); - format.columns_per_frame = root["columns_per_frame"].asInt(); - - if (root.isMember("pixel_shift_by_row")) { - if (root["pixel_shift_by_row"].size() != format.pixels_per_column) { - throw std::runtime_error{"Unexpected number of pixel_shift_by_row"}; - } - - for (const auto& v : root["pixel_shift_by_row"]) - format.pixel_shift_by_row.push_back(v.asInt()); - } else { - // DF path - format.pixel_shift_by_row.assign(format.pixels_per_column, 0); - } - - if (root.isMember("column_window")) { - if (root["column_window"].size() != 2) { - throw std::runtime_error{"Unexpected size of column_window tuple"}; - } - format.column_window.first = root["column_window"][0].asInt(); - format.column_window.second = root["column_window"][1].asInt(); - } else { - logger().warn( - "No column window found. Using default column window (full)"); - format.column_window = default_column_window(format.columns_per_frame); - } - - if (root.isMember("udp_profile_lidar")) { - // initializing directly triggers -Wmaybe-uninitialized - // GCC 8.3.1 - optional profile{nullopt}; - profile = - udp_profile_lidar_of_string(root["udp_profile_lidar"].asString()); - if (profile) { - format.udp_profile_lidar = profile.value(); - } else { - throw std::runtime_error{"Unexpected udp lidar profile: " + - root["udp_profile_lidar"].asString()}; - } - } else { - logger().warn("No lidar profile found. Using LEGACY lidar profile"); - format.udp_profile_lidar = PROFILE_LIDAR_LEGACY; - } - - if (root.isMember("udp_profile_imu")) { - optional profile{nullopt}; - profile = udp_profile_imu_of_string(root["udp_profile_imu"].asString()); - if (profile) { - format.udp_profile_imu = profile.value(); - } else { - throw std::runtime_error{"Unexpected udp imu profile"}; - } - } else { - logger().warn("No imu profile found. Using LEGACY imu profile"); - format.udp_profile_imu = PROFILE_IMU_LEGACY; - } - - if (root.isMember("fps")) { - format.fps = root["fps"].asInt(); - } else { - // logger().warn("No fps found. Trying to use one from lidar mode (or - // 0)"); - format.fps = 0; - } - - return format; -} - -Json::Value cal_to_json(const calibration_status& cal) { - Json::Value root{Json::objectValue}; +jsoncons::json cal_to_json(const calibration_status& cal) { + jsoncons::json root; if (cal.reflectivity_status) { root["reflectivity"]["valid"] = cal.reflectivity_status.value(); @@ -595,225 +530,49 @@ Json::Value cal_to_json(const calibration_status& cal) { } std::string to_string(const calibration_status& cal) { - Json::Value root = cal_to_json(cal); - - Json::StreamWriterBuilder builder; - builder["enableYAMLCompatibility"] = true; - builder["precision"] = 6; - builder["indentation"] = " "; - return Json::writeString(builder, root); + auto root = cal_to_json(cal); + std::string out; + root.dump(out); + return out; } -sensor_config parse_config(const Json::Value& root) { - sensor_config config{}; - - if (!root["udp_dest"].empty()) { - config.udp_dest = root["udp_dest"].asString(); - } else if (!root["udp_ip"].empty()) { - // deprecated params from FW 1.13. Set FW 2.0+ configs appropriately - config.udp_dest = root["udp_ip"].asString(); - logger().warn( - "Please note that udp_ip has been deprecated in favor " - "of udp_dest. Will set udp_dest appropriately..."); - } - - if (!root["udp_port_lidar"].empty()) - config.udp_port_lidar = root["udp_port_lidar"].asInt(); - if (!root["udp_port_imu"].empty()) - config.udp_port_imu = root["udp_port_imu"].asInt(); - if (!root["timestamp_mode"].empty()) - config.timestamp_mode = - timestamp_mode_of_string(root["timestamp_mode"].asString()); - if (!root["lidar_mode"].empty()) - config.lidar_mode = lidar_mode_of_string(root["lidar_mode"].asString()); - - if (!root["azimuth_window"].empty()) - config.azimuth_window = - std::make_pair(root["azimuth_window"][0].asInt(), - root["azimuth_window"][1].asInt()); - - if (!root["signal_multiplier"].empty()) { - double signal_multiplier = root["signal_multiplier"].asDouble(); - check_signal_multiplier(signal_multiplier); - config.signal_multiplier = signal_multiplier; - } - - if (!root["operating_mode"].empty()) { - auto operating_mode = - operating_mode_of_string(root["operating_mode"].asString()); - if (operating_mode) { - config.operating_mode = operating_mode; - } else { - throw std::runtime_error{"Unexpected Operating Mode"}; - } - } else if (!root["auto_start_flag"].empty()) { - logger().warn( - "Please note that auto_start_flag has been deprecated in favor " - "of operating_mode. Will set operating_mode appropriately..."); - config.operating_mode = root["auto_start_flag"].asBool() - ? sensor::OPERATING_NORMAL - : sensor::OPERATING_STANDBY; - } +jsoncons::json config_to_json(const sensor_config& config) { + jsoncons::json root; - if (!root["multipurpose_io_mode"].empty()) { - auto multipurpose_io_mode = multipurpose_io_mode_of_string( - root["multipurpose_io_mode"].asString()); - if (multipurpose_io_mode) { - config.multipurpose_io_mode = multipurpose_io_mode; - } else { - throw std::runtime_error{"Unexpected Multipurpose IO Mode"}; - } - } - if (!root["sync_pulse_out_angle"].empty()) - config.sync_pulse_out_angle = root["sync_pulse_out_angle"].asInt(); - if (!root["sync_pulse_out_pulse_width"].empty()) - config.sync_pulse_out_pulse_width = - root["sync_pulse_out_pulse_width"].asInt(); - - if (!root["nmea_in_polarity"].empty()) { - auto nmea_in_polarity = - polarity_of_string(root["nmea_in_polarity"].asString()); - if (nmea_in_polarity) { - config.nmea_in_polarity = nmea_in_polarity; - } else { - throw std::runtime_error{"Unexpected NMEA Input Polarity"}; - } - } - if (!root["nmea_baud_rate"].empty()) { - auto nmea_baud_rate = - nmea_baud_rate_of_string(root["nmea_baud_rate"].asString()); - if (nmea_baud_rate) { - config.nmea_baud_rate = nmea_baud_rate; - } else { - throw std::runtime_error{"Unexpected NMEA Baud Rate"}; - } - } - if (!root["nmea_ignore_valid_char"].empty()) - config.nmea_ignore_valid_char = root["nmea_ignore_valid_char"].asBool(); - if (!root["nmea_leap_seconds"].empty()) - config.nmea_leap_seconds = root["nmea_leap_seconds"].asInt(); - - if (!root["sync_pulse_in_polarity"].empty()) { - auto sync_pulse_in_polarity = - polarity_of_string(root["sync_pulse_in_polarity"].asString()); - if (sync_pulse_in_polarity) { - config.sync_pulse_in_polarity = sync_pulse_in_polarity; - } else { - throw std::runtime_error{"Unexpected Sync Pulse Input Polarity"}; - } + if (config.udp_dest) { + root["udp_dest"] = config.udp_dest.value(); } - if (!root["sync_pulse_out_polarity"].empty()) { - auto sync_pulse_out_polarity = - polarity_of_string(root["sync_pulse_out_polarity"].asString()); - if (sync_pulse_out_polarity) { - config.sync_pulse_out_polarity = sync_pulse_out_polarity; - } else { - throw std::runtime_error{"Unexpected Sync Pulse Output Polarity"}; - } - } - if (!root["sync_pulse_out_frequency"].empty()) - config.sync_pulse_out_frequency = - root["sync_pulse_out_frequency"].asInt(); - - if (!root["phase_lock_enable"].empty()) - config.phase_lock_enable = - root["phase_lock_enable"].asString() == "true" ? true : false; - - if (!root["phase_lock_offset"].empty()) - config.phase_lock_offset = root["phase_lock_offset"].asInt(); - - if (!root["columns_per_packet"].empty()) - config.columns_per_packet = root["columns_per_packet"].asInt(); - - // udp_profiles - if (!root["udp_profile_lidar"].empty()) - config.udp_profile_lidar = - udp_profile_lidar_of_string(root["udp_profile_lidar"].asString()); - if (!root["udp_profile_imu"].empty()) - config.udp_profile_imu = - udp_profile_imu_of_string(root["udp_profile_imu"].asString()); - - // Firmware 3.1 and higher options - if (!root["gyro_fsr"].empty()) { - auto gyro_fsr = full_scale_range_of_string(root["gyro_fsr"].asString()); - if (gyro_fsr) { - config.gyro_fsr = gyro_fsr; - } else { - throw std::runtime_error{"Unexpected Gyro FSR"}; - } - } - - if (!root["accel_fsr"].empty()) { - auto accel_fsr = - full_scale_range_of_string(root["accel_fsr"].asString()); - if (accel_fsr) { - config.accel_fsr = accel_fsr; - } else { - throw std::runtime_error{"Unexpected Accel FSR"}; - } + if (config.udp_port_lidar) { + root["udp_port_lidar"] = config.udp_port_lidar.value(); } - if (!root["return_order"].empty()) { - auto return_order = - return_order_of_string(root["return_order"].asString()); - if (return_order) { - config.return_order = return_order; - } else { - throw std::runtime_error{"Unexpected Return Order"}; - } + if (config.udp_port_imu) { + root["udp_port_imu"] = config.udp_port_imu.value(); } - if (!root["min_range_threshold_cm"].empty()) - config.min_range_threshold_cm = root["min_range_threshold_cm"].asInt(); - - return config; -} - -sensor_config parse_config(const std::string& config) { - Json::Value root{}; - Json::CharReaderBuilder builder{}; - std::string errors{}; - std::stringstream ss{config}; - - if (config.size()) { - if (!Json::parseFromStream(builder, ss, &root, &errors)) { - throw std::runtime_error{errors}; - } - } - - return parse_config(root); -} - -Json::Value config_to_json(const sensor_config& config) { - Json::Value root{Json::objectValue}; - - if (config.udp_dest) root["udp_dest"] = config.udp_dest.value(); - - if (config.udp_port_lidar) - root["udp_port_lidar"] = config.udp_port_lidar.value(); - - if (config.udp_port_imu) root["udp_port_imu"] = config.udp_port_imu.value(); - - if (config.timestamp_mode) + if (config.timestamp_mode) { root["timestamp_mode"] = to_string(config.timestamp_mode.value()); + } - if (config.lidar_mode) + if (config.lidar_mode) { root["lidar_mode"] = to_string(config.lidar_mode.value()); + } if (config.operating_mode) { auto mode = config.operating_mode.value(); root["operating_mode"] = to_string(mode); } - if (config.multipurpose_io_mode) + if (config.multipurpose_io_mode) { root["multipurpose_io_mode"] = to_string(config.multipurpose_io_mode.value()); + } if (config.azimuth_window) { - Json::Value azimuth_window; - azimuth_window.append(config.azimuth_window.value().first); - azimuth_window.append(config.azimuth_window.value().second); + jsoncons::json azimuth_window(jsoncons::json_array_arg); + azimuth_window.emplace_back(config.azimuth_window.value().first); + azimuth_window.emplace_back(config.azimuth_window.value().second); root["azimuth_window"] = azimuth_window; } @@ -823,136 +582,97 @@ Json::Value config_to_json(const sensor_config& config) { (config.signal_multiplier == 0.5)) { root["signal_multiplier"] = config.signal_multiplier.value(); } else { - // jsoncpp < 1.7.7 strips 0s off of exact representation - // so 2.0 becomes 2 - // Work around by always casting to int before writing out to json int signal_multiplier_int = int(config.signal_multiplier.value()); root["signal_multiplier"] = signal_multiplier_int; } } - if (config.sync_pulse_out_angle) + if (config.sync_pulse_out_angle) { root["sync_pulse_out_angle"] = config.sync_pulse_out_angle.value(); + } - if (config.sync_pulse_out_pulse_width) + if (config.sync_pulse_out_pulse_width) { root["sync_pulse_out_pulse_width"] = config.sync_pulse_out_pulse_width.value(); + } - if (config.nmea_in_polarity) + if (config.nmea_in_polarity) { root["nmea_in_polarity"] = to_string(config.nmea_in_polarity.value()); + } - if (config.nmea_baud_rate) + if (config.nmea_baud_rate) { root["nmea_baud_rate"] = to_string(config.nmea_baud_rate.value()); + } - if (config.nmea_ignore_valid_char) + if (config.nmea_ignore_valid_char) { root["nmea_ignore_valid_char"] = config.nmea_ignore_valid_char.value() ? 1 : 0; + } - if (config.nmea_leap_seconds) + if (config.nmea_leap_seconds) { root["nmea_leap_seconds"] = config.nmea_leap_seconds.value(); + } - if (config.sync_pulse_in_polarity) + if (config.sync_pulse_in_polarity) { root["sync_pulse_in_polarity"] = to_string(config.sync_pulse_in_polarity.value()); + } - if (config.sync_pulse_out_polarity) + if (config.sync_pulse_out_polarity) { root["sync_pulse_out_polarity"] = to_string(config.sync_pulse_out_polarity.value()); + } - if (config.sync_pulse_out_frequency) + if (config.sync_pulse_out_frequency) { root["sync_pulse_out_frequency"] = config.sync_pulse_out_frequency.value(); + } - if (config.phase_lock_enable) + if (config.phase_lock_enable) { root["phase_lock_enable"] = config.phase_lock_enable.value(); + } - if (config.phase_lock_offset) + if (config.phase_lock_offset) { root["phase_lock_offset"] = config.phase_lock_offset.value(); + } - if (config.columns_per_packet) + if (config.columns_per_packet) { root["columns_per_packet"] = config.columns_per_packet.value(); + } - if (config.udp_profile_lidar) + if (config.udp_profile_lidar) { root["udp_profile_lidar"] = to_string(config.udp_profile_lidar.value()); + } - if (config.udp_profile_imu) + if (config.udp_profile_imu) { root["udp_profile_imu"] = to_string(config.udp_profile_imu.value()); + } // Firmware 3.1 and higher options - if (config.gyro_fsr) root["gyro_fsr"] = to_string(config.gyro_fsr.value()); + if (config.gyro_fsr) { + root["gyro_fsr"] = to_string(config.gyro_fsr.value()); + } - if (config.accel_fsr) + if (config.accel_fsr) { root["accel_fsr"] = to_string(config.accel_fsr.value()); + } - if (config.min_range_threshold_cm) + if (config.min_range_threshold_cm) { root["min_range_threshold_cm"] = config.min_range_threshold_cm.value(); + } - if (config.return_order) + if (config.return_order) { root["return_order"] = to_string(config.return_order.value()); + } return root; } std::string to_string(const sensor_config& config) { - Json::Value root = config_to_json(config); - - Json::StreamWriterBuilder builder; - builder["enableYAMLCompatibility"] = true; - builder["precision"] = 6; - builder["indentation"] = " "; - return Json::writeString(builder, root); -} - -PacketValidationFailure validate_packet(const sensor_info& info, - const packet_format& format, - const uint8_t* buf, uint64_t buf_size, - PacketValidationType type) { - // Check if we need to guess the type - if (type == PacketValidationType::GUESS_TYPE) { - if (buf_size == format.imu_packet_size) { - type = PacketValidationType::IMU; - } else { - type = PacketValidationType::LIDAR; - } - } - - if (type == PacketValidationType::LIDAR) { - if (buf_size != format.lidar_packet_size) { - return PacketValidationFailure::PACKET_SIZE; - } - - auto init_id = format.init_id(buf); - if (info.init_id != 0 && init_id != 0 && init_id != info.init_id) { - return PacketValidationFailure::ID; - } - - if (info.sn.length() > 0) { - uint64_t p_sn = format.prod_sn(buf); - uint64_t m_sn = std::stoull(info.sn); - if ((p_sn != 0) && (p_sn != m_sn)) { - return PacketValidationFailure::ID; - } - } - return PacketValidationFailure::NONE; - } else if (type == PacketValidationType::IMU) { - if (buf_size != format.imu_packet_size) { - return PacketValidationFailure::PACKET_SIZE; - } - return PacketValidationFailure::NONE; - } - return PacketValidationFailure::NONE; -}; - -PacketValidationFailure LidarPacket::validate(const sensor_info& info, - const packet_format& format) { - return validate_packet(info, format, buf.data(), buf.size(), - PacketValidationType::LIDAR); -} - -PacketValidationFailure ImuPacket::validate(const sensor_info& info, - const packet_format& format) { - return validate_packet(info, format, buf.data(), buf.size(), - PacketValidationType::IMU); + jsoncons::json root = config_to_json(config); + std::string out; + root.dump(out); + return out; } product_info product_info::create_product_info( diff --git a/ouster_client/src/util.cpp b/ouster_client/src/util.cpp deleted file mode 100644 index d7a6aff8..00000000 --- a/ouster_client/src/util.cpp +++ /dev/null @@ -1,81 +0,0 @@ -/** - * Copyright (c) 2023, Ouster, Inc. - * All rights reserved. - */ - -#include "ouster/util.h" - -#include - -namespace ouster { - -void combined_helper(const Json::Value& root_orig, const Json::Value& root_new, - Json::Value& result, std::string changed_str, - std::vector& changed) { - // Iterate over new root - any - for (Json::Value::const_iterator itr = root_new.begin(); - itr != root_new.end(); itr++) { - std::string key = itr.key().asString(); - std::string new_changed_str = - (changed_str == "") ? key : changed_str + "." + key; - if (root_orig.isMember(key) && root_new[key].isObject() && - root_orig[key].isObject()) { - // need to crawl to collect changed_str output - combined_helper(root_orig[key], root_new[key], result[key], - new_changed_str, changed); - } else { - // CASE: root_orig does not have key OR - // CASE: key is leaf OR - // CASE: key is not matched as leaf/object in root_new vs root_orig - - bool change = false; - - // Unfortunately we have to handle the Ints and Doubles because 0 is - // different from 0.0 in output - // TODO - find differnt way so we don't have to do this - if (!root_orig.isMember(key) || root_new[key].isObject()) { - change = true; - } else if ((root_new[key].isString() || root_new[key].isBool()) && - (root_orig[key] != root_new[key])) { - change = true; - } else if (root_new[key].isIntegral() && - (root_orig[key].asInt() != root_new[key].asInt())) { - change = true; - } else if (root_new[key].isDouble() && (root_orig[key].asDouble() != - root_new[key].asDouble())) { - change = true; - } else if (root_new[key].isArray()) { - // NOTE: this does not handle the array of arrays that DF - // currently has - for (size_t i = 0; i < root_new[key].size(); i++) { - if (root_new[key][(int)i].asDouble() != - root_orig[key][(int)i].asDouble()) { - change = true; - continue; - } - } - } - - if (change) { - result[key] = root_new[key]; - changed.push_back(new_changed_str); - } - } - } -} // namespace ouster - -Json::Value combined(const Json::Value& root_orig, const Json::Value& root_new, - std::vector& changed) { - Json::Value result{}; - - // make sure changed is empty to start - changed.clear(); - - // set result equal to root_orig to capture all keys in root_orig - result = root_orig; - - combined_helper(root_orig, root_new, result, "", changed); - return result; -} - -} // namespace ouster diff --git a/ouster_library/CMakeLists.txt b/ouster_library/CMakeLists.txt new file mode 100644 index 00000000..f036c87e --- /dev/null +++ b/ouster_library/CMakeLists.txt @@ -0,0 +1,67 @@ +find_package(Eigen3 REQUIRED) + +function(ouster_library_common _TARGET) + message("Building Library: ${_TARGET}") + target_link_libraries(${_TARGET} + PUBLIC + Eigen3::Eigen) + target_include_directories(${_TARGET} SYSTEM + PUBLIC + $) + get_target_property(CLIENT_INCLUDE_DIRS ouster_client INTERFACE_INCLUDE_DIRECTORIES) + target_include_directories(${_TARGET} + PUBLIC + $ + $ + $) + set_property(TARGET ${_TARGET} PROPERTY POSITION_INDEPENDENT_CODE ON) + set_target_properties(${_TARGET} PROPERTIES CXX_VISIBILITY_PRESET hidden) + target_link_libraries(${_TARGET} PRIVATE ouster_client) + message("Building Library: ${_TARGET}: Adding ouster_client") + if(BUILD_PCAP) + target_link_libraries(${_TARGET} PRIVATE ouster_pcap) + get_target_property(_INCLUDE_DIRS ouster_pcap INTERFACE_INCLUDE_DIRECTORIES) + target_include_directories(${_TARGET} + PUBLIC + $) + message("Building Library: ${_TARGET}: Adding ouster_pcap") + endif() + if(BUILD_OSF) + target_link_libraries(${_TARGET} PRIVATE ouster_osf) + get_target_property(_INCLUDE_DIRS ouster_osf INTERFACE_INCLUDE_DIRECTORIES) + target_include_directories(${_TARGET} + PUBLIC + $) + message("Building Library: ${_TARGET}: Adding ouster_osf") + endif() + if(BUILD_VIZ) + target_link_libraries(${_TARGET} PRIVATE ouster_viz) + get_target_property(_INCLUDE_DIRS ouster_viz INTERFACE_INCLUDE_DIRECTORIES) + target_include_directories(${_TARGET} + PUBLIC + $) + message("Building Library: ${_TARGET}: Adding ouster_viz") + endif() + + add_library(OusterSDK::${_TARGET} ALIAS ${_TARGET}) +endfunction() + +set(OUSTER_LIBRARY_OBJECTS "") +if(BUILD_SHARED_LIBRARY) + # FIGURE OUT HOW TO SKIP VIZ OSF AND PCAP HERE + add_library(shared_library SHARED + $ + $ + $ + $) + ouster_library_common(shared_library) + target_compile_definitions(shared_library PRIVATE BUILD_SHARED_LIBS_EXPORT) +endif() + +if(BUILD_SHARED_LIBRARY) + install(TARGETS shared_library + LIBRARY DESTINATION lib + ARCHIVE DESTINATION lib + RUNTIME DESTINATION lib + INCLUDES DESTINATION include) +endif() diff --git a/ouster_library/empty.cpp b/ouster_library/empty.cpp new file mode 100644 index 00000000..e69de29b diff --git a/ouster_osf/CMakeLists.txt b/ouster_osf/CMakeLists.txt index 564f870d..f422a4af 100644 --- a/ouster_osf/CMakeLists.txt +++ b/ouster_osf/CMakeLists.txt @@ -10,8 +10,7 @@ option(OUSTER_OSF_NO_THREADING "Don't use threads, useful for WASM targets" OFF) find_package(ZLIB REQUIRED) find_package(PNG REQUIRED) find_package(Eigen3 REQUIRED) -find_package(jsoncpp REQUIRED) -find_package(spdlog REQUIRED) +find_package(Threads) include(Coverage) # TODO: Extract to a separate FindFlatbuffers cmake file @@ -20,20 +19,11 @@ include(Coverage) # because it started failing out of blue :idk:scream: will see. if(NOT CONAN_EXPORTED) find_package(Flatbuffers REQUIRED) - if(NOT DEFINED FLATBUFFERS_FLATC_EXECUTABLE) - set(FLATBUFFERS_FLATC_EXECUTABLE flatbuffers::flatc) - endif() - message(STATUS "Flatbuffers found: ${Flatbuffers_DIR}" ) else() find_package(flatbuffers REQUIRED) - if(WIN32) - set(FLATBUFFERS_FLATC_EXECUTABLE flatc.exe) - else() - set(FLATBUFFERS_FLATC_EXECUTABLE flatc) - endif() - message(STATUS "flatbuffers found: ${Flatbuffers_DIR}" ) endif() + # TODO[pb]: Move to flatbuffers 2.0 and check do we still need this??? # Using this link lib search method so to get shared .so library and not # static in Debian systems. But it correctly find static lib in vcpkg/manylinux @@ -100,13 +90,21 @@ add_library(ouster_osf STATIC src/compat_ops.cpp src/file.cpp src/reader.cpp src/operations.cpp - src/json_utils.cpp src/fb_utils.cpp src/writer.cpp + src/async_writer.cpp + src/png_lidarscan_encoder.cpp ) - +set_property(TARGET ouster_osf PROPERTY POSITION_INDEPENDENT_CODE ON) +if(BUILD_SHARED_LIBRARY) + set_target_properties(ouster_osf PROPERTIES CXX_VISIBILITY_PRESET hidden) +endif() CodeCoverageFunctionality(ouster_osf) +if(BUILD_SHARED_LIBRARY) + target_compile_definitions(ouster_osf PRIVATE BUILD_SHARED_LIBS_EXPORT) +endif() + if (OUSTER_OSF_NO_MMAP) target_compile_definitions(ouster_osf PRIVATE OUSTER_OSF_NO_MMAP) endif() @@ -116,14 +114,21 @@ if (OUSTER_OSF_NO_THREADING) endif() # Include Flatbuffers generated C++ headers +target_include_directories(ouster_osf INTERFACE ${FLATBUFFERS_INCLUDE_DIR}) + target_include_directories(ouster_osf PUBLIC $ $ + PRIVATE + $ ) target_link_libraries(ouster_osf PUBLIC - OusterSDK::ouster_client OusterSDK::ouster_pcap PNG::PNG - flatbuffers::flatbuffers ZLIB::ZLIB jsoncpp_lib + OusterSDK::ouster_client + OusterSDK::ouster_pcap + PRIVATE + PNG::PNG + flatbuffers::flatbuffers ZLIB::ZLIB ) target_include_directories(ouster_osf PUBLIC $ @@ -132,7 +137,6 @@ target_include_directories(ouster_osf PUBLIC add_dependencies(ouster_osf cpp_gen) add_library(OusterSDK::ouster_osf ALIAS ouster_osf) - # Check if ouster_client compiled with -mavx2 option and add those to ouster_osf # If we are not matching -mavx2 compile flag Eigen lib functions might crash with # SegFault and double free/memory corruption errors... diff --git a/ouster_osf/include/ouster/osf/async_writer.h b/ouster_osf/include/ouster/osf/async_writer.h new file mode 100644 index 00000000..65783476 --- /dev/null +++ b/ouster_osf/include/ouster/osf/async_writer.h @@ -0,0 +1,195 @@ +/** + * Copyright (c) 2024, Ouster, Inc. + * All rights reserved. + */ +#pragma once + +#include +#include +#include +#include +#include + +#include "ouster/impl/threadsafe_queue.h" +#include "ouster/osf/osf_encoder.h" +#include "ouster/osf/writer.h" + +namespace ouster { +namespace osf { + +/** + * %OSF AsyncWriter wraps osf::Writer so that saving occurs in a background + * thread. Calls to save() return a std::future instead of void to enable + * propagating exceptions from the save thread. + */ +class OUSTER_API_CLASS AsyncWriter { + public: + /** + * @param[in] filename The filename to output to. + * @param[in] info The sensor info vector to use for a multi stream OSF + * file. + * @param[in] fields_to_write The fields from scans to actually save into + * the OSF. If not provided uses the fields from + * the first saved lidar scan for this sensor. + * This parameter is optional. + * @param[in] chunk_size The chunksize to use for the OSF file, this + * parameter is optional. + * @param[in] encoder An optional Encoder instance for configuring how the + * Writer should encode the OSF. + */ + OUSTER_API_FUNCTION + AsyncWriter(const std::string& filename, + const std::vector& info, + const std::vector& fields_to_write = + std::vector(), + uint32_t chunk_size = 0, + std::shared_ptr encoder = nullptr); + + /** + * Save a single scan to the specified stream_index in an OSF + * file. + * + * The concept of the stream_index is related to the sensor_info vector. + * Consider the following: + @code{.cpp} + sensor_info info1; // The first sensor in this OSF file + sensor_info info2; // The second sensor in this OSF file + sensor_info info3; // The third sensor in this OSF file + + Writer output = Writer(filename, {info1, info2, info3}); + + LidarScan scan = RANDOM_SCAN_HERE; + + // To save the LidarScan of scan to the first sensor, you would do the + // following + output.save(0, scan); + + // To save the LidarScan of scan to the second sensor, you would do the + // following + output.save(1, scan); + + // To save the LidarScan of scan to the third sensor, you would do the + // following + output.save(2, scan); + @endcode + * + * @throws std::logic_error Will throw exception on writer being closed. + * @throws std::logic_error ///< Will throw exception on + * ///< out of bound stream_index. + * + * @param[in] stream_index The index of the corrosponding sensor_info to + * use. + * @param[in] scan The scan to save. + * @return a future, which can propagate exceptions that may have occurred + * in the background from the save thread. + */ + OUSTER_API_FUNCTION + std::future save(uint32_t stream_index, const LidarScan& scan); + + /** + * Save a single scan with the specified timestamp to the + * specified stream_index in an OSF file. + * + * @throws std::logic_error Will throw exception on writer being closed. + * @throws std::logic_error ///< Will throw exception on + * ///< out of bound stream_index. + * + * @param[in] stream_index The index of the corrosponding sensor_info to + * use. + * @param[in] scan The scan to save. + * @param[in] timestamp Receive timestamp to index this scan with. + * @return a future, which can propagate exceptions that may have occurred + * in the background from the save thread. + */ + OUSTER_API_FUNCTION + std::future save(uint32_t stream_index, const LidarScan& scan, + ouster::osf::ts_t timestamp); + + /** + * Save multiple scans to the OSF file. + * + * The concept of the stream_index is related to the sensor_info vector. + * Consider the following: + @code{.cpp} + sensor_info info1; // The first sensor in this OSF file + sensor_info info2; // The second sensor in this OSF file + sensor_info info3; // The third sensor in this OSF file + + Writer output = Writer(filename, {info1, info2, info3}); + + LidarScan sensor1_scan = RANDOM_SCAN_HERE; + LidarScan sensor2_scan = RANDOM_SCAN_HERE; + LidarScan sensor3_scan = RANDOM_SCAN_HERE; + + // To save the scans matched appropriately to their sensors, you would do + // the following + output.save({sensor1_scan, sensor2_scan, sensor3_scan}); + @endcode + * + * + * @throws std::logic_error Will throw exception on writer being closed + * + * @param[in] scans The vector of scans to save. + * @return a vector of futures, which can propagate exceptions that may have + * occurred in the background from the save thread. + */ + OUSTER_API_FUNCTION + std::vector> save(const std::vector& scans); + + /** + * Finish file with a proper metadata object, and header. + * This method blocks until all remaining tasks generated by save() have + * been finalized. + */ + OUSTER_API_FUNCTION + void close(); + + private: + /** + * Encapsulates everything that's needed to encode and save the provided + * lidar scan into the OSF. + * + */ + struct OUSTER_API_IGNORE LidarScanMessage { + int stream_index_; + ouster::osf::ts_t timestamp_; + ouster::LidarScan lidar_scan_; + std::promise promise_; + + // Note - this constructor deliberately copies the LidarScan because it + // could be modified in a different thread. + OUSTER_API_IGNORE + LidarScanMessage(int stream_index, const ouster::osf::ts_t& timestamp, + const ouster::LidarScan& lidar_scan, + std::promise& promise) + : stream_index_(stream_index), + timestamp_(timestamp), + lidar_scan_(lidar_scan), + promise_(std::move(promise)) {} + LidarScanMessage(const LidarScanMessage&) = delete; + OUSTER_API_IGNORE + LidarScanMessage(LidarScanMessage&&) = default; + }; + + Writer writer_; + /** + * Internal job queue, used to keep the save function from blocking the + * calling thread for the duration of encoding. + */ + ThreadsafeQueue save_queue_; + std::thread save_thread_; + std::mutex stream_mutex_; + + /** + * A runnable used to handle writes in the thread 'save_thread_'. + */ + void save_thread_method(); + + /** + * Exception propagated from the save thread. + */ + std::exception_ptr save_exception_; +}; + +} // namespace osf +} // namespace ouster diff --git a/ouster_osf/include/ouster/osf/basics.h b/ouster_osf/include/ouster/osf/basics.h index b3a8205a..e4416ff5 100644 --- a/ouster_osf/include/ouster/osf/basics.h +++ b/ouster_osf/include/ouster/osf/basics.h @@ -13,6 +13,7 @@ #include "metadata_generated.h" #include "ouster/lidar_scan.h" #include "ouster/types.h" +#include "ouster/visibility.h" // OSF basic types for LidarSensor and LidarScan/Imu Streams #include "os_sensor/common_generated.h" @@ -63,6 +64,7 @@ enum ChunksLayout { * @param[in] chunks_layout The data to get the string representation format * @return The string representation */ +OUSTER_API_FUNCTION std::string to_string(ChunksLayout chunks_layout); /** @@ -71,6 +73,7 @@ std::string to_string(ChunksLayout chunks_layout); * @param[in] s The String Representation of ChunksLayout * @return The corrosponding ChunksLayout object */ +OUSTER_API_FUNCTION ChunksLayout chunks_layout_of_string(const std::string& s); // stable common types mapped to ouster::osf @@ -94,6 +97,7 @@ static constexpr uint32_t FLATBUFFERS_PREFIX_LENGTH = 4; * @param[in] status The data to get the string representation format * @return The string representation */ +OUSTER_API_FUNCTION std::string to_string(const HEADER_STATUS status); /** @@ -104,6 +108,7 @@ std::string to_string(const HEADER_STATUS status); * @param[in] max_show_count The number of bytes to dump. This arg is optional. * @return The string representation */ +OUSTER_API_FUNCTION std::string to_string(const uint8_t* buf, const size_t count, const size_t max_show_count = 0); @@ -114,6 +119,7 @@ std::string to_string(const uint8_t* buf, const size_t count, * @param[in] filename The file to read. * @return The text of the file specified. */ +OUSTER_API_FUNCTION std::string read_text_file(const std::string& filename); /** @@ -122,6 +128,7 @@ std::string read_text_file(const std::string& filename); * @param[in] buf Pointer to Flatbuffers buffer stared with prefixed size * @return the size recovered from the stored prefix size */ +OUSTER_API_FUNCTION uint32_t get_prefixed_size(const uint8_t* buf); /** @@ -130,6 +137,7 @@ uint32_t get_prefixed_size(const uint8_t* buf); * @param[in] buf Pointer to Flatbuffers buffer stared with prefixed size * @return the calculated size of the block */ +OUSTER_API_FUNCTION uint32_t get_block_size(const uint8_t* buf); /** @@ -144,6 +152,7 @@ uint32_t get_block_size(const uint8_t* buf); * if first prefixed size bytes are broken. * @return true if CRC field is correct, false otherwise */ +OUSTER_API_FUNCTION bool check_prefixed_size_block_crc( const uint8_t* buf, const uint32_t max_size = std::numeric_limits::max()); diff --git a/ouster_osf/include/ouster/osf/crc32.h b/ouster_osf/include/ouster/osf/crc32.h index 45367b03..715ce6e8 100644 --- a/ouster_osf/include/ouster/osf/crc32.h +++ b/ouster_osf/include/ouster/osf/crc32.h @@ -12,6 +12,8 @@ #include +#include "ouster/visibility.h" + namespace ouster { namespace osf { @@ -31,6 +33,7 @@ const uint32_t CRC_BYTES_SIZE = 4; * @param[in] size Size of the buffer in bytes. * @return CRC32 value */ +OUSTER_API_FUNCTION uint32_t crc32(const uint8_t* buf, uint32_t size); /** @@ -44,6 +47,7 @@ uint32_t crc32(const uint8_t* buf, uint32_t size); * @param[in] size Size of the buffer in bytes. * @return CRC32 value */ +OUSTER_API_FUNCTION uint32_t crc32(uint32_t initial_crc, const uint8_t* buf, uint32_t size); } // namespace osf diff --git a/ouster_osf/include/ouster/osf/file.h b/ouster_osf/include/ouster/osf/file.h index ca6aab21..d4d9503a 100644 --- a/ouster_osf/include/ouster/osf/file.h +++ b/ouster_osf/include/ouster/osf/file.h @@ -12,6 +12,7 @@ #include #include "ouster/osf/basics.h" +#include "ouster/visibility.h" namespace ouster { namespace osf { @@ -41,11 +42,12 @@ using ChunkBuffer = std::vector; * Interface to abstract the way of how we handle file system read/write * operations. */ -class OsfFile { +class OUSTER_API_CLASS OsfFile { public: /** * Default constructor, sets most data to nullptr and 0. */ + OUSTER_API_FUNCTION explicit OsfFile(); /** @@ -55,12 +57,14 @@ class OsfFile { * @param[in] filename The OSF file to open * @param[in] mode The mode to open the file in, this argument is optional. */ + OUSTER_API_FUNCTION explicit OsfFile(const std::string& filename, OpenMode mode = OpenMode::READ); /** * Cleans up any filebuffers/memory mapping. */ + OUSTER_API_FUNCTION ~OsfFile(); // Header Info @@ -70,6 +74,7 @@ class OsfFile { * * @return The size of the OSF file in bytes. */ + OUSTER_API_FUNCTION uint64_t size() const; /** @@ -77,6 +82,7 @@ class OsfFile { * * @return The filename of the open OSF file. */ + OUSTER_API_FUNCTION std::string filename() const; /** @@ -84,6 +90,7 @@ class OsfFile { * * @return The version of the OSF file. */ + OUSTER_API_FUNCTION OSF_VERSION version(); /** @@ -94,6 +101,7 @@ class OsfFile { * * @return Offset to the metadata in bytes */ + OUSTER_API_FUNCTION uint64_t metadata_offset(); /** @@ -104,6 +112,7 @@ class OsfFile { * * @return Offset to the chunks in bytes */ + OUSTER_API_FUNCTION uint64_t chunks_offset(); /** @@ -111,6 +120,7 @@ class OsfFile { * * @return If the header, session, and file_info blocks are valid. */ + OUSTER_API_FUNCTION bool valid(); /** @@ -119,6 +129,7 @@ class OsfFile { * * @return If the OSF file is good or not. */ + OUSTER_API_FUNCTION bool good() const; // Convenience operators @@ -129,6 +140,7 @@ class OsfFile { * * @return If the OSF file is good or not, negated. */ + OUSTER_API_FUNCTION bool operator!() const; /** @@ -138,6 +150,7 @@ class OsfFile { * * @return If the OSF file is good or not. */ + OUSTER_API_FUNCTION explicit operator bool() const; /** @@ -145,6 +158,7 @@ class OsfFile { * * @return The current offset in the OSF file. */ + OUSTER_API_FUNCTION uint64_t offset() const; /** @@ -157,6 +171,7 @@ class OsfFile { * @param[in] pos position in the file * @return A reference to `this` object. */ + OUSTER_API_FUNCTION OsfFile& seek(uint64_t pos); /** @@ -173,6 +188,7 @@ class OsfFile { * @param[in] count The number of bytes to write to buf. * @return A reference to `this` object. */ + OUSTER_API_FUNCTION OsfFile& read(uint8_t* buf, const uint64_t count); /** @@ -180,6 +196,7 @@ class OsfFile { * * @return Is the OSF file memory mapped or not. */ + OUSTER_API_FUNCTION bool is_memory_mapped() const; /** @@ -194,6 +211,7 @@ class OsfFile { * argument is optional. * @return The pointer to the OSF file. */ + OUSTER_API_FUNCTION const uint8_t* buf(const uint64_t offset = 0) const; /** @@ -203,6 +221,7 @@ class OsfFile { * and Reader. * @sa ouster::osf::MessageRef, ouster::osf::Reader */ + OUSTER_API_FUNCTION void close(); /** @@ -210,17 +229,20 @@ class OsfFile { * * @return The string representation of OsfFile */ + OUSTER_API_FUNCTION std::string to_string(); /** * Copy policy: * Don't allow the copying of the file handler */ + OUSTER_API_FUNCTION OsfFile(const OsfFile&) = delete; /** * @copydoc OsfFile::OsfFile(const OsfFile&) */ + OUSTER_API_FUNCTION OsfFile& operator=(const OsfFile&) = delete; /** @@ -230,11 +252,13 @@ class OsfFile { * * @param[in] other The OSF file to move */ + OUSTER_API_FUNCTION OsfFile(OsfFile&& other); /** * @copydoc OsfFile::OsfFile(OsfFile&& other) */ + OUSTER_API_FUNCTION OsfFile& operator=(OsfFile&& other); /** @@ -245,6 +269,7 @@ class OsfFile { * @param[in] offset The offset to read the chunk from. * @return Shared pointer to the chunk. nullptr if osf file is bad */ + OUSTER_API_FUNCTION std::shared_ptr read_chunk(uint64_t offset); /** @@ -252,6 +277,7 @@ class OsfFile { * * @return Pointer to the header chunk. nullptr if filestream is bad. */ + OUSTER_API_FUNCTION uint8_t* get_header_chunk_ptr(); /** @@ -259,6 +285,7 @@ class OsfFile { * * @return Pointer to the metadata chunk. nullptr if filestream is bad. */ + OUSTER_API_FUNCTION uint8_t* get_metadata_chunk_ptr(); private: diff --git a/ouster_osf/include/ouster/osf/layout_streaming.h b/ouster_osf/include/ouster/osf/layout_streaming.h index 9555c871..8c2e2133 100644 --- a/ouster_osf/include/ouster/osf/layout_streaming.h +++ b/ouster_osf/include/ouster/osf/layout_streaming.h @@ -10,6 +10,7 @@ #include "ouster/osf/meta_streaming_info.h" #include "ouster/osf/writer.h" +#include "ouster/visibility.h" namespace ouster { namespace osf { @@ -39,12 +40,13 @@ constexpr uint32_t STREAMING_DEFAULT_CHUNK_SIZE = * possible). However if a single message size is bigger than specified * `chunk_size` it's still recorded. */ -class StreamingLayoutCW : public ChunksWriter { +class OUSTER_API_CLASS StreamingLayoutCW : public ChunksWriter { public: /** * @param[in] writer Writer object for use when writing messages * @param[in] chunk_size The chunk size to use, this arg is optional. */ + OUSTER_API_FUNCTION StreamingLayoutCW(Writer& writer, uint32_t chunk_size = STREAMING_DEFAULT_CHUNK_SIZE); @@ -53,6 +55,7 @@ class StreamingLayoutCW : public ChunksWriter { * * @throws std::logic_error Exception on inconsistent timestamps. */ + OUSTER_API_FUNCTION void save_message(const uint32_t stream_id, const ts_t receive_ts, const ts_t sensor_ts, const std::vector& buf) override; @@ -60,11 +63,13 @@ class StreamingLayoutCW : public ChunksWriter { /** * @copydoc ChunksWriter::finish */ + OUSTER_API_FUNCTION void finish() override; /** * @copydoc ChunksWriter::chunk_size */ + OUSTER_API_FUNCTION uint32_t chunk_size() const override; private: diff --git a/ouster_osf/include/ouster/osf/lidarscan_encoder.h b/ouster_osf/include/ouster/osf/lidarscan_encoder.h new file mode 100644 index 00000000..198da3d6 --- /dev/null +++ b/ouster_osf/include/ouster/osf/lidarscan_encoder.h @@ -0,0 +1,44 @@ +/** + * Copyright (c) 2024, Ouster, Inc. + * All rights reserved. + */ +#pragma once + +#include + +#include "ouster/lidar_scan.h" +#include "ouster/types.h" +#include "ouster/visibility.h" + +namespace ouster { +namespace osf { + +// Encoded single PNG buffer +using ScanChannelData = std::vector; + +// Encoded PNG buffers +using ScanData = std::vector; + +class OUSTER_API_CLASS LidarScanEncoder { + public: + OUSTER_API_FUNCTION + virtual ~LidarScanEncoder() = default; + + private: + // TODO these methods do essentially the same thing and should be + // deduplicated. Standard fields are stored in destaggered form, but this + // should be a detail specific to and hidden by the encoder. + + // This method is for standard destaggered fields. + virtual bool fieldEncode(const LidarScan& lidar_scan, + const ouster::FieldType& field_type, + const std::vector& px_offset, + ScanData& scan_data, size_t scan_idx) const = 0; + + // This method is for custom fields. + virtual ScanChannelData encodeField(const ouster::Field& field) const = 0; + friend class LidarScanStream; +}; + +} // namespace osf +} // namespace ouster diff --git a/ouster_osf/include/ouster/osf/meta_extrinsics.h b/ouster_osf/include/ouster/osf/meta_extrinsics.h index 8f896064..3b28e1a1 100644 --- a/ouster_osf/include/ouster/osf/meta_extrinsics.h +++ b/ouster_osf/include/ouster/osf/meta_extrinsics.h @@ -13,6 +13,7 @@ #include "ouster/osf/metadata.h" #include "ouster/types.h" +#include "ouster/visibility.h" namespace ouster { namespace osf { @@ -26,7 +27,7 @@ namespace osf { * Flat Buffer Reference: * fb/os_sensor/extrinsics.fbs */ -class Extrinsics : public MetadataEntryHelper { +class OUSTER_API_CLASS Extrinsics : public MetadataEntryHelper { public: /** * @param[in] extrinsics ///< The extrinsic matrix to store @@ -39,6 +40,7 @@ class Extrinsics : public MetadataEntryHelper { * ///< system of records or just name the source * ///< originator of the extrinsics information. */ + OUSTER_API_FUNCTION explicit Extrinsics(const mat4d& extrinsics, uint32_t ref_meta_id = 0, const std::string& name = ""); @@ -47,6 +49,7 @@ class Extrinsics : public MetadataEntryHelper { * * @return The eigen extrinsics matrix. */ + OUSTER_API_FUNCTION const mat4d& extrinsics() const; /** @@ -54,6 +57,7 @@ class Extrinsics : public MetadataEntryHelper { * * @return The extrinsics name. */ + OUSTER_API_FUNCTION const std::string& name() const; /** @@ -61,11 +65,13 @@ class Extrinsics : public MetadataEntryHelper { * * @return The reference metadata id. */ + OUSTER_API_FUNCTION uint32_t ref_meta_id() const; /** * @copydoc MetadataEntry::buffer */ + OUSTER_API_FUNCTION std::vector buffer() const final; /** @@ -78,6 +84,7 @@ class Extrinsics : public MetadataEntryHelper { * @param[in] buf The byte vector to construct an Extrinsics object from. * @return The new Extrinsics cast as a MetadataEntry */ + OUSTER_API_FUNCTION static std::unique_ptr from_buffer( const std::vector& buf); @@ -88,6 +95,7 @@ class Extrinsics : public MetadataEntryHelper { * * @return The string representation for the Extrinsics object. */ + OUSTER_API_FUNCTION std::string repr() const override; private: @@ -123,12 +131,13 @@ class Extrinsics : public MetadataEntryHelper { * @ingroup OSFTraitsExtrinsics */ template <> -struct MetadataTraits { +struct OUSTER_API_CLASS MetadataTraits { /** * Return the OSF type string. * * @return The OSF type string "ouster/v1/os_sensor/Extrinsics". */ + OUSTER_API_FUNCTION static const std::string type() { return "ouster/v1/os_sensor/Extrinsics"; } }; diff --git a/ouster_osf/include/ouster/osf/meta_lidar_sensor.h b/ouster_osf/include/ouster/osf/meta_lidar_sensor.h index 698929d1..65ee3820 100644 --- a/ouster_osf/include/ouster/osf/meta_lidar_sensor.h +++ b/ouster_osf/include/ouster/osf/meta_lidar_sensor.h @@ -13,6 +13,7 @@ #include "ouster/osf/metadata.h" #include "ouster/types.h" +#include "ouster/visibility.h" namespace ouster { namespace osf { @@ -26,19 +27,21 @@ namespace osf { * Flat Buffer Reference: * fb/os_sensor/lidar_sensor.fbs */ -class LidarSensor : public MetadataEntryHelper { +class OUSTER_API_CLASS LidarSensor : public MetadataEntryHelper { using sensor_info = ouster::sensor::sensor_info; public: /** * @param[in] si Initialize the LidarSensor with a sensor_info object. */ + OUSTER_API_FUNCTION explicit LidarSensor(const sensor_info& si); /** * @param[in] sensor_metadata Initialize the LidarSensor with a json string * representation of the sensor_info object. */ + OUSTER_API_FUNCTION explicit LidarSensor(const std::string& sensor_metadata); /** @@ -46,6 +49,7 @@ class LidarSensor : public MetadataEntryHelper { * * @return The sensor_info associated with the LidarSensor. */ + OUSTER_API_FUNCTION const sensor_info& info() const; /** @@ -55,11 +59,13 @@ class LidarSensor : public MetadataEntryHelper { * @return ///< The json string representation of the * ///< sensor_info object. */ + OUSTER_API_FUNCTION const std::string& metadata() const; /** * @copydoc MetadataEntry::buffer */ + OUSTER_API_FUNCTION std::vector buffer() const final; /** @@ -72,6 +78,7 @@ class LidarSensor : public MetadataEntryHelper { * @param[in] buf The raw flatbuffer byte vector to initialize from. * @return The new LidarSensor cast as a MetadataEntry */ + OUSTER_API_FUNCTION static std::unique_ptr from_buffer( const std::vector& buf); @@ -82,6 +89,7 @@ class LidarSensor : public MetadataEntryHelper { * * @return The string representation for the LidarSensor object. */ + OUSTER_API_FUNCTION std::string repr() const override; /** @@ -91,6 +99,7 @@ class LidarSensor : public MetadataEntryHelper { * * @copydoc LidarSensor::repr */ + OUSTER_API_FUNCTION std::string to_string() const override; private: @@ -113,12 +122,13 @@ class LidarSensor : public MetadataEntryHelper { * @ingroup OSFTraitsLidarSensor */ template <> -struct MetadataTraits { +struct OUSTER_API_CLASS MetadataTraits { /** * Return the OSF type string. * * @return The OSF type string "ouster/v1/os_sensor/LidarSensor". */ + OUSTER_API_FUNCTION static const std::string type() { return "ouster/v1/os_sensor/LidarSensor"; } diff --git a/ouster_osf/include/ouster/osf/meta_streaming_info.h b/ouster_osf/include/ouster/osf/meta_streaming_info.h index fe651718..47a61689 100644 --- a/ouster_osf/include/ouster/osf/meta_streaming_info.h +++ b/ouster_osf/include/ouster/osf/meta_streaming_info.h @@ -13,6 +13,7 @@ #include "ouster/osf/metadata.h" #include "ouster/types.h" +#include "ouster/visibility.h" namespace ouster { namespace osf { @@ -23,7 +24,7 @@ namespace osf { * Flat Buffer Reference: * fb/streaming/streaming_info.fbs :: ChunkInfo */ -struct ChunkInfo { +struct OUSTER_API_CLASS ChunkInfo { /** * The offset in the flatbuffer where * the chunk is located. @@ -56,7 +57,7 @@ struct ChunkInfo { * Flat Buffer Reference: * fb/streaming/streaming_info.fbs :: StreamStats */ -struct StreamStats { +struct OUSTER_API_CLASS StreamStats { /** * The specific stream the chunk is associated with. * @@ -116,6 +117,7 @@ struct StreamStats { /** * Default constructor, sets everthing to 0. */ + OUSTER_API_FUNCTION StreamStats() = default; /** @@ -127,6 +129,7 @@ struct StreamStats { * @param[in] sensor_ts Add to the sensor timestamps. * @param[in] msg_size Set the average message size to the specified value. */ + OUSTER_API_FUNCTION StreamStats(uint32_t s_id, ts_t receive_ts, ts_t sensor_ts, uint32_t msg_size); @@ -138,6 +141,7 @@ struct StreamStats { * @param[in] sensor_ts Add another sensor timestamp * @param[in] msg_size Add another message size and calculate the average. */ + OUSTER_API_FUNCTION void update(ts_t receive_ts, ts_t sensor_ts, uint32_t msg_size); }; @@ -148,6 +152,7 @@ struct StreamStats { * * @return The string representation for a ChunkInfo object. */ +OUSTER_API_FUNCTION std::string to_string(const ChunkInfo& chunk_info); /** @@ -157,6 +162,7 @@ std::string to_string(const ChunkInfo& chunk_info); * * @return The string representation for a StreamStats object. */ +OUSTER_API_FUNCTION std::string to_string(const StreamStats& stream_stats); /** @@ -168,8 +174,10 @@ std::string to_string(const StreamStats& stream_stats); * Flat Buffer Reference: * fb/streaming/streaming_info.fbs :: StreamingInfo */ -class StreamingInfo : public MetadataEntryHelper { +class OUSTER_API_CLASS StreamingInfo + : public MetadataEntryHelper { public: + OUSTER_API_FUNCTION StreamingInfo() {} /** @@ -182,6 +190,7 @@ class StreamingInfo : public MetadataEntryHelper { * to be used to generate a * stream_id/StreamStats map. */ + OUSTER_API_FUNCTION StreamingInfo( const std::vector>& chunks_info, const std::vector>& stream_stats); @@ -190,6 +199,7 @@ class StreamingInfo : public MetadataEntryHelper { * @param[in] chunks_info ///< Map containing stream_id/ChunkInfo data. * @param[in] stream_stats ///< Map containing stream_id/StreamStats data. */ + OUSTER_API_FUNCTION StreamingInfo(const std::map& chunks_info, const std::map& stream_stats); @@ -198,6 +208,7 @@ class StreamingInfo : public MetadataEntryHelper { * * @return The chunk_info map. stream_id/ChunkInfo data. */ + OUSTER_API_FUNCTION std::map& chunks_info(); /** @@ -205,11 +216,13 @@ class StreamingInfo : public MetadataEntryHelper { * * @return The stream stat map. stream_id/StreamStats data. */ + OUSTER_API_FUNCTION std::map& stream_stats(); /** * @copydoc MetadataEntry::buffer */ + OUSTER_API_FUNCTION std::vector buffer() const override final; /** @@ -222,6 +235,7 @@ class StreamingInfo : public MetadataEntryHelper { * @param[in] buf The raw flatbuffer byte vector to initialize from. * @return The new StreamingInfo cast as a MetadataEntry */ + OUSTER_API_FUNCTION static std::unique_ptr from_buffer( const std::vector& buf); @@ -232,6 +246,7 @@ class StreamingInfo : public MetadataEntryHelper { * * @return The string representation for the LidarSensor object. */ + OUSTER_API_FUNCTION std::string repr() const override; private: @@ -259,12 +274,13 @@ class StreamingInfo : public MetadataEntryHelper { * @ingroup OSFTraitsStreamingInfo */ template <> -struct MetadataTraits { +struct OUSTER_API_CLASS MetadataTraits { /** * Return the OSF type string. * * @return The OSF type string "ouster/v1/streaming/StreamingInfo". */ + OUSTER_API_FUNCTION static const std::string type() { return "ouster/v1/streaming/StreamingInfo"; } diff --git a/ouster_osf/include/ouster/osf/metadata.h b/ouster_osf/include/ouster/osf/metadata.h index 1f9a35f3..fdd15a77 100644 --- a/ouster_osf/include/ouster/osf/metadata.h +++ b/ouster_osf/include/ouster/osf/metadata.h @@ -19,6 +19,7 @@ #include "flatbuffers/flatbuffers.h" #include "ouster/osf/basics.h" +#include "ouster/visibility.h" /// @todo fix api docs in this file /// @todo add equality operators @@ -94,7 +95,7 @@ inline const std::string metadata_type() { * from_buffer(buf, type) function. * */ -class MetadataEntry { +class OUSTER_API_CLASS MetadataEntry { public: /** * Function type to recover metadata object from buffer. @@ -106,6 +107,7 @@ class MetadataEntry { * @return Type of the metadata, used to identify the object type in * serialized OSF and as key in deserialization registry */ + OUSTER_API_FUNCTION virtual std::string type() const = 0; /** @@ -114,6 +116,7 @@ class MetadataEntry { * NOTE: Introduced as a convenience/(HACK?) to simpler reconstruct * and cast dynamic objects from MetadataEntryRef */ + OUSTER_API_FUNCTION virtual std::string static_type() const = 0; /** @@ -122,6 +125,7 @@ class MetadataEntry { * * @return Should return a clone of the current MetadataEntry */ + OUSTER_API_FUNCTION virtual std::unique_ptr clone() const = 0; /** @@ -130,6 +134,7 @@ class MetadataEntry { * * @return The byte vector representation of the metadata. */ + OUSTER_API_FUNCTION virtual std::vector buffer() const = 0; /** @@ -140,6 +145,7 @@ class MetadataEntry { * @param[in] type_str The type string from the derived type. * @return A new object of the derived type cast as a MetadataEntry */ + OUSTER_API_FUNCTION static std::unique_ptr from_buffer( const std::vector& buf, const std::string type_str); @@ -149,6 +155,7 @@ class MetadataEntry { * * @return The string representation for the internal metadata object. */ + OUSTER_API_FUNCTION virtual std::string repr() const; /** @@ -158,6 +165,7 @@ class MetadataEntry { * * @return The string representation of the whole metadata entry. */ + OUSTER_API_FUNCTION virtual std::string to_string() const; /** @@ -166,6 +174,7 @@ class MetadataEntry { * * @param[in] id The unique id to set. */ + OUSTER_API_FUNCTION void setId(uint32_t id); /** @@ -176,6 +185,7 @@ class MetadataEntry { * * @return The unique id of this object. */ + OUSTER_API_FUNCTION uint32_t id() const; /** @@ -220,6 +230,7 @@ class MetadataEntry { * @param[in] fbb The flatbuffer builder to use to make the entry. * @return An offset into a flatbuffer for the new entry. */ + OUSTER_API_FUNCTION flatbuffers::Offset make_entry( flatbuffers::FlatBufferBuilder& fbb) const; @@ -230,8 +241,10 @@ class MetadataEntry { * * @return The static registry used to register metadata types. */ + OUSTER_API_FUNCTION static std::map& get_registry(); + OUSTER_API_FUNCTION virtual ~MetadataEntry() = default; private: @@ -264,6 +277,7 @@ std::shared_ptr metadata_pointer_as( }; /** @internal */ +OUSTER_API_FUNCTION void RegisterMetadata_internal_error_function_(std::string error); /** @@ -438,7 +452,7 @@ class MetadataEntryHelper : public MetadataEntry, * as() OR metadata_pointer_as() - using the * specified derived metadata class. */ -class MetadataEntryRef : public MetadataEntry { +class OUSTER_API_CLASS MetadataEntryRef : public MetadataEntry { public: /** * Creates the metadata reference from Flatbuffers v2::MetadataEntry buffer. @@ -446,6 +460,7 @@ class MetadataEntryRef : public MetadataEntry { * * @param[in] buf The buffer to create the MetadataEntryRef from. */ + OUSTER_API_FUNCTION explicit MetadataEntryRef(const uint8_t* buf); /** @@ -453,11 +468,13 @@ class MetadataEntryRef : public MetadataEntry { * * @return The type of the MetadataEntry. */ + OUSTER_API_FUNCTION std::string type() const override; /** * @copydoc type() */ + OUSTER_API_FUNCTION std::string static_type() const override; /** @@ -465,6 +482,7 @@ class MetadataEntryRef : public MetadataEntry { * * @return The cloned MetadataEntry object. */ + OUSTER_API_FUNCTION std::unique_ptr clone() const override; /** @@ -472,6 +490,7 @@ class MetadataEntryRef : public MetadataEntry { * * @return The raw underlying byte vector. */ + OUSTER_API_FUNCTION std::vector buffer() const final; /** @@ -481,6 +500,7 @@ class MetadataEntryRef : public MetadataEntry { * * @return The reconstructed object. */ + OUSTER_API_FUNCTION std::unique_ptr as_type() const; private: @@ -514,6 +534,7 @@ struct MetadataTraits { * * @return The type string "impl/MetadataEntryRef". */ + OUSTER_API_FUNCTION static const std::string type() { return "impl/MetadataEntryRef"; } }; @@ -525,7 +546,7 @@ struct MetadataTraits { * * Also can serialize itself to Flatbuffers collection of metadata. */ -class MetadataStore { +class OUSTER_API_CLASS MetadataStore { /** * Metadata id to MetadataEntry map. */ @@ -542,11 +563,13 @@ class MetadataStore { * * @return The metadata id of the entry added. */ + OUSTER_API_FUNCTION uint32_t add(MetadataEntry&& entry); /** * @copydoc add(MetadataEntry&& entry) */ + OUSTER_API_FUNCTION uint32_t add(MetadataEntry& entry); /** @@ -611,6 +634,7 @@ class MetadataStore { * @param[in] metadata_id The id to try and return the associated entry. * @return The MetadataEntry. */ + OUSTER_API_FUNCTION std::shared_ptr get(const uint32_t metadata_id) const { auto it = metadata_entries_.find(metadata_id); if (it == metadata_entries_.end()) return nullptr; @@ -642,6 +666,7 @@ class MetadataStore { * * @return The number of MetadataEntry objects. */ + OUSTER_API_FUNCTION size_t size() const; /** @@ -649,6 +674,7 @@ class MetadataStore { * * @return The entire map of MetadataEnty objects. */ + OUSTER_API_FUNCTION const MetadataEntriesMap& entries() const; /** @@ -658,6 +684,7 @@ class MetadataStore { * @param[in] fbb The flatbuffer builder to use. * @return The resulting serialized byte vector. */ + OUSTER_API_FUNCTION std::vector> make_entries(flatbuffers::FlatBufferBuilder& fbb) const; diff --git a/ouster_osf/include/ouster/osf/operations.h b/ouster_osf/include/ouster/osf/operations.h index 12468567..550952d4 100644 --- a/ouster_osf/include/ouster/osf/operations.h +++ b/ouster_osf/include/ouster/osf/operations.h @@ -13,6 +13,7 @@ #include "ouster/osf/basics.h" #include "ouster/osf/metadata.h" #include "ouster/types.h" +#include "ouster/visibility.h" namespace ouster { namespace osf { @@ -25,6 +26,7 @@ namespace osf { * metas) * @return JSON formatted string of the OSF metadata + header */ +OUSTER_API_FUNCTION std::string dump_metadata(const std::string& file, bool full = true); /** @@ -35,6 +37,7 @@ std::string dump_metadata(const std::string& file, bool full = true); * @param[in] with_decoding decode known messages (used to time a * reading + decoding together) */ +OUSTER_API_FUNCTION void parse_and_print(const std::string& file, bool with_decoding = false); /** @@ -44,6 +47,7 @@ void parse_and_print(const std::string& file, bool with_decoding = false); * @param[in] backup_file_name The path to store the metadata blob backup. * @return The number of the bytes written to the backup file. */ +OUSTER_API_FUNCTION int64_t backup_osf_file_metablob(const std::string& osf_file_name, const std::string& backup_file_name); @@ -54,6 +58,7 @@ int64_t backup_osf_file_metablob(const std::string& osf_file_name, * @param[in] backup_file_name The path to the metadata blob backup. * @return The number of the bytes written to the OSF file. */ +OUSTER_API_FUNCTION int64_t restore_osf_file_metablob(const std::string& osf_file_name, const std::string& backup_file_name); @@ -61,9 +66,10 @@ int64_t restore_osf_file_metablob(const std::string& osf_file_name, * Modify an OSF files sensor_info metadata. * * @param[in] file_name The OSF file to modify. - * @param[in] new_metadata The new metadata for the OSF file + * @param[out] new_metadata The new metadata for the OSF file * @return The number of the bytes written to the OSF file. */ +OUSTER_API_FUNCTION int64_t osf_file_modify_metadata( const std::string& file_name, const std::vector& new_metadata); diff --git a/ouster_osf/include/ouster/osf/osf_encoder.h b/ouster_osf/include/ouster/osf/osf_encoder.h new file mode 100644 index 00000000..440e0849 --- /dev/null +++ b/ouster_osf/include/ouster/osf/osf_encoder.h @@ -0,0 +1,36 @@ +/** + * Copyright (c) 2024, Ouster, Inc. + * All rights reserved. + */ +#pragma once + +#include "ouster/osf/lidarscan_encoder.h" +#include "ouster/visibility.h" + +namespace ouster { +namespace osf { + +/** + * @brief used to configure the osf::Writer class. + * + * Right now it only contains a shared ptr to a LidarScanEncoder, + * but in the future it may contain other items to allow parts of the OSF + * encoding to vary independently. + */ +class OUSTER_API_CLASS Encoder { + public: + OUSTER_API_FUNCTION + Encoder(const std::shared_ptr& lidar_scan_encoder) + : lidar_scan_encoder_{lidar_scan_encoder} {} + + OUSTER_API_FUNCTION + LidarScanEncoder& lidar_scan_encoder() const { + return *lidar_scan_encoder_; + } + + private: + std::shared_ptr lidar_scan_encoder_; +}; + +} // namespace osf +} // namespace ouster diff --git a/ouster_osf/include/ouster/osf/png_lidarscan_encoder.h b/ouster_osf/include/ouster/osf/png_lidarscan_encoder.h new file mode 100644 index 00000000..b9b89f0a --- /dev/null +++ b/ouster_osf/include/ouster/osf/png_lidarscan_encoder.h @@ -0,0 +1,191 @@ +/** + * Copyright (c) 2024, Ouster, Inc. + * All rights reserved. + */ +#pragma once + +#include "ouster/lidar_scan.h" +#include "ouster/osf/lidarscan_encoder.h" +#include "ouster/visibility.h" + +namespace ouster { +namespace osf { + +/** + * Effect of png_set_compression(comp level): + * - (no png out): 2s, n/a + * - comp level 1: 39s, 648M (60% speedup vs default, 10% size increase) + * - comp level 2: 38s, 643M + * - comp level 3: 45s, 639M + * - comp level 4: 48s, 590M (47% speedup vs default, <1% size increase) + * - comp level 5: 61s, 589M + * - libpng default: 98s, 586M + * - comp level 9: 328s, 580M + * + * @todo investigate other zlib options + */ +static constexpr int DEFAULT_PNG_OSF_ZLIB_COMPRESSION_LEVEL = 1; + +class OUSTER_API_CLASS PngLidarScanEncoder + : public ouster::osf::LidarScanEncoder { + public: + OUSTER_API_FUNCTION + PngLidarScanEncoder(int compression_amount) + : compression_amount_{compression_amount} {} + + // TODO these methods do essentially the same thing and should be + // deduplicated. Standard fields are stored in destaggered form, but this + // should be a detail specific to and hidden by the encoder. + + // This method is for standard destaggered fields. + // FIXME[tws] method should be private, but "friend class/FRIEND_TEST" for + // the unit test isn't working for some reason + OUSTER_API_IGNORE + bool fieldEncode(const LidarScan& lidar_scan, + const ouster::FieldType& field_type, + const std::vector& px_offset, ScanData& scan_data, + size_t scan_idx) const override; + + // This method is for custom fields. + // FIXME[tws] method should be private, but "friend class/FRIEND_TEST" for + // the unit test isn't working for some reason + OUSTER_API_IGNORE + ScanChannelData encodeField(const ouster::Field& field) const override; + + private: + int compression_amount_{DEFAULT_PNG_OSF_ZLIB_COMPRESSION_LEVEL}; + + /** + * @defgroup OSFPngEncode8 Encoding Functionality. + * Encode img object into a 8 bit, Gray, PNG buffer. + * + * @tparam T The type to use for the output array. + * + * @param[out] res_buf The output buffer with a single encoded PNG. + * @param[in] img The image object to encode. + * @return false (0) if operation is successful, true (1) if error occured + */ + + /** + * @copydoc OSFPngEncode8 + * @param[in] px_offset Pixel shift per row used to destagger img data. + */ + template + bool encode8bitImage(ScanChannelData& res_buf, + const Eigen::Ref>& img, + const std::vector& px_offset) const; + + /** @copydoc OSFPngEncode8 */ + template + bool encode8bitImage(ScanChannelData& res_buf, + const Eigen::Ref>& img) const; + + /** + * Encode img object into a 16 bit, Gray, PNG buffer. + * + * @tparam T The type to use for the output array. + * + * @param[out] res_buf The output buffer with a single encoded PNG. + * @param[in] img The image object to encode. + * @param[in] px_offset Pixel shift per row used to destagger img data. + * @return false (0) if operation is successful, true (1) if error occured + */ + template + bool encode16bitImage(ScanChannelData& res_buf, + const Eigen::Ref>& img, + const std::vector& px_offset) const; + + /** + * Encode 2D image of a typical lidar scan field channel into a 16 bit, + * Gray, PNG buffer. + * + * @tparam T The type to use for the output array. + * + * @param[out] res_buf The output buffer with a single encoded PNG. + * @param[in] img The image object to encode. + * @return false (0) if operation is successful, true (1) if error occured + */ + template + bool encode16bitImage(ScanChannelData& res_buf, + const Eigen::Ref>& img) const; + + /** + * @defgroup OSFPngEncode32 Encoding Functionality. + * Encode 2D image of a typical lidar scan field channel into a 32 bit, + * RGBA, PNG buffer. + * + * @tparam T The type to use for the output array. + * + * @param[out] res_buf The output buffer with a single encoded PNG. + * @param[in] img 2D image or a single LidarScan field data. + * @return false (0) if operation is successful, true (1) if error occured + */ + + /** + * @copydoc OSFPngEncode32 + * @param[in] px_offset Pixel shift per row used to destagger img data. + */ + template + bool encode32bitImage(ScanChannelData& res_buf, + const Eigen::Ref>& img, + const std::vector& px_offset) const; + + /** @copydoc OSFPngEncode32 */ + template + bool encode32bitImage(ScanChannelData& res_buf, + const Eigen::Ref>& img) const; + + /** + * @defgroup OSFPngEncode24 Encoding Functionality. + * Encode 2D image of a typical lidar scan field channel into a 24 bit, RGB, + * PNG buffer. + * + * @tparam T The type to use for the output array. + * + * @param[out] res_buf The output buffer with a single encoded PNG. + * @param[in] img 2D image or a single LidarScan field data. + * @return false (0) if operation is successful, true (1) if error occured + */ + + /** + * @copydoc OSFPngEncode24 + * @param[in] px_offset Pixel shift per row used to destagger img data. + */ + template + bool encode24bitImage(ScanChannelData& res_buf, + const Eigen::Ref>& img, + const std::vector& px_offset) const; + + /** @copydoc OSFPngEncode24 */ + template + bool encode24bitImage(ScanChannelData& res_buf, + const Eigen::Ref>& img) const; + + /** + * @defgroup OSFPngEncode64 Encoding Functionality. + * Encode 2D image of a typical lidar scan field channel into a 64 bit, + * RGBA, PNG buffer. + * + * @tparam T The type to use for the output array. + * + * @param[out] res_buf The output buffer with a single encoded PNG. + * @param[in] img 2D image or a single LidarScan field data. + * @return false (0) if operation is successful, true (1) if error occured + */ + + /** + * @copydoc OSFPngEncode64 + * @param[in] px_offset Pixel shift per row used to destagger img data. + */ + template + bool encode64bitImage(ScanChannelData& res_buf, + const Eigen::Ref>& img, + const std::vector& px_offset) const; + + /** @copydoc OSFPngEncode64 */ + template + bool encode64bitImage(ScanChannelData& res_buf, + const Eigen::Ref>& img) const; +}; +} // namespace osf +} // namespace ouster diff --git a/ouster_osf/include/ouster/osf/reader.h b/ouster_osf/include/ouster/osf/reader.h index 0d9bcfa2..aa4270c6 100644 --- a/ouster_osf/include/ouster/osf/reader.h +++ b/ouster_osf/include/ouster/osf/reader.h @@ -14,6 +14,7 @@ #include "ouster/osf/file.h" #include "ouster/osf/metadata.h" #include "ouster/types.h" +#include "ouster/visibility.h" namespace ouster { namespace osf { @@ -37,7 +38,7 @@ enum class ChunkValidity { * This struct is partially mapped to the Flat Buffer data. * Flat Buffer Reference: fb/metadata.fbs :: ChunkOffset */ -struct ChunkState { +struct OUSTER_API_CLASS ChunkState { /** * The current chunk's offset from the begining of the chunks section. * @@ -84,7 +85,7 @@ struct ChunkState { * * This struct is partially mapped to the Flat Buffer data. */ -struct ChunkInfoNode { +struct OUSTER_API_CLASS ChunkInfoNode { /** * The chunk offset from the begining of the chunks section. * @@ -134,7 +135,7 @@ struct ChunkInfoNode { /** * Chunks state map. Validity info and next offset. */ -class ChunksPile { +class OUSTER_API_CLASS ChunksPile { public: /** * stream_id to offset map. @@ -145,6 +146,7 @@ class ChunksPile { /** * Default blank constructor. */ + OUSTER_API_FUNCTION ChunksPile(); /** @@ -154,6 +156,7 @@ class ChunksPile { * @param[in] start_ts The first timestamp in the chunk. * @param[in] end_ts The first timestamp in the chunk. */ + OUSTER_API_FUNCTION void add(uint64_t offset, ts_t start_ts, ts_t end_ts); /** @@ -162,6 +165,7 @@ class ChunksPile { * @param[in] offset The offset to return the chunk for. * @return The chunk if found, or nullptr. */ + OUSTER_API_FUNCTION ChunkState* get(uint64_t offset); /** @@ -171,6 +175,7 @@ class ChunksPile { * @param[in] stream_id The stream_id associated. * @param[in] message_count The number of messages. */ + OUSTER_API_FUNCTION void add_info(uint64_t offset, uint32_t stream_id, uint32_t message_count); /** @@ -179,6 +184,7 @@ class ChunksPile { * @param[in] offset The offset to return the streaming info for. * @return The streaming info if found, or nullptr. */ + OUSTER_API_FUNCTION ChunkInfoNode* get_info(uint64_t offset); /** @@ -188,6 +194,7 @@ class ChunksPile { * @param[in] message_idx The specific message index to look for. * @return The streaming info if found, or nullptr. */ + OUSTER_API_FUNCTION ChunkInfoNode* get_info_by_message_idx(uint32_t stream_id, uint32_t message_idx); @@ -198,6 +205,7 @@ class ChunksPile { * @param[in] ts The lower bound for the chunk. * @return The chunk if found, or nullptr. */ + OUSTER_API_FUNCTION ChunkState* get_by_lower_bound_ts(uint32_t stream_id, const ts_t ts); /** @@ -206,6 +214,7 @@ class ChunksPile { * @param[in] offset The offset to return the next chunk for. * @return The chunk if found, or nullptr. */ + OUSTER_API_FUNCTION ChunkState* next(uint64_t offset); /** @@ -214,6 +223,7 @@ class ChunksPile { * @param[in] offset The offset to return the next chunk for. * @return The chunk if found, or nullptr. */ + OUSTER_API_FUNCTION ChunkState* next_by_stream(uint64_t offset); /** @@ -221,6 +231,7 @@ class ChunksPile { * * @return The chunk if found, or nullptr. */ + OUSTER_API_FUNCTION ChunkState* first(); /** @@ -228,6 +239,7 @@ class ChunksPile { * * @return The size of the chunk pile. */ + OUSTER_API_FUNCTION size_t size() const; /** @@ -235,6 +247,7 @@ class ChunksPile { * * @return If there is a message index. */ + OUSTER_API_FUNCTION bool has_message_idx() const; /** @@ -242,6 +255,7 @@ class ChunksPile { * * @return The stream_id to chunk offset map. */ + OUSTER_API_FUNCTION StreamChunksMap& stream_chunks(); /** @@ -250,6 +264,7 @@ class ChunksPile { * @throws std::logic_error exception on non increasing timestamps. * @throws std::logic_error exception on non existent info. */ + OUSTER_API_FUNCTION void link_stream_chunks(); private: @@ -276,6 +291,7 @@ class ChunksPile { * @param[in] chunk_state The data to get the string representation for * @return The string representation */ +OUSTER_API_FUNCTION std::string to_string(const ChunkState& chunk_state); /** @@ -284,6 +300,7 @@ std::string to_string(const ChunkState& chunk_state); * @param[in] chunk_info The data to get the string representation format * @return The string representation */ +OUSTER_API_FUNCTION std::string to_string(const ChunkInfoNode& chunk_info); // Forward Decls @@ -299,7 +316,7 @@ class MessagesStreamingRange; /** * Chunk forward iterator in order of offset. */ -struct ChunksIter { +struct OUSTER_API_CLASS ChunksIter { using iterator_category = std::forward_iterator_tag; using value_type = const ChunkRef; using difference_type = std::ptrdiff_t; @@ -309,6 +326,7 @@ struct ChunksIter { /** * Default construction that zeros out member variables. */ + OUSTER_API_FUNCTION ChunksIter(); /** @@ -316,6 +334,7 @@ struct ChunksIter { * * @param[in] other The other ChunksIter object to initalize from. */ + OUSTER_API_FUNCTION ChunksIter(const ChunksIter& other); /** @@ -323,6 +342,7 @@ struct ChunksIter { * * @param[in] other The other ChunksIter to assign to this. */ + OUSTER_API_FUNCTION ChunksIter& operator=(const ChunksIter& other) = default; /** @@ -332,6 +352,7 @@ struct ChunksIter { * * @return The ChunkRef object associated with this ChunksIter object. */ + OUSTER_API_FUNCTION const ChunkRef operator*() const; /** @@ -339,6 +360,7 @@ struct ChunksIter { * * @return The ChunkRef pointer associated with this ChunksIter object. */ + OUSTER_API_FUNCTION const std::unique_ptr operator->() const; /** @@ -346,6 +368,7 @@ struct ChunksIter { * * @return The current ChunksIter object. */ + OUSTER_API_FUNCTION ChunksIter& operator++(); /** @@ -354,6 +377,7 @@ struct ChunksIter { * @param[in] other The other object to compare. * @return Whether the two ChunksIter objects are the same. */ + OUSTER_API_FUNCTION bool operator==(const ChunksIter& other) const; /** @@ -363,6 +387,7 @@ struct ChunksIter { * @param[in] other The other object to compare. * @return Whether the two ChunksIter objects are not the same. */ + OUSTER_API_FUNCTION bool operator!=(const ChunksIter& other) const; /** @@ -370,6 +395,7 @@ struct ChunksIter { * * @return The string representation */ + OUSTER_API_FUNCTION std::string to_string() const; private: @@ -420,13 +446,14 @@ struct ChunksIter { /** * std iterator class for iterating through chunks. */ -class ChunksRange { +class OUSTER_API_CLASS ChunksRange { public: /** * Begin function for std iterator support. * * @return A ChunksIter object for iteration. */ + OUSTER_API_FUNCTION ChunksIter begin() const; /** @@ -435,6 +462,7 @@ class ChunksRange { * @return A ChunksIter object for signifying * the end of iteration. */ + OUSTER_API_FUNCTION ChunksIter end() const; /** @@ -442,6 +470,7 @@ class ChunksRange { * * @return The string representation. */ + OUSTER_API_FUNCTION std::string to_string() const; private: @@ -477,13 +506,14 @@ class ChunksRange { * * @todo Add filtered reads, and other nice things... */ -class Reader { +class OUSTER_API_CLASS Reader { public: /** * Creates reader from %OSF file resource. * * @param[in] osf_file The OsfFile object to use to read from. */ + OUSTER_API_FUNCTION Reader(OsfFile& osf_file); /** @@ -491,6 +521,7 @@ class Reader { * * @param[in] file The OSF file path to read from. */ + OUSTER_API_FUNCTION Reader(const std::string& file); /** @@ -502,6 +533,7 @@ class Reader { * @return The MessageStreamingRange object to iterate * through the messages. */ + OUSTER_API_FUNCTION MessagesStreamingRange messages(); /** @@ -511,18 +543,21 @@ class Reader { * @param[in] end_ts Specify the end of the timestamps that * should be iterated through. */ + OUSTER_API_FUNCTION MessagesStreamingRange messages(const ts_t start_ts, const ts_t end_ts); /** * @copydoc messages() * @param[in] stream_ids Filter the message iteration to specific streams. */ + OUSTER_API_FUNCTION MessagesStreamingRange messages(const std::vector& stream_ids); /** * @copydoc messages(const ts_t start_ts, const ts_t end_ts) * @param[in] stream_ids Filter the message iteration to specific streams. */ + OUSTER_API_FUNCTION MessagesStreamingRange messages(const std::vector& stream_ids, const ts_t start_ts, const ts_t end_ts); @@ -540,6 +575,7 @@ class Reader { * @return message timestamp that corresponds to the message_idx in the * stream_id */ + OUSTER_API_FUNCTION nonstd::optional ts_by_message_idx(uint32_t stream_id, uint32_t message_idx); @@ -553,6 +589,7 @@ class Reader { * @return Whether OSF contains the message counts that are needed for * ``ts_by_message_idx()`` */ + OUSTER_API_FUNCTION bool has_message_idx() const; /** @@ -561,6 +598,7 @@ class Reader { * * @return Whether OSF contains the message timestamp index */ + OUSTER_API_FUNCTION bool has_timestamp_idx() const; /** @@ -570,6 +608,7 @@ class Reader { * * @return The iterator to valid chunks only. */ + OUSTER_API_FUNCTION ChunksRange chunks(); /** @@ -577,6 +616,7 @@ class Reader { * * @return The metadata id. */ + OUSTER_API_FUNCTION std::string metadata_id() const; /** @@ -584,6 +624,7 @@ class Reader { * * @return The lowest timestamp in the ChunksIter. */ + OUSTER_API_FUNCTION ts_t start_ts() const; /** @@ -591,6 +632,7 @@ class Reader { * * @return The highest timestamp in the ChunksIter. */ + OUSTER_API_FUNCTION ts_t end_ts() const; /** @@ -598,6 +640,7 @@ class Reader { * * @return All of the metadata entries as a MetadataStore. */ + OUSTER_API_FUNCTION const MetadataStore& meta_store() const; /** @@ -606,6 +649,7 @@ class Reader { * * @return The chunks can be read by stream and timestamps are sane. */ + OUSTER_API_FUNCTION bool has_stream_info() const; private: @@ -676,7 +720,7 @@ class Reader { * and reconstructs underlying data to the corresponding object type given * the Stream type. */ -class MessageRef { +class OUSTER_API_CLASS MessageRef { public: using ts_t = osf::ts_t; @@ -688,6 +732,7 @@ class MessageRef { * @param[in] meta_provider The metadata store that is used in types * reconstruction */ + OUSTER_API_FUNCTION MessageRef(const uint8_t* buf, const MetadataStore& meta_provider); /** @@ -699,6 +744,7 @@ class MessageRef { * reconstruction * @param[in,out] chunk_buf The pre-existing chunk buffer to use. */ + OUSTER_API_FUNCTION MessageRef(const uint8_t* buf, const MetadataStore& meta_provider, std::shared_ptr> chunk_buf); @@ -707,6 +753,7 @@ class MessageRef { * * @return The message stream id. */ + OUSTER_API_FUNCTION uint32_t id() const; /** @@ -714,6 +761,7 @@ class MessageRef { * * @return The timestamp of the message. */ + OUSTER_API_FUNCTION ts_t ts() const; /// @todo [pb] Type of the stored data (meta of the stream?) @@ -724,6 +772,7 @@ class MessageRef { * * @return The pointer to the underlying data. */ + OUSTER_API_FUNCTION const uint8_t* buf() const; /** @@ -731,6 +780,7 @@ class MessageRef { * * @return The string representation of a MessageRef. */ + OUSTER_API_FUNCTION std::string to_string() const; /** @@ -751,6 +801,7 @@ class MessageRef { * @param[in] type_str The data type in string form to check against. * @return If the current MessageRef is of type type_str. */ + OUSTER_API_FUNCTION bool is(const std::string& type_str) const; /** @@ -788,6 +839,7 @@ class MessageRef { * * @return Return the underlying raw message byte vector. */ + OUSTER_API_FUNCTION std::vector buffer() const; /** @@ -796,6 +848,7 @@ class MessageRef { * @param[in] other The other MessageRef to check against. * @return If the two MessageRefs are equal. */ + OUSTER_API_FUNCTION bool operator==(const MessageRef& other) const; /** @@ -804,6 +857,7 @@ class MessageRef { * @param[in] other The other MessageRef to check against. * @return If the two MessageRefs are not equal. */ + OUSTER_API_FUNCTION bool operator!=(const MessageRef& other) const; private: @@ -828,11 +882,12 @@ class MessageRef { * messages reading routines. It expects that Chunk was "verified" before * creating a ChunkRef. */ -class ChunkRef { +class OUSTER_API_CLASS ChunkRef { public: /** * Default ChunkRef constructor that just zeros the internal fields. */ + OUSTER_API_FUNCTION ChunkRef(); /** @@ -840,6 +895,7 @@ class ChunkRef { * chunk. * @param[in] reader The reader object to use for reading. */ + OUSTER_API_FUNCTION ChunkRef(const uint64_t offset, Reader* reader); /** @@ -848,6 +904,7 @@ class ChunkRef { * @param[in] other The other ChunkRef to check against. * @return If the two ChunkRef are equal. */ + OUSTER_API_FUNCTION bool operator==(const ChunkRef& other) const; /** @@ -856,6 +913,7 @@ class ChunkRef { * @param[in] other The other ChunkRef to check against. * @return If the two ChunkRef are not equal. */ + OUSTER_API_FUNCTION bool operator!=(const ChunkRef& other) const; /** @@ -865,11 +923,13 @@ class ChunkRef { * * @return The ChunkState associated with this ChunkRef. */ + OUSTER_API_FUNCTION ChunkState* state(); /** * @copydoc state() */ + OUSTER_API_FUNCTION const ChunkState* state() const; /** @@ -879,11 +939,13 @@ class ChunkRef { * * @return The ChunkInfoNode associated with this ChunkRef. */ + OUSTER_API_FUNCTION ChunkInfoNode* info(); /** * @copydoc info() */ + OUSTER_API_FUNCTION const ChunkInfoNode* info() const; /** @@ -891,6 +953,7 @@ class ChunkRef { * * @return A MessagesChunkIter object for iteration. */ + OUSTER_API_FUNCTION MessagesChunkIter begin() const; /** @@ -899,6 +962,7 @@ class ChunkRef { * @return A MessagesChunkIter object for signifying * the end of iteration. */ + OUSTER_API_FUNCTION MessagesChunkIter end() const; /** @@ -909,6 +973,7 @@ class ChunkRef { * @param[in] msg_idx The message index to get. * @return The resulting message. */ + OUSTER_API_FUNCTION const MessageRef operator[](size_t msg_idx) const; /** @@ -920,6 +985,7 @@ class ChunkRef { * @return The resulting message smart pointer, * returns nullptr if non existent. */ + OUSTER_API_FUNCTION std::unique_ptr messages(size_t msg_idx) const; /** @@ -927,6 +993,7 @@ class ChunkRef { * * @return The string representation of a ChunkRef. */ + OUSTER_API_FUNCTION std::string to_string() const; /** @@ -934,6 +1001,7 @@ class ChunkRef { * * @return The chunk offset in the larger flatbuffer array. */ + OUSTER_API_FUNCTION uint64_t offset() const; /** @@ -943,6 +1011,7 @@ class ChunkRef { * @relates state * @return starting timestamp in the received chunk */ + OUSTER_API_FUNCTION ts_t start_ts() const; /** @@ -952,6 +1021,7 @@ class ChunkRef { * @relates state * @return last timestamp in the received chunk */ + OUSTER_API_FUNCTION ts_t end_ts() const; /** @@ -960,6 +1030,7 @@ class ChunkRef { * @return The summation of the sizes of the chunks messages, * 0 on chunk invalidity. */ + OUSTER_API_FUNCTION size_t size() const; /** @@ -967,6 +1038,7 @@ class ChunkRef { * * @return The validity of the chunk. */ + OUSTER_API_FUNCTION bool valid() const; private: @@ -998,7 +1070,7 @@ class ChunkRef { * Convenient iterator class to go over all of the * messages in a chunk. */ -struct MessagesChunkIter { +struct OUSTER_API_CLASS MessagesChunkIter { using iterator_category = std::forward_iterator_tag; using value_type = const MessageRef; using difference_type = std::ptrdiff_t; @@ -1009,6 +1081,7 @@ struct MessagesChunkIter { * Default MessagesChunkIter constructor that just zeros * the internal fields. */ + OUSTER_API_FUNCTION MessagesChunkIter(); /** @@ -1017,6 +1090,7 @@ struct MessagesChunkIter { * * @param[in] other The other MessagesChunkIter to initalize from. */ + OUSTER_API_FUNCTION MessagesChunkIter(const MessagesChunkIter& other); /** @@ -1024,6 +1098,7 @@ struct MessagesChunkIter { * * @param[in] other The other MessageChunkIter to assign to. */ + OUSTER_API_FUNCTION MessagesChunkIter& operator=(const MessagesChunkIter& other) = default; /** @@ -1031,6 +1106,7 @@ struct MessagesChunkIter { * * @return The current ChunkRef value. */ + OUSTER_API_FUNCTION const MessageRef operator*() const; /** @@ -1038,6 +1114,7 @@ struct MessagesChunkIter { * * @return The current ChunkRef smart pointer. */ + OUSTER_API_FUNCTION std::unique_ptr operator->() const; /** @@ -1045,11 +1122,13 @@ struct MessagesChunkIter { * * @return *this */ + OUSTER_API_FUNCTION MessagesChunkIter& operator++(); /** * @copydoc operator++() */ + OUSTER_API_FUNCTION MessagesChunkIter operator++(int); /** @@ -1057,11 +1136,13 @@ struct MessagesChunkIter { * * @return *this */ + OUSTER_API_FUNCTION MessagesChunkIter& operator--(); /** * @copydoc operator--() */ + OUSTER_API_FUNCTION MessagesChunkIter operator--(int); /** @@ -1070,6 +1151,7 @@ struct MessagesChunkIter { * @param[in] other The other MessagesChunkIter to check against. * @return If the two MessagesChunkIter are equal. */ + OUSTER_API_FUNCTION bool operator==(const MessagesChunkIter& other) const; /** @@ -1078,6 +1160,7 @@ struct MessagesChunkIter { * @param[in] other The other MessagesChunkIter to check against. * @return If the two MessagesChunkIter are not equal. */ + OUSTER_API_FUNCTION bool operator!=(const MessagesChunkIter& other) const; /** @@ -1085,6 +1168,7 @@ struct MessagesChunkIter { * * @return The string representation of a MessagesChunkIter. */ + OUSTER_API_FUNCTION std::string to_string() const; private: @@ -1121,13 +1205,14 @@ struct MessagesChunkIter { friend class ChunkRef; }; // MessagesChunkIter -class MessagesStreamingRange { +class OUSTER_API_CLASS MessagesStreamingRange { public: /** * Begin function for std iterator support. * * @return A MessagesStreamingIter object for iteration. */ + OUSTER_API_FUNCTION MessagesStreamingIter begin() const; /** @@ -1136,6 +1221,7 @@ class MessagesStreamingRange { * @return A MessagesStreamingIter object for signifying * the end of iteration. */ + OUSTER_API_FUNCTION MessagesStreamingIter end() const; /** @@ -1143,6 +1229,7 @@ class MessagesStreamingRange { * * @return The string representation of a MessagesStreamingRange. */ + OUSTER_API_FUNCTION std::string to_string() const; private: @@ -1186,7 +1273,7 @@ class MessagesStreamingRange { * Iterator over all messages in Streaming Layout order for specified * timestamp range. */ -struct MessagesStreamingIter { +struct OUSTER_API_CLASS MessagesStreamingIter { using iterator_category = std::forward_iterator_tag; using value_type = const MessageRef; using difference_type = std::ptrdiff_t; @@ -1198,7 +1285,7 @@ struct MessagesStreamingIter { /** * Comparison struct used for determining which chunk is greater. */ - struct greater_chunk_type { + struct OUSTER_API_CLASS greater_chunk_type { /** * Comparison operator used for determining if the first is greater * than the second. The comparison is based on the timestamps. @@ -1207,6 +1294,7 @@ struct MessagesStreamingIter { * @param[in] b The second chunk to compare. * @return If the first chunk is greater than the second chunk. */ + OUSTER_API_FUNCTION bool operator()(const opened_chunk_type& a, const opened_chunk_type& b); }; @@ -1214,6 +1302,7 @@ struct MessagesStreamingIter { * Default MessagesStreamingIter constructor that just zeros * the internal fields. */ + OUSTER_API_FUNCTION MessagesStreamingIter(); /** @@ -1222,6 +1311,7 @@ struct MessagesStreamingIter { * * @param[in] other The other MessagesStreamingIter to initalize from. */ + OUSTER_API_FUNCTION MessagesStreamingIter(const MessagesStreamingIter& other); /** @@ -1229,6 +1319,7 @@ struct MessagesStreamingIter { * * @param[in] other The other MessagesStreamingIter to assign to. */ + OUSTER_API_FUNCTION MessagesStreamingIter& operator=(const MessagesStreamingIter& other) = default; @@ -1237,6 +1328,7 @@ struct MessagesStreamingIter { * * @return The current MessageRef value. */ + OUSTER_API_FUNCTION const MessageRef operator*() const; /** @@ -1244,6 +1336,7 @@ struct MessagesStreamingIter { * * @return The current MessageRef smart pointer. */ + OUSTER_API_FUNCTION std::unique_ptr operator->() const; /** @@ -1251,11 +1344,13 @@ struct MessagesStreamingIter { * * @return *this */ + OUSTER_API_FUNCTION MessagesStreamingIter& operator++(); /** * @copydoc operator++() */ + OUSTER_API_FUNCTION MessagesStreamingIter operator++(int); /** @@ -1264,6 +1359,7 @@ struct MessagesStreamingIter { * @param[in] other The other MessagesStreamingIter to check against. * @return If the two MessagesStreamingIter are equal. */ + OUSTER_API_FUNCTION bool operator==(const MessagesStreamingIter& other) const; /** @@ -1272,6 +1368,7 @@ struct MessagesStreamingIter { * @param[in] other The other MessagesStreamingIter to check against. * @return If the two MessagesStreamingIter are not equal. */ + OUSTER_API_FUNCTION bool operator!=(const MessagesStreamingIter& other) const; /** @@ -1279,6 +1376,7 @@ struct MessagesStreamingIter { * * @return The string representation of a MessagesStreamingIter. */ + OUSTER_API_FUNCTION std::string to_string() const; private: diff --git a/ouster_osf/include/ouster/osf/stream_lidar_scan.h b/ouster_osf/include/ouster/osf/stream_lidar_scan.h index 9d101a41..a56d2ced 100644 --- a/ouster_osf/include/ouster/osf/stream_lidar_scan.h +++ b/ouster_osf/include/ouster/osf/stream_lidar_scan.h @@ -12,6 +12,7 @@ #include "ouster/osf/meta_lidar_sensor.h" #include "ouster/osf/metadata.h" #include "ouster/osf/writer.h" +#include "ouster/visibility.h" namespace ouster { namespace osf { @@ -27,6 +28,7 @@ namespace osf { * @param[in] field_types The field types to cast the LidarScan to. * @return a copy of `ls_src` with transformed fields. */ +OUSTER_API_FUNCTION LidarScan slice_with_cast(const LidarScan& ls_src, const ouster::LidarScanFieldTypes& field_types); @@ -40,13 +42,15 @@ LidarScan slice_with_cast(const LidarScan& ls_src, * Flat Buffer Reference: * fb/os_sensor/lidar_scan_stream.fbs */ -class LidarScanStreamMeta : public MetadataEntryHelper { +class OUSTER_API_CLASS LidarScanStreamMeta + : public MetadataEntryHelper { public: /** * @param[in] sensor_meta_id Reference to LidarSensor metadata that * describes the sensor configuration. * @param[in] field_types LidarScan fields specs, this argument is optional. */ + OUSTER_API_FUNCTION LidarScanStreamMeta(const uint32_t sensor_meta_id, const ouster::LidarScanFieldTypes field_types = {}); @@ -55,11 +59,13 @@ class LidarScanStreamMeta : public MetadataEntryHelper { * * @return The sensor meta id. */ + OUSTER_API_FUNCTION uint32_t sensor_meta_id() const; /** * @copydoc MetadataEntry::buffer */ + OUSTER_API_FUNCTION std::vector buffer() const final; /** @@ -72,6 +78,7 @@ class LidarScanStreamMeta : public MetadataEntryHelper { * @param[in] buf The raw flatbuffer byte vector to initialize from. * @return The new LidarScanStreamMeta cast as a MetadataEntry */ + OUSTER_API_FUNCTION static std::unique_ptr from_buffer( const std::vector& buf); @@ -82,6 +89,7 @@ class LidarScanStreamMeta : public MetadataEntryHelper { * * @return The string representation for the LidarScanStreamMeta object. */ + OUSTER_API_FUNCTION std::string repr() const override; private: @@ -110,12 +118,13 @@ class LidarScanStreamMeta : public MetadataEntryHelper { * @ingroup OSFTraitsLidarScanStreamMeta */ template <> -struct MetadataTraits { +struct OUSTER_API_CLASS MetadataTraits { /** * Return the OSF type string. * * @return The OSF type string "ouster/v1/os_sensor/LidarScanStream". */ + OUSTER_API_FUNCTION static const std::string type() { return "ouster/v1/os_sensor/LidarScanStream"; } @@ -130,7 +139,9 @@ struct MetadataTraits { * Flatbuffer definition file: * fb/os_sensor/lidar_scan_stream.fbs */ -class LidarScanStream : public MessageStream { +class OUSTER_API_CLASS LidarScanStream + : public MessageStream { + protected: friend class Writer; friend class MessageRef; @@ -153,6 +164,32 @@ class LidarScanStream : public MessageStream { void save(const ouster::osf::ts_t receive_ts, const ouster::osf::ts_t sensor_ts, const obj_type& lidar_scan); + flatbuffers::Offset create_osf_field( + flatbuffers::FlatBufferBuilder& fbb, const std::string& name, + const Field& f) const; + + flatbuffers::Offset create_lidar_scan_msg( + flatbuffers::FlatBufferBuilder& fbb, const LidarScan& lidar_scan, + const ouster::sensor::sensor_info& info, + const ouster::LidarScanFieldTypes meta_field_types) const; + + void fieldEncodeMulti(const LidarScan& lidar_scan, + const LidarScanFieldTypes& field_types, + const std::vector& px_offset, + ScanData& scan_data, + const std::vector& scan_idxs) const; + + ScanData scanEncodeFieldsSingleThread( + const LidarScan& lidar_scan, const std::vector& px_offset, + const LidarScanFieldTypes& field_types) const; + + ScanData scanEncodeFields(const LidarScan& lidar_scan, + const std::vector& px_offset, + const LidarScanFieldTypes& field_types) const; + + ScanData scanEncode(const LidarScan& lidar_scan, + const std::vector& px_offset, + const ouster::LidarScanFieldTypes& field_types) const; /** * Encode/serialize the object to the buffer of bytes. * @@ -187,6 +224,7 @@ class LidarScanStream : public MessageStream { * @param[in] sensor_meta_id The sensor to use. * @param[in] field_types LidarScan fields specs, this argument is optional. */ + OUSTER_API_FUNCTION LidarScanStream(Token key, Writer& writer, const uint32_t sensor_meta_id, const ouster::LidarScanFieldTypes& field_types = {}); @@ -196,7 +234,7 @@ class LidarScanStream : public MessageStream { * * @return The concrete metadata type. */ - + OUSTER_API_FUNCTION const meta_type& meta() const { return meta_; }; private: diff --git a/ouster_osf/include/ouster/osf/writer.h b/ouster_osf/include/ouster/osf/writer.h index d400cca6..0e4ebb02 100644 --- a/ouster_osf/include/ouster/osf/writer.h +++ b/ouster_osf/include/ouster/osf/writer.h @@ -9,8 +9,11 @@ #include +#include "ouster/lidar_scan.h" #include "ouster/osf/basics.h" #include "ouster/osf/metadata.h" +#include "ouster/osf/osf_encoder.h" +#include "ouster/visibility.h" namespace ouster { namespace osf { @@ -21,7 +24,7 @@ class LidarScanStream; * Chunks writing strategy that decides when and how exactly write chunks * to a file. See RFC 0018 for Standard and Streaming Layout description. */ -class ChunksWriter { +class OUSTER_API_CLASS ChunksWriter { public: /** * Save a message to a specified stream. @@ -31,6 +34,7 @@ class ChunksWriter { * @param[in] sensor_ts The sensor timestamp for the messages. * @param[in] buf A vector of message buffers to record. */ + OUSTER_API_FUNCTION virtual void save_message(const uint32_t stream_id, const ts_t receive_ts, const ts_t sensor_ts, const std::vector& buf) = 0; @@ -38,6 +42,7 @@ class ChunksWriter { /** * Finish the process of saving messages and write out the stream stats. */ + OUSTER_API_FUNCTION virtual void finish() = 0; /** @@ -45,26 +50,33 @@ class ChunksWriter { * * @return the chunk size */ + OUSTER_API_FUNCTION virtual uint32_t chunk_size() const = 0; /** * Default deconstructor. */ + OUSTER_API_FUNCTION virtual ~ChunksWriter() = default; }; /** - * %OSF Writer provides the base universal interface to store the collection - * of metadata entries, streams and corresponding objects. + * @class Writer + * @brief OSF Writer provides the base universal interface to store the + * collection of metadata entries, streams, and corresponding objects. Detailed + * description of the class follows here. + * */ -class Writer { +class OUSTER_API_CLASS Writer { friend class StreamingLayoutCW; + friend class AsyncWriter; // TODO[tws] provide access to necessary + // internals through public iface public: /** * @throws std::runtime_error Exception on file writing issues. * - * @param[in] file_name The filename of the output OSF file. + * @param[in] file_name The file name of the output OSF file. * @param[in] chunk_size The chunk size in bytes to use for the OSF file. * This argument is optional, and if not provided the default value of * 2MB is used. If the current chunk being written exceeds @@ -76,25 +88,29 @@ class Writer { * index entries. A more granular index allows for more precise * seeking at the slight expense of a larger file. */ + OUSTER_API_FUNCTION Writer(const std::string& file_name, uint32_t chunk_size = 0); /** - * @param[in] filename The filename to output to. + * @param[in] filename The file name to output to. * @param[in] info The sensor info to use for a single stream OSF file. - * @param[in] chunk_size The chunksize to use for the OSF file, this - * parameter is optional. * @param[in] fields_to_write The fields from scans to actually save into * the OSF. If not provided uses the fields from * the first saved lidar scan for this sensor. * This parameter is optional. + * @param[in] chunk_size The chunksize to use for the OSF file, this + * parameter is optional. + * @param[in] encoder An optional Encoder instance for configuring how the + * Writer should encode the OSF. */ + OUSTER_API_FUNCTION Writer(const std::string& filename, const ouster::sensor::sensor_info& info, const std::vector& fields_to_write = std::vector(), - uint32_t chunk_size = 0); + uint32_t chunk_size = 0, std::shared_ptr encoder = nullptr); /** - * @param[in] filename The filename to output to. + * @param[in] filename The file name to output to. * @param[in] info The sensor info vector to use for a multi stream OSF * file. * @param[in] chunk_size The chunksize to use for the OSF file, this @@ -103,12 +119,15 @@ class Writer { * the OSF. If not provided uses the fields from * the first saved lidar scan for this sensor. * This parameter is optional. + * @param[in] encoder An optional Encoder instance for configuring how the + * Writer should encode the OSF. */ + OUSTER_API_FUNCTION Writer(const std::string& filename, const std::vector& info, const std::vector& fields_to_write = std::vector(), - uint32_t chunk_size = 0); + uint32_t chunk_size = 0, std::shared_ptr encoder = nullptr); /** * Add metadata to the OSF file. @@ -133,11 +152,13 @@ class Writer { * * @return The corresponding lidar id of the metadata entry */ + OUSTER_API_FUNCTION uint32_t add_metadata(MetadataEntry&& entry); /** * @copydoc add_metadata(MetadataEntry&& entry) */ + OUSTER_API_FUNCTION uint32_t add_metadata(MetadataEntry& entry); /** @@ -151,6 +172,7 @@ class Writer { /** * @copydoc OSFGetMetadataGroup */ + OUSTER_API_FUNCTION std::shared_ptr get_metadata( const uint32_t metadata_id) const; @@ -161,7 +183,7 @@ class Writer { */ template std::shared_ptr get_metadata( - const uint32_t metadata_id) const { + uint32_t metadata_id) const { return meta_store_.get(metadata_id); } @@ -194,6 +216,7 @@ class Writer { * @param[in] sensor_ts The sensor timestamp to use for the message. * @param[in] buf The message to save in the form of a byte vector. */ + OUSTER_API_FUNCTION void save_message(const uint32_t stream_id, const ts_t receive_ts, const ts_t sensor_ts, const std::vector& buf); @@ -209,12 +232,15 @@ class Writer { * * @return The stream index for the newly added sensor. */ + OUSTER_API_FUNCTION uint32_t add_sensor(const ouster::sensor::sensor_info& info, const std::vector& fields_to_write = std::vector()); /** - * Save a single scan to the specified stream_index in an OSF file. + * Save a single scan to the specified stream_index in an OSF + * file. + * * The concept of the stream_index is related to the sensor_info vector. * Consider the following: @code{.cpp} @@ -247,11 +273,12 @@ class Writer { * use. * @param[in] scan The scan to save. */ + OUSTER_API_FUNCTION void save(uint32_t stream_index, const LidarScan& scan); /** - * Save a single scan to the specified stream_index in an OSF file indexed - * with the provided timestamp. + * Save a single scan with the specified timestamp to the + * specified stream_index in an OSF file. * * @throws std::logic_error Will throw exception on writer being closed. * @throws std::logic_error ///< Will throw exception on @@ -262,11 +289,13 @@ class Writer { * @param[in] scan The scan to save. * @param[in] timestamp Receive timestamp to index this scan with. */ + OUSTER_API_FUNCTION void save(uint32_t stream_index, const LidarScan& scan, - const ouster::osf::ts_t timestamp); + ouster::osf::ts_t timestamp); /** - * Save multiple scans in an OSF file. + * Save multiple scans to the OSF file. + * * The concept of the stream_index is related to the sensor_info vector. * Consider the following: @code{.cpp} @@ -290,6 +319,7 @@ class Writer { * * @param[in] scans The vector of scans to save. */ + OUSTER_API_FUNCTION void save(const std::vector& scans); /** @@ -298,6 +328,7 @@ class Writer { * * @return The flatbuffer metadata entries. */ + OUSTER_API_FUNCTION const MetadataStore& meta_store() const; /** @@ -305,6 +336,7 @@ class Writer { * * @return The metadata id label. */ + OUSTER_API_FUNCTION const std::string& metadata_id() const; /** @@ -312,13 +344,15 @@ class Writer { * * @param[in] id The metadata id label to set. */ + OUSTER_API_FUNCTION void set_metadata_id(const std::string& id); /** * Return the filename for the OSF file. * - * @return The filename for the OSF file. + * @return The file name for the OSF file. */ + OUSTER_API_FUNCTION const std::string& filename() const; /** @@ -328,6 +362,7 @@ class Writer { * * @return The chunks layout of the OSF file. */ + OUSTER_API_FUNCTION ChunksLayout chunks_layout() const; /** @@ -335,6 +370,7 @@ class Writer { * * @return The chunk size for the OSF file. */ + OUSTER_API_FUNCTION uint32_t chunk_size() const; /** @@ -353,6 +389,7 @@ class Writer { * * @return The sensor info vector. */ + OUSTER_API_FUNCTION const std::vector& sensor_info() const; /** @@ -374,6 +411,7 @@ class Writer { * @param[in] stream_index The sensor info to return. * @return The correct sensor info. */ + OUSTER_API_FUNCTION const ouster::sensor::sensor_info sensor_info(int stream_index) const; /** @@ -381,11 +419,15 @@ class Writer { * * @return The sensor_info count. */ + OUSTER_API_FUNCTION uint32_t sensor_info_count() const; /** * Finish file with a proper metadata object, and header. + * This method blocks until all remaining tasks generated by save() have + * been finalized. */ + OUSTER_API_FUNCTION void close(); /** @@ -393,34 +435,52 @@ class Writer { * * @return If the writer is closed or not. */ + OUSTER_API_FUNCTION inline bool is_closed() const { return finished_; } + /** + * Returns the Encoder object used by this Writer. + * + * @return the Encoder. + */ + OUSTER_API_FUNCTION + Encoder& encoder() const { return *encoder_; } + /** * @relates close */ + OUSTER_API_FUNCTION ~Writer(); /** * Disallow copying and moving. */ + OUSTER_API_FUNCTION Writer(const Writer&) = delete; /** * Disallow copying and moving. */ + OUSTER_API_FUNCTION Writer& operator=(const Writer&) = delete; /** * Disallow copying and moving. */ + OUSTER_API_FUNCTION Writer(Writer&&) = delete; /** * Disallow copying and moving. */ + OUSTER_API_FUNCTION Writer& operator=(Writer&&) = delete; private: + /** + * A runnable used to handle writes in the thread 'save_thread_'. + */ + void save_thread_method(); /** * Helper to construct the Metadata OSF Block at the end of writing. * This function takes the metadata entries from the metadata store @@ -454,7 +514,7 @@ class Writer { * @param[in] size The size of the buffer to append. * @return The number of bytes writen to the OSF file. */ - uint64_t append(const uint8_t* buf, const uint64_t size); + uint64_t append(const uint8_t* buf, uint64_t size); /** * Save a specified chunk to the OSF file. @@ -466,13 +526,13 @@ class Writer { * @param[in] chunk_buf The byte vector representation of the chunk. * @return The result offset in the OSF file. */ - uint64_t emit_chunk(const ts_t start_ts, const ts_t end_ts, + uint64_t emit_chunk(ts_t start_ts, ts_t end_ts, const std::vector& chunk_buf); /** * Internal filename of the OSF file. */ - std::string file_name_; + std::string filename_; /** * The size of the flatbuffer header blob. @@ -561,13 +621,17 @@ class Writer { * The internal sensor_info store ordered by stream_index. */ std::vector sensor_info_; + + // TODO[tws] make private, access from LidarScanStream via "friend class" + std::shared_ptr encoder_; }; /** * Encapsulate chunk seriualization operations. */ -class ChunkBuilder { +class OUSTER_API_CLASS ChunkBuilder { public: + OUSTER_API_FUNCTION ChunkBuilder(){}; /** @@ -580,6 +644,7 @@ class ChunkBuilder { * @param[in] sensor_ts The sensor timestamp to use for the message. * @param[in] msg_buf The message to save in the form of a byte vector. */ + OUSTER_API_FUNCTION void save_message(const uint32_t stream_id, const ts_t receive_ts, const ts_t sensor_ts, const std::vector& msg_buf); @@ -587,6 +652,7 @@ class ChunkBuilder { /** * Completely wipe all data and start the chunk anew. */ + OUSTER_API_FUNCTION void reset(); /** @@ -595,6 +661,7 @@ class ChunkBuilder { * * @return The serialized chunk in a raw flatbuffer byte vector. */ + OUSTER_API_FUNCTION std::vector finish(); /** @@ -602,6 +669,7 @@ class ChunkBuilder { * * @return The flatbufferbuilder size. */ + OUSTER_API_FUNCTION uint32_t size() const; /** @@ -609,6 +677,7 @@ class ChunkBuilder { * * @return The number of messages saved so far. */ + OUSTER_API_FUNCTION uint32_t messages_count() const; /** @@ -616,6 +685,7 @@ class ChunkBuilder { * * @return The lowest timestamp in the chunk. */ + OUSTER_API_FUNCTION ts_t start_ts() const; /** @@ -623,6 +693,7 @@ class ChunkBuilder { * * @return The highest timestamp in the chunk. */ + OUSTER_API_FUNCTION ts_t end_ts() const; private: diff --git a/ouster_osf/src/async_writer.cpp b/ouster_osf/src/async_writer.cpp new file mode 100644 index 00000000..c6dbaf6d --- /dev/null +++ b/ouster_osf/src/async_writer.cpp @@ -0,0 +1,100 @@ +#include "ouster/osf/async_writer.h" + +#include "ouster/impl/logging.h" +#include "ouster/osf/stream_lidar_scan.h" + +using ouster::sensor::logger; + +namespace ouster { +namespace osf { + +AsyncWriter::AsyncWriter(const std::string& filename, + const std::vector& info, + const std::vector& fields_to_write, + uint32_t chunk_size, std::shared_ptr encoder) + : writer_(filename, info, fields_to_write, chunk_size, encoder), + save_queue_{10} { + save_thread_ = std::thread([this] { save_thread_method(); }); +} + +void AsyncWriter::save_thread_method() { + while (true) { + nonstd::optional msg = save_queue_.pop(); + if (msg == nonstd::nullopt) { + break; + } + auto& msg_value = msg.value(); + std::lock_guard lock(stream_mutex_); + try { + writer_._save(msg_value.stream_index_, msg_value.lidar_scan_, + msg_value.timestamp_); + msg_value.promise_.set_value(); + } catch (const std::exception& ex) { + logger().error("Exception when saving LidarScan as OSF: {}", + ex.what()); + try { + msg_value.promise_.set_exception(std::current_exception()); + } catch (...) { + logger().error( + "An exception occurred during std::promise set_exception."); + } + } + } +} + +std::future AsyncWriter::save(uint32_t stream_index, + const LidarScan& scan) { + if (writer_.is_closed()) { + throw std::logic_error("ERROR: Writer is closed"); + } + std::promise promise; + std::future result = promise.get_future(); + ts_t time = ts_t(scan.get_first_valid_packet_timestamp()); + save_queue_.push(LidarScanMessage(stream_index, time, scan, promise)); + return result; +} + +std::future AsyncWriter::save(uint32_t stream_index, + const LidarScan& scan, + const ouster::osf::ts_t timestamp) { + if (writer_.is_closed()) { + throw std::logic_error("ERROR: Writer is closed"); + } + std::promise promise; + std::future result = promise.get_future(); + save_queue_.push(LidarScanMessage(stream_index, timestamp, scan, promise)); + return result; +} + +std::vector> AsyncWriter::save( + const std::vector& scans) { + if (writer_.is_closed()) { + throw std::logic_error("ERROR: Writer is closed"); + } + if (scans.size() != writer_.lidar_meta_id_.size()) { + throw std::logic_error( + "ERROR: Scans passed in to writer " + "does not match number of sensor infos"); + } else { + std::vector> results; + for (uint32_t i = 0; i < scans.size(); i++) { + ts_t time = ts_t(scans[i].get_first_valid_packet_timestamp()); + std::promise promise; + std::future result = promise.get_future(); + save_queue_.push(LidarScanMessage(i, time, scans[i], promise)); + results.push_back(std::move(result)); + } + return results; + } +} + +void AsyncWriter::close() { + save_queue_.shutdown(); + if (save_thread_.joinable()) { + save_thread_.join(); + } + writer_.close(); +} + +} // namespace osf +} // namespace ouster diff --git a/ouster_osf/src/compat_ops.h b/ouster_osf/src/compat_ops.h index eb418ca5..ee49ce19 100644 --- a/ouster_osf/src/compat_ops.h +++ b/ouster_osf/src/compat_ops.h @@ -8,6 +8,8 @@ #include #include +#include "ouster/visibility.h" + namespace ouster { namespace osf { @@ -19,64 +21,93 @@ constexpr char FILE_SEP = '/'; #endif /// Checking the the path is it directory or not. +/// @TODO Change up tests to not use this stuff +OUSTER_API_FUNCTION bool is_dir(const std::string& path); /// Check path existence on the system +/// @TODO Change up tests to not use this stuff +OUSTER_API_FUNCTION bool path_exists(const std::string& path); /// Path concatenation with OS specific path separator +/// @TODO Change up tests to not use this stuff +OUSTER_API_FUNCTION std::string path_concat(const std::string& path1, const std::string& path2); /// Get the path to unique temp directory and create it. +/// @TODO Change up tests to not use this stuff +OUSTER_API_FUNCTION bool make_tmp_dir(std::string& tmp_path); /// Make directory +/// @TODO Change up tests to not use this stuff +OUSTER_API_FUNCTION bool make_dir(const std::string& path); /// Get environment variable +/// @TODO Change up tests to not use this stuff +OUSTER_API_FUNCTION bool get_env_var(const std::string& name, std::string& value); // Unlink path +/// @TODO Change up tests to not use this stuff +OUSTER_API_FUNCTION bool unlink_path(const std::string& path); // Remove directory +/// @TODO Change up tests to not use this stuff +OUSTER_API_FUNCTION bool remove_dir(const std::string& path); // Get file size +/// @TODO Change up tests to not use this stuff +OUSTER_API_FUNCTION int64_t file_size(const std::string& path); // File mapping open +/// @TODO Change up tests to not use this stuff +OUSTER_API_FUNCTION uint8_t* mmap_open(const std::string& path); // File mapping close -bool mmap_close(uint8_t* file_buf, const uint64_t file_size); +/// @TODO Change up tests to not use this stuff +OUSTER_API_FUNCTION +bool mmap_close(uint8_t* file_buf, uint64_t file_size); /// Get the last system error and return it in a string (not wide string) +/// @TODO Change up tests to not use this stuff +OUSTER_API_FUNCTION std::string get_last_error(); /** * Truncate a file to a certain length + * @TODO Change up tests to not use this stuff * * @param[in] path The file to truncate. * @param[in] filesize The final size of the file. * * @return The number of bytes of the final file. */ +OUSTER_API_FUNCTION int64_t truncate_file(const std::string& path, uint64_t filesize); /** * Appends one file to another + * @TODO Change up tests to not use this stuff * * @param[in] append_to_file_name The file to append to. * @param[in] append_from_file_name The file to append from. * * @return The number of bytes of the final file. */ +OUSTER_API_FUNCTION int64_t append_binary_file(const std::string& append_to_file_name, const std::string& append_from_file_name); /** * Copies trailing bytes from a file + * @TODO Change up tests to not use this stuff * * @param[in] source_file The file to copy from. * @param[in] target_file The file to copy to. @@ -84,6 +115,7 @@ int64_t append_binary_file(const std::string& append_to_file_name, * * @return The number of bytes of the target file. */ +OUSTER_API_FUNCTION int64_t copy_file_trailing_bytes(const std::string& source_file, const std::string& target_file, uint64_t offset); diff --git a/ouster_osf/src/fb_utils.h b/ouster_osf/src/fb_utils.h index ddfb5563..47c1b4ea 100644 --- a/ouster_osf/src/fb_utils.h +++ b/ouster_osf/src/fb_utils.h @@ -8,6 +8,7 @@ #include "header_generated.h" #include "metadata_generated.h" #include "ouster/osf/basics.h" +#include "ouster/visibility.h" // OSF v2 basic types for LidarSensor and LidarScan/Imu Streams #include "os_sensor/lidar_scan_stream_generated.h" @@ -16,10 +17,14 @@ namespace ouster { namespace osf { +/// @TODO Change up tests to not use this stuff +OUSTER_API_FUNCTION inline const gen::Metadata* get_osf_metadata_from_buf(const uint8_t* buf) { return ouster::osf::gen::GetSizePrefixedMetadata(buf); } +/// @TODO Change up tests to not use this stuff +OUSTER_API_FUNCTION inline const gen::Header* get_osf_header_from_buf(const uint8_t* buf) { return gen::GetSizePrefixedHeader(buf); } @@ -27,13 +32,15 @@ inline const gen::Header* get_osf_header_from_buf(const uint8_t* buf) { /** * Verifies the validity of Header buffer and whether it's safe to read it. * It's just checking the well formed Flatbuffer table (not CRC32 check here) + * @TODO Change up tests to not use this stuff * * @param[in] buf Header buffer, size prefixed * @param[in] buf_size buffer size (with prefix size bytes but not including * CRC32) * @return true if buffer is valid and can be read */ -inline bool verify_osf_header_buf(const uint8_t* buf, const uint32_t buf_size) { +OUSTER_API_FUNCTION +inline bool verify_osf_header_buf(const uint8_t* buf, uint32_t buf_size) { auto verifier = flatbuffers::Verifier(buf, buf_size); return gen::VerifySizePrefixedHeaderBuffer(verifier); } @@ -41,25 +48,30 @@ inline bool verify_osf_header_buf(const uint8_t* buf, const uint32_t buf_size) { /** * Checks the validity of a Metadata buffer and whether it's safe to read it. * It's checking the well formed Flatbuffer table and CRC32. + * @TODO Change up tests to not use this stuff * * @param[in] buf metadata buffer, size prefixed * @param[in] buf_size buffer size (with CRC32 and prefix size bytes) * @return true if buffer is valid and can be read */ -bool check_osf_metadata_buf(const uint8_t* buf, const uint32_t buf_size); +OUSTER_API_FUNCTION +bool check_osf_metadata_buf(const uint8_t* buf, uint32_t buf_size); /** * Checks the validity of a Chunk buffer and whether it's safe to read it. * It's checking the well formed Flatbuffer table and CRC32. + * @TODO Change up tests to not use this stuff * * @param[in] buf metadata buffer, size prefixed * @param[in] buf_size buffer size (with CRC32 and prefix size bytes) * @return true if buffer is valid and can be read */ -bool check_osf_chunk_buf(const uint8_t* buf, const uint32_t buf_size); +OUSTER_API_FUNCTION +bool check_osf_chunk_buf(const uint8_t* buf, uint32_t buf_size); /** * Transforms Flatbuffers vector to a std::vector. + * @TODO Change up tests to not use this stuff * * @tparam T The type of the vector to transform. * @@ -67,7 +79,8 @@ bool check_osf_chunk_buf(const uint8_t* buf, const uint32_t buf_size); * @return The transformed vector. **/ template -std::vector vector_from_fb_vector(const flatbuffers::Vector* fb_vec); +OUSTER_API_FUNCTION std::vector vector_from_fb_vector( + const flatbuffers::Vector* fb_vec); // ============ File operations ========================== @@ -75,6 +88,7 @@ std::vector vector_from_fb_vector(const flatbuffers::Vector* fb_vec); * Saves the buffer content to the file with additional 4 bytes of calculated * CRC32 field in the end. Successfull operation writes size + 4 bytes to the * file. + * @TODO Change up tests to not use this stuff * * @param[in] buf pointer to the data to save, full content of the buffer used * to calculate CRC @@ -85,13 +99,15 @@ std::vector vector_from_fb_vector(const flatbuffers::Vector* fb_vec); * @return Number of bytes actually written to the file. Successfull write is * size + 4 bytes (4 bytes for CRC field) */ -uint64_t buffer_to_file(const uint8_t* buf, const uint64_t size, +OUSTER_API_FUNCTION +uint64_t buffer_to_file(const uint8_t* buf, uint64_t size, const std::string& filename, bool append = false); /** * Saves the content of Flatbuffer builder to the file with CRC32 field * appended to the actual bytes. Usually it's a size prefixed finished builder * but not necessarily + * @TODO Change up tests to not use this stuff * * @param[in] builder Flatbuffers builder * @param[in] filename filename to save bytes @@ -100,28 +116,32 @@ uint64_t buffer_to_file(const uint8_t* buf, const uint64_t size, * @return Number of bytes actually written to the file. Successfull write is * size + 4 bytes (4 bytes for CRC field) */ +OUSTER_API_FUNCTION uint64_t builder_to_file(flatbuffers::FlatBufferBuilder& builder, const std::string& filename, bool append = false); /** * Starts the OSF v2 file with a header (in INVALID state). + * @TODO Change up tests to not use this stuff * * @param[in] filename of the file to be created. Overwrite if file exists. * @return Number of bytes actually written to the file. */ +OUSTER_API_FUNCTION uint64_t start_osf_file(const std::string& filename); /** * Finish OSF v2 file with updated offset to metadata and filesize. As a * result file left in VALID state. + * @TODO Change up tests to not use this stuff * * @param[in] filename of the file to be created. Overwrite if file exists. * @param[in] metadata_offset The offset to the metadata blob. * @param[in] metadata_size The size of the metadata blob. * @return Number of bytes actually written to the file. */ -uint64_t finish_osf_file(const std::string& filename, - const uint64_t metadata_offset, - const uint32_t metadata_size); +OUSTER_API_FUNCTION +uint64_t finish_osf_file(const std::string& filename, uint64_t metadata_offset, + uint32_t metadata_size); } // namespace osf } // namespace ouster diff --git a/ouster_osf/src/json_utils.cpp b/ouster_osf/src/json_utils.cpp deleted file mode 100644 index 2a3a9cfa..00000000 --- a/ouster_osf/src/json_utils.cpp +++ /dev/null @@ -1,31 +0,0 @@ -/** - * Copyright(c) 2021, Ouster, Inc. - * All rights reserved. - */ - -#include "json_utils.h" - -#include - -namespace ouster { -namespace osf { - -bool parse_json(const std::string json_str, Json::Value& output) { - // Parse Json - Json::CharReaderBuilder jbuilder{}; - jbuilder["collectComments"] = false; - std::stringstream source{json_str}; - std::string jerrs; - return Json::parseFromStream(jbuilder, source, &output, &jerrs); -} - -std::string json_string(const Json::Value& root) { - Json::StreamWriterBuilder builder; - builder["enableYAMLCompatibility"] = true; - builder["precision"] = 6; - builder["indentation"] = " "; - return Json::writeString(builder, root); -} - -} // namespace osf -} // namespace ouster diff --git a/ouster_osf/src/json_utils.h b/ouster_osf/src/json_utils.h deleted file mode 100644 index a4da6bb6..00000000 --- a/ouster_osf/src/json_utils.h +++ /dev/null @@ -1,18 +0,0 @@ -/** - * Copyright(c) 2021, Ouster, Inc. - * All rights reserved. - */ - -#pragma once - -#include "json/json.h" - -namespace ouster { -namespace osf { - -bool parse_json(const std::string json_str, Json::Value& output); - -std::string json_string(const Json::Value& root); - -} // namespace osf -} // namespace ouster \ No newline at end of file diff --git a/ouster_osf/src/meta_lidar_sensor.cpp b/ouster_osf/src/meta_lidar_sensor.cpp index a986f136..574f361d 100644 --- a/ouster_osf/src/meta_lidar_sensor.cpp +++ b/ouster_osf/src/meta_lidar_sensor.cpp @@ -5,13 +5,14 @@ #include "ouster/osf/meta_lidar_sensor.h" +#include +#include + #include "fb_utils.h" #include "flatbuffers/flatbuffers.h" -#include "json_utils.h" #include "ouster/osf/basics.h" using sensor_info = ouster::sensor::sensor_info; - namespace ouster { namespace osf { @@ -84,16 +85,24 @@ std::unique_ptr LidarSensor::from_buffer( } std::string LidarSensor::repr() const { - Json::Value lidar_sensor_obj{}; - Json::Value sensor_info_obj{}; + jsoncons::json root; + + std::istringstream temp(sensor_info_.to_json_string()); + + jsoncons::json_decoder temp_decoder; + jsoncons::json_stream_reader reader(temp, temp_decoder); - if (!parse_json(metadata_, sensor_info_obj)) { - lidar_sensor_obj["sensor_info"] = metadata_; + std::error_code temp_error_code; + reader.read(temp_error_code); + if (!temp_error_code) { + root["sensor_info"] = temp_decoder.get_result(); } else { - lidar_sensor_obj["sensor_info"] = sensor_info_obj; + root["sensor_info"] = metadata_; } - return json_string(lidar_sensor_obj); + std::string out; + root.dump(out); + return out; }; std::string LidarSensor::to_string() const { return repr(); }; diff --git a/ouster_osf/src/meta_streaming_info.cpp b/ouster_osf/src/meta_streaming_info.cpp index f344f99e..bb0f7865 100644 --- a/ouster_osf/src/meta_streaming_info.cpp +++ b/ouster_osf/src/meta_streaming_info.cpp @@ -5,11 +5,10 @@ #include "ouster/osf/meta_streaming_info.h" +#include #include #include -#include "json/json.h" -#include "json_utils.h" #include "ouster/osf/meta_streaming_info.h" #include "streaming/streaming_info_generated.h" @@ -173,41 +172,43 @@ std::unique_ptr StreamingInfo::from_buffer( } std::string StreamingInfo::repr() const { - Json::Value si_obj{}; + jsoncons::json si_obj; - si_obj["chunks"] = Json::arrayValue; + jsoncons::json chunks(jsoncons::json_array_arg); for (const auto& ci : chunks_info_) { - Json::Value chunk_info{}; - chunk_info["offset"] = static_cast(ci.second.offset); + jsoncons::json chunk_info; + chunk_info["offset"] = static_cast(ci.second.offset); chunk_info["stream_id"] = ci.second.stream_id; chunk_info["message_count"] = ci.second.message_count; - si_obj["chunks"].append(chunk_info); + chunks.emplace_back(chunk_info); } + si_obj["chunks"] = chunks; - si_obj["stream_stats"] = Json::arrayValue; + jsoncons::json stream_stats(jsoncons::json_array_arg); for (const auto& stat : stream_stats_) { - Json::Value ss{}; + jsoncons::json ss{}; ss["stream_id"] = stat.first; - ss["start_ts"] = - static_cast(stat.second.start_ts.count()); - ss["end_ts"] = static_cast(stat.second.end_ts.count()); - ss["message_count"] = - static_cast(stat.second.message_count); + ss["start_ts"] = static_cast(stat.second.start_ts.count()); + ss["end_ts"] = static_cast(stat.second.end_ts.count()); + ss["message_count"] = static_cast(stat.second.message_count); ss["message_avg_size"] = stat.second.message_avg_size; - Json::Value st = Json::arrayValue; - Json::Value rt = Json::arrayValue; + jsoncons::json st(jsoncons::json_array_arg); + jsoncons::json rt(jsoncons::json_array_arg); for (const auto& t : stat.second.sensor_timestamps) { - st.append(static_cast(t)); + st.emplace_back(static_cast(t)); } for (const auto& t : stat.second.receive_timestamps) { - rt.append(static_cast(t)); + rt.emplace_back(static_cast(t)); } ss["sensor_timestamps"] = st; ss["receive_timestamps"] = rt; - si_obj["stream_stats"].append(ss); + stream_stats.emplace_back(ss); } + si_obj["stream_stats"] = stream_stats; - return json_string(si_obj); + std::string out; + si_obj.dump(out); + return out; }; } // namespace osf diff --git a/ouster_osf/src/operations.cpp b/ouster_osf/src/operations.cpp index 4f95311f..8626a2ff 100644 --- a/ouster_osf/src/operations.cpp +++ b/ouster_osf/src/operations.cpp @@ -8,11 +8,11 @@ #include #include #include +#include +#include #include "compat_ops.h" #include "fb_utils.h" -#include "json/json.h" -#include "json_utils.h" #include "ouster/impl/logging.h" #include "ouster/lidar_scan.h" #include "ouster/osf/file.h" @@ -31,63 +31,69 @@ std::string dump_metadata(const std::string& file, bool full) { OsfFile osf_file(file); auto osf_header = get_osf_header_from_buf(osf_file.get_header_chunk_ptr()); - Json::Value root{}; + jsoncons::json root; - root["header"]["size"] = static_cast(osf_file.size()); - root["header"]["version"] = static_cast(osf_file.version()); + root["header"]["size"] = static_cast(osf_file.size()); + root["header"]["version"] = static_cast(osf_file.version()); root["header"]["status"] = to_string(osf_header->status()); root["header"]["metadata_offset"] = - static_cast(osf_file.metadata_offset()); + static_cast(osf_file.metadata_offset()); root["header"]["chunks_offset"] = - static_cast(osf_file.chunks_offset()); + static_cast(osf_file.chunks_offset()); Reader reader(file); root["metadata"]["id"] = reader.metadata_id(); root["metadata"]["start_ts"] = - static_cast(reader.start_ts().count()); - root["metadata"]["end_ts"] = - static_cast(reader.end_ts().count()); + static_cast(reader.start_ts().count()); + root["metadata"]["end_ts"] = static_cast(reader.end_ts().count()); auto osf_metadata = get_osf_metadata_from_buf(osf_file.get_metadata_chunk_ptr()); if (full) { - root["metadata"]["chunks"] = Json::arrayValue; + jsoncons::json chunks(jsoncons::json_array_arg); for (size_t i = 0; i < osf_metadata->chunks()->size(); ++i) { auto osf_chunk = osf_metadata->chunks()->Get(i); - Json::Value chunk{}; - chunk["start_ts"] = - static_cast(osf_chunk->start_ts()); - chunk["end_ts"] = static_cast(osf_chunk->end_ts()); - chunk["offset"] = static_cast(osf_chunk->offset()); - root["metadata"]["chunks"].append(chunk); + jsoncons::json chunk; + chunk["start_ts"] = static_cast(osf_chunk->start_ts()); + chunk["end_ts"] = static_cast(osf_chunk->end_ts()); + chunk["offset"] = static_cast(osf_chunk->offset()); + chunks.emplace_back(chunk); } + root["metadata"]["chunks"] = chunks; } const MetadataStore& meta_store = reader.meta_store(); - - root["metadata"]["entries"] = Json::arrayValue; - + jsoncons::json entries(jsoncons::json_array_arg); for (const auto& me : meta_store.entries()) { - Json::Value meta_element{}; - meta_element["id"] = static_cast(me.first); + jsoncons::json meta_element; + meta_element["id"] = static_cast(me.first); meta_element["type"] = me.second->type(); - if (full) { - const std::string me_str = me.second->repr(); - Json::Value me_obj{}; - if (parse_json(me_str, me_obj)) { - meta_element["buffer"] = me_obj; + const std::string temp_data = me.second->repr(); + std::istringstream temp(temp_data); + + jsoncons::json_decoder temp_decoder; + jsoncons::json_stream_reader reader(temp, temp_decoder); + + std::error_code temp_error_code; + reader.read(temp_error_code); + if (!temp_error_code) { + meta_element["buffer"] = temp_decoder.get_result(); } else { - meta_element["buffer"] = me_str; + jsoncons::json buffer = temp_data; + meta_element["buffer"] = buffer; } } - root["metadata"]["entries"].append(meta_element); + entries.emplace_back(meta_element); } + root["metadata"]["entries"] = entries; - return json_string(root); + std::string out; + root.dump(out); + return out; } void parse_and_print(const std::string& file, bool with_decoding) { diff --git a/ouster_osf/src/png_lidarscan_encoder.cpp b/ouster_osf/src/png_lidarscan_encoder.cpp new file mode 100644 index 00000000..7bc65689 --- /dev/null +++ b/ouster_osf/src/png_lidarscan_encoder.cpp @@ -0,0 +1,413 @@ +/** + * Copyright (c) 2024, Ouster, Inc. + * All rights reserved. + */ + +// NOTE yes, we're aware that there is a high amount of duplication in this +// file. Some of the methods are "legacy" code and unlikely to change in future +// revisions. + +#include "ouster/osf/png_lidarscan_encoder.h" + +#include + +#include "ouster/impl/logging.h" +#include "png_tools.h" + +using namespace ouster::sensor; + +namespace ouster { +namespace osf { + +bool PngLidarScanEncoder::fieldEncode(const LidarScan& lidar_scan, + const ouster::FieldType& field_type, + const std::vector& px_offset, + ScanData& scan_data, + size_t scan_idx) const { + if (scan_idx >= scan_data.size()) { + throw std::invalid_argument( + "ERROR: scan_data size is not sufficient to hold idx: " + + std::to_string(scan_idx)); + } + bool res = true; + switch (field_type.element_type) { + case sensor::ChanFieldType::UINT8: + res = encode8bitImage(scan_data[scan_idx], + lidar_scan.field(field_type.name), + px_offset); + break; + case sensor::ChanFieldType::UINT16: + res = encode16bitImage(scan_data[scan_idx], + lidar_scan.field(field_type.name), + px_offset); + break; + case sensor::ChanFieldType::UINT32: + res = encode32bitImage(scan_data[scan_idx], + lidar_scan.field(field_type.name), + px_offset); + break; + case sensor::ChanFieldType::UINT64: + res = encode64bitImage(scan_data[scan_idx], + lidar_scan.field(field_type.name), + px_offset); + break; + default: + logger().error( + "ERROR: fieldEncode: UNKNOWN:" + "ChanFieldType not yet " + "implemented"); + break; + } + if (res) { + logger().error("ERROR: fieldEncode: Can't encode field {}", + field_type.name); + } + return res; +} + +ScanChannelData PngLidarScanEncoder::encodeField( + const ouster::Field& field) const { + ScanChannelData buffer; + + // do not compress, flat fields "compressed" size is greater than original + if (field.shape().size() == 1) { + buffer.resize(field.bytes()); + std::memcpy(buffer.data(), field, field.bytes()); + return buffer; + } + + // empty case + if (field.bytes() == 0) { + return buffer; + } + + FieldView view = uint_view(field); + // collapse shape + if (view.shape().size() > 2) { + size_t rows = view.shape()[0]; + size_t cols = view.size() / rows; + view = view.reshape(rows, cols); + } + + bool res = true; + switch (view.tag()) { + case sensor::ChanFieldType::UINT8: + res = encode8bitImage(buffer, view); + break; + case sensor::ChanFieldType::UINT16: + res = encode16bitImage(buffer, view); + break; + case sensor::ChanFieldType::UINT32: + res = encode32bitImage(buffer, view); + break; + case sensor::ChanFieldType::UINT64: + res = encode64bitImage(buffer, view); + break; + default: + break; + } + + if (res) { + throw std::runtime_error("encodeField: could not encode field"); + } + + return buffer; +} + +template +bool PngLidarScanEncoder::encode8bitImage( + ScanChannelData& res_buf, const Eigen::Ref>& img, + const std::vector& px_offset) const { + return PngLidarScanEncoder::encode8bitImage(res_buf, + destagger(img, px_offset)); +} + +template +bool PngLidarScanEncoder::encode8bitImage( + ScanChannelData& res_buf, const Eigen::Ref>& img) const { + const uint32_t width = static_cast(img.cols()); + const uint32_t height = static_cast(img.rows()); + + // 8 bit Gray + const int sample_depth = 8; + const int color_type = PNG_COLOR_TYPE_GRAY; + + // 8bit Encoding Sizes + std::vector row_data(width); // Gray, 8bit + + // libpng main structs + png_structp png_ptr; + png_infop png_info_ptr; + + if (png_osf_write_init(&png_ptr, &png_info_ptr)) { + return true; + } + + if (setjmp(png_jmpbuf(png_ptr))) { + png_destroy_write_struct(&png_ptr, &png_info_ptr); + return true; + } + + png_osf_write_start(png_ptr, png_info_ptr, res_buf, width, height, + sample_depth, color_type, compression_amount_); + + for (size_t u = 0; u < height; ++u) { + for (size_t v = 0; v < width; ++v) { + // 8bit Encoding Logic + row_data[v] = static_cast(img(u, v)); + } + + png_write_row(png_ptr, + reinterpret_cast(row_data.data())); + } + + png_write_end(png_ptr, nullptr); + + png_destroy_write_struct(&png_ptr, &png_info_ptr); + + return false; // SUCCESS +} + +template +bool PngLidarScanEncoder::encode16bitImage( + ScanChannelData& res_buf, const Eigen::Ref>& img) const { + const uint32_t width = static_cast(img.cols()); + const uint32_t height = static_cast(img.rows()); + + // 16 bit Gray + const int sample_depth = 16; + const int color_type = PNG_COLOR_TYPE_GRAY; + + // 16bit Encoding Sizes + std::vector row_data(width * 2); // Gray, 16bit + + // libpng main structs + png_structp png_ptr; + png_infop png_info_ptr; + + if (png_osf_write_init(&png_ptr, &png_info_ptr)) { + return true; + } + + if (setjmp(png_jmpbuf(png_ptr))) { + png_destroy_write_struct(&png_ptr, &png_info_ptr); + return true; + } + + png_osf_write_start(png_ptr, png_info_ptr, res_buf, width, height, + sample_depth, color_type, compression_amount_); + + // Needed to transform provided little-endian samples to internal + // PNG big endian format + png_set_swap(png_ptr); + + for (size_t u = 0; u < height; ++u) { + for (size_t v = 0; v < width; ++v) { + const uint64_t key_val = img(u, v); + + // 16bit Encoding Logic + row_data[v * 2] = static_cast(key_val & 0xff); + row_data[v * 2 + 1] = static_cast((key_val >> 8u) & 0xff); + } + + png_write_row(png_ptr, + reinterpret_cast(row_data.data())); + } + + png_write_end(png_ptr, nullptr); + + png_destroy_write_struct(&png_ptr, &png_info_ptr); + + return false; // SUCCESS +} + +template +bool PngLidarScanEncoder::encode16bitImage( + ScanChannelData& res_buf, const Eigen::Ref>& img, + const std::vector& px_offset) const { + return encode16bitImage(res_buf, destagger(img, px_offset)); +} + +template +bool PngLidarScanEncoder::encode24bitImage( + ScanChannelData& res_buf, const Eigen::Ref>& img, + const std::vector& px_offset) const { + return encode24bitImage(res_buf, destagger(img, px_offset)); +} + +template +bool PngLidarScanEncoder::encode24bitImage( + ScanChannelData& res_buf, const Eigen::Ref>& img) const { + const uint32_t width = static_cast(img.cols()); + const uint32_t height = static_cast(img.rows()); + + // 8bit RGB + const int sample_depth = 8; + const int color_type = PNG_COLOR_TYPE_RGB; + + // 24bit Encoding Sizes + std::vector row_data(width * 3); // RGB, 8bit + + // libpng main structs + png_structp png_ptr; + png_infop png_info_ptr; + + if (png_osf_write_init(&png_ptr, &png_info_ptr)) { + return true; + } + + if (setjmp(png_jmpbuf(png_ptr))) { + png_destroy_write_struct(&png_ptr, &png_info_ptr); + return true; + } + + png_osf_write_start(png_ptr, png_info_ptr, res_buf, width, height, + sample_depth, color_type, compression_amount_); + + for (size_t u = 0; u < height; ++u) { + for (size_t v = 0; v < width; ++v) { + const uint64_t key_val = img(u, v); + + // 24bit Encoding Logic + row_data[v * 3 + 0] = static_cast(key_val & 0xff); + row_data[v * 3 + 1] = static_cast((key_val >> 8u) & 0xff); + row_data[v * 3 + 2] = static_cast((key_val >> 16u) & 0xff); + } + + png_write_row(png_ptr, + reinterpret_cast(row_data.data())); + } + + png_write_end(png_ptr, nullptr); + + png_destroy_write_struct(&png_ptr, &png_info_ptr); + + return false; // SUCCESS +} + +template +bool PngLidarScanEncoder::encode32bitImage( + ScanChannelData& res_buf, const Eigen::Ref>& img, + const std::vector& px_offset) const { + return encode32bitImage(res_buf, destagger(img, px_offset)); +} + +template +bool PngLidarScanEncoder::encode32bitImage( + ScanChannelData& res_buf, const Eigen::Ref>& img) const { + const uint32_t width = static_cast(img.cols()); + const uint32_t height = static_cast(img.rows()); + + // 8bit RGBA + const int sample_depth = 8; + const int color_type = PNG_COLOR_TYPE_RGB_ALPHA; + + // 32bit Encoding Sizes + std::vector row_data(width * 4); // RGBA, 8bit + + // libpng main structs + png_structp png_ptr; + png_infop png_info_ptr; + + if (png_osf_write_init(&png_ptr, &png_info_ptr)) { + return true; + } + + if (setjmp(png_jmpbuf(png_ptr))) { + png_destroy_write_struct(&png_ptr, &png_info_ptr); + return true; + } + + png_osf_write_start(png_ptr, png_info_ptr, res_buf, width, height, + sample_depth, color_type, compression_amount_); + + for (size_t u = 0; u < height; ++u) { + for (size_t v = 0; v < width; ++v) { + const uint64_t key_val = img(u, v); + + // 32bit Encoding Logic + row_data[v * 4 + 0] = static_cast(key_val & 0xff); + row_data[v * 4 + 1] = static_cast((key_val >> 8u) & 0xff); + row_data[v * 4 + 2] = static_cast((key_val >> 16u) & 0xff); + row_data[v * 4 + 3] = static_cast((key_val >> 24u) & 0xff); + } + + png_write_row(png_ptr, + reinterpret_cast(row_data.data())); + } + + png_write_end(png_ptr, nullptr); + + png_destroy_write_struct(&png_ptr, &png_info_ptr); + + return false; // SUCCESS +} + +template +bool PngLidarScanEncoder::encode64bitImage( + ScanChannelData& res_buf, const Eigen::Ref>& img, + const std::vector& px_offset) const { + return encode64bitImage(res_buf, destagger(img, px_offset)); +} + +template +bool PngLidarScanEncoder::encode64bitImage( + ScanChannelData& res_buf, const Eigen::Ref>& img) const { + const uint32_t width = static_cast(img.cols()); + const uint32_t height = static_cast(img.rows()); + + // 16bit RGBA + const int sample_depth = 16; + const int color_type = PNG_COLOR_TYPE_RGB_ALPHA; + + // 64bit Encoding Sizes + std::vector row_data(width * 8); // RGBA, 16bit + + // libpng main structs + png_structp png_ptr; + png_infop png_info_ptr; + + if (png_osf_write_init(&png_ptr, &png_info_ptr)) { + return true; + } + + if (setjmp(png_jmpbuf(png_ptr))) { + png_destroy_write_struct(&png_ptr, &png_info_ptr); + return true; + } + + png_osf_write_start(png_ptr, png_info_ptr, res_buf, width, height, + sample_depth, color_type, compression_amount_); + + // Needed to transform provided little-endian samples to internal + // PNG big endian format + png_set_swap(png_ptr); + + for (size_t u = 0; u < height; ++u) { + for (size_t v = 0; v < width; ++v) { + const uint64_t key_val = img(u, v); + + // 64bit Encoding Logic + row_data[v * 8 + 0] = static_cast(key_val & 0xff); + row_data[v * 8 + 1] = static_cast((key_val >> 8u) & 0xff); + row_data[v * 8 + 2] = static_cast((key_val >> 16u) & 0xff); + row_data[v * 8 + 3] = static_cast((key_val >> 24u) & 0xff); + row_data[v * 8 + 4] = static_cast((key_val >> 32u) & 0xff); + row_data[v * 8 + 5] = static_cast((key_val >> 40u) & 0xff); + row_data[v * 8 + 6] = static_cast((key_val >> 48u) & 0xff); + row_data[v * 8 + 7] = static_cast((key_val >> 56u) & 0xff); + } + + png_write_row(png_ptr, + reinterpret_cast(row_data.data())); + } + + png_write_end(png_ptr, nullptr); + + png_destroy_write_struct(&png_ptr, &png_info_ptr); + + return false; // SUCCESS +} + +} // namespace osf +} // namespace ouster diff --git a/ouster_osf/src/png_tools.cpp b/ouster_osf/src/png_tools.cpp index b197f6a9..4999394d 100644 --- a/ouster_osf/src/png_tools.cpp +++ b/ouster_osf/src/png_tools.cpp @@ -5,8 +5,6 @@ #include "png_tools.h" -#include - #include #include #include @@ -21,21 +19,6 @@ using namespace ouster::sensor; namespace ouster { namespace osf { -/** - * Effect of png_set_compression(comp level): - * - (no png out): 2s, n/a - * - comp level 1: 39s, 648M (60% speedup vs default, 10% size increase) - * - comp level 2: 38s, 643M - * - comp level 3: 45s, 639M - * - comp level 4: 48s, 590M (47% speedup vs default, <1% size increase) - * - comp level 5: 61s, 589M - * - libpng default: 98s, 586M - * - comp level 9: 328s, 580M - * - * @todo investigate other zlib options - */ -static constexpr int PNG_OSF_ZLIB_COMPRESSION_LEVEL = 4; - /** * Provides the data reader capabilities from std::vector for png_read IO */ @@ -58,7 +41,9 @@ struct VectorReader { /** * Error callback that will be fired on libpng errors + * @TODO Change up tests to not use this stuff */ +OUSTER_API_FUNCTION void png_osf_error(png_structp png_ptr, png_const_charp msg) { logger().error("ERROR libpng osf: {}", msg); longjmp(png_jmpbuf(png_ptr), 1); @@ -122,7 +107,9 @@ void png_osf_read_data(png_structp png_ptr, png_bytep bytes, /** * It's needed for custom png IO operations... but I've never seen it's called. * And also there are no need to flush writer to std::vector buffer in our case. + * @TODO Change up tests to not use this stuff */ +OUSTER_API_FUNCTION void png_osf_flush_data(png_structp){}; /** @@ -172,13 +159,13 @@ bool png_osf_read_init(png_structpp png_ptrp, png_infopp png_info_ptrp) { * Write destination is res_buf of std::vector type. */ void png_osf_write_start(png_structp png_ptr, png_infop png_info_ptr, - ScanChannelData& res_buf, const uint32_t width, - const uint32_t height, const int sample_depth, - const int color_type) { + ScanChannelData& res_buf, uint32_t width, + uint32_t height, int sample_depth, int color_type, + int compression_amount) { // Use setjmp() on upper level for errors catching png_set_write_fn(png_ptr, &res_buf, png_osf_write_data, png_osf_flush_data); - png_set_compression_level(png_ptr, PNG_OSF_ZLIB_COMPRESSION_LEVEL); + png_set_compression_level(png_ptr, compression_amount); png_set_IHDR(png_ptr, png_info_ptr, width, height, sample_depth, color_type, PNG_INTERLACE_NONE, PNG_COMPRESSION_TYPE_DEFAULT, @@ -187,582 +174,24 @@ void png_osf_write_start(png_structp png_ptr, png_infop png_info_ptr, png_write_info(png_ptr, png_info_ptr); } -// ========== Encode Functions =================================== -#ifdef OUSTER_OSF_NO_THREADING -ScanData scanEncodeFieldsSingleThread(const LidarScan& lidar_scan, - const std::vector& px_offset, - const LidarScanFieldTypes& field_types) { - // Prepare scan data of size that fits all field_types we are about to - // encode - ScanData fields_data(field_types.size()); - - size_t scan_idx = 0; - for (const auto& f : field_types) { - fieldEncode(lidar_scan, f, px_offset, fields_data, scan_idx); - scan_idx += 1; - } - - return fields_data; -} -#else -ScanData scanEncodeFields(const LidarScan& lidar_scan, - const std::vector& px_offset, - const LidarScanFieldTypes& field_types) { - // Prepare scan data of size that fits all field_types we are about to - // encode - ScanData fields_data(field_types.size()); - - unsigned int con_num = std::thread::hardware_concurrency(); - // looking for at least 4 cores if can't determine - if (!con_num) con_num = 4; - - const size_t fields_num = field_types.size(); - // Number of fields to pack into a single thread coder - size_t per_thread_num = (fields_num + con_num - 1) / con_num; - std::vector> futures{}; - size_t scan_idx = 0; - for (size_t t = 0; t < con_num && t * per_thread_num < fields_num; ++t) { - // Per every thread we pack the `per_thread_num` field_types encodings - // job - const size_t start_idx = t * per_thread_num; - // Fields list for a thread to encode - LidarScanFieldTypes thread_fields{}; - // Scan indices for the corresponding fields where result will be stored - std::vector thread_idxs{}; - for (size_t i = 0; i < per_thread_num && i + start_idx < fields_num; - ++i) { - thread_fields.push_back(field_types[start_idx + i]); - thread_idxs.push_back(scan_idx); - scan_idx += 1; - } - // Start an encoder thread with selected fields and corresponding - // indices list - futures.emplace_back(std::async(fieldEncodeMulti, std::cref(lidar_scan), - thread_fields, std::cref(px_offset), - std::ref(fields_data), thread_idxs)); - } - - for (auto& t : futures) { - t.get(); - } - - return fields_data; -} -#endif - -template -bool encode8bitImage(ScanChannelData& res_buf, - const Eigen::Ref>& img, - const std::vector& px_offset) { - return encode8bitImage(res_buf, destagger(img, px_offset)); -} - -template bool encode8bitImage(ScanChannelData&, - const Eigen::Ref>&, - const std::vector&); -template bool encode8bitImage( - ScanChannelData&, const Eigen::Ref>&, - const std::vector&); -template bool encode8bitImage( - ScanChannelData&, const Eigen::Ref>&, - const std::vector&); -template bool encode8bitImage( - ScanChannelData&, const Eigen::Ref>&, - const std::vector&); - -template -bool encode8bitImage(ScanChannelData& res_buf, - const Eigen::Ref>& img) { - const uint32_t width = static_cast(img.cols()); - const uint32_t height = static_cast(img.rows()); - - // 8 bit Gray - const int sample_depth = 8; - const int color_type = PNG_COLOR_TYPE_GRAY; - - // 8bit Encoding Sizes - std::vector row_data(width); // Gray, 8bit - - // libpng main structs - png_structp png_ptr; - png_infop png_info_ptr; - - if (png_osf_write_init(&png_ptr, &png_info_ptr)) { - return true; - } - - if (setjmp(png_jmpbuf(png_ptr))) { - png_destroy_write_struct(&png_ptr, &png_info_ptr); - return true; - } - - png_osf_write_start(png_ptr, png_info_ptr, res_buf, width, height, - sample_depth, color_type); - - for (size_t u = 0; u < height; ++u) { - for (size_t v = 0; v < width; ++v) { - // 8bit Encoding Logic - row_data[v] = static_cast(img(u, v)); - } - - png_write_row(png_ptr, - reinterpret_cast(row_data.data())); - } - - png_write_end(png_ptr, nullptr); - - png_destroy_write_struct(&png_ptr, &png_info_ptr); - - return false; // SUCCESS -} - -template bool encode8bitImage(ScanChannelData&, - const Eigen::Ref>&); -template bool encode8bitImage( - ScanChannelData&, const Eigen::Ref>&); -template bool encode8bitImage( - ScanChannelData&, const Eigen::Ref>&); -template bool encode8bitImage( - ScanChannelData&, const Eigen::Ref>&); - -template -bool encode16bitImage(ScanChannelData& res_buf, - const Eigen::Ref>& img) { - const uint32_t width = static_cast(img.cols()); - const uint32_t height = static_cast(img.rows()); - - // 16 bit Gray - const int sample_depth = 16; - const int color_type = PNG_COLOR_TYPE_GRAY; - - // 16bit Encoding Sizes - std::vector row_data(width * 2); // Gray, 16bit - - // libpng main structs - png_structp png_ptr; - png_infop png_info_ptr; - - if (png_osf_write_init(&png_ptr, &png_info_ptr)) { - return true; - } - - if (setjmp(png_jmpbuf(png_ptr))) { - png_destroy_write_struct(&png_ptr, &png_info_ptr); - return true; - } - - png_osf_write_start(png_ptr, png_info_ptr, res_buf, width, height, - sample_depth, color_type); - - // Needed to transform provided little-endian samples to internal - // PNG big endian format - png_set_swap(png_ptr); - - for (size_t u = 0; u < height; ++u) { - for (size_t v = 0; v < width; ++v) { - const uint64_t key_val = img(u, v); - - // 16bit Encoding Logic - row_data[v * 2] = static_cast(key_val & 0xff); - row_data[v * 2 + 1] = static_cast((key_val >> 8u) & 0xff); - } - - png_write_row(png_ptr, - reinterpret_cast(row_data.data())); - } - - png_write_end(png_ptr, nullptr); - - png_destroy_write_struct(&png_ptr, &png_info_ptr); - - return false; // SUCCESS -} - -template bool encode16bitImage( - ScanChannelData&, const Eigen::Ref>&); -template bool encode16bitImage( - ScanChannelData&, const Eigen::Ref>&); -template bool encode16bitImage( - ScanChannelData&, const Eigen::Ref>&); -template bool encode16bitImage( - ScanChannelData&, const Eigen::Ref>&); - -template -bool encode16bitImage(ScanChannelData& res_buf, - const Eigen::Ref>& img, - const std::vector& px_offset) { - return encode16bitImage(res_buf, destagger(img, px_offset)); -} - -template bool encode16bitImage(ScanChannelData&, - const Eigen::Ref>&, - const std::vector&); -template bool encode16bitImage( - ScanChannelData&, const Eigen::Ref>&, - const std::vector&); -template bool encode16bitImage( - ScanChannelData&, const Eigen::Ref>&, - const std::vector&); -template bool encode16bitImage( - ScanChannelData&, const Eigen::Ref>&, - const std::vector&); - -template -bool encode24bitImage(ScanChannelData& res_buf, - const Eigen::Ref>& img, - const std::vector& px_offset) { - return encode24bitImage(res_buf, destagger(img, px_offset)); -} - -template bool encode24bitImage(ScanChannelData&, - const Eigen::Ref>&, - const std::vector&); -template bool encode24bitImage( - ScanChannelData&, const Eigen::Ref>&, - const std::vector&); -template bool encode24bitImage( - ScanChannelData&, const Eigen::Ref>&, - const std::vector&); -template bool encode24bitImage( - ScanChannelData&, const Eigen::Ref>&, - const std::vector&); - -template -bool encode24bitImage(ScanChannelData& res_buf, - const Eigen::Ref>& img) { - const uint32_t width = static_cast(img.cols()); - const uint32_t height = static_cast(img.rows()); - - // 8bit RGB - const int sample_depth = 8; - const int color_type = PNG_COLOR_TYPE_RGB; - - // 24bit Encoding Sizes - std::vector row_data(width * 3); // RGB, 8bit - - // libpng main structs - png_structp png_ptr; - png_infop png_info_ptr; - - if (png_osf_write_init(&png_ptr, &png_info_ptr)) { - return true; - } - - if (setjmp(png_jmpbuf(png_ptr))) { - png_destroy_write_struct(&png_ptr, &png_info_ptr); - return true; - } - - png_osf_write_start(png_ptr, png_info_ptr, res_buf, width, height, - sample_depth, color_type); - - for (size_t u = 0; u < height; ++u) { - for (size_t v = 0; v < width; ++v) { - const uint64_t key_val = img(u, v); - - // 24bit Encoding Logic - row_data[v * 3 + 0] = static_cast(key_val & 0xff); - row_data[v * 3 + 1] = static_cast((key_val >> 8u) & 0xff); - row_data[v * 3 + 2] = static_cast((key_val >> 16u) & 0xff); - } - - png_write_row(png_ptr, - reinterpret_cast(row_data.data())); - } - - png_write_end(png_ptr, nullptr); - - png_destroy_write_struct(&png_ptr, &png_info_ptr); - - return false; // SUCCESS -} - -template bool encode24bitImage( - ScanChannelData&, const Eigen::Ref>&); -template bool encode24bitImage( - ScanChannelData&, const Eigen::Ref>&); -template bool encode24bitImage( - ScanChannelData&, const Eigen::Ref>&); -template bool encode24bitImage( - ScanChannelData&, const Eigen::Ref>&); - -template -bool encode32bitImage(ScanChannelData& res_buf, - const Eigen::Ref>& img, - const std::vector& px_offset) { - return encode32bitImage(res_buf, destagger(img, px_offset)); -} - -template bool encode32bitImage(ScanChannelData&, - const Eigen::Ref>&, - const std::vector&); -template bool encode32bitImage( - ScanChannelData&, const Eigen::Ref>&, - const std::vector&); -template bool encode32bitImage( - ScanChannelData&, const Eigen::Ref>&, - const std::vector&); -template bool encode32bitImage( - ScanChannelData&, const Eigen::Ref>&, - const std::vector&); - -template -bool encode32bitImage(ScanChannelData& res_buf, - const Eigen::Ref>& img) { - const uint32_t width = static_cast(img.cols()); - const uint32_t height = static_cast(img.rows()); - - // 8bit RGBA - const int sample_depth = 8; - const int color_type = PNG_COLOR_TYPE_RGB_ALPHA; - - // 32bit Encoding Sizes - std::vector row_data(width * 4); // RGBA, 8bit - - // libpng main structs - png_structp png_ptr; - png_infop png_info_ptr; - - if (png_osf_write_init(&png_ptr, &png_info_ptr)) { - return true; - } - - if (setjmp(png_jmpbuf(png_ptr))) { - png_destroy_write_struct(&png_ptr, &png_info_ptr); - return true; - } - - png_osf_write_start(png_ptr, png_info_ptr, res_buf, width, height, - sample_depth, color_type); - - for (size_t u = 0; u < height; ++u) { - for (size_t v = 0; v < width; ++v) { - const uint64_t key_val = img(u, v); - - // 32bit Encoding Logic - row_data[v * 4 + 0] = static_cast(key_val & 0xff); - row_data[v * 4 + 1] = static_cast((key_val >> 8u) & 0xff); - row_data[v * 4 + 2] = static_cast((key_val >> 16u) & 0xff); - row_data[v * 4 + 3] = static_cast((key_val >> 24u) & 0xff); - } - - png_write_row(png_ptr, - reinterpret_cast(row_data.data())); - } - - png_write_end(png_ptr, nullptr); - - png_destroy_write_struct(&png_ptr, &png_info_ptr); - - return false; // SUCCESS -} - -template bool encode32bitImage( - ScanChannelData&, const Eigen::Ref>&); -template bool encode32bitImage( - ScanChannelData&, const Eigen::Ref>&); -template bool encode32bitImage( - ScanChannelData&, const Eigen::Ref>&); -template bool encode32bitImage( - ScanChannelData&, const Eigen::Ref>&); - -template -bool encode64bitImage(ScanChannelData& res_buf, - const Eigen::Ref>& img, - const std::vector& px_offset) { - return encode64bitImage(res_buf, destagger(img, px_offset)); -} - -template bool encode64bitImage(ScanChannelData&, - const Eigen::Ref>&, - const std::vector&); -template bool encode64bitImage( - ScanChannelData&, const Eigen::Ref>&, - const std::vector&); -template bool encode64bitImage( - ScanChannelData&, const Eigen::Ref>&, - const std::vector&); -template bool encode64bitImage( - ScanChannelData&, const Eigen::Ref>&, - const std::vector&); - -template -bool encode64bitImage(ScanChannelData& res_buf, - const Eigen::Ref>& img) { - const uint32_t width = static_cast(img.cols()); - const uint32_t height = static_cast(img.rows()); - - // 16bit RGBA - const int sample_depth = 16; - const int color_type = PNG_COLOR_TYPE_RGB_ALPHA; - - // 64bit Encoding Sizes - std::vector row_data(width * 8); // RGBA, 16bit - - // libpng main structs - png_structp png_ptr; - png_infop png_info_ptr; - - if (png_osf_write_init(&png_ptr, &png_info_ptr)) { - return true; - } - - if (setjmp(png_jmpbuf(png_ptr))) { - png_destroy_write_struct(&png_ptr, &png_info_ptr); - return true; - } - - png_osf_write_start(png_ptr, png_info_ptr, res_buf, width, height, - sample_depth, color_type); - - // Needed to transform provided little-endian samples to internal - // PNG big endian format - png_set_swap(png_ptr); - - for (size_t u = 0; u < height; ++u) { - for (size_t v = 0; v < width; ++v) { - const uint64_t key_val = img(u, v); - - // 64bit Encoding Logic - row_data[v * 8 + 0] = static_cast(key_val & 0xff); - row_data[v * 8 + 1] = static_cast((key_val >> 8u) & 0xff); - row_data[v * 8 + 2] = static_cast((key_val >> 16u) & 0xff); - row_data[v * 8 + 3] = static_cast((key_val >> 24u) & 0xff); - row_data[v * 8 + 4] = static_cast((key_val >> 32u) & 0xff); - row_data[v * 8 + 5] = static_cast((key_val >> 40u) & 0xff); - row_data[v * 8 + 6] = static_cast((key_val >> 48u) & 0xff); - row_data[v * 8 + 7] = static_cast((key_val >> 56u) & 0xff); - } - - png_write_row(png_ptr, - reinterpret_cast(row_data.data())); - } - - png_write_end(png_ptr, nullptr); - - png_destroy_write_struct(&png_ptr, &png_info_ptr); - - return false; // SUCCESS -} - -template bool encode64bitImage( - ScanChannelData&, const Eigen::Ref>&); -template bool encode64bitImage( - ScanChannelData&, const Eigen::Ref>&); -template bool encode64bitImage( - ScanChannelData&, const Eigen::Ref>&); -template bool encode64bitImage( - ScanChannelData&, const Eigen::Ref>&); - -void fieldEncodeMulti(const LidarScan& lidar_scan, - const LidarScanFieldTypes& field_types, - const std::vector& px_offset, ScanData& scan_data, - const std::vector& scan_idxs) { - if (field_types.size() != scan_idxs.size()) { - throw std::invalid_argument( - "ERROR: in fieldEncodeMulti field_types.size() should " - "match scan_idxs.size()"); - } - for (size_t i = 0; i < field_types.size(); ++i) { - auto err = fieldEncode(lidar_scan, field_types[i], px_offset, scan_data, - scan_idxs[i]); - if (err) { - logger().error( - "ERROR: fieldEncode: Can't encode field [{}]" - "(in fieldEncodeMulti)", - field_types[i].first); - } - } -} - -bool fieldEncode( - const LidarScan& lidar_scan, - const std::pair& field_type, - const std::vector& px_offset, ScanData& scan_data, size_t scan_idx) { - if (scan_idx >= scan_data.size()) { - throw std::invalid_argument( - "ERROR: scan_data size is not sufficient to hold idx: " + - std::to_string(scan_idx)); - } - bool res = true; - switch (field_type.second) { - case sensor::ChanFieldType::UINT8: - res = encode8bitImage(scan_data[scan_idx], - lidar_scan.field(field_type.first), - px_offset); - break; - case sensor::ChanFieldType::UINT16: - res = encode16bitImage(scan_data[scan_idx], - lidar_scan.field(field_type.first), - px_offset); - break; - case sensor::ChanFieldType::UINT32: - res = encode32bitImage(scan_data[scan_idx], - lidar_scan.field(field_type.first), - px_offset); - break; - case sensor::ChanFieldType::UINT64: - res = encode64bitImage(scan_data[scan_idx], - lidar_scan.field(field_type.first), - px_offset); - break; - default: - logger().error( - "ERROR: fieldEncode: UNKNOWN:" - "ChanFieldType not yet " - "implemented"); - break; - } - if (res) { - logger().error("ERROR: fieldEncode: Can't encode field {}", - field_type.first); - } - return res; -} - -ScanData scanEncode(const LidarScan& lidar_scan, - const std::vector& px_offset, - const LidarScanFieldTypes& field_types) { -#ifdef OUSTER_OSF_NO_THREADING - return scanEncodeFieldsSingleThread(lidar_scan, px_offset, field_types); -#else - return scanEncodeFields(lidar_scan, px_offset, field_types); -#endif -} - // ========== Decode Functions =================================== -bool scanDecode(LidarScan& lidar_scan, const ScanData& scan_data, - const std::vector& px_offset, - const ouster::LidarScanFieldTypes& field_types) { -#ifdef OUSTER_OSF_NO_THREADING - return scanDecodeFieldsSingleThread(lidar_scan, scan_data, px_offset, - field_types); -#else - return scanDecodeFields(lidar_scan, scan_data, px_offset, field_types); -#endif -} - -bool fieldDecode( - LidarScan& lidar_scan, const ScanData& scan_data, size_t start_idx, - const std::pair& field_type, - const std::vector& px_offset) { - switch (field_type.second) { +bool fieldDecode(LidarScan& lidar_scan, const ScanData& scan_data, + size_t start_idx, const ouster::FieldType& field_type, + const std::vector& px_offset) { + switch (field_type.element_type) { case sensor::ChanFieldType::UINT8: - return decode8bitImage(lidar_scan.field(field_type.first), + return decode8bitImage(lidar_scan.field(field_type.name), scan_data[start_idx], px_offset); case sensor::ChanFieldType::UINT16: - return decode16bitImage( - lidar_scan.field(field_type.first), - scan_data[start_idx], px_offset); + return decode16bitImage(lidar_scan.field(field_type.name), + scan_data[start_idx], px_offset); case sensor::ChanFieldType::UINT32: - return decode32bitImage( - lidar_scan.field(field_type.first), - scan_data[start_idx], px_offset); + return decode32bitImage(lidar_scan.field(field_type.name), + scan_data[start_idx], px_offset); case sensor::ChanFieldType::UINT64: - return decode64bitImage( - lidar_scan.field(field_type.first), - scan_data[start_idx], px_offset); + return decode64bitImage(lidar_scan.field(field_type.name), + scan_data[start_idx], px_offset); default: logger().error( "ERROR: fieldDecode: UNKNOWN:" @@ -773,108 +202,6 @@ bool fieldDecode( return true; // ERROR } -bool fieldDecodeMulti(LidarScan& lidar_scan, const ScanData& scan_data, - const std::vector& scan_idxs, - const LidarScanFieldTypes& field_types, - const std::vector& px_offset) { - if (field_types.size() != scan_idxs.size()) { - throw std::invalid_argument( - "ERROR: in fieldDecodeMulti field_types.size() should " - "match scan_idxs.size()"); - } - auto res_err = false; - for (size_t i = 0; i < field_types.size(); ++i) { - if (!lidar_scan.has_field(field_types[i].first)) { - continue; - } - auto err = fieldDecode(lidar_scan, scan_data, scan_idxs[i], - field_types[i], px_offset); - if (err) { - logger().error( - "ERROR: fieldDecodeMulti: " - "Can't decode field [{}]", - field_types[i].first); - } - res_err = res_err || err; - } - return res_err; -} -#ifdef OUSTER_OSF_NO_THREADING -bool scanDecodeFieldsSingleThread( - LidarScan& lidar_scan, const ScanData& scan_data, - const std::vector& px_offset, - const ouster::LidarScanFieldTypes& field_types) { - size_t fields_cnt = lidar_scan.fields().size(); - size_t next_idx = 0; - for (auto ft : field_types) { - if (!lidar_scan.has_field(ft.name)) { - ++next_idx; - continue; - } - if (fieldDecode(lidar_scan, scan_data, next_idx, - {ft.name, ft.element_type}, px_offset)) { - logger().error( - "ERROR: scanDecodeFields:" - "Failed to decode field"); - return true; - } - ++next_idx; - } - return false; -} -#else -// TWS 20240301 TODO: determine if we can deduplicate this code (see -// scanEncodeFields) -bool scanDecodeFields(LidarScan& lidar_scan, const ScanData& scan_data, - const std::vector& px_offset, - const ouster::LidarScanFieldTypes& field_types) { - size_t fields_num = field_types.size(); - - unsigned int con_num = std::thread::hardware_concurrency(); - // looking for at least 4 cores if can't determine - if (!con_num) con_num = 4; - - // Number of fields to pack into a single thread coder - size_t per_thread_num = (fields_num + con_num - 1) / con_num; - std::vector> futures{}; - size_t scan_idx = 0; - - for (size_t t = 0; t < con_num && t * per_thread_num < fields_num; ++t) { - // Per every thread we pack the `per_thread_num` field_types encodings - // job - const size_t start_idx = t * per_thread_num; - // Fields list for a thread to encode - LidarScanFieldTypes thread_fields{}; - // Scan indices for the corresponding fields where result will be stored - std::vector thread_idxs{}; - for (size_t i = 0; i < per_thread_num && i + start_idx < fields_num; - ++i) { - thread_fields.push_back({field_types[start_idx + i].name, - field_types[start_idx + i].element_type}); - thread_idxs.push_back(scan_idx); - scan_idx += 1; // for UINT64 can be 2 (NOT IMPLEMENTED YET) - } - - // Start a decoder thread with selected fields and corresponding - // indices list - - futures.emplace_back(std::async(fieldDecodeMulti, std::ref(lidar_scan), - std::cref(scan_data), thread_idxs, - thread_fields, std::cref(px_offset))); - } - - for (auto& t : futures) { - // TODO: refactor, use return std::all - bool res = t.get(); - if (!res) { - return false; - } - } - - return false; -} -#endif - template bool decode24bitImage(Eigen::Ref> img, const ScanChannelData& channel_buf, @@ -1391,54 +718,6 @@ template bool decode8bitImage(Eigen::Ref>, template bool decode8bitImage(Eigen::Ref>, const ScanChannelData&); -ScanChannelData encodeField(const ouster::Field& field) { - ScanChannelData buffer; - - // do not compress, flat fields "compressed" size is greater than original - if (field.shape().size() == 1) { - buffer.resize(field.bytes()); - std::memcpy(buffer.data(), field, field.bytes()); - return buffer; - } - - // empty case - if (field.bytes() == 0) { - return buffer; - } - - FieldView view = uint_view(field); - // collapse shape - if (view.shape().size() > 2) { - size_t rows = view.shape()[0]; - size_t cols = view.size() / rows; - view = view.reshape(rows, cols); - } - - bool res = true; - switch (view.tag()) { - case sensor::ChanFieldType::UINT8: - res = encode8bitImage(buffer, view); - break; - case sensor::ChanFieldType::UINT16: - res = encode16bitImage(buffer, view); - break; - case sensor::ChanFieldType::UINT32: - res = encode32bitImage(buffer, view); - break; - case sensor::ChanFieldType::UINT64: - res = encode64bitImage(buffer, view); - break; - default: - break; - } - - if (res) { - throw std::runtime_error("encodeField: could not encode field"); - } - - return buffer; -} - void decodeField(ouster::Field& field, const ScanChannelData& buffer) { // 1d case, uncompressed if (field.shape().size() == 1) { diff --git a/ouster_osf/src/png_tools.h b/ouster_osf/src/png_tools.h index 7773c661..0a50967c 100644 --- a/ouster_osf/src/png_tools.h +++ b/ouster_osf/src/png_tools.h @@ -5,12 +5,15 @@ #pragma once +#include + #include #include #include "os_sensor/common_generated.h" #include "os_sensor/lidar_scan_stream_generated.h" #include "ouster/lidar_scan.h" +#include "ouster/visibility.h" namespace ouster { namespace osf { @@ -21,46 +24,17 @@ using ScanChannelData = std::vector; // Encoded PNG buffers using ScanData = std::vector; -// FieldTypes container -using LidarScanFieldTypes = - std::vector>; - +bool png_osf_write_init(png_structpp png_ptrp, png_infopp png_info_ptrp); +void png_osf_write_start(png_structp png_ptr, png_infop png_info_ptr, + ScanChannelData& res_buf, uint32_t width, + uint32_t height, int sample_depth, int color_type, + int compression_amount); /** * libpng only versions for Encode/Decode LidarScan to PNG buffers */ // ========== Decode Functions =================================== -/** - * Decode the PNG buffers into LidarScan object. This is a dispatch function to - * the specific decoding functions. - * - * @param[out] lidar_scan The output object that will be filled as a result of - * decoding. - * @param[in] scan_data PNG buffers to decode. - * @param[in] px_offset Pixel shift per row used to reconstruct staggered range - * image form. - * @param[in] fields Fields to deserialize in the correct order. - * @return false (0) if operation is successful true (1) if error occured - */ -bool scanDecode(LidarScan& lidar_scan, const ScanData& scan_data, - const std::vector& px_offset, - const ouster::LidarScanFieldTypes& fields); - -#ifdef OUSTER_OSF_NO_THREADING -/// Decoding eUDP LidarScan -// TODO[pb]: Make decoding of just some fields from scan data?? Not now ... -bool scanDecodeFieldsSingleThread(LidarScan& lidar_scan, - const ScanData& scan_data, - const std::vector& px_offset, - const ouster::LidarScanFieldTypes& fields); -#else -/// Decoding eUDP LidarScan, multithreaded version -bool scanDecodeFields(LidarScan& lidar_scan, const ScanData& scan_data, - const std::vector& px_offset, - const ouster::LidarScanFieldTypes& fields); -#endif - /** * Decode a single field to lidar_scan * @@ -74,10 +48,10 @@ bool scanDecodeFields(LidarScan& lidar_scan, const ScanData& scan_data, * image form. * @return false (0) if operation is successful true (1) if error occured */ -bool fieldDecode( - LidarScan& lidar_scan, const ScanData& scan_data, size_t scan_idx, - const std::pair& field_type, - const std::vector& px_offset); +OUSTER_API_FUNCTION +bool fieldDecode(LidarScan& lidar_scan, const ScanData& scan_data, + size_t scan_idx, const ouster::FieldType& field_type, + const std::vector& px_offset); /** * Decode multiple fields to lidar_scan @@ -96,6 +70,7 @@ bool fieldDecode( * image form * @return false (0) if operation is successful true (1) if error occured */ +OUSTER_API_FUNCTION bool fieldDecodeMulti(LidarScan& lidar_scan, const ScanData& scan_data, const std::vector& scan_idxs, const LidarScanFieldTypes& field_types, @@ -115,8 +90,8 @@ bool fieldDecodeMulti(LidarScan& lidar_scan, const ScanData& scan_data, /** @copydoc OSFPngDecode8 */ template -bool decode8bitImage(Eigen::Ref> img, - const ScanChannelData& channel_buf); +OUSTER_API_FUNCTION bool decode8bitImage(Eigen::Ref> img, + const ScanChannelData& channel_buf); /** * @copydoc OSFPngDecode8 @@ -124,9 +99,9 @@ bool decode8bitImage(Eigen::Ref> img, * image form */ template -bool decode8bitImage(Eigen::Ref> img, - const ScanChannelData& channel_buf, - const std::vector& px_offset); +OUSTER_API_FUNCTION bool decode8bitImage(Eigen::Ref> img, + const ScanChannelData& channel_buf, + const std::vector& px_offset); /** * @defgroup OSFPngDecode16 Decoding Functionality. @@ -147,14 +122,14 @@ bool decode8bitImage(Eigen::Ref> img, * image form */ template -bool decode16bitImage(Eigen::Ref> img, - const ScanChannelData& channel_buf, - const std::vector& px_offset); +OUSTER_API_FUNCTION bool decode16bitImage(Eigen::Ref> img, + const ScanChannelData& channel_buf, + const std::vector& px_offset); /** @copydoc OSFPngDecode16 */ template -bool decode16bitImage(Eigen::Ref> img, - const ScanChannelData& channel_buf); +OUSTER_API_FUNCTION bool decode16bitImage(Eigen::Ref> img, + const ScanChannelData& channel_buf); /** * @defgroup OSFPngDecode24 Decoding Functionality. @@ -175,14 +150,14 @@ bool decode16bitImage(Eigen::Ref> img, * image form. */ template -bool decode24bitImage(Eigen::Ref> img, - const ScanChannelData& channel_buf, - const std::vector& px_offset); +OUSTER_API_FUNCTION bool decode24bitImage(Eigen::Ref> img, + const ScanChannelData& channel_buf, + const std::vector& px_offset); /** @copydoc OSFPngDecode24 */ template -bool decode24bitImage(Eigen::Ref> img, - const ScanChannelData& channel_buf); +OUSTER_API_FUNCTION bool decode24bitImage(Eigen::Ref> img, + const ScanChannelData& channel_buf); /** * @defgroup OSFPngDecode32 Decoding Functionality. @@ -203,14 +178,14 @@ bool decode24bitImage(Eigen::Ref> img, * image form. */ template -bool decode32bitImage(Eigen::Ref> img, - const ScanChannelData& channel_buf, - const std::vector& px_offset); +OUSTER_API_FUNCTION bool decode32bitImage(Eigen::Ref> img, + const ScanChannelData& channel_buf, + const std::vector& px_offset); /** @copydoc OSFPngDecode32 */ template -bool decode32bitImage(Eigen::Ref> img, - const ScanChannelData& channel_buf); +OUSTER_API_FUNCTION bool decode32bitImage(Eigen::Ref> img, + const ScanChannelData& channel_buf); /** * @defgroup OSFPngDecode64 Decoding Functionality. @@ -231,238 +206,14 @@ bool decode32bitImage(Eigen::Ref> img, * image form. */ template -bool decode64bitImage(Eigen::Ref> img, - const ScanChannelData& channel_buf, - const std::vector& px_offset); +OUSTER_API_FUNCTION bool decode64bitImage(Eigen::Ref> img, + const ScanChannelData& channel_buf, + const std::vector& px_offset); /** @copydoc OSFPngDecode64 */ template -bool decode64bitImage(Eigen::Ref> img, - const ScanChannelData& channel_buf); - -// ========== Encode Functions =================================== - -/** - * Encode LidarScan to PNG buffers storing all field_types present in an object. - * - * @param[in] lidar_scan The LidarScan object to encode. - * @param[in] px_offset Pixel shift per row used to - * destaggered LidarScan data. - * @param[in] field_types the list of fields to encode. - * @return encoded PNG buffers, empty() if error occured. - */ -ScanData scanEncode(const LidarScan& lidar_scan, - const std::vector& px_offset, - const LidarScanFieldTypes& field_types); - -#ifdef OUSTER_OSF_NO_THREADING -/** - * Encode the lidar scan fields to PNGs channel buffers (ScanData). - * Single-threaded implementation. - * - * @param[in] lidar_scan A lidar scan object to encode. - * @param[in] px_offset Pixel shift per row used to construct de-staggered range - * image form. - * @param[in] field_types the list of fields to encode. - * @return Encoded PNGs in ScanData in order of field_types. - */ -ScanData scanEncodeFieldsSingleThread(const LidarScan& lidar_scan, - const std::vector& px_offset, - const LidarScanFieldTypes& field_types); -#else -/** - * Encode the lidar scan fields to PNGs channel buffers (ScanData). - * Multi-threaded implementation. - * - * @param[in] lidar_scan A lidar scan object to encode. - * @param[in] px_offset Pixel shift per row used to construct de-staggered range - * image form. - * @param[in] field_types The field types to use for encoding. - * @return Encoded PNGs in ScanData in order of field_types. - */ -ScanData scanEncodeFields(const LidarScan& lidar_scan, - const std::vector& px_offset, - const LidarScanFieldTypes& field_types); -#endif -/** - * Encode a single lidar scan field to PNGs channel buffer and place it to a - * specified `scan_data[scan_idx]` place - * - * @param[in] lidar_scan a lidar scan object to encode - * @param[in] field_type a filed_type of lidar scan to encode - * @param[in] px_offset pixel shift per row used to construct de-staggered - * range image form - * @param[out] scan_data channel buffers storage for the encoded lidar_scan - * @param[in] scan_idx index in `scan_data` of the beginning of field buffers - * where the result of encoding will be inserted - * @return false (0) if operation is successful true (1) if error occured - */ -bool fieldEncode( - const LidarScan& lidar_scan, - const std::pair& field_type, - const std::vector& px_offset, ScanData& scan_data, size_t scan_idx); - -/** - * Encode multiple lidar scan fields to PNGs channel buffers and insert them to - * a specified places `scan_idxs` in `scan_data`. - * - * @param[in] lidar_scan a lidar scan object to encode - * @param[in] field_types a vector of filed_types of - * lidar scan to encode - * @param[in] px_offset pixel shift per row used to construct de-staggered range - * image form - * @param[out] scan_data channel buffers storage for the encoded lidar_scan - * @param[in] scan_idxs a vector of indices in `scan_data` of the beginning of - * field buffers where the result of encoding will be - * inserted. `field_types.size()` should be equal to - * `scan_idxs.size()` - */ -void fieldEncodeMulti(const LidarScan& lidar_scan, - const LidarScanFieldTypes& field_types, - const std::vector& px_offset, ScanData& scan_data, - const std::vector& scan_idxs); - -/** - * @defgroup OSFPngEncode8 Encoding Functionality. - * Encode img object into a 8 bit, Gray, PNG buffer. - * - * @tparam T The type to use for the output array. - * - * @param[out] res_buf The output buffer with a single encoded PNG. - * @param[in] img The image object to encode. - * @return false (0) if operation is successful, true (1) if error occured - */ - -/** - * @copydoc OSFPngEncode8 - * @param[in] px_offset Pixel shift per row used to destagger img data. - */ -template -bool encode8bitImage(ScanChannelData& res_buf, - const Eigen::Ref>& img, - const std::vector& px_offset); - -/** @copydoc OSFPngEncode8 */ -template -bool encode8bitImage(ScanChannelData& res_buf, - const Eigen::Ref>& img); - -/** - * Encode img object into a 16 bit, Gray, PNG buffer. - * - * @tparam T The type to use for the output array. - * - * @param[out] res_buf The output buffer with a single encoded PNG. - * @param[in] img The image object to encode. - * @param[in] px_offset Pixel shift per row used to destagger img data. - * @return false (0) if operation is successful, true (1) if error occured - */ -template -bool encode16bitImage(ScanChannelData& res_buf, - const Eigen::Ref>& img, - const std::vector& px_offset); - -/** - * Encode 2D image of a typical lidar scan field channel into a 16 bit, Gray, - * PNG buffer. - * - * @tparam T The type to use for the output array. - * - * @param[out] res_buf The output buffer with a single encoded PNG. - * @param[in] img The image object to encode. - * @return false (0) if operation is successful, true (1) if error occured - */ -template -bool encode16bitImage(ScanChannelData& res_buf, - const Eigen::Ref>& img); - -/** - * @defgroup OSFPngEncode32 Encoding Functionality. - * Encode 2D image of a typical lidar scan field channel into a 32 bit, RGBA, - * PNG buffer. - * - * @tparam T The type to use for the output array. - * - * @param[out] res_buf The output buffer with a single encoded PNG. - * @param[in] img 2D image or a single LidarScan field data. - * @return false (0) if operation is successful, true (1) if error occured - */ - -/** - * @copydoc OSFPngEncode32 - * @param[in] px_offset Pixel shift per row used to destagger img data. - */ -template -bool encode32bitImage(ScanChannelData& res_buf, - const Eigen::Ref>& img, - const std::vector& px_offset); - -/** @copydoc OSFPngEncode32 */ -template -bool encode32bitImage(ScanChannelData& res_buf, - const Eigen::Ref>& img); - -/** - * @defgroup OSFPngEncode24 Encoding Functionality. - * Encode 2D image of a typical lidar scan field channel into a 24 bit, RGB, - * PNG buffer. - * - * @tparam T The type to use for the output array. - * - * @param[out] res_buf The output buffer with a single encoded PNG. - * @param[in] img 2D image or a single LidarScan field data. - * @return false (0) if operation is successful, true (1) if error occured - */ - -/** - * @copydoc OSFPngEncode24 - * @param[in] px_offset Pixel shift per row used to destagger img data. - */ -template -bool encode24bitImage(ScanChannelData& res_buf, - const Eigen::Ref>& img, - const std::vector& px_offset); - -/** @copydoc OSFPngEncode24 */ -template -bool encode24bitImage(ScanChannelData& res_buf, - const Eigen::Ref>& img); - -/** - * @defgroup OSFPngEncode64 Encoding Functionality. - * Encode 2D image of a typical lidar scan field channel into a 64 bit, RGBA, - * PNG buffer. - * - * @tparam T The type to use for the output array. - * - * @param[out] res_buf The output buffer with a single encoded PNG. - * @param[in] img 2D image or a single LidarScan field data. - * @return false (0) if operation is successful, true (1) if error occured - */ - -/** - * @copydoc OSFPngEncode64 - * @param[in] px_offset Pixel shift per row used to destagger img data. - */ -template -bool encode64bitImage(ScanChannelData& res_buf, - const Eigen::Ref>& img, - const std::vector& px_offset); - -/** @copydoc OSFPngEncode64 */ -template -bool encode64bitImage(ScanChannelData& res_buf, - const Eigen::Ref>& img); - -/** - * Encode Field into a data buffer. - * May use png compression, depending on field dimensionality. - * - * @param[in] field field to encode - * - * @return output buffer - */ -ScanChannelData encodeField(const ouster::Field& field); +OUSTER_API_FUNCTION bool decode64bitImage(Eigen::Ref> img, + const ScanChannelData& channel_buf); /** * Decode Field from a data buffer. @@ -471,6 +222,7 @@ ScanChannelData encodeField(const ouster::Field& field); * @param[inout] field field to store result in * @param[in] buffer buffer to decode */ +OUSTER_API_FUNCTION void decodeField(ouster::Field& field, const ScanChannelData& buffer); } // namespace osf diff --git a/ouster_osf/src/stream_lidar_scan.cpp b/ouster_osf/src/stream_lidar_scan.cpp index b11a1686..18d2888f 100644 --- a/ouster_osf/src/stream_lidar_scan.cpp +++ b/ouster_osf/src/stream_lidar_scan.cpp @@ -6,6 +6,7 @@ #include "ouster/osf/stream_lidar_scan.h" #include +#include #include #include "ouster/impl/logging.h" @@ -115,10 +116,11 @@ flatbuffers::Offset> CreateVectorOfStructs( return res_off; } -flatbuffers::Offset create_osf_field( +flatbuffers::Offset LidarScanStream::create_osf_field( flatbuffers::FlatBufferBuilder& fbb, const std::string& name, - const Field& f) { - ScanChannelData data = encodeField(f); + const Field& f) const { + ScanChannelData data = + writer_.encoder().lidar_scan_encoder().encodeField(f); std::vector shape{f.shape().begin(), f.shape().end()}; return gen::CreateFieldDirect(fbb, name.c_str(), to_osf_enum(f.tag()), &shape, to_osf_enum(f.field_class()), &data, @@ -201,10 +203,222 @@ std::string from_osf_enum(gen::CHAN_FIELD f) { return lookup(chanfield_strings, f).value(); } -flatbuffers::Offset create_lidar_scan_msg( +// ========== Encode Functions =================================== +#ifdef OUSTER_OSF_NO_THREADING + +ScanData LidarScanStream::scanEncodeFieldsSingleThread( + const LidarScan& lidar_scan, const std::vector& px_offset, + const LidarScanFieldTypes& field_types) const { + // Prepare scan data of size that fits all field_types we are about to + // encode + ScanData fields_data(field_types.size()); + + size_t scan_idx = 0; + for (const auto& f : field_types) { + writer_.encoder().lidar_scan_encoder().fieldEncode( + lidar_scan, f, px_offset, fields_data, scan_idx); + scan_idx += 1; + } + + return fields_data; +} +#else + +void LidarScanStream::fieldEncodeMulti( + const LidarScan& lidar_scan, const ouster::LidarScanFieldTypes& field_types, + const std::vector& px_offset, ScanData& scan_data, + const std::vector& scan_idxs) const { + if (field_types.size() != scan_idxs.size()) { + throw std::invalid_argument( + "ERROR: in fieldEncodeMulti field_types.size() should " + "match scan_idxs.size()"); + } + for (size_t i = 0; i < field_types.size(); ++i) { + auto err = writer_.encoder().lidar_scan_encoder().fieldEncode( + lidar_scan, field_types[i], px_offset, scan_data, scan_idxs[i]); + if (err) { + logger().error( + "ERROR: fieldEncode: Can't encode field [{}]" + "(in fieldEncodeMulti)", + field_types[i].name); + } + } +} + +ScanData LidarScanStream::scanEncodeFields( + const LidarScan& lidar_scan, const std::vector& px_offset, + const ouster::LidarScanFieldTypes& field_types) const { + // Prepare scan data of size that fits all field_types we are about to + // encode + ScanData fields_data(field_types.size()); + + unsigned int con_num = std::thread::hardware_concurrency(); + // looking for at least 4 cores if can't determine + if (!con_num) con_num = 4; + + const size_t fields_num = field_types.size(); + // Number of fields to pack into a single thread coder + size_t per_thread_num = (fields_num + con_num - 1) / con_num; + std::vector> futures{}; + size_t scan_idx = 0; + for (size_t t = 0; t < con_num && t * per_thread_num < fields_num; ++t) { + // Per every thread we pack the `per_thread_num` field_types encodings + // job + const size_t start_idx = t * per_thread_num; + // Fields list for a thread to encode + LidarScanFieldTypes thread_fields{}; + // Scan indices for the corresponding fields where result will be stored + std::vector thread_idxs{}; + for (size_t i = 0; i < per_thread_num && i + start_idx < fields_num; + ++i) { + thread_fields.push_back(field_types[start_idx + i]); + thread_idxs.push_back(scan_idx); + scan_idx += 1; + } + // Start an encoder thread with selected fields and corresponding + // indices list + futures.emplace_back(std::async(&LidarScanStream::fieldEncodeMulti, + this, std::cref(lidar_scan), + thread_fields, std::cref(px_offset), + std::ref(fields_data), thread_idxs)); + } + + for (auto& t : futures) { + t.get(); + } + + return fields_data; +} +#endif +ScanData LidarScanStream::scanEncode( + const LidarScan& lidar_scan, const std::vector& px_offset, + const ouster::LidarScanFieldTypes& field_types) const { +#ifdef OUSTER_OSF_NO_THREADING + return scanEncodeFieldsSingleThread(lidar_scan, px_offset, field_types); +#else + return scanEncodeFields(lidar_scan, px_offset, field_types); +#endif +} + +#ifdef OUSTER_OSF_NO_THREADING +bool scanDecodeFieldsSingleThread( + LidarScan& lidar_scan, const ScanData& scan_data, + const std::vector& px_offset, + const ouster::LidarScanFieldTypes& field_types) { + size_t fields_cnt = lidar_scan.fields().size(); + size_t next_idx = 0; + for (auto ft : field_types) { + if (!lidar_scan.has_field(ft.name)) { + ++next_idx; + continue; + } + if (fieldDecode(lidar_scan, scan_data, next_idx, + {ft.name, ft.element_type}, px_offset)) { + logger().error( + "ERROR: scanDecodeFields:" + "Failed to decode field"); + return true; + } + ++next_idx; + } + return false; +} +#else + +bool fieldDecodeMulti(LidarScan& lidar_scan, const ScanData& scan_data, + const std::vector& scan_idxs, + const ouster::LidarScanFieldTypes& field_types, + const std::vector& px_offset) { + if (field_types.size() != scan_idxs.size()) { + throw std::invalid_argument( + "ERROR: in fieldDecodeMulti field_types.size() should " + "match scan_idxs.size()"); + } + auto res_err = false; + for (size_t i = 0; i < field_types.size(); ++i) { + if (!lidar_scan.has_field(field_types[i].name)) { + continue; + } + auto err = fieldDecode(lidar_scan, scan_data, scan_idxs[i], + field_types[i], px_offset); + if (err) { + logger().error( + "ERROR: fieldDecodeMulti: " + "Can't decode field [{}]", + field_types[i].name); + } + res_err = res_err || err; + } + return res_err; +} + +// TWS 20240301 TODO: determine if we can deduplicate this code (see +// scanEncodeFields) +bool scanDecodeFields(LidarScan& lidar_scan, const ScanData& scan_data, + const std::vector& px_offset, + const ouster::LidarScanFieldTypes& field_types) { + size_t fields_num = field_types.size(); + + unsigned int con_num = std::thread::hardware_concurrency(); + // looking for at least 4 cores if can't determine + if (!con_num) con_num = 4; + + // Number of fields to pack into a single thread coder + size_t per_thread_num = (fields_num + con_num - 1) / con_num; + std::vector> futures{}; + size_t scan_idx = 0; + + for (size_t t = 0; t < con_num && t * per_thread_num < fields_num; ++t) { + // Per every thread we pack the `per_thread_num` field_types encodings + // job + const size_t start_idx = t * per_thread_num; + // Fields list for a thread to encode + LidarScanFieldTypes thread_fields{}; + // Scan indices for the corresponding fields where result will be stored + std::vector thread_idxs{}; + for (size_t i = 0; i < per_thread_num && i + start_idx < fields_num; + ++i) { + thread_fields.push_back({field_types[start_idx + i].name, + field_types[start_idx + i].element_type}); + thread_idxs.push_back(scan_idx); + scan_idx += 1; // for UINT64 can be 2 (NOT IMPLEMENTED YET) + } + + // Start a decoder thread with selected fields and corresponding + // indices list + + futures.emplace_back(std::async(fieldDecodeMulti, std::ref(lidar_scan), + std::cref(scan_data), thread_idxs, + thread_fields, std::cref(px_offset))); + } + + for (auto& t : futures) { + // TODO: refactor, use return std::all + bool res = t.get(); + if (!res) { + return false; + } + } + + return false; +} +#endif + +bool scanDecode(LidarScan& lidar_scan, const ScanData& scan_data, + const std::vector& px_offset, + const ouster::LidarScanFieldTypes& field_types) { +#ifdef OUSTER_OSF_NO_THREADING + return scanDecodeFieldsSingleThread(lidar_scan, scan_data, px_offset, + field_types); +#else + return scanDecodeFields(lidar_scan, scan_data, px_offset, field_types); +#endif +} + +flatbuffers::Offset LidarScanStream::create_lidar_scan_msg( flatbuffers::FlatBufferBuilder& fbb, const LidarScan& lidar_scan, const ouster::sensor::sensor_info& info, - const ouster::LidarScanFieldTypes meta_field_types) { + const ouster::LidarScanFieldTypes meta_field_types) const { const auto& ls = lidar_scan; // Prepare field_types for LidarScanMsg @@ -241,8 +455,7 @@ flatbuffers::Offset create_lidar_scan_msg( // now actually build our arrays from the sorted one std::vector field_types; - std::vector> - standard_fields; + ouster::LidarScanFieldTypes standard_fields; for (const auto& f : standard_fields_to_sort) { const auto& field = ls.field(f.second); field_types.push_back( @@ -448,9 +661,9 @@ std::unique_ptr restore_lidar_scan( // Set alert flags per lidar packet auto alert_flags_vec = ls_msg->alert_flags(); if (alert_flags_vec) { - if (static_cast(ls->alert_flags().size()) == + if (static_cast(ls->alert_flags().size()) == alert_flags_vec->size()) { - for (uint8_t i = 0; i < alert_flags_vec->size(); ++i) { + for (size_t i = 0; i < alert_flags_vec->size(); ++i) { ls->alert_flags()[i] = alert_flags_vec->Get(i); } } else if (alert_flags_vec->size() != 0) { @@ -627,6 +840,14 @@ void LidarScanStream::save(const ouster::osf::ts_t receive_ts, } std::vector LidarScanStream::make_msg(const LidarScan& lidar_scan) { + if (lidar_scan.w != sensor_info_.w() || lidar_scan.h != sensor_info_.h()) { + std::stringstream exception_msg_stream; + exception_msg_stream + << "lidar scan size (" << lidar_scan.w << ", " << lidar_scan.h + << ") does not match the sensor info resolution (" + << sensor_info_.w() << ", " << sensor_info_.h() << ")"; + throw std::invalid_argument(exception_msg_stream.str()); + } flatbuffers::FlatBufferBuilder fbb = flatbuffers::FlatBufferBuilder(32768); auto ls_msg_offset = create_lidar_scan_msg(fbb, lidar_scan, sensor_info_, field_types_); diff --git a/ouster_osf/src/writer.cpp b/ouster_osf/src/writer.cpp index 9d0b813c..4a6048af 100644 --- a/ouster_osf/src/writer.cpp +++ b/ouster_osf/src/writer.cpp @@ -12,6 +12,7 @@ #include "ouster/osf/basics.h" #include "ouster/osf/crc32.h" #include "ouster/osf/layout_streaming.h" +#include "ouster/osf/png_lidarscan_encoder.h" #include "ouster/osf/stream_lidar_scan.h" using namespace ouster::sensor; @@ -22,9 +23,11 @@ namespace ouster { namespace osf { Writer::Writer(const std::string& filename, uint32_t chunk_size) - : file_name_(filename), + : filename_(filename), metadata_id_{"ouster_sdk"}, - chunks_layout_{ChunksLayout::LAYOUT_STREAMING} { + chunks_layout_{ChunksLayout::LAYOUT_STREAMING}, + encoder_{std::make_shared(std::make_shared( + ouster::osf::DEFAULT_PNG_OSF_ZLIB_COMPRESSION_LEVEL))} { // chunks STREAMING_LAYOUT chunks_writer_ = std::make_shared(*this, chunk_size); @@ -34,7 +37,7 @@ Writer::Writer(const std::string& filename, uint32_t chunk_size) // TODO[pb]: Check if file exists, add flag overwrite/not overwrite, etc - header_size_ = start_osf_file(file_name_); + header_size_ = start_osf_file(filename_); if (header_size_ > 0) { pos_ = static_cast(header_size_); @@ -46,14 +49,14 @@ Writer::Writer(const std::string& filename, uint32_t chunk_size) Writer::Writer(const std::string& filename, const ouster::sensor::sensor_info& info, const std::vector& desired_fields, - uint32_t chunk_size) + uint32_t chunk_size, std::shared_ptr encoder) : Writer(filename, std::vector{info}, - desired_fields, chunk_size) {} + desired_fields, chunk_size, encoder) {} Writer::Writer(const std::string& filename, const std::vector& info, const std::vector& desired_fields, - uint32_t chunk_size) + uint32_t chunk_size, std::shared_ptr encoder) : Writer(filename, chunk_size) { sensor_info_ = info; for (uint32_t i = 0; i < info.size(); i++) { @@ -61,6 +64,10 @@ Writer::Writer(const std::string& filename, field_types_.push_back({}); desired_fields_.push_back(desired_fields); } + if (encoder) { + // set encoder if one is specified + encoder_ = encoder; + } } const std::vector& Writer::sensor_info() const { @@ -211,7 +218,7 @@ uint64_t Writer::append(const uint8_t* buf, const uint64_t size) { logger().info("Writer::append has nothing to append"); return 0; } - uint64_t saved_bytes = buffer_to_file(buf, size, file_name_, true); + uint64_t saved_bytes = buffer_to_file(buf, size, filename_, true); pos_ += static_cast(saved_bytes); return saved_bytes; } @@ -240,7 +247,7 @@ const std::string& Writer::metadata_id() const { return metadata_id_; } void Writer::set_metadata_id(const std::string& id) { metadata_id_ = id; } -const std::string& Writer::filename() const { return file_name_; } +const std::string& Writer::filename() const { return filename_; } ChunksLayout Writer::chunks_layout() const { return chunks_layout_; } @@ -289,8 +296,7 @@ std::vector Writer::make_metadata() const { } void Writer::close() { - if (finished_) { - // already did everything + if (is_closed()) { return; } @@ -305,7 +311,7 @@ void Writer::close() { append(metadata_buf.data(), metadata_buf.size()); if (metadata_saved_size && metadata_saved_size == metadata_buf.size() + CRC_BYTES_SIZE) { - if (finish_osf_file(file_name_, metadata_offset, metadata_saved_size) == + if (finish_osf_file(filename_, metadata_offset, metadata_saved_size) == header_size_) { finished_ = true; } else { diff --git a/ouster_osf/tests/CMakeLists.txt b/ouster_osf/tests/CMakeLists.txt index adfcef48..b9ea5898 100644 --- a/ouster_osf/tests/CMakeLists.txt +++ b/ouster_osf/tests/CMakeLists.txt @@ -1,6 +1,21 @@ -cmake_minimum_required(VERSION 3.1.0) +if (NOT (DEFINED OUSTER_TOP_LEVEL AND OUSTER_TOP_LEVEL)) + message("Tests running standalone") + get_filename_component(OUSTER_CMAKE_PATH "${CMAKE_CURRENT_LIST_DIR}/../../cmake" ABSOLUTE) + set(CMAKE_PREFIX_PATH "${OUSTER_CMAKE_PATH};${CMAKE_PREFIX_PATH}") + include(${OUSTER_CMAKE_PATH}/VcpkgEnv.cmake) + project(ouster_osf_tests) + find_package(OusterSDK REQUIRED) + include(CTest) + find_package(GTest CONFIG REQUIRED) + cmake_minimum_required(VERSION 3.10...3.22) + set(LIB_TO_USE OusterSDK::ouster_osf OusterSDK::ouster_client OusterSDK::ouster_pcap) +else() + message("Tests running from root") + find_package(GTest CONFIG REQUIRED) + set(LIB_TO_USE OusterSDK::ouster_osf OusterSDK::ouster_client OusterSDK::ouster_pcap) +endif() +message("Using Libraries: ${LIB_TO_USE}") -find_package(GTest REQUIRED) find_package(OpenSSL REQUIRED) # Each test file should be in a format "_test.cpp" @@ -26,9 +41,15 @@ foreach(TEST_FULL_NAME ${OSF_TESTS_SOURCES}) add_executable(osf_${TEST_FILENAME} ${TEST_FULL_NAME}) set_target_properties(osf_${TEST_FILENAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/tests") + if (OUSTER_OSF_NO_THREADING) + target_compile_definitions(osf_${TEST_FILENAME} PRIVATE OUSTER_OSF_NO_THREADING) + endif() - target_include_directories(osf_${TEST_FILENAME} PRIVATE ${CMAKE_CURRENT_LIST_DIR}/../src) - target_link_libraries(osf_${TEST_FILENAME} PRIVATE ouster_osf + target_include_directories(osf_${TEST_FILENAME} PRIVATE + ${CMAKE_CURRENT_LIST_DIR}/../src + $) + target_link_libraries(osf_${TEST_FILENAME} PRIVATE + ${LIB_TO_USE} GTest::gtest GTest::gtest_main OpenSSL::Crypto) diff --git a/ouster_osf/tests/operations_test.cpp b/ouster_osf/tests/operations_test.cpp index 7f601965..5c79e3d5 100644 --- a/ouster_osf/tests/operations_test.cpp +++ b/ouster_osf/tests/operations_test.cpp @@ -10,12 +10,15 @@ #include #include +#include #include +#include +#include +#include +#include #include #include "fb_utils.h" -#include "json/json.h" -#include "json_utils.h" #include "osf_test.h" #include "ouster/osf/basics.h" #include "ouster/osf/crc32.h" @@ -113,23 +116,29 @@ TEST_F(OperationsTest, GetOsfDumpInfo) { path_concat(test_data_dir(), "osfs/OS-1-128_v2.3.0_1024x10_lb_n3.osf"), true); - Json::Value osf_info_obj{}; + jsoncons::json osf_info_obj; - EXPECT_TRUE(parse_json(osf_info_str, osf_info_obj)); - - ASSERT_TRUE(osf_info_obj.isMember("header")); - EXPECT_TRUE(osf_info_obj["header"].isMember("status")); - EXPECT_TRUE(osf_info_obj["header"].isMember("version")); - EXPECT_TRUE(osf_info_obj["header"].isMember("size")); - EXPECT_TRUE(osf_info_obj["header"].isMember("metadata_offset")); - EXPECT_TRUE(osf_info_obj["header"].isMember("chunks_offset")); - - ASSERT_TRUE(osf_info_obj.isMember("metadata")); - EXPECT_TRUE(osf_info_obj["metadata"].isMember("id")); - EXPECT_EQ("ouster_sdk", osf_info_obj["metadata"]["id"].asString()); - EXPECT_TRUE(osf_info_obj["metadata"].isMember("start_ts")); - EXPECT_TRUE(osf_info_obj["metadata"].isMember("end_ts")); - EXPECT_TRUE(osf_info_obj["metadata"].isMember("entries")); + bool failure = false; + try { + osf_info_obj = jsoncons::json::parse(osf_info_str); + } catch (const jsoncons::ser_error&) { + failure = true; + } + EXPECT_FALSE(failure); + + ASSERT_TRUE(osf_info_obj.contains("header")); + EXPECT_TRUE(osf_info_obj["header"].contains("status")); + EXPECT_TRUE(osf_info_obj["header"].contains("version")); + EXPECT_TRUE(osf_info_obj["header"].contains("size")); + EXPECT_TRUE(osf_info_obj["header"].contains("metadata_offset")); + EXPECT_TRUE(osf_info_obj["header"].contains("chunks_offset")); + + ASSERT_TRUE(osf_info_obj.contains("metadata")); + EXPECT_TRUE(osf_info_obj["metadata"].contains("id")); + EXPECT_EQ("ouster_sdk", osf_info_obj["metadata"]["id"].as()); + EXPECT_TRUE(osf_info_obj["metadata"].contains("start_ts")); + EXPECT_TRUE(osf_info_obj["metadata"].contains("end_ts")); + EXPECT_TRUE(osf_info_obj["metadata"].contains("entries")); EXPECT_EQ(3, osf_info_obj["metadata"]["entries"].size()); } @@ -195,17 +204,19 @@ TEST_F(OperationsTest, BackupMetadataTest) { remove_dir(temp_dir); } -bool _parse_json(const std::string& json, Json::Value& root) { - Json::CharReaderBuilder build; - JSONCPP_STRING error; - const std::unique_ptr read(build.newCharReader()); - return read->parse(json.c_str(), (json.c_str() + json.length()), &root, - &error); +bool _parse_json(const std::string& json, jsoncons::json& root) { + bool failure = false; + try { + root = jsoncons::json::parse(json); + } catch (const jsoncons::ser_error&) { + failure = true; + } + return !failure; } ouster::sensor::sensor_info _gen_new_metadata(int start_number) { ouster::sensor::sensor_info new_metadata; - new_metadata.sn = "DEADBEEF"; + new_metadata.sn = 123456; new_metadata.fw_rev = "sqrt(-1) friends"; new_metadata.config.lidar_mode = ouster::sensor::MODE_512x10; new_metadata.prod_line = "OS-1-128"; @@ -213,9 +224,6 @@ ouster::sensor::sensor_info _gen_new_metadata(int start_number) { new_metadata.format.pixels_per_column = 128; new_metadata.format.columns_per_packet = 2 + start_number; new_metadata.format.columns_per_frame = 3 + start_number; - new_metadata.format.pixel_shift_by_row = { - 4 + start_number, 5 + start_number, 6 + start_number, 7 + start_number, - 8 + start_number}; new_metadata.format.column_window = {9 + start_number, 10 + start_number}; new_metadata.format.udp_profile_lidar = ouster::sensor::PROFILE_RNG15_RFL8_NIR8; @@ -235,15 +243,28 @@ ouster::sensor::sensor_info _gen_new_metadata(int start_number) { new_metadata.config.udp_port_lidar = 24 + start_number; new_metadata.config.udp_port_imu = 25 + start_number; - new_metadata.build_date = "Made in SAN FRANCISCO"; + new_metadata.build_date = "2023-02-03T21:45:40Z"; new_metadata.image_rev = "IDK, ask someone else"; new_metadata.prod_pn = "import random; print(random.random())"; new_metadata.status = "Not just good but great"; + for (size_t i = 0; i < 4; i++) { + for (size_t j = 0; j < 4; j++) { + double value = 0.0; + if (i == j) { + value = 1.0; + } + new_metadata.extrinsic(i, j) = value; + } + } + + for (size_t i = 0; i < new_metadata.format.pixels_per_column; i++) { + new_metadata.format.pixel_shift_by_row.push_back(i + start_number); + } return new_metadata; } -void _verify_empty_metadata(Json::Value& test_root, int entry_count = 0) { +void _verify_empty_metadata(jsoncons::json& test_root, int entry_count = 0) { EXPECT_EQ(test_root["metadata"]["chunks"].size(), 0); EXPECT_EQ(test_root["metadata"]["entries"].size(), entry_count); EXPECT_EQ(test_root["metadata"]["end_ts"], 0); @@ -289,7 +310,7 @@ TEST_F(OperationsTest, MetadataRewriteTestSimple) { _write_init_metadata(temp_file, header_size); std::string metadata_json = dump_metadata(temp_file, true); - Json::Value test_root{}; + jsoncons::json test_root{}; EXPECT_TRUE(_parse_json(metadata_json, test_root)); _verify_empty_metadata(test_root); @@ -298,13 +319,12 @@ TEST_F(OperationsTest, MetadataRewriteTestSimple) { osf_file_modify_metadata(temp_file, {new_metadata}); std::string output_metadata_json = dump_metadata(temp_file, true); - Json::Value output_root{}; + jsoncons::json output_root{}; EXPECT_TRUE(_parse_json(output_metadata_json, output_root)); EXPECT_NE(test_root, output_root); - Json::Value new_root{}; + jsoncons::json new_root{}; EXPECT_TRUE(_parse_json(new_metadata.to_json_string(), new_root)); - EXPECT_EQ(new_root, output_root["metadata"]["entries"][0]["buffer"]["sensor_info"]); unlink_path(temp_file); @@ -319,7 +339,7 @@ TEST_F(OperationsTest, MetadataRewriteTestMulti) { _write_init_metadata(temp_file, header_size); std::string metadata_json = dump_metadata(temp_file, true); - Json::Value test_root{}; + jsoncons::json test_root{}; EXPECT_TRUE(_parse_json(metadata_json, test_root)); _verify_empty_metadata(test_root); @@ -329,13 +349,13 @@ TEST_F(OperationsTest, MetadataRewriteTestMulti) { osf_file_modify_metadata(temp_file, {new_metadata, new_metadata2}); std::string output_metadata_json = dump_metadata(temp_file, true); - Json::Value output_root{}; + jsoncons::json output_root{}; EXPECT_TRUE(_parse_json(output_metadata_json, output_root)); EXPECT_NE(test_root, output_root); - Json::Value new_root{}; + jsoncons::json new_root{}; EXPECT_TRUE(_parse_json(new_metadata.to_json_string(), new_root)); - Json::Value new_root2{}; + jsoncons::json new_root2{}; auto temp_string = new_metadata2.to_json_string(); EXPECT_TRUE(_parse_json(temp_string, new_root2)); @@ -357,7 +377,7 @@ TEST_F(OperationsTest, MetadataRewriteTestPreExisting) { _write_init_metadata(temp_file, header_size, meta_store_); std::string metadata_json = dump_metadata(temp_file, true); - Json::Value test_root{}; + jsoncons::json test_root{}; EXPECT_TRUE(_parse_json(metadata_json, test_root)); _verify_empty_metadata(test_root, 1); @@ -371,11 +391,11 @@ TEST_F(OperationsTest, MetadataRewriteTestPreExisting) { osf_file_modify_metadata(temp_file, {new_metadata}); std::string output_metadata_json = dump_metadata(temp_file, true); - Json::Value output_root{}; + jsoncons::json output_root{}; EXPECT_TRUE(_parse_json(output_metadata_json, output_root)); EXPECT_NE(test_root, output_root); - Json::Value new_root{}; + jsoncons::json new_root{}; EXPECT_TRUE(_parse_json(new_metadata.to_json_string(), new_root)); EXPECT_EQ(output_root["metadata"]["entries"][0]["buffer"], diff --git a/ouster_osf/tests/png_tools_test.cpp b/ouster_osf/tests/png_tools_test.cpp index ab81c7f5..97c634a1 100644 --- a/ouster_osf/tests/png_tools_test.cpp +++ b/ouster_osf/tests/png_tools_test.cpp @@ -7,8 +7,6 @@ #include #include -#include -#include #include #include @@ -22,6 +20,7 @@ #include "ouster/impl/logging.h" #include "ouster/lidar_scan.h" #include "ouster/osf/basics.h" +#include "ouster/osf/png_lidarscan_encoder.h" #include "ouster/types.h" namespace ouster { @@ -75,287 +74,49 @@ TEST_F(OsfPngToolsTest, MakesLidarScan) { EXPECT_EQ(ls.status().size(), si.format.columns_per_frame); } -#define ENCODE_IMAGE_TEST(TEST_NAME, ENCODE_FUNC, DECODE_FUNC) \ - template \ - struct TEST_NAME { \ - template \ - bool to(const LidarScan& ls, const std::vector& px_offset, \ - Ti mask_bits = 0) { \ - ScanChannelData encoded_channel; \ - img_t key_orig(ls.h, ls.w); \ - key_orig = key_orig.unaryExpr([=](Ti) { \ - double sr = static_cast(std::rand()) / RAND_MAX; \ - return static_cast( \ - sr * static_cast(std::numeric_limits::max())); \ - }); \ - if (mask_bits && sizeof(Ti) * 8 > mask_bits) { \ - key_orig = key_orig.unaryExpr([=](Ti a) { \ - return static_cast(a & ((1LL << mask_bits) - 1)); \ - }); \ - } \ - bool res_enc = \ - ENCODE_FUNC(encoded_channel, key_orig, px_offset); \ - EXPECT_FALSE(res_enc); \ - std::cout << #ENCODE_FUNC \ - << ": encoded bytes = " << encoded_channel.size() \ - << " ================= " << std::endl; \ - EXPECT_TRUE(!encoded_channel.empty()); \ - img_t decoded_img{ls.h, ls.w}; \ - bool res_dec = \ - DECODE_FUNC(decoded_img, encoded_channel, px_offset); \ - EXPECT_FALSE(res_dec); \ - bool round_trip = (key_orig.template cast() == \ - decoded_img.template cast()) \ - .all(); \ - auto round_trip_cnt = (key_orig.template cast() == \ - decoded_img.template cast()) \ - .count(); \ - std::cout << "cnt = " << round_trip_cnt << std::endl; \ - return round_trip; \ - } \ - }; +#ifndef OUSTER_OSF_NO_THREADING -ENCODE_IMAGE_TEST(test8bitImageCoders, encode8bitImage, decode8bitImage) -ENCODE_IMAGE_TEST(test16bitImageCoders, encode16bitImage, decode16bitImage) -ENCODE_IMAGE_TEST(test24bitImageCoders, encode24bitImage, decode24bitImage) -ENCODE_IMAGE_TEST(test32bitImageCoders, encode32bitImage, decode32bitImage) -ENCODE_IMAGE_TEST(test64bitImageCoders, encode64bitImage, decode64bitImage) +TEST_F(OsfPngToolsTest, scanDecodeFields) { + // it should propagate the exception + // if destagger throws std::invalid_argument -// Check encodeXXbitImage functions on RANGE fields of LidarScan -// converted to various img_t of different unsigned int sizes. -TEST_F(OsfPngToolsTest, ImageCoders) { + // create a writer with a sensor info from DATA_DIR const sensor_info si = sensor::metadata_from_json( path_concat(test_data_dir(), "pcaps/OS-1-128_v2.3.0_1024x10.json")); - LidarScan ls = get_random_lidar_scan(si); - auto px_offset = si.format.pixel_shift_by_row; - - // ======== 8bit ========== - - EXPECT_TRUE(test8bitImageCoders().to(ls, px_offset, 8)); - EXPECT_TRUE(test8bitImageCoders().to(ls, px_offset, 8)); - EXPECT_TRUE(test8bitImageCoders().to(ls, px_offset, 8)); - EXPECT_TRUE(test8bitImageCoders().to(ls, px_offset, 8)); - - EXPECT_TRUE(test8bitImageCoders().to(ls, px_offset, 8)); - EXPECT_TRUE(test8bitImageCoders().to(ls, px_offset, 8)); - EXPECT_TRUE(test8bitImageCoders().to(ls, px_offset, 8)); - EXPECT_TRUE(test8bitImageCoders().to(ls, px_offset, 8)); - - EXPECT_TRUE(test8bitImageCoders().to(ls, px_offset, 8)); - EXPECT_TRUE(test8bitImageCoders().to(ls, px_offset, 8)); - EXPECT_TRUE(test8bitImageCoders().to(ls, px_offset, 8)); - EXPECT_TRUE(test8bitImageCoders().to(ls, px_offset, 8)); - - EXPECT_TRUE(test8bitImageCoders().to(ls, px_offset, 8)); - EXPECT_TRUE(test8bitImageCoders().to(ls, px_offset, 8)); - EXPECT_TRUE(test8bitImageCoders().to(ls, px_offset, 8)); - EXPECT_TRUE(test8bitImageCoders().to(ls, px_offset, 8)); - - // ======== 16bit ====== - // clang-format off - EXPECT_TRUE(test16bitImageCoders().to(ls, px_offset, 16)); - EXPECT_TRUE(test16bitImageCoders().to(ls, px_offset, 16)); - EXPECT_TRUE(test16bitImageCoders().to(ls, px_offset, 16)); - EXPECT_TRUE(test16bitImageCoders().to(ls, px_offset, 16)); - - EXPECT_FALSE(test16bitImageCoders().to(ls, px_offset, 16)); - EXPECT_TRUE(test16bitImageCoders().to(ls, px_offset, 16)); - EXPECT_TRUE(test16bitImageCoders().to(ls, px_offset, 16)); - EXPECT_TRUE(test16bitImageCoders().to(ls, px_offset, 16)); - - EXPECT_FALSE(test16bitImageCoders().to(ls, px_offset, 16)); - EXPECT_TRUE(test16bitImageCoders().to(ls, px_offset, 16)); - EXPECT_TRUE(test16bitImageCoders().to(ls, px_offset, 16)); - EXPECT_TRUE(test16bitImageCoders().to(ls, px_offset, 16)); - - EXPECT_FALSE(test16bitImageCoders().to(ls, px_offset, 16)); - EXPECT_TRUE(test16bitImageCoders().to(ls, px_offset, 16)); - EXPECT_TRUE(test16bitImageCoders().to(ls, px_offset, 16)); - EXPECT_TRUE(test16bitImageCoders().to(ls, px_offset, 16)); - // clang-format on - - // ======== 24bit ====== - - EXPECT_TRUE(test24bitImageCoders().to(ls, px_offset, 24)); - EXPECT_TRUE( - test24bitImageCoders().to(ls, px_offset, 24)); - EXPECT_TRUE( - test24bitImageCoders().to(ls, px_offset, 24)); - EXPECT_TRUE( - test24bitImageCoders().to(ls, px_offset, 24)); - - EXPECT_FALSE( - test24bitImageCoders().to(ls, px_offset, 24)); - EXPECT_TRUE( - test24bitImageCoders().to(ls, px_offset, 24)); - EXPECT_TRUE( - test24bitImageCoders().to(ls, px_offset, 24)); - EXPECT_TRUE( - test24bitImageCoders().to(ls, px_offset, 24)); - - EXPECT_FALSE( - test24bitImageCoders().to(ls, px_offset, 24)); - EXPECT_FALSE( - test24bitImageCoders().to(ls, px_offset, 24)); - EXPECT_TRUE( - test24bitImageCoders().to(ls, px_offset, 24)); - EXPECT_TRUE( - test24bitImageCoders().to(ls, px_offset, 24)); - - EXPECT_FALSE( - test24bitImageCoders().to(ls, px_offset, 24)); - EXPECT_FALSE( - test24bitImageCoders().to(ls, px_offset, 24)); - EXPECT_TRUE( - test24bitImageCoders().to(ls, px_offset, 24)); - EXPECT_TRUE( - test24bitImageCoders().to(ls, px_offset, 24)); - - // ======== 32bit ====== - - EXPECT_TRUE(test32bitImageCoders().to(ls, px_offset, 32)); - EXPECT_TRUE( - test32bitImageCoders().to(ls, px_offset, 32)); - EXPECT_TRUE( - test32bitImageCoders().to(ls, px_offset, 32)); - EXPECT_TRUE( - test32bitImageCoders().to(ls, px_offset, 32)); - EXPECT_FALSE( - test32bitImageCoders().to(ls, px_offset, 32)); - EXPECT_TRUE( - test32bitImageCoders().to(ls, px_offset, 32)); - EXPECT_TRUE( - test32bitImageCoders().to(ls, px_offset, 32)); - EXPECT_TRUE( - test32bitImageCoders().to(ls, px_offset, 32)); + // assert precondition + ASSERT_EQ(si.format.pixel_shift_by_row.size(), 128); + std::string output_osf_filename = tmp_file("scan_decode_fields_test.osf"); - EXPECT_FALSE( - test32bitImageCoders().to(ls, px_offset, 32)); - EXPECT_FALSE( - test32bitImageCoders().to(ls, px_offset, 32)); - EXPECT_TRUE( - test32bitImageCoders().to(ls, px_offset, 32)); - EXPECT_TRUE( - test32bitImageCoders().to(ls, px_offset, 32)); - - EXPECT_FALSE( - test32bitImageCoders().to(ls, px_offset, 32)); - EXPECT_FALSE( - test32bitImageCoders().to(ls, px_offset, 32)); - EXPECT_TRUE( - test32bitImageCoders().to(ls, px_offset, 32)); - EXPECT_TRUE( - test32bitImageCoders().to(ls, px_offset, 32)); - - // ======== 64bit ====== - - EXPECT_TRUE(test64bitImageCoders().to(ls, px_offset, 64)); - EXPECT_TRUE( - test64bitImageCoders().to(ls, px_offset, 64)); - EXPECT_TRUE( - test64bitImageCoders().to(ls, px_offset, 64)); - EXPECT_TRUE( - test64bitImageCoders().to(ls, px_offset, 64)); - - EXPECT_FALSE( - test64bitImageCoders().to(ls, px_offset, 64)); - EXPECT_TRUE( - test64bitImageCoders().to(ls, px_offset, 64)); - EXPECT_TRUE( - test64bitImageCoders().to(ls, px_offset, 64)); - EXPECT_TRUE( - test64bitImageCoders().to(ls, px_offset, 64)); - - EXPECT_FALSE( - test64bitImageCoders().to(ls, px_offset, 64)); - EXPECT_FALSE( - test64bitImageCoders().to(ls, px_offset, 64)); - EXPECT_TRUE( - test64bitImageCoders().to(ls, px_offset, 64)); - EXPECT_TRUE( - test64bitImageCoders().to(ls, px_offset, 64)); - - EXPECT_FALSE( - test64bitImageCoders().to(ls, px_offset, 64)); - EXPECT_FALSE( - test64bitImageCoders().to(ls, px_offset, 64)); - EXPECT_FALSE( - test64bitImageCoders().to(ls, px_offset, 64)); - EXPECT_TRUE( - test64bitImageCoders().to(ls, px_offset, 64)); -} - -TEST_F(OsfPngToolsTest, InternalsTest) { - // This is unused but is still required, test calling it - // Not expecting any returns - png_structp foo = - png_create_read_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL); - png_osf_flush_data(foo); - - bool error_caught = false; - std::stringstream output_stream; - auto ostream_sink = std::make_shared< - spdlog::sinks::ostream_sink>( - output_stream); - ouster::sensor::impl::Logger::instance().configure_generic_sink( - ostream_sink, "info"); - - if (setjmp(png_jmpbuf(foo))) { - error_caught = true; - } else { - png_osf_error( - foo, - "Also Checkout Porcupine Tree - Arriving Somewhere But Not Here"); - } - - std::string output_error = output_stream.str(); - auto error_loc = output_error.find("[error]"); - EXPECT_NE(error_loc, std::string::npos); - output_error = output_error.substr(error_loc); - EXPECT_TRUE(error_caught); -#ifdef _WIN32 - EXPECT_EQ(output_error, - "[error] ERROR libpng osf: Also Checkout Porcupine Tree" - " - Arriving Somewhere But Not Here\r\n"); -#else - EXPECT_EQ(output_error, - "[error] ERROR libpng osf: Also Checkout Porcupine Tree" - " - Arriving Somewhere But Not Here\n"); -#endif -} - -#ifndef OUSTER_OSF_NO_THREADING -TEST_F(OsfPngToolsTest, scanDecodeFields) { - // it should propagate the exception - // if destagger throws std::invalid_argument + // create a lidar scan that's the wrong size int w = 32; int h = 32; auto scan = ouster::LidarScan(w, h); auto field_types = scan.field_types(); - std::vector> fields; - for (const auto& field : field_types) { - fields.push_back({field.name, field.element_type}); - } std::vector shift_by_row; EXPECT_THROW( { try { - scanEncodeFields(scan, shift_by_row, fields); - } catch (const std::invalid_argument& e) { + Writer writer(output_osf_filename, si); + writer.save(0, scan); + writer.close(); + } catch (std::invalid_argument& e) { ASSERT_STREQ(e.what(), - "image height does not match shifts size"); + "lidar scan size (32, 32) does not match the " + "sensor info resolution (1024, 128)"); throw; } }, std::invalid_argument); } + #endif TEST(OsfFieldEncodeTest, field_encode_decode_test) { auto test_field_encoding = [](const ouster::Field& f) { ScanChannelData compressed; - EXPECT_NO_THROW({ compressed = encodeField(f); }); + PngLidarScanEncoder encoder(4); + EXPECT_NO_THROW({ compressed = encoder.encodeField(f); }); Field decoded(f.desc()); EXPECT_NO_THROW({ decodeField(decoded, compressed); }); EXPECT_EQ(f, decoded); diff --git a/ouster_osf/tests/reader_test.cpp b/ouster_osf/tests/reader_test.cpp index f280a975..98995627 100644 --- a/ouster_osf/tests/reader_test.cpp +++ b/ouster_osf/tests/reader_test.cpp @@ -6,8 +6,6 @@ #include "ouster/osf/reader.h" #include -#include -#include #include "common.h" #include "osf_test.h" @@ -35,130 +33,90 @@ TEST_F(ReaderTest, Basics) { // Get first sensor (it's the first by metadata_id) (i.e. first added) auto sensor = reader.meta_store().get(); EXPECT_TRUE(sensor); - EXPECT_EQ( - sensor->to_string(), - "{\n \"sensor_info\": \n {\n \"beam_intrinsics\": \n {\n " - "\"beam_altitude_angles\": \n [\n 20.95,\n 20.67,\n " - " 20.36,\n 20.03,\n 19.73,\n 19.41,\n " - " 19.11,\n 18.76,\n 18.47,\n 18.14,\n " - "17.82,\n 17.5,\n 17.19,\n 16.86,\n " - "16.53,\n 16.2,\n 15.89,\n 15.56,\n " - "15.23,\n 14.9,\n 14.57,\n 14.23,\n " - "13.9,\n 13.57,\n 13.25,\n 12.91,\n " - "12.57,\n 12.22,\n 11.9,\n 11.55,\n " - "11.2,\n 10.87,\n 10.54,\n 10.18,\n " - "9.84,\n 9.51,\n 9.15,\n 8.81,\n 8.47,\n " - " 8.11,\n 7.78,\n 7.43,\n 7.08,\n " - "6.74,\n 6.39,\n 6.04,\n 5.7,\n 5.34,\n " - " 4.98,\n 4.64,\n 4.29,\n 3.93,\n " - "3.58,\n 3.24,\n 2.88,\n 2.53,\n 2.17,\n " - " 1.82,\n 1.47,\n 1.12,\n 0.78,\n " - "0.41,\n 0.07,\n -0.28,\n -0.64,\n " - "-0.99,\n -1.35,\n -1.7,\n -2.07,\n " - "-2.4,\n -2.75,\n -3.11,\n -3.46,\n " - "-3.81,\n -4.15,\n -4.5,\n -4.86,\n " - "-5.22,\n -5.57,\n -5.9,\n -6.27,\n " - "-6.61,\n -6.97,\n -7.3,\n -7.67,\n " - "-8.01,\n -8.35,\n -8.69,\n -9.05,\n " - "-9.38,\n -9.71,\n -10.07,\n -10.42,\n " - "-10.76,\n -11.09,\n -11.43,\n -11.78,\n " - "-12.12,\n -12.46,\n -12.78,\n -13.15,\n " - "-13.46,\n -13.8,\n -14.12,\n -14.48,\n " - "-14.79,\n -15.11,\n -15.46,\n -15.79,\n " - "-16.12,\n -16.45,\n -16.76,\n -17.11,\n " - "-17.44,\n -17.74,\n -18.06,\n -18.39,\n " - "-18.72,\n -19.02,\n -19.32,\n -19.67,\n " - "-19.99,\n -20.27,\n -20.57,\n -20.92,\n " - "-21.22,\n -21.54,\n -21.82\n ],\n " - "\"beam_azimuth_angles\": \n [\n 4.21,\n 1.41,\n " - " -1.4,\n -4.22,\n 4.22,\n 1.41,\n " - "-1.4,\n -4.23,\n 4.21,\n 1.4,\n -1.42,\n " - " -4.2,\n 4.22,\n 1.41,\n -1.4,\n " - "-4.23,\n 4.21,\n 1.41,\n -1.41,\n " - "-4.21,\n 4.22,\n 1.4,\n -1.41,\n -4.2,\n " - " 4.22,\n 1.42,\n -1.4,\n -4.2,\n " - "4.22,\n 1.41,\n -1.42,\n -4.21,\n 4.22,\n " - " 1.41,\n -1.4,\n -4.21,\n 4.2,\n " - "1.4,\n -1.4,\n -4.22,\n 4.21,\n 1.41,\n " - " -1.41,\n -4.21,\n 4.22,\n 1.41,\n " - "-1.4,\n -4.21,\n 4.21,\n 1.41,\n -1.4,\n " - " -4.21,\n 4.2,\n 1.41,\n -1.4,\n " - "-4.21,\n 4.2,\n 1.4,\n -1.41,\n -4.21,\n " - " 4.22,\n 1.4,\n -1.4,\n -4.21,\n " - "4.22,\n 1.42,\n -1.4,\n -4.2,\n 4.2,\n " - " 1.42,\n -1.4,\n -4.22,\n 4.22,\n " - "1.41,\n -1.4,\n -4.2,\n 4.23,\n 1.41,\n " - " -1.4,\n -4.2,\n 4.21,\n 1.41,\n " - "-1.4,\n -4.21,\n 4.21,\n 1.41,\n -1.4,\n " - " -4.21,\n 4.22,\n 1.41,\n -1.39,\n " - "-4.21,\n 4.23,\n 1.41,\n -1.39,\n " - "-4.22,\n 4.23,\n 1.4,\n -1.4,\n -4.2,\n " - " 4.21,\n 1.41,\n -1.41,\n -4.2,\n " - "4.22,\n 1.42,\n -1.39,\n -4.22,\n 4.24,\n " - " 1.41,\n -1.41,\n -4.22,\n 4.23,\n " - "1.41,\n -1.39,\n -4.21,\n 4.23,\n 1.41,\n " - " -1.39,\n -4.2,\n 4.23,\n 1.4,\n " - "-1.39,\n -4.2,\n 4.22,\n 1.42,\n -1.39,\n " - " -4.2\n ],\n \"beam_to_lidar_transform\": \n [\n " - " 1.0,\n 0.0,\n 0.0,\n 15.806,\n " - "0.0,\n 1.0,\n 0.0,\n 0.0,\n 0.0,\n " - "0.0,\n 1.0,\n 0.0,\n 0.0,\n 0.0,\n " - "0.0,\n 1.0\n ],\n " - "\"lidar_origin_to_beam_origin_mm\": 15.806\n },\n " - "\"calibration_status\": {},\n \"config_params\": \n {\n " - "\"lidar_mode\": \"1024x10\",\n \"udp_port_imu\": 7503,\n " - "\"udp_port_lidar\": 7502\n },\n \"imu_intrinsics\": \n {\n " - " \"imu_to_sensor_transform\": \n [\n 1.0,\n " - "0.0,\n 0.0,\n 6.253,\n 0.0,\n 1.0,\n " - " 0.0,\n -11.775,\n 0.0,\n 0.0,\n 1.0,\n " - " 7.645,\n 0.0,\n 0.0,\n 0.0,\n 1.0\n " - " ]\n },\n \"lidar_data_format\": \n {\n " - "\"column_window\": \n [\n 0,\n 1023\n ],\n " - " \"columns_per_frame\": 1024,\n \"columns_per_packet\": 16,\n " - " \"fps\": 10,\n \"pixel_shift_by_row\": \n [\n " - "24,\n 16,\n 8,\n 0,\n 24,\n 16,\n " - " 8,\n 0,\n 24,\n 16,\n 8,\n " - "0,\n 24,\n 16,\n 8,\n 0,\n 24,\n " - " 16,\n 8,\n 0,\n 24,\n 16,\n " - "8,\n 0,\n 24,\n 16,\n 8,\n 0,\n " - " 24,\n 16,\n 8,\n 0,\n 24,\n " - "16,\n 8,\n 0,\n 24,\n 16,\n 8,\n " - " 0,\n 24,\n 16,\n 8,\n 0,\n " - "24,\n 16,\n 8,\n 0,\n 24,\n 16,\n " - " 8,\n 0,\n 24,\n 16,\n 8,\n " - "0,\n 24,\n 16,\n 8,\n 0,\n 24,\n " - " 16,\n 8,\n 0,\n 24,\n 16,\n " - "8,\n 0,\n 24,\n 16,\n 8,\n 0,\n " - " 24,\n 16,\n 8,\n 0,\n 24,\n " - "16,\n 8,\n 0,\n 24,\n 16,\n 8,\n " - " 0,\n 24,\n 16,\n 8,\n 0,\n " - "24,\n 16,\n 8,\n 0,\n 24,\n 16,\n " - " 8,\n 0,\n 24,\n 16,\n 8,\n " - "0,\n 24,\n 16,\n 8,\n 0,\n 24,\n " - " 16,\n 8,\n 0,\n 24,\n 16,\n " - "8,\n 0,\n 24,\n 16,\n 8,\n 0,\n " - " 24,\n 16,\n 8,\n 0,\n 24,\n " - "16,\n 8,\n 0,\n 24,\n 16,\n 8,\n " - " 0\n ],\n \"pixels_per_column\": 128,\n " - "\"udp_profile_imu\": \"LEGACY\",\n \"udp_profile_lidar\": " - "\"RNG15_RFL8_NIR8\"\n },\n \"lidar_intrinsics\": \n {\n " - "\"lidar_to_sensor_transform\": \n [\n -1.0,\n " - "0.0,\n 0.0,\n 0.0,\n 0.0,\n -1.0,\n " - " 0.0,\n 0.0,\n 0.0,\n 0.0,\n 1.0,\n " - " 36.18,\n 0.0,\n 0.0,\n 0.0,\n 1.0\n " - "]\n },\n \"ouster-sdk\": \n {\n \"client_version\": " - "\"ouster_client 0.13.0\",\n \"extrinsic\": \n [\n " - "1.0,\n 0.0,\n 0.0,\n 0.0,\n 0.0,\n " - "1.0,\n 0.0,\n 0.0,\n 0.0,\n 0.0,\n " - "1.0,\n 0.0,\n 0.0,\n 0.0,\n 0.0,\n " - "1.0\n ],\n \"output_source\": \"sensor_info_to_string\"\n " - " },\n \"sensor_info\": \n {\n \"build_date\": " - "\"2022-04-14T21:11:47Z\",\n \"build_rev\": \"v2.3.0\",\n " - "\"image_rev\": \"ousteros-image-prod-aries-v2.3.0+20220415163956\",\n " - " \"initialization_id\": 7109750,\n \"prod_line\": " - "\"OS-1-128\",\n \"prod_pn\": \"840-103575-06\",\n " - "\"prod_sn\": \"122201000998\",\n \"status\": \"RUNNING\"\n " - "},\n \"user_data\": \"\"\n }\n}"); + std::stringstream actual; + actual + << "{\"sensor_info\":{\"beam_intrinsics\":{\"beam_altitude_angles\":[" + "20." + "95,20.67,20.36,20.03,19.73,19.41,19.11,18.76,18.47,18.14,17.82,17." + "5," + "17.19,16.86,16.53,16.2,15.89,15.56,15.23,14.9,14.57,14.23,13.9,13." + "57," + "13.25,12.91,12.57,12.22,11.9,11.55,11.2,10.87,10.54,10.18,9.84,9." + "51,9." + "15,8.81,8.47,8.11,7.78,7.43,7.08,6.74,6.39,6.04,5.7,5.34,4.98,4.64," + "4." + "29,3.93,3.58,3.24,2.88,2.53,2.17,1.82,1.47,1.12,0.78,0.41,0.07,-0." + "28,-" + "0.64,-0.99,-1.35,-1.7,-2.07,-2.4,-2.75,-3.11,-3.46,-3.81,-4.15,-4." + "5,-" + "4.86,-5.22,-5.57,-5.9,-6.27,-6.61,-6.97,-7.3,-7.67,-8.01,-8.35,-8." + "69,-" + "9.05,-9.38,-9.71,-10.07,-10.42,-10.76,-11.09,-11.43,-11.78,-12.12,-" + "12." + "46,-12.78,-13.15,-13.46,-13.8,-14.12,-14.48,-14.79,-15.11,-15.46,-" + "15." + "79,-16.12,-16.45,-16.76,-17.11,-17.44,-17.74,-18.06,-18.39,-18.72,-" + "19." + "02,-19.32,-19.67,-19.99,-20.27,-20.57,-20.92,-21.22,-21.54,-21.82]," + "\"beam_azimuth_angles\":[4.21,1.41,-1.4,-4.22,4.22,1.41,-1.4,-4.23," + "4." + "21,1.4,-1.42,-4.2,4.22,1.41,-1.4,-4.23,4.21,1.41,-1.41,-4.21,4.22," + "1.4," + "-1.41,-4.2,4.22,1.42,-1.4,-4.2,4.22,1.41,-1.42,-4.21,4.22,1.41,-1." + "4,-" + "4.21,4.2,1.4,-1.4,-4.22,4.21,1.41,-1.41,-4.21,4.22,1.41,-1.4,-4.21," + "4." + "21,1.41,-1.4,-4.21,4.2,1.41,-1.4,-4.21,4.2,1.4,-1.41,-4.21,4.22,1." + "4,-" + "1.4,-4.21,4.22,1.42,-1.4,-4.2,4.2,1.42,-1.4,-4.22,4.22,1.41,-1.4,-" + "4.2," + "4.23,1.41,-1.4,-4.2,4.21,1.41,-1.4,-4.21,4.21,1.41,-1.4,-4.21,4.22," + "1." + "41,-1.39,-4.21,4.23,1.41,-1.39,-4.22,4.23,1.4,-1.4,-4.2,4.21,1.41,-" + "1." + "41,-4.2,4.22,1.42,-1.39,-4.22,4.24,1.41,-1.41,-4.22,4.23,1.41,-1." + "39,-" + "4.21,4.23,1.41,-1.39,-4.2,4.23,1.4,-1.39,-4.2,4.22,1.42,-1.39,-4.2]" + "," + "\"beam_to_lidar_transform\":[1.0,0.0,0.0,15.806,0.0,1.0,0.0,0.0,0." + "0,0." + "0,1.0,0.0,0.0,0.0,0.0,1.0],\"lidar_origin_to_beam_origin_mm\":15." + "806}," + "\"calibration_status\":{},\"config_params\":{\"lidar_mode\":" + "\"1024x10\",\"udp_port_imu\":7503,\"udp_port_lidar\":7502},\"imu_" + "intrinsics\":{\"imu_to_sensor_transform\":[1.0,0.0,0.0,6.253,0.0,1." + "0," + "0.0,-11.775,0.0,0.0,1.0,7.645,0.0,0.0,0.0,1.0]},\"lidar_data_" + "format\":" + "{\"column_window\":[0,1023],\"columns_per_frame\":1024,\"columns_" + "per_" + "packet\":16,\"fps\":10,\"pixel_shift_by_row\":[24,16,8,0,24,16,8,0," + "24," + "16,8,0,24,16,8,0,24,16,8,0,24,16,8,0,24,16,8,0,24,16,8,0,24,16,8,0," + "24," + "16,8,0,24,16,8,0,24,16,8,0,24,16,8,0,24,16,8,0,24,16,8,0,24,16,8,0," + "24," + "16,8,0,24,16,8,0,24,16,8,0,24,16,8,0,24,16,8,0,24,16,8,0,24,16,8,0," + "24," + "16,8,0,24,16,8,0,24,16,8,0,24,16,8,0,24,16,8,0,24,16,8,0,24,16,8,0," + "24," + "16,8,0,24,16,8,0],\"pixels_per_column\":128,\"udp_profile_imu\":" + "\"LEGACY\",\"udp_profile_lidar\":\"RNG15_RFL8_NIR8\"},\"lidar_" + "intrinsics\":{\"lidar_to_sensor_transform\":[-1.0,0.0,0.0,0.0,0.0,-" + "1." + "0,0.0,0.0,0.0,0.0,1.0,36.18,0.0,0.0,0.0,1.0]},\"ouster-sdk\":{" + "\"client_version\":\""; + actual << ouster::sensor::client_version(); + actual + << "\",\"extrinsic\":[1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0." + "0,0.0,0.0,0.0,1.0],\"output_source\":\"sensor_info_to_string\"}," + "\"sensor_info\":{\"build_date\":\"2022-04-14T21:11:47Z\",\"build_" + "rev\":\"v2.3.0\",\"image_rev\":\"ousteros-image-prod-aries-v2.3.0+" + "20220415163956\",\"initialization_id\":7109750,\"prod_line\":\"OS-" + "1-" + "128\",\"prod_pn\":\"840-103575-06\",\"prod_sn\":\"122201000998\"," + "\"status\":\"RUNNING\"},\"user_data\":\"\"}}"; + EXPECT_EQ(sensor->to_string(), actual.str()); EXPECT_EQ(1, reader.meta_store().count()); EXPECT_EQ( @@ -319,42 +277,44 @@ TEST_F(ReaderTest, MessagesReadingStreaming) { EXPECT_EQ(3, std::distance(scan_msgs_full.begin(), scan_msgs_full.end())); } -TEST_F(ReaderTest, MetadataFromBufferTest) { - OsfFile osf_file( - path_concat(test_data_dir(), "osfs/OS-1-128_v2.3.0_1024x10_lb_n3.osf")); - - Reader reader(osf_file); - - auto sensor = reader.meta_store().entries().begin()->second; - - std::vector buf; - std::stringstream output_stream; - auto ostream_sink = std::make_shared< - spdlog::sinks::ostream_sink>( - output_stream); - ouster::sensor::impl::Logger::instance().configure_generic_sink( - ostream_sink, "info"); - - auto result = sensor->from_buffer(buf, "NON EXISTENT"); - - std::string output_error = output_stream.str(); - auto error_loc = output_error.find("[error]"); - EXPECT_NE(error_loc, std::string::npos); - - output_error = output_error.substr(error_loc); -#ifdef _WIN32 - EXPECT_EQ(output_error, "[error] UNKNOWN TYPE: NON EXISTENT\r\n"); -#else - EXPECT_EQ(output_error, "[error] UNKNOWN TYPE: NON EXISTENT\n"); -#endif - EXPECT_EQ(result, nullptr); - - result = sensor->from_buffer(sensor->buffer(), - "ouster/v1/os_sensor/LidarSensor"); - EXPECT_NE(result, nullptr); - EXPECT_EQ(result->id(), 0); - EXPECT_EQ(result->type(), "ouster/v1/os_sensor/LidarSensor"); -} +// @TODO Reeanble this test when we have generic spdlog functonality. +// TEST_F(ReaderTest, MetadataFromBufferTest) { +// OsfFile osf_file( +// path_concat(test_data_dir(), +// "osfs/OS-1-128_v2.3.0_1024x10_lb_n3.osf")); + +// Reader reader(osf_file); + +// auto sensor = reader.meta_store().entries().begin()->second; + +// std::vector buf; +// std::stringstream output_stream; +// auto ostream_sink = std::make_shared< +// spdlog::sinks::ostream_sink>( +// output_stream); +// ouster::sensor::impl::Logger::instance().configure_generic_sink( +// ostream_sink, "info"); + +// auto result = sensor->from_buffer(buf, "NON EXISTENT"); + +// std::string output_error = output_stream.str(); +// auto error_loc = output_error.find("[error]"); +// EXPECT_NE(error_loc, std::string::npos); + +// output_error = output_error.substr(error_loc); +// #ifdef _WIN32 +// EXPECT_EQ(output_error, "[error] UNKNOWN TYPE: NON EXISTENT\r\n"); +// #else +// EXPECT_EQ(output_error, "[error] UNKNOWN TYPE: NON EXISTENT\n"); +// #endif +// EXPECT_EQ(result, nullptr); + +// result = sensor->from_buffer(sensor->buffer(), +// "ouster/v1/os_sensor/LidarSensor"); +// EXPECT_NE(result, nullptr); +// EXPECT_EQ(result->id(), 0); +// EXPECT_EQ(result->type(), "ouster/v1/os_sensor/LidarSensor"); +// } } // namespace } // namespace osf diff --git a/ouster_osf/tests/vcpkg.json b/ouster_osf/tests/vcpkg.json new file mode 100644 index 00000000..1230161b --- /dev/null +++ b/ouster_osf/tests/vcpkg.json @@ -0,0 +1,5 @@ +{ + "name": "ouster-sdk-tests", + "dependencies": [ "eigen3", "gtest" ], + "builtin-baseline": "943c5ef1c8f6b5e6ced092b242c8299caae2ff01" +} diff --git a/ouster_pcap/CMakeLists.txt b/ouster_pcap/CMakeLists.txt index f88296f9..b93a7cef 100644 --- a/ouster_pcap/CMakeLists.txt +++ b/ouster_pcap/CMakeLists.txt @@ -5,28 +5,38 @@ find_package(libtins REQUIRED) include(Coverage) # ==== Libraries ==== -add_library(ouster_pcap src/pcap.cpp src/os_pcap.cpp src/indexed_pcap_reader.cpp src/ip_reassembler.cpp) +add_library(ouster_pcap STATIC src/pcap.cpp src/os_pcap.cpp src/indexed_pcap_reader.cpp src/ip_reassembler.cpp) target_include_directories(ouster_pcap SYSTEM PRIVATE ${PCAP_INCLUDE_DIR}) target_include_directories(ouster_pcap PUBLIC $ $) +set_property(TARGET ouster_pcap PROPERTY POSITION_INDEPENDENT_CODE ON) +if(BUILD_SHARED_LIBRARY) + set_target_properties(ouster_pcap PROPERTIES CXX_VISIBILITY_PRESET hidden) +endif() CodeCoverageFunctionality(ouster_pcap) +if(BUILD_SHARED_LIBRARY) + target_compile_definitions(ouster_pcap PRIVATE BUILD_SHARED_LIBS_EXPORT) +endif() + if(WIN32) target_link_libraries(ouster_pcap PUBLIC ws2_32) endif() target_link_libraries(ouster_pcap PUBLIC OusterSDK::ouster_client - PRIVATE libpcap::libpcap libtins::libtins) + $ + $ + PRIVATE + $ + $) add_library(OusterSDK::ouster_pcap ALIAS ouster_pcap) # ==== Install ==== install(TARGETS ouster_pcap EXPORT ouster-sdk-targets - LIBRARY DESTINATION lib - ARCHIVE DESTINATION lib RUNTIME DESTINATION bin INCLUDES DESTINATION include) diff --git a/ouster_pcap/include/ouster/indexed_pcap_reader.h b/ouster_pcap/include/ouster/indexed_pcap_reader.h index 9bc2386b..eb961afd 100644 --- a/ouster_pcap/include/ouster/indexed_pcap_reader.h +++ b/ouster_pcap/include/ouster/indexed_pcap_reader.h @@ -10,11 +10,12 @@ #include "ouster/os_pcap.h" #include "ouster/pcap.h" #include "ouster/types.h" +#include "ouster/visibility.h" namespace ouster { namespace sensor_utils { -class PcapIndex { +class OUSTER_API_CLASS PcapIndex { public: using frame_index = std::vector; ///< Maps a frame number to a file offset @@ -33,6 +34,7 @@ class PcapIndex { // over 50 mins. std::vector frame_id_indices_; + OUSTER_API_FUNCTION PcapIndex(size_t num_sensors) : frame_indices_(num_sensors), frame_timestamp_indices_(num_sensors), @@ -41,6 +43,7 @@ class PcapIndex { /** * Simple method to clear the index. */ + OUSTER_API_FUNCTION void clear(); /** @@ -51,6 +54,7 @@ class PcapIndex { * the desired frame count. * @return The number of frames in the sensor's frame index. */ + OUSTER_API_FUNCTION size_t frame_count(size_t sensor_index) const; // TODO[UN]: in my opinion we are better off removing this method from this @@ -68,6 +72,7 @@ class PcapIndex { * seek for. * @param[in] frame_number The frame number to seek to. */ + OUSTER_API_FUNCTION void seek_to_frame(PcapReader& reader, size_t sensor_index, unsigned int frame_number); }; @@ -78,12 +83,13 @@ class PcapIndex { * The index must be computed by iterating through all packets and calling * `update_index_for_current_packet()` for each one. */ -class IndexedPcapReader : public PcapReader { +class OUSTER_API_CLASS IndexedPcapReader : public PcapReader { public: /** * @param[in] pcap_filename A file path of the pcap to read * @param[in] metadata_filenames A vector of sensor metadata filepaths */ + OUSTER_API_FUNCTION IndexedPcapReader( const std::string& pcap_filename, ///< [in] - A file path of the pcap to read @@ -97,6 +103,7 @@ class IndexedPcapReader : public PcapReader { * @param[in] sensor_infos A vector of sensor info structures for each * sensors */ + OUSTER_API_FUNCTION IndexedPcapReader( const std::string& pcap_filename, const std::vector& sensor_infos); @@ -105,6 +112,7 @@ class IndexedPcapReader : public PcapReader { * This method constructs the index. Call this method before requesting the * index information using get_index() */ + OUSTER_API_FUNCTION void build_index(); /** @@ -112,6 +120,7 @@ class IndexedPcapReader : public PcapReader { * * @return returns a PcapIndex object */ + OUSTER_API_FUNCTION const PcapIndex& get_index() const; /** @@ -120,6 +129,7 @@ class IndexedPcapReader : public PcapReader { * * @return An optional packet format for the current packet */ + OUSTER_API_FUNCTION nonstd::optional sensor_idx_for_current_packet() const; /** @@ -127,6 +137,7 @@ class IndexedPcapReader : public PcapReader { * if the packet is associated with a sensor (and its corresponding packet * format) */ + OUSTER_API_FUNCTION nonstd::optional current_frame_id() const; /** @@ -139,6 +150,7 @@ class IndexedPcapReader : public PcapReader { * * @return the progress of indexing as an int from [0, 100] */ + OUSTER_API_FUNCTION int update_index_for_current_packet(); /** @@ -150,6 +162,7 @@ class IndexedPcapReader : public PcapReader { * @param[in] current The current frame id. * @return true if the frame id has rolled over. */ + OUSTER_API_FUNCTION static bool frame_id_rolled_over(uint16_t previous, uint16_t current); protected: diff --git a/ouster_pcap/include/ouster/os_pcap.h b/ouster_pcap/include/ouster/os_pcap.h index f4f57a6f..87695478 100644 --- a/ouster_pcap/include/ouster/os_pcap.h +++ b/ouster_pcap/include/ouster/os_pcap.h @@ -19,24 +19,28 @@ #include "ouster/pcap.h" #include "ouster/types.h" +#include "ouster/visibility.h" + namespace ouster { namespace sensor_utils { /** * Structure representing a hash key/sorting key for a udp stream */ -struct stream_key { +struct OUSTER_API_CLASS stream_key { std::string dst_ip; ///< The destination IP std::string src_ip; ///< The source IP int src_port; ///< The src port int dst_port; ///< The destination port + OUSTER_API_FUNCTION bool operator==(const struct stream_key& other) const; }; } // namespace sensor_utils } // namespace ouster template <> -struct std::hash { +struct OUSTER_API_CLASS std::hash { + OUSTER_API_FUNCTION std::size_t operator()( const ouster::sensor_utils::stream_key& key) const noexcept { return std::hash{}(key.src_ip) ^ @@ -59,12 +63,13 @@ using ts = std::chrono::microseconds; ///< Microsecond timestamp * * @return The new output stream containing concatted stream_in and data. */ +OUSTER_API_FUNCTION std::ostream& operator<<(std::ostream& stream_in, const packet_info& data); /** * Structure representing a hash key/sorting key for a udp stream */ -struct guessed_ports { +struct OUSTER_API_CLASS guessed_ports { int lidar; ///< Guessed lidar port int imu; ///< Guessed imu port }; @@ -77,9 +82,10 @@ struct guessed_ports { * * @return The new output stream containing concatted stream_in and data. */ +OUSTER_API_FUNCTION std::ostream& operator<<(std::ostream& stream_in, const stream_key& data); -struct stream_data { +struct OUSTER_API_CLASS stream_data { uint64_t count; ///< Number of packets in a specified stream std::map payload_size_counts; ///< Packet sizes detected in a specified stream @@ -103,12 +109,13 @@ struct stream_data { * * @return The new output stream containing concatted stream_in and data. */ +OUSTER_API_FUNCTION std::ostream& operator<<(std::ostream& stream_in, const stream_data& data); /** * Structure representing the information about network streams in a pcap file */ -struct stream_info { +struct OUSTER_API_CLASS stream_info { uint64_t total_packets; ///< The total number of packets detected uint32_t encapsulation_protocol; ///< The encapsulation protocol for the ///< pcap file @@ -129,12 +136,25 @@ struct stream_info { * * @return The new output stream containing concatted stream_info and data. */ +OUSTER_API_FUNCTION std::ostream& operator<<(std::ostream& stream_in, const stream_info& data); -/** Struct to hide the stepwise playback details. */ +/** + * @struct playback_handle + * + * @brief struct to hide the stepwise playback details. + * + * This struct handles stepwise playback details. + */ struct playback_handle; -/** Struct to hide the record details. */ +/** + * @struct record_handle + * + * @brief struct to hide the record details. + * + * This struct handles hiding the record details. + */ struct record_handle; /** @@ -144,6 +164,7 @@ struct record_handle; * * @return A handle to the initialized playback struct. */ +OUSTER_API_FUNCTION std::shared_ptr replay_initialize(const std::string& file); /** @@ -151,6 +172,7 @@ std::shared_ptr replay_initialize(const std::string& file); * * @param[in] handle A handle to the initialized playback struct. */ +OUSTER_API_FUNCTION void replay_uninitialize(playback_handle& handle); /** @@ -158,6 +180,7 @@ void replay_uninitialize(playback_handle& handle); * * @param[in] handle A handle to the initialized playback struct. */ +OUSTER_API_FUNCTION void replay_reset(playback_handle& handle); /** @@ -169,6 +192,7 @@ void replay_reset(playback_handle& handle); * * @return The status on whether there is a new packet or not. */ +OUSTER_API_FUNCTION bool next_packet_info(playback_handle& handle, packet_info& info); /** @@ -182,6 +206,7 @@ bool next_packet_info(playback_handle& handle, packet_info& info); * * @return 0 on no new packet, > 0 the size of the bytes recieved. */ +OUSTER_API_FUNCTION size_t read_packet(playback_handle& handle, uint8_t* buf, size_t buffer_size); /** @@ -193,6 +218,7 @@ size_t read_packet(playback_handle& handle, uint8_t* buf, size_t buffer_size); * @param[in] use_sll_encapsulation Whether to use sll encapsulation. * @return record_handle A handle to the initialized record. */ +OUSTER_API_FUNCTION std::shared_ptr record_initialize( const std::string& file, int frag_size, bool use_sll_encapsulation = false); @@ -201,6 +227,7 @@ std::shared_ptr record_initialize( * * @param[in] handle An initialized handle for the recording state. */ +OUSTER_API_FUNCTION void record_uninitialize(record_handle& handle); /** @@ -216,6 +243,7 @@ void record_uninitialize(record_handle& handle); * @param[in] microsecond_timestamp The timestamp to record the packet as * microseconds. */ +OUSTER_API_FUNCTION void record_packet(record_handle& handle, const std::string& src_ip, const std::string& dst_ip, int src_port, int dst_port, const uint8_t* buf, size_t buffer_size, @@ -229,6 +257,7 @@ void record_packet(record_handle& handle, const std::string& src_ip, * @param[in] buf The buffer to record to the pcap file. * @param[in] buffer_size The size of the buffer to record to the pcap file. */ +OUSTER_API_FUNCTION void record_packet(record_handle& handle, const packet_info& info, const uint8_t* buf, size_t buffer_size); @@ -241,6 +270,7 @@ void record_packet(record_handle& handle, const packet_info& info, * * @return A pointer to the resulting stream_info */ +OUSTER_API_FUNCTION std::shared_ptr get_stream_info(const std::string& file, int packets_to_process = -1); @@ -259,6 +289,7 @@ std::shared_ptr get_stream_info(const std::string& file, * * @return A pointer to the resulting stream_info */ +OUSTER_API_FUNCTION std::shared_ptr get_stream_info( const std::string& file, std::function @@ -281,6 +312,7 @@ std::shared_ptr get_stream_info( * * @return A pointer to the resulting stream_info */ +OUSTER_API_FUNCTION std::shared_ptr get_stream_info( PcapReader& pcap_reader, std::function progress_callback, @@ -298,6 +330,7 @@ std::shared_ptr get_stream_info( * * @return A vector (sorted by most likely to least likely) of the guessed ports */ +OUSTER_API_FUNCTION std::vector guess_ports(stream_info& info, int lidar_packet_size, int imu_packet_size, int expected_lidar_port, diff --git a/ouster_pcap/include/ouster/pcap.h b/ouster_pcap/include/ouster/pcap.h index 5577c8b8..32424093 100644 --- a/ouster_pcap/include/ouster/pcap.h +++ b/ouster_pcap/include/ouster/pcap.h @@ -12,6 +12,8 @@ #include #include +#include "ouster/visibility.h" + namespace ouster { namespace sensor_utils { @@ -20,7 +22,7 @@ struct pcap_writer_impl; static constexpr int IANA_UDP = 17; -struct packet_info { +struct OUSTER_API_CLASS packet_info { using ts = std::chrono::microseconds; // TODO: use numerical IPs for efficient filtering @@ -42,7 +44,7 @@ struct packet_info { /** * Class for dealing with reading pcap files */ -class PcapReader { +class OUSTER_API_CLASS PcapReader { protected: std::unique_ptr impl; ///< Private implementation pointer packet_info info; ///< Cached packet info @@ -53,7 +55,9 @@ class PcapReader { /** * @param[in] file A filepath of the pcap to read */ + OUSTER_API_FUNCTION PcapReader(const std::string& file); + OUSTER_API_FUNCTION virtual ~PcapReader(); /** @@ -63,6 +67,7 @@ class PcapReader { * * @return The size of the packet payload */ + OUSTER_API_FUNCTION size_t next_packet(); /** @@ -72,6 +77,7 @@ class PcapReader { * * @return A pointer to a byte array containing the packet data */ + OUSTER_API_FUNCTION const uint8_t* current_data() const; /** @@ -80,6 +86,7 @@ class PcapReader { * * @return The size of the byte array */ + OUSTER_API_FUNCTION size_t current_length() const; /** @@ -88,16 +95,19 @@ class PcapReader { * * @return A packet_info object on the current packet */ + OUSTER_API_FUNCTION const packet_info& current_info() const; /** * @return The size of the PCAP file in bytes */ + OUSTER_API_FUNCTION int64_t file_size() const; /** * Return the read position to the start of the PCAP file */ + OUSTER_API_FUNCTION void reset(); /** @@ -112,8 +122,10 @@ class PcapReader { * subsequent packet reads from this PcapReader will be * invalid until PcapReader::reset is called. */ + OUSTER_API_FUNCTION void seek(uint64_t offset); + OUSTER_API_FUNCTION int64_t current_offset() const; private: @@ -124,7 +136,7 @@ class PcapReader { /** * Class for dealing with writing udp pcap files */ -class PcapWriter { +class OUSTER_API_CLASS PcapWriter { public: /** * Enum to describe the current encapsulation for a pcap file @@ -140,8 +152,10 @@ class PcapWriter { * @param[in] encap The encapsulation to use for the pcap * @param[in] frag_size The fragmentation size to use (Currently broken) */ + OUSTER_API_FUNCTION PcapWriter(const std::string& file, PacketEncapsulation encap, uint16_t frag_size); + OUSTER_API_FUNCTION virtual ~PcapWriter(); /** @@ -157,6 +171,7 @@ class PcapWriter { * @note The timestamp parameter does not affect the order of packets being * recorded, it is strictly recorded FIFO. */ + OUSTER_API_FUNCTION void write_packet(const uint8_t* buf, size_t buf_size, const std::string& src_ip, const std::string& dst_ip, uint16_t src_port, uint16_t dst_port, @@ -172,17 +187,20 @@ class PcapWriter { * @note The timestamp parameter in info does not affect the order of * packets being recorded, it is strictly recorded FIFO. */ + OUSTER_API_FUNCTION void write_packet(const uint8_t* buf, size_t buf_size, const packet_info& info); /** * Write all pending data to the pcap file */ + OUSTER_API_FUNCTION void flush(); /** * Flushes and cleans up all memory in use by the pap writer */ + OUSTER_API_FUNCTION void close(); protected: @@ -202,6 +220,7 @@ class PcapWriter { * * @return The new output stream containing concatted stream_in and data. */ +OUSTER_API_FUNCTION std::ostream& operator<<(std::ostream& stream_in, const packet_info& data); } // namespace sensor_utils } // namespace ouster diff --git a/ouster_pcap/src/indexed_pcap_reader.cpp b/ouster_pcap/src/indexed_pcap_reader.cpp index 61734fc6..a048261f 100644 --- a/ouster_pcap/src/indexed_pcap_reader.cpp +++ b/ouster_pcap/src/indexed_pcap_reader.cpp @@ -3,6 +3,7 @@ #include #include +#include "ouster/packet.h" #include "ouster/types.h" namespace ouster { @@ -34,7 +35,7 @@ IndexedPcapReader::IndexedPcapReader( void IndexedPcapReader::init_() { uint64_t index = 0; for (auto it : sensor_infos_) { - std::string sn_lidar = it.sn; + std::string sn_lidar = std::to_string(it.sn); std::string sn_imu = "LEGACY_IMU"; if (it.config.udp_profile_lidar == ouster::sensor::UDPProfileLidar::PROFILE_LIDAR_LEGACY) { @@ -77,8 +78,7 @@ nonstd::optional IndexedPcapReader::sensor_idx_for_current_packet() for (auto it : temp_match->second) { auto res = validate_packet( sensor_infos_[it.second], packet_formats_[it.second], data, - pkt_info.payload_size, - ouster::sensor::PacketValidationType::LIDAR); + pkt_info.payload_size, ouster::sensor::PacketType::Lidar); if (res == ouster::sensor::PacketValidationFailure::NONE) { return it.second; } diff --git a/ouster_viz/CMakeLists.txt b/ouster_viz/CMakeLists.txt index 4f9eff5a..ffd344ee 100644 --- a/ouster_viz/CMakeLists.txt +++ b/ouster_viz/CMakeLists.txt @@ -3,20 +3,6 @@ set(OpenGL_GL_PREFERENCE LEGACY) find_package(OpenGL REQUIRED) include(Coverage) -# default to glad, if found. Note: this can be overridden from the command line -find_package(glad QUIET) -option(OUSTER_VIZ_USE_GLAD "Use GLAD instead of GLEW." ${glad_FOUND}) -if(OUSTER_VIZ_USE_GLAD) - message(STATUS "Configured GL loader: glad") - find_package(glad REQUIRED) - set(GL_LOADER glad::glad) - add_definitions("-DOUSTER_VIZ_USE_GLAD") -else() - message(STATUS "Configured GL loader: GLEW") - find_package(GLEW REQUIRED) - set(GL_LOADER GLEW::GLEW) -endif() - find_package(glfw3 REQUIRED) find_package(Eigen3 REQUIRED) @@ -24,22 +10,29 @@ find_package(Eigen3 REQUIRED) # use only MPL-licensed parts of eigen add_definitions(-DEIGEN_MPL2_ONLY) -add_library(ouster_viz src/point_viz.cpp src/cloud.cpp src/camera.cpp src/image.cpp +add_library(ouster_viz STATIC src/point_viz.cpp src/cloud.cpp src/camera.cpp src/image.cpp src/gltext.cpp src/misc.cpp src/glfw.cpp) target_link_libraries(ouster_viz - PRIVATE Eigen3::Eigen glfw ${GL_LOADER} OpenGL::GL ouster_client) + PRIVATE Eigen3::Eigen glfw ${GL_LOADER} OpenGL::GL ouster_client glad) +set_property(TARGET ouster_viz PROPERTY POSITION_INDEPENDENT_CODE ON) +if(BUILD_SHARED_LIBRARY) + set_target_properties(ouster_viz PROPERTIES CXX_VISIBILITY_PRESET hidden) +endif() CodeCoverageFunctionality(ouster_viz) -target_include_directories(ouster_viz PUBLIC - $ - $) +if(BUILD_SHARED_LIBRARY) + target_compile_definitions(ouster_viz PRIVATE BUILD_SHARED_LIBS_EXPORT) +endif() + +target_include_directories(ouster_viz + PUBLIC + $ + $) add_library(OusterSDK::ouster_viz ALIAS ouster_viz) # ==== Install ==== install(TARGETS ouster_viz EXPORT ouster-sdk-targets - LIBRARY DESTINATION lib - ARCHIVE DESTINATION lib RUNTIME DESTINATION bin INCLUDES DESTINATION include) diff --git a/ouster_viz/include/ouster/point_viz.h b/ouster_viz/include/ouster/point_viz.h index 9df14cce..8f6c1705 100644 --- a/ouster_viz/include/ouster/point_viz.h +++ b/ouster_viz/include/ouster/point_viz.h @@ -17,6 +17,7 @@ #include #include "nonstd/optional.hpp" +#include "ouster/visibility.h" namespace ouster { namespace viz { @@ -117,9 +118,8 @@ constexpr int default_window_height = 600; * when a nontrivial amount of processing needs to run concurrently with * rendering (e.g. when streaming data from a running sensor). */ -class PointViz { - friend void add_default_controls(viz::PointViz& viz, std::mutex* mx); - +class OUSTER_API_CLASS PointViz { + protected: /** * Get a reference to the current camera controls * @@ -128,6 +128,18 @@ class PointViz { Camera& current_camera(); public: + /** + * Add default keyboard and mouse bindings to a visualizer instance + * + * Controls will modify the camera from the thread that calls run() or + * run_once(), which will require synchronization when using multiple + * threads. + * + * @param[in] mx mutex to lock while modifying camera + */ + OUSTER_API_FUNCTION + void add_default_controls(std::mutex* mx); + struct Impl; /** @@ -140,6 +152,7 @@ class PointViz { * @param[in] window_height Window height to set, * else uses the default_window_height */ + OUSTER_API_FUNCTION explicit PointViz(const std::string& name, bool fix_aspect = false, int window_width = default_window_width, int window_height = default_window_height); @@ -147,14 +160,19 @@ class PointViz { // Because PointViz uses the PIMPL pattern // and the Impl owns the window context, // we can't realistically copy or move instances of PointViz. + OUSTER_API_FUNCTION PointViz(const PointViz&) = delete; + OUSTER_API_FUNCTION PointViz(PointViz&&) = delete; + OUSTER_API_FUNCTION PointViz& operator=(PointViz&) = delete; + OUSTER_API_FUNCTION PointViz& operator=(PointViz&&) = delete; /** * Tears down the rendering context and closes the viz window */ + OUSTER_API_FUNCTION ~PointViz(); /** @@ -162,6 +180,7 @@ class PointViz { * * Should be called from the main thread for macos compatibility */ + OUSTER_API_FUNCTION void run(); /** @@ -169,6 +188,7 @@ class PointViz { * * Should be called from the main thread for macos compatibility */ + OUSTER_API_FUNCTION void run_once(); /** @@ -176,6 +196,7 @@ class PointViz { * * @return true if the run() loop is currently executing */ + OUSTER_API_FUNCTION bool running(); /** @@ -183,6 +204,7 @@ class PointViz { * * @param[in] state new value of the flag */ + OUSTER_API_FUNCTION void running(bool state); /** @@ -190,6 +212,7 @@ class PointViz { * * @param[in] state true to show */ + OUSTER_API_FUNCTION void visible(bool state); /** @@ -197,6 +220,7 @@ class PointViz { * * Send state updates to be rendered on the next frame. */ + OUSTER_API_FUNCTION void update(); /** @@ -207,6 +231,7 @@ class PointViz { * callback's return value determines whether the remaining key callbacks * should be called. */ + OUSTER_API_FUNCTION void push_key_handler( std::function&& callback); @@ -222,6 +247,7 @@ class PointViz { * The callback's return value determines whether * the remaining mouse button callbacks should be called. */ + OUSTER_API_FUNCTION void push_mouse_button_handler( std::function&& callback); @@ -253,6 +280,7 @@ class PointViz { * The callback's return value determines whether * the remaining mouse position callbacks should be called. */ + OUSTER_API_FUNCTION void push_mouse_pos_handler( std::function&& callback); @@ -267,46 +295,55 @@ class PointViz { * fb_height) The callback's return value determines whether the remaining * frame buffer callbacks should be called. */ + OUSTER_API_FUNCTION void push_frame_buffer_handler( std::function&, int, int)>&& callback); /** * Remove the last added callback for handling keyboard events */ + OUSTER_API_FUNCTION void pop_key_handler(); /** * Remove the last added callback for handling mouse button events */ + OUSTER_API_FUNCTION void pop_mouse_button_handler(); /** * Remove the last added callback for handling mouse scroll events */ + OUSTER_API_FUNCTION void pop_scroll_handler(); /** * Remove the last added callback for handling mouse position events */ + OUSTER_API_FUNCTION void pop_mouse_pos_handler(); /** * Remove the last added callback for handling frame buffer events */ + OUSTER_API_FUNCTION void pop_frame_buffer_handler(); /** * Add a callback for handling frame buffer resize events. + * * @param[in] callback function callback of the form f(const WindowCtx&). * The callback's return value determines whether the remaining frame buffer * resize callbacks should be called. */ + OUSTER_API_FUNCTION void push_frame_buffer_resize_handler( std::function&& callback); /** * Remove the last added callback for handling frame buffer resize events. */ + OUSTER_API_FUNCTION void pop_frame_buffer_resize_handler(); /** @@ -314,6 +351,7 @@ class PointViz { * * @return Handler to the camera object */ + OUSTER_API_FUNCTION Camera& camera(); /** @@ -321,6 +359,7 @@ class PointViz { * * @return Handler to the target display controls */ + OUSTER_API_FUNCTION TargetDisplay& target_display(); /** @@ -328,6 +367,7 @@ class PointViz { * * @param[in] cloud Adds a point cloud to the scene */ + OUSTER_API_FUNCTION void add(const std::shared_ptr& cloud); /** @@ -335,6 +375,7 @@ class PointViz { * * @param[in] image Adds an image to the scene */ + OUSTER_API_FUNCTION void add(const std::shared_ptr& image); /** @@ -342,6 +383,7 @@ class PointViz { * * @param[in] cuboid Adds a cuboid to the scene */ + OUSTER_API_FUNCTION void add(const std::shared_ptr& cuboid); /** @@ -349,6 +391,7 @@ class PointViz { * * @param[in] label Adds a label to the scene */ + OUSTER_API_FUNCTION void add(const std::shared_ptr