Skip to content

Commit 69248b4

Browse files
Release 0.14.0 (#640)
See CHANGELOG.rst for details!
1 parent 4591582 commit 69248b4

File tree

367 files changed

+61096
-5056
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

367 files changed

+61096
-5056
lines changed

.clang-tidy

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
Checks: '*,
2+
-llvmlibc-*, -altera-*, -fuchsia-*,
3+
-modernize-use-trailing-return-type,
4+
-cppcoreguidelines-avoid-magic-numbers,
5+
-cppcoreguidelines-pro-bounds-pointer-arithmetic,
6+
-readability-magic-numbers,
7+
-misc-const-correctness,
8+
-llvm-header-guard,
9+
-hicpp-uppercase-literal-suffix,
10+
-readability-uppercase-literal-suffix,
11+
-readability-else-after-return,
12+
-llvm-else-after-return,
13+
-bugprone-easily-swappable-parameters,
14+
-google-readability-todo,
15+
-abseil-*,
16+
-android-cloexec-open'
17+
CheckOptions:
18+
- key: readability-identifier-naming.ClassCase
19+
value: CamelCase
20+
- key: readability-identifier-naming.FunctionCase
21+
value: lower_case
22+
- key: readability-identifier-naming.VariableCase
23+
value: lower_case
24+
- key: readability-identifier-length.IgnoredVariableNames
25+
value: 'i|j|k|w|h|x|y|z|it'
26+
- key: readability-identifier-length.IgnoredLoopCounterNames
27+
value: 'i|j|k|w|h|x|y|z|it'
28+
- key: readability-identifier-length.IgnoredParameterNames
29+
value: 'w|h|x|y|z'
30+
- key: performance-unnecessary-value-param.AllowedTypes
31+
value: 'Eigen::Ref|sync_ptr'
32+
- key: readability-identifier-naming.ClassCase
33+
value: CamelCase
34+
- key: readability-identifier-naming.MemberCase
35+
value: lower_case
36+
- key: readability-identifier-naming.ProtectedMemberSuffix
37+
value: _
38+
- key: readability-identifier-naming.PrivateMemberSuffix
39+
value: _
40+
- key: readability-identifier-naming.ClassMethodCase
41+
value: lower_case
42+
- key: readability-identifier-naming.EnumCase
43+
value: CamelCase
44+
- key: readability-identifier-naming.EnumConstantCase
45+
value: UPPER_CASE
46+
- key: readability-identifier-naming.ParameterCase
47+
value: lower_case
48+
- key: readability-identifier-naming.StructCase
49+
value: CamelCase
50+
- key: readability-identifier-naming.TemplateParameterCase
51+
value: CamelCase
52+
- key: readability-identifier-naming.NamespaceCase
53+
value: lower_case
54+
- key: readability-identifier-naming.MacroDefinitionCase
55+
value: UPPER_CASE
56+
- key: readability-identifier-naming.GlobalConstantCase
57+
value: UPPER_CASE
58+
- key: readability-identifier-naming.FunctionCase
59+
value: lower_case

.github/workflows/build_test.yaml

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ jobs:
88
steps:
99
- uses: actions/checkout@v1
1010
- name: install deps
11-
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
11+
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
1212
- name: cpp-lint
1313
run: ./clang-linting.sh
1414
- name: install python
@@ -24,7 +24,7 @@ jobs:
2424
steps:
2525
- uses: actions/checkout@v1
2626
- name: install deps
27-
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
27+
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
2828
- name: cmake configure
2929
run: cmake . -B build -DBUILD_TESTING=ON -DBUILD_EXAMPLES=ON
3030
- name: cmake build
@@ -38,7 +38,7 @@ jobs:
3838
- name: install python
3939
run: sudo apt install python3 python3-pip
4040
- name: install deps
41-
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
41+
run: sudo apt install build-essential cmake libeigen3-dev libcurl4-openssl-dev libtins-dev libpcap-dev libpng-dev libglfw3-dev libflatbuffers-dev
4242
- name: install python-deps
4343
run: pip3 install pytest pytest-xdist
4444
- name: build python
@@ -53,9 +53,9 @@ jobs:
5353
uses: johnwason/vcpkg-action@v6
5454
id: vcpkg
5555
with:
56-
pkgs: jsoncpp eigen3 curl libtins glfw3 glew spdlog libpng flatbuffers gtest
56+
pkgs: eigen3 curl libtins glfw3 libpng flatbuffers gtest
5757
triplet: x64-windows
58-
revision: 2024.04.26
58+
revision: 2024.11.16
5959
token: ${{ github.token }}
6060
github-binarycache: true
6161
- name: cmake configure
@@ -74,9 +74,9 @@ jobs:
7474
uses: johnwason/vcpkg-action@v6
7575
id: vcpkg
7676
with:
77-
pkgs: jsoncpp eigen3 curl libtins glfw3 glew spdlog libpng flatbuffers gtest
77+
pkgs: eigen3 curl libtins glfw3 libpng flatbuffers gtest
7878
triplet: x64-windows
79-
revision: 2024.04.26
79+
revision: 2024.11.16
8080
token: ${{ github.token }}
8181
github-binarycache: true
8282
- name: install python-deps
@@ -92,7 +92,7 @@ jobs:
9292
steps:
9393
- uses: actions/checkout@v1
9494
- name: install deps
95-
run: brew install cmake pkg-config jsoncpp eigen curl libtins glfw glew spdlog flatbuffers googletest
95+
run: brew install cmake pkg-config eigen curl libtins glfw flatbuffers googletest
9696
- name: cmake configure
9797
run: cmake . -B build -DBUILD_TESTING=ON -DBUILD_EXAMPLES=ON
9898
- name: cmake build
@@ -104,7 +104,7 @@ jobs:
104104
steps:
105105
- uses: actions/checkout@v1
106106
- name: install deps
107-
run: brew install cmake pkg-config jsoncpp eigen curl libtins glfw glew spdlog flatbuffers
107+
run: brew install cmake pkg-config eigen curl libtins glfw flatbuffers
108108
- name: install python-deps
109109
run: python3.12 -m pip install pytest pytest-xdist --break-system-packages
110110
- name: build python

.gitignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,4 +27,5 @@ CTestTestfile.cmake
2727
generated
2828
rules.ninja
2929
*.a
30-
**/_build
30+
**/_build
31+
clang-tidy-output.{txt,json}

.gitmodules

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
[submodule "sdk-extensions"]
22
path = sdk-extensions
33
url = ../sdk-extensions.git
4-
branch = master
4+
branch = master

CHANGELOG.rst

Lines changed: 74 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,77 @@
22
Changelog
33
=========
44

5-
**Important: as of 0.13.0, the SDK is no longer compatible with firmware versions older than 2.1.0.**
5+
Important announcements
6+
-----------------------
7+
* As of 0.13.0, the SDK is no longer compatible with firmware versions older than 2.1.0.
8+
* Official SDK support for firmware versions 2.2 and 2.3 will end at the end of June, 2025.
9+
* Update vcpkg ref of build to 2024.11.16
10+
11+
[20250117] [0.14.0]
12+
======================
13+
14+
ouster_client/C++ SDK
15+
---------------------
16+
17+
* Jsoncpp fully removed for jsoncons
18+
* [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.
19+
* Add CMake logic for packaging c++ sdk in binary format when ``-DBUILD_SHARED_LIBRARY=ON`` is enabled.
20+
21+
ouster_client/Python SDK
22+
------------------------
23+
* Add a new command ``localize`` to perform localization and tracking within a SLAM-generated map of a given site.
24+
* Add ``LidarScan.sensor_info`` to store the relevant ``SensorInfo`` for each scan
25+
* [BREAKING] Deprecated ``ScanBatcher::operator()(const uint8_t*, uint64_t, LidarScan&)`` for ``ScanBatcher::operator()(const LidarPacket&, LidarScan&)``
26+
* [BREAKING] Disabled ``OUSTER_USE_EIGEN_MAX_ALIGN_BYTES_32`` by default to help avoid ABI mismatches
27+
* [BREAKING] Changed ``SensorClient`` ``get_packet`` API to return packet in the ``ClientEvent`` rather than through reference parameters
28+
* Updated to Kiss ICP 1.1.0 version
29+
* [BUGFIX] Fixed OSF failing to load scans saved in 4096 * 5 mode
30+
* [BUGFIX] Fixed Python ``client.transform`` and ``client.dewarp`` methods returning incorrect results due to ignoring column layout of input data
31+
* Refactored logging to remove spdlog API exposure
32+
* Vendored spdlog in third party dependencies
33+
* [BREAKING] Change ``sensor_info.sn`` type from string to uint64_t
34+
* Support additional array types and formats for Cloud.set_xyz
35+
* Added new ``mask``, ``reduce`` and ``clip`` ScanSource operations to the SDK CLI and API
36+
* The ``clip`` command can now specify which fields to be applied to and accepts unit
37+
* Add relevant methods from ``packet_format`` to ``LidarPacket`` and ``ImuPacket`` classes
38+
* Add ``format`` to each ``Packet`` object with the relevant packet format
39+
* Tolerate off-by-1-byte for bag files recorded using an older version of the ouster-ros driver
40+
* Fix yaw axis to zero in the get_rot_matrix_to_align_to_gravity function
41+
* [BUGFIX] Fix the ``-c`` option in ouster-cli ``config`` command to set config from file
42+
43+
ouster_cli
44+
----------
45+
* Add ``ouster-cli source SENSOR set_static_ip`` command to set sensor static IPs.
46+
* Add ``ouster-cli source SENSOR diagnostics`` command to download sensor diagnostic dumps.
47+
* [BREAKING] Merge the handling of ``--extrinsics-file`` ouster-cli option into ``--extrinsics`` option.
48+
* [BREAKING] ouster-cli ``--extrinsics`` option requires adding double quotes for space separated values.
49+
* ouster-cli ``--extrinsics`` option now accepts ``identity`` as a keyword for overrideng sensor extriniscs with identity.
50+
* ouster-cli ``--extrinsics`` option now accepts the following additional formats besides the ``16`` numbers array format:
51+
* ``--extrinsics X,Y,Z,R,PY`` for position + euler angles.
52+
* ``--extrinsics X,Y,Z,QX,QY,QZ,QW`` for position + quaternion.
53+
* Add cursor-driven AOI selection feature to 2d images in ouster-cli ``viz`` command.
54+
55+
ouster_osf
56+
----------
57+
* Introduce ``ouster::osf::AsyncWriter`` to offload saving ``LidarScan`` as OSF to a background thread, improving CLI performance when saving OSF files.
58+
* Add the ``ouster::osf::Encoder`` type, which allows parameterizing the OSF compression level.
59+
* Change the default OSF PNG encoder compression level to 1 from 4.
60+
* [BREAKING] ``ouster.sdk.osf`` no longer exports lower-level OSF API classes (such as ``osf.Reader``.)
61+
* ``ouster::osf::Writer::save`` now throws if the resolution of a ``LidarScan`` being saved doesn't match what is specified in sensor info/metadata.
62+
* [BUGFIX] Fix incorrect ``OsfScanSource`` data when reading from an OSF file containing empty or missing streams.
63+
64+
ouster_viz
65+
----------
66+
* ``SimpleViz`` now drops frames when necessary to keep up with a live data source (i.e. sensor.)
67+
* Add a map origin axis and label.
68+
* Invoke frame buffer resize handlers added to ``PointViz`` when GLFW's window resize event fires.
69+
* [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.
70+
* [BUGFIX] On screen display frame number starts at zero instead of one.
71+
* [BUGFIX] ``LidarScanViz`` now only creates view modes for PIXEL fields.
72+
* [BUGFIX] Use the last valid column pose as a ``LidarScan``'s origin, instead of the first.
73+
* [BUGFIX] Limit number of keyboard shortcuts to toggle sensors from CTRL+1 to CTRL+9.
74+
* [BUGFIX] Fix a key shortcut help rendering issue and improve consistency of key shortcut help.
75+
676

777
[20241017] [0.13.1]
878
======================
@@ -101,7 +171,7 @@ ouster_viz
101171
* [BREAKING] removed ``bool update_on_input()`` and ``update_on_input(bool)`` methods from ``PointViz``.
102172
* [BUGFIX] SimpleViz throws a 'generator already executing' exception.
103173

104-
ouster_cli
174+
ouster-cli
105175
----------
106176

107177
* Add support for reading and writing ROS1 and ROS2 bag files.
@@ -449,9 +519,7 @@ ouster_client
449519
-------------
450520

451521
* Add ``LidarScan.pose`` with poses per column
452-
* Add ``_client.IndexedPcapReader`` and ``_client.PcapIndex`` to enable random
453-
pcap file access by frame number
454-
522+
* Add ``_client.IndexedPcapReader`` and ``_client.PcapIndex`` to enable random pcap file access by frame number
455523
* [BREAKING] remove ``ouster::Imu`` object
456524
* [BREAKING] change the return type of ``ouster::packet_format::frame_id`` from ``uint16_t`` to ``uint32_t``
457525
* [BREAKING] remove methods ``px_range``, ``px_reflectivity``, ``px_signal``, and ``px_ambient`` from ``ouster::packet_format``
@@ -1073,3 +1141,4 @@ Fixed
10731141
- fixed clipping issues with parallel projection
10741142
- fixed point coloring issues in z-color mode
10751143
- improved visualizer performance
1144+

CMakeLists.txt

Lines changed: 54 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -13,26 +13,28 @@ include(DefaultBuildType)
1313
include(VcpkgEnv)
1414

1515
# ==== Project Name ====
16-
project(ouster-sdk VERSION 0.13.1)
16+
project(ouster-sdk VERSION 0.14.0)
1717

1818
# generate version header
19-
set(OusterSDK_VERSION_STRING 0.13.1)
19+
set(OusterSDK_VERSION_STRING 0.14.0)
2020
include(VersionGen)
2121

2222
# ==== Options ====
2323
option(CMAKE_POSITION_INDEPENDENT_CODE "Build position independent code." ON)
24-
option(BUILD_SHARED_LIBS "Build shared libraries." OFF)
2524
option(BUILD_PCAP "Build pcap utils." ON)
2625
option(BUILD_OSF "Build Ouster OSF library." ON)
2726
option(BUILD_VIZ "Build Ouster visualizer." ON)
27+
option(BUILD_PYTHON_MODULE "Build python module (should not use this except in special instances)." OFF)
2828
option(BUILD_TESTING "Build tests" OFF)
2929
option(BUILD_EXAMPLES "Build C++ examples" OFF)
30-
option(OUSTER_USE_EIGEN_MAX_ALIGN_BYTES_32 "Eigen max aligned bytes." ON)
30+
option(OUSTER_USE_EIGEN_MAX_ALIGN_BYTES_32 "Eigen max aligned bytes." OFF)
31+
option(BUILD_SHARED_LIBRARY "Build shared Library." OFF)
32+
option(BUILD_DEBIAN_FOR_GITHUB "Build debian for github ci" OFF)
3133

3234
# when building as a top-level project
3335
if(CMAKE_PROJECT_NAME STREQUAL PROJECT_NAME)
3436
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
35-
37+
set(OUSTER_TOP_LEVEL ON)
3638
if(NOT DEFINED CMAKE_CXX_STANDARD)
3739
set(CMAKE_CXX_STANDARD 14)
3840
set(CMAKE_CXX_STANDARD_REQUIRED ON)
@@ -43,13 +45,15 @@ if(CMAKE_PROJECT_NAME STREQUAL PROJECT_NAME)
4345
endif()
4446

4547
if(MSVC)
46-
add_compile_options(/W2)
48+
add_compile_options(/W2 /bigobj /Zf)
4749
add_compile_definitions(NOMINMAX _USE_MATH_DEFINES WIN32_LEAN_AND_MEAN)
4850
else()
4951
add_compile_options(-Wall -Wextra)
5052
endif()
5153

5254
include(CTest)
55+
else()
56+
set(OUSTER_TOP_LEVEL OFF)
5357
endif()
5458

5559
# === Subdirectories ===
@@ -69,16 +73,26 @@ endif()
6973

7074
if(BUILD_VIZ)
7175
add_subdirectory(ouster_viz)
76+
add_subdirectory(thirdparty/glad)
7277
endif()
7378

7479
if(BUILD_EXAMPLES)
7580
add_subdirectory(examples)
7681
endif()
7782

83+
if(BUILD_SHARED_LIBRARY)
84+
add_subdirectory(ouster_library)
85+
endif()
86+
7887
if(CMAKE_PROJECT_NAME STREQUAL PROJECT_NAME AND BUILD_TESTING)
7988
add_subdirectory(tests)
8089
endif()
8190

91+
if(BUILD_PYTHON_MODULE)
92+
set(OUSTER_SDK_PATH "${CMAKE_CURRENT_LIST_DIR}" CACHE STRING "SDK source directory")
93+
add_subdirectory(python)
94+
endif()
95+
8296
# ==== Packaging ====
8397
set(CPACK_PACKAGE_CONTACT "oss@ouster.io")
8498
set(CPACK_PACKAGE_VENDOR "Ouster")
@@ -88,18 +102,30 @@ set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE")
88102
set(CPACK_RESOURCE_FILE_README "${CMAKE_CURRENT_SOURCE_DIR}/README.rst")
89103
set(CPACK_PACKAGING_INSTALL_PREFIX "/opt/ouster")
90104
set(CPACK_SYSTEM_NAME ${CMAKE_SYSTEM_PROCESSOR})
91-
set(CPACK_PACKAGE_NAME ouster_sdk)
92-
set(CPACK_GENERATOR "DEB;TGZ")
105+
106+
if(BUILD_DEBIAN_FOR_GITHUB)
107+
set(CPACK_DEBIAN_PACKAGE_NAME ouster-sdk)
108+
set(CPACK_DEBIAN_FILE_NAME DEB-DEFAULT)
109+
set(CPACK_DEBIAN_PACKAGE_DEPENDS
110+
"libeigen3-dev, libtins-dev, libglfw3-dev, libpng-dev, libflatbuffers-dev")
111+
endif()
112+
113+
if(OUSTER_LIBRARY_NAME)
114+
set(CPACK_PACKAGE_NAME "${OUSTER_LIBRARY_NAME}")
115+
else()
116+
set(CPACK_PACKAGE_NAME "ouster-sdk")
117+
endif()
118+
set(CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}-${CMAKE_BUILD_TYPE}-${CPACK_PACKAGE_VERSION}-${CMAKE_HOST_SYSTEM_NAME}-${CMAKE_SYSTEM_VERSION}-${CMAKE_SYSTEM_PROCESSOR}")
119+
120+
set(CPACK_GENERATOR "TGZ;ZIP")
121+
if(BUILD_DEBIAN_FOR_GITHUB)
122+
set(CPACK_GENERATOR "DEB;${CPACK_GENERATOR}")
123+
endif()
93124

94125
# source packages
95126
set(CPACK_SOURCE_GENERATOR "TGZ;ZIP")
96127
set(CPACK_SOURCE_IGNORE_FILES /.git /dist)
97128

98-
# deb options
99-
set(CPACK_DEBIAN_PACKAGE_NAME ouster-sdk)
100-
set(CPACK_DEBIAN_FILE_NAME DEB-DEFAULT)
101-
set(CPACK_DEBIAN_PACKAGE_DEPENDS
102-
"libjsoncpp-dev, libeigen3-dev, libtins-dev, libglfw3-dev, libglew-dev, libspdlog-dev, libpng-dev, libflatbuffers-dev")
103129
include(CPack)
104130

105131
# ==== Install ====
@@ -117,14 +143,22 @@ install(EXPORT ouster-sdk-targets
117143
configure_file(cmake/OusterSDKConfig.cmake.in OusterSDKConfig.cmake @ONLY)
118144
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/OusterSDKConfig.cmake"
119145
"${CMAKE_CURRENT_BINARY_DIR}/OusterSDKConfigVersion.cmake"
146+
"cmake/Coverage.cmake"
147+
"cmake/VcpkgEnv.cmake"
120148
DESTINATION lib/cmake/OusterSDK)
121-
if(BUILD_PCAP)
122-
# Install the findpcap cmake file for install targets.
123-
# For some reason it only works if you rename it to PcapConfig.cmake
124-
install(FILES "cmake/FindPcap.cmake"
125-
DESTINATION lib/cmake/OusterSDK
126-
RENAME PcapConfig.cmake)
127-
endif()
149+
install(FILES "cmake/FindEigen3.cmake"
150+
DESTINATION lib/cmake/OusterSDK)
151+
install(FILES "cmake/Findlibtins.cmake"
152+
DESTINATION lib/cmake/OusterSDK)
153+
install(FILES "cmake/FindCURL.cmake"
154+
DESTINATION lib/cmake/OusterSDK)
155+
install(FILES "cmake/Findglfw3.cmake"
156+
DESTINATION lib/cmake/OusterSDK)
157+
install(FILES "cmake/FindPcap.cmake"
158+
DESTINATION lib/cmake/OusterSDK)
159+
install(FILES "cmake/FindFlatbuffers.cmake"
160+
DESTINATION lib/cmake/OusterSDK)
161+
128162

129163
install(FILES LICENSE LICENSE-bin
130164
DESTINATION share)

0 commit comments

Comments
 (0)