Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Release 0.11.1 #594

Closed
wants to merge 709 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
709 commits
Select commit Hold shift + click to select a range
e046220
Remove unused imports from discover plugin
Jun 23, 2023
0c7e89b
Add that one missing space character to get flake8 to stop stalling t…
Jun 23, 2023
ee874f2
Quick fixes for FLEETSW-4851/5117/5122
twslankard Jun 26, 2023
1fd75ba
Improve code rubustness
Jun 28, 2023
49c08c2
Python Logging Changes
Jun 28, 2023
e2f38c5
FLEETSW-5126: use `--traceback` for whether to show traceback on plug…
Jun 27, 2023
48635a5
FLEETSW-5121: use sensor reconfiguration for pcap record
twslankard Jun 28, 2023
2dee53a
Add PoseUtil to Ouster SDK
bexcite Jun 29, 2023
21da93a
Remove pose code in mapping
Jul 5, 2023
5d49b64
Mapping CLI command polishing
Jul 6, 2023
2dd1c87
Moving Cli Docs Around
Jul 6, 2023
032adea
Shift remaining source_osf tests to ouster-sdk
Jun 29, 2023
b01acc1
Printout fix
Jul 6, 2023
49e24c2
FLEETSW-5168: fix 'has no attribute info' when running source metadat…
twslankard Jul 6, 2023
4007e1b
Fix ci Flake8 failure
Jul 6, 2023
bbeefa9
Multi Fix
Jul 6, 2023
f21e7d2
Merge 'github/master' into master 23q2 pre
bexcite Jul 7, 2023
51ef40e
Release branch
Jul 7, 2023
a034649
Merge 'github/master' into master 23q2 post
bexcite Jul 8, 2023
d8b67a2
Touch-ups post release
Jul 10, 2023
c2f67eb
Add CLI util benchmark-sensor test
bexcite Jul 12, 2023
27e38fd
Add CLI Mapping docs
Jul 13, 2023
9e6687d
Move ouster.sdk.viz to ouster.viz
bexcite Jul 14, 2023
5714d37
Apply clang-format changes
akatumalla-ouster Jul 15, 2023
bc4c7df
FLEETSW-4799: Tweak chanfield defs for fusa profile, remove some unus…
twslankard Jul 17, 2023
c9090a2
Bump version to 0.9.1.dev1 post release
Jul 19, 2023
b752393
Various fixes
Jul 21, 2023
b785748
Cb/fix libpcap install
Jul 27, 2023
c6d18a2
FLEETSW-5221: remove extraneous 'prod_line' error
twslankard Jul 13, 2023
5b0cd04
FLEETSW-5384: retry HTTP requests to sensor on HTTP 5XX
twslankard Jul 31, 2023
398e3dd
More clang changes and script update
akatumalla-ouster Aug 1, 2023
eb1ca4c
Move pcap slice impl out
Jul 27, 2023
c438076
Small change to address comment https://gitlab.com/ouster/software/ou…
akatumalla-ouster Aug 1, 2023
40e36ff
Commit Message:
akatumalla-ouster Aug 2, 2023
de75322
Fix ouster-cli discover on IPv6
twslankard Aug 3, 2023
e0bd5bb
Updates to sensor_info struct
Aug 2, 2023
ac940ab
FLEETSW-4836: Refactor proposal for collecting packet timestamp at re…
twslankard Jul 27, 2023
6a9ca13
FLEETSW-4836: fix some uninitialized values causing periodic test fai…
Aug 8, 2023
a1bd658
FLEETSW-4836: Trying to make sure all values in tests are initialized…
Aug 8, 2023
815bcac
Provides conditional cache-friendly parse-by-block batching, revertin…
Aug 8, 2023
ec7c25c
Fix reduced metadata json
bexcite Aug 9, 2023
d7c065b
Greatly Reduce CI Build Time
Aug 10, 2023
e6f17a0
FLEETSW-5388: make sure to read 32-bit frame id for FUSA packets
twslankard Aug 9, 2023
b819b15
Clang-formatting
twslankard Aug 9, 2023
4389947
FLEESTW-4803: add FuSa profile to parsing.py
twslankard Aug 11, 2023
9be31d1
Make LidarScan host timestamp filled
bexcite Aug 15, 2023
67d8dca
Fix packet_timestamp batching with invalid columns
bexcite Aug 17, 2023
4f028a5
Stitch function
Aug 18, 2023
db4c42c
Better scan batcher testing infrastructure
Aug 19, 2023
0187c03
FLEETSW-5461: fix lidar profiles
Aug 21, 2023
189fb6b
FLEETSW-5175 fix cartesian switch at beam angles == 0
Aug 22, 2023
ba38440
Minor fixes in parsing/batcher and more tests
Aug 21, 2023
fe27e3a
I updated the field definitions to correspond to what's in cpp.
twslankard Aug 22, 2023
6b55e89
FLEETSW-5176: fix NEAR_IR image...
twslankard Aug 22, 2023
81ece99
Bump version 0.9.1.dev4 -> 0.9.1.dev5
Aug 23, 2023
f487ff6
Increase RECV_BUFF from 256k to 1mb
Samahu Aug 25, 2023
563f569
Move packet_writer class to common use area
Aug 24, 2023
10dff7a
Subclass python packet classes with their cpp equivalents
Aug 28, 2023
c1b39ad
Rework BufferedUDPSource::consume interface with packets
Aug 30, 2023
31ae633
PacketWriter python bindings, reduce parsing.py
Aug 30, 2023
925ce31
FLEETSW-5478: Fix CLI pcap record mixed timestamps bug
Sep 5, 2023
2ac6d14
FLEETSW-5481: on Windows, use 64-bit ftell/fseek
twslankard Sep 6, 2023
f6c6ca4
Add missing curl dep to Windows 10 build steps in devel.rst
twslankard Sep 6, 2023
7a82a7b
Eigen 3.3 fix and Conan test verbose
bexcite Sep 7, 2023
9054832
Fixed mDNS with FW 3.1
Sep 7, 2023
bdd13b1
Fix Incorrect CLI Args/Docs
Sep 12, 2023
6ad3208
Conan pin zlib to 1.3 fix
bexcite Sep 12, 2023
6016b3a
FLEETSW-4877: switch csv output order
Sep 13, 2023
e046290
Fix breaking changes for unreleased version
Aug 28, 2023
2724850
Clarify changelog BREAKING changes entries
twslankard Sep 6, 2023
8c0ad50
FLEESTW-5498: update explanation of mtp_dest_host for mtp_init_client
twslankard Sep 14, 2023
6a8a82d
FLEETSW-5503: fix cloud offset in viz bindings
Sep 18, 2023
2b23165
0.9.1.dev5 -> 0.9.1.dev10
twslankard Sep 19, 2023
9e71d0c
FLEETSW-5520: fix py::arg order for LidarScan __init__
twslankard Sep 21, 2023
0238342
Add ScansAccumulator and use in all Viz's
bexcite Sep 27, 2023
c1722e1
Better Discover Connect Support
Sep 27, 2023
b10fd78
Add source osf viz command to SDK CLI
bexcite Sep 27, 2023
4336868
Import viz and kiss icp when they use
Sep 29, 2023
7ed9be3
Remove metadata_json props
bexcite Oct 2, 2023
e16e27a
FLEETSW-5564: use ouster-mapping for "mapping" extra
twslankard Oct 10, 2023
4474837
Fix some spelling errors in documentation
twslankard Oct 10, 2023
b33d90f
Fix viz cloud/palette keys OSD
bexcite Oct 13, 2023
e491097
Bump version for mapping and remove mapping.
akatumalla-ouster Oct 16, 2023
0bc15e3
Enable source osf tests
bexcite Oct 18, 2023
1c738b9
Release [20231031] [0.10.0]
twslankard Oct 30, 2023
a25c90e
Update FW compatibility matrix for 0.10.0
twslankard Oct 31, 2023
edbf5c1
Merge remote-tracking branch 'github/master'
twslankard Oct 31, 2023
09e0a52
Implement multi client UDP source
twslankard Nov 1, 2023
a4626e7
Remove deprecated LidarPacket header
bexcite Nov 2, 2023
9580c41
Fix small typo in doc
Nov 2, 2023
d155602
Disable nondeterministic tests
Nov 2, 2023
62645a0
Switch Python Build Scripts To Python
Nov 3, 2023
f8f1069
Add a minimal example that demonstrates how to process packets asynch…
Samahu Nov 14, 2023
26e4c43
Add SLAM API examples to users doc
Nov 20, 2023
6ef3aae
Add SensorMulti multi-sensor client PacketSourceMulti
bexcite Oct 25, 2023
8f46e2a
Sneak in gcc-13 compilation fix
Nov 29, 2023
5cbeed4
Iterate over collated scans in ScanMultiSource
Nov 29, 2023
564d2d5
Add a TODO warning
Nov 29, 2023
48818de
Fix benchmark batching
Nov 29, 2023
148f410
Re-enable pcap to osf conversion in ouster-cli
Nov 29, 2023
8517b70
Add slam api example page
Dec 1, 2023
e9404d5
Resolve build conflicts
Samahu Dec 1, 2023
a94440f
Use updated object name
Samahu Dec 4, 2023
1bdb110
Code formatting
Samahu Dec 4, 2023
04ab8f5
Test with multi enabled
Samahu Dec 5, 2023
6c37049
Fix formatting
Samahu Dec 5, 2023
703dec0
Fix flake complaints
Samahu Dec 6, 2023
bd5072d
Fix type ignore syntax
Samahu Dec 6, 2023
f027f4b
Get rid of type ignores
Samahu Dec 6, 2023
9aa4acb
More type fixes
Samahu Dec 6, 2023
776e291
Fix return value
Samahu Dec 6, 2023
3b9c757
FLEETSW-5694: CLI - fix source convert help text for PCAP to OSF
twslankard Nov 30, 2023
a5ce400
Python3.12
Dec 16, 2023
f573925
Updating docs for python3.12
Dec 20, 2023
41608b1
Increment setuptools cmake version, to fix mac ventura build error
Dec 19, 2023
34920a5
Fix mapping inclusion for python3.12
Dec 20, 2023
1ad238d
Temporarily fix dep issues
Jan 4, 2024
62587ce
FLEETSW-5777: discover timeout is shorter with more error output
Jan 25, 2024
51e45a4
OSF Metadata Updater
Jan 26, 2024
c89ccab
FLEETSW-5784: ouster-cli discover ipv6 support
Jan 26, 2024
ff4940e
Improve dewarp process speed
Feb 2, 2024
ecc5ba9
Added CPP Test Code Coverage Nightly
Feb 5, 2024
03aa512
Fix OSF Metadata Replacement
Feb 7, 2024
b39f9fa
Added OSF Unit Tests
Feb 12, 2024
207b143
Fix OSF Tests On WASM
Feb 13, 2024
58248f3
OSF Organization
Feb 13, 2024
3b7d885
Added a paused flag to SimpleViz to prevent double update
Samahu Feb 14, 2024
8711f3c
Move version deduction from SensorHttp to version.h, define a new met…
Samahu Feb 14, 2024
5a8b1a5
FLEETSW-5812/FLEETSW-5835: ouster-cli discover improvements:
Feb 12, 2024
9fa1b66
Fix test
Feb 16, 2024
788ed1c
Always use the most recent camera configuration on rendering event
Samahu Feb 16, 2024
09d0eda
Remove unused caching variable from tox tests
akatumalla-ouster Feb 22, 2024
73e995a
FLEETSW-5814: fix ouster-cli discover race condition
Feb 19, 2024
1813b39
Revised python's ScanSource API + Added new ``MultiScanSource`` that …
Samahu Feb 24, 2024
93f3007
Make sure frames are copied on yield for the default iterator
Samahu Feb 27, 2024
f644baa
Relocated sensor_configure_multi to sensor_scan_source.py
Samahu Feb 27, 2024
bc799a9
Fix assertion error when using viz stepping on a live sensor
Samahu Feb 29, 2024
3b355df
Scope MultiLidarViz imports to viz commands
Samahu Feb 29, 2024
1539e52
Version bump to rc
Samahu Mar 1, 2024
81d8f3d
Add mapping support for py3.12
akatumalla-ouster Mar 1, 2024
091f6b0
Add basic exception handling for failed sensor connection
Samahu Mar 2, 2024
6d5cec4
This MR undoes part of the fix implemented in the linked MRs to get r…
Samahu Mar 5, 2024
bde9d6a
Fix linting error in point_viz
Samahu Mar 5, 2024
dda15df
Streamline OSF Writer
Mar 7, 2024
722412b
Fixing issues with the previous streamline OSF MR
Mar 7, 2024
8551f2e
Auto-index unindexed osf files + Display progress in a nice way for O…
Samahu Mar 8, 2024
673e876
Change default number of build cores to os.cpu_count() from 2 to mass…
matthew-lidar Mar 8, 2024
c90fad1
Fix get first valid packet ts and clang format
Mar 8, 2024
cd90c42
Remove mapping dependency temporarily
akatumalla-ouster Mar 11, 2024
a9a8b8a
Rescale and add CalRef Versions of Each Palette
matthew-lidar Mar 12, 2024
7c637e6
Rewrite ouster-cli source to support multi-command chaining
Feb 23, 2024
11e1407
Replace ring rendering as 1px lines with a pixel shader based approach.
matthew-lidar Mar 13, 2024
ba2c9d4
In mtp_init_client method check config values before accessing them
Samahu Mar 13, 2024
db199af
Remove Python-Magic Dependency
matthew-lidar Mar 14, 2024
aa49bbe
Switch index flag to False by default for both pcap and osf
Samahu Mar 14, 2024
ad17754
Update zeroconf lower bound version.
akatumalla-ouster Mar 14, 2024
d50a853
Do Not Exit Viz If Seeking Past End
matthew-lidar Mar 14, 2024
8811eef
Python Bindings For Metadata Replacement
Mar 14, 2024
cbf2693
Add new parameters for 3.1 firmware
matthew-lidar Mar 14, 2024
b3f034e
Gracefully handle reading corrupt pcap or bad metadata.json
Samahu Mar 14, 2024
6a8d756
Reinstate on_eof and pause_at viz flags
Mar 8, 2024
82ee4c5
Implement Complete Flag for OSF Files
matthew-lidar Mar 18, 2024
af50063
Rename paused in point_viz to update_on_input for clarity
matthew-lidar Mar 18, 2024
7bed5ff
Updating OSF Docs Part 1
Mar 20, 2024
9bef78e
Moved related library files into their corresponding module, moved al…
Samahu Mar 21, 2024
c632011
Lazy load mapping slam and save options when the mapping plugin is in…
Mar 22, 2024
cfb4e3a
Remove trailing whitespace
Samahu Mar 22, 2024
ebd73bb
Revert accidental change defaulting pause to true
matthew-lidar Mar 22, 2024
982334f
Updating OSF Docs Part 2
Mar 22, 2024
21c3850
Add ability to persist the config set by the init_client and mtp_init…
matthew-lidar Mar 25, 2024
3d0572d
Minor import warning fixes
Mar 23, 2024
851c21f
FLEETSW-5937: Fix raw save mode
Mar 14, 2024
9bffe1f
FLEETSW-5898: fix zero exit code, add setuptools to deps when using p…
twslankard Mar 6, 2024
e8c369e
OSF Doxygen Comments Part 3
Mar 26, 2024
cb15d27
Fix timeout error not being propagated from sensor scan source
matthew-lidar Mar 26, 2024
ce4b376
Remove Duplicate CLI Commands and Relocate Orphans
matthew-lidar Mar 27, 2024
255181d
FLEETSW-5985: Revise frame bounds detection to handle 32bit frameids
Mar 28, 2024
9a556e6
Fix Init-Id and Serial No Checking For Sensor and PCAP
matthew-lidar Mar 28, 2024
dac88c5
Always initialize LidarScan headers
Samahu Mar 29, 2024
79b2a41
Revise externics population order for single vs multi + centralize logic
Samahu Mar 30, 2024
986bdcc
Improve handling of OSFs and other sources with no scans
matthew-lidar Apr 1, 2024
4d3037e
Remove --legacy and --non-legacy CLI options
matthew-lidar Apr 1, 2024
aa93f2c
FLEETSW-6009: improve robustness of metadata resolve methods.
Mar 29, 2024
e402df9
Move io_type python module to ouster.sdk to avoid circular dependency
matthew-lidar Apr 2, 2024
87acb4e
Temporarily Add Deprecated Return Order Enums To Fix Loading
matthew-lidar Apr 2, 2024
d25453e
OSF Docs Integration Part 1
Apr 2, 2024
dbc704e
Change the return type of slice operator for ScanSource/MultiScanSour…
Samahu Apr 2, 2024
2744861
Return a StopIteration when looping over an empty source instead of i…
matthew-lidar Apr 2, 2024
4e5e58c
OSF Docs Integration Part 2
Apr 3, 2024
8c4eb1a
Add field_types argument to OSF WriterV2
matthew-lidar Apr 4, 2024
f47abec
Reverted all changes within the changes from list to iterator
Samahu Apr 4, 2024
9c126a5
Add positional argument for output filename of save.
matthew-lidar Apr 4, 2024
77e3929
Docs And Release Cleanup
Apr 4, 2024
436e0d0
Docs And Release Cleanup Part 2
Apr 8, 2024
7c9e7f1
Remove the --buf-size argument from ouster-cli source
matthew-lidar Apr 9, 2024
0c77be9
FLEETSW-5940: support the meta CLI parameter for pcap data sources.
Apr 5, 2024
9846f67
FLEETSW-6068: move misleading random port info log to the relevant me…
twslankard Apr 9, 2024
3982338
Change source slice range parsing to allow slices of the form ::N
matthew-lidar Apr 9, 2024
4ff9796
Fix docs
Apr 10, 2024
02a3691
Fix docs
Apr 10, 2024
cf0a1a7
FLEETSW-6076: Remove mapping CLI imports, fix SourceSaveCommand exten…
Apr 10, 2024
e51719b
FLEETSW-6073: Add buf_size kwarg to SensorScanSource
Apr 10, 2024
61d2370
FLEETSW-6087: Regex raw string
Apr 10, 2024
e4e39dc
Allow hiding rings in SimpleViz by cycling through ring thickness
matthew-lidar Apr 10, 2024
5d9bce4
FLEETSW-6085: remove LidarScan to_native/from_native and fix pep8 for…
Apr 10, 2024
962796e
Add ability to copy LidarScan and extend its fields
matthew-lidar Apr 11, 2024
ee089f2
Add --ts argument to allow saving OSF with different index timestamps
matthew-lidar Apr 11, 2024
f3a34d1
Enable open_source extensibility
Apr 11, 2024
1b2468e
Bump version to unblock mapping and add skip mapping option
akatumalla-ouster Apr 12, 2024
978bb12
Pinning setuptools version to 69.2.0
akatumalla-ouster Apr 15, 2024
99ca566
Allow More Chaining Orders As Long As Consumer Is Last
matthew-lidar Apr 15, 2024
2ec2721
Use osf.LidarScanStream to pull fields instead of sensor_info
Samahu Apr 15, 2024
9e05aa9
Add a known issue about when using slice with viz the playback
Samahu Apr 17, 2024
50b0917
Combine OSF WriterV2 into OSF Writer
matthew-lidar Apr 17, 2024
9c99820
Add Better Info and Metadata Command To OSF CLI
matthew-lidar Apr 17, 2024
c04b02a
Bump version for internal release
akatumalla-ouster Apr 18, 2024
39321ae
Change OSF Save Timestamp Error Handling
matthew-lidar Apr 19, 2024
56a6464
Re-add Playback Rate Option for CLI Viz
matthew-lidar Apr 19, 2024
0f5590e
Fix bad default value for rate
matthew-lidar Apr 19, 2024
7af615a
Osf-pcap-flags-not-persisted-on-round-trip-conversion
Samahu Apr 22, 2024
f538630
Osf-pcap-flags-not-persisted-on-round-trip-conversion-mypy-fix
Samahu Apr 22, 2024
5abfc35
Changes to publish previous versions of sdk documentation.
akatumalla-ouster Apr 22, 2024
a609376
Remove PCAP Replay
matthew-lidar Apr 22, 2024
d13ec0b
Fix inaccuracies in sample sessions doc page
matthew-lidar Apr 23, 2024
37fcd66
FLEETSW-6102: Update CHANGELOG
Apr 22, 2024
1da5f1d
Merge 'github/master' into master
twslankard Apr 23, 2024
c9b424a
Fix attribute exception on opening pcap source with no metadata found
matthew-lidar Apr 23, 2024
6d8409a
Add doc for the new ScanSource API
Samahu Apr 23, 2024
30af51c
Bump version for 0.11.0rc8 release.
akatumalla-ouster Apr 23, 2024
a23acfe
Migration guide seed
Samahu Apr 23, 2024
bbb035e
Add te migration guide to the index
Samahu Apr 23, 2024
588142e
Explain chunk size
twslankard Apr 23, 2024
55af5aa
Handle Loops In OSF
matthew-lidar Apr 24, 2024
ade2566
FLEETSW-3799: Explain what OSF is.
twslankard Apr 24, 2024
16c238a
Release sdk 0.11.0rc9 and mapping 0.2.0rc6
akatumalla-ouster Apr 25, 2024
2dd53ee
Revert docs links
akatumalla-ouster Apr 25, 2024
6ef3ee5
Update mapping-sessions.rst
twslankard Apr 25, 2024
5ab89ad
Version bumps for 0.11.0 public release.
akatumalla-ouster Apr 25, 2024
a4ad348
Update cpp api
akatumalla-ouster Apr 25, 2024
a409a3c
Remove ref from readme.
akatumalla-ouster Apr 26, 2024
9d44d1b
Merge remote-tracking branch 'github/master' into tws/github-sync
twslankard May 1, 2024
ea1c5ba
Fix Crash With Custom UDPProfileLidars
matthew-lidar May 1, 2024
9b22a87
Only Sleep In collect_metadata If In Initializing
matthew-lidar May 1, 2024
f5b4e9b
Don't Redraw Pointviz On Every Mouse Move
matthew-lidar Apr 29, 2024
e81dcba
Change the default of open_source sensor_idx to zero + Correct scan_s…
Samahu May 1, 2024
e3eaa57
Update mapping sdk doc
May 10, 2024
b801084
Remove ref from readme.
akatumalla-ouster Apr 26, 2024
d996768
Release 0.11.1
akatumalla-ouster May 11, 2024
d6c6dfe
Apply 1 suggestion(s) to 1 file(s)
akatumalla-ouster May 13, 2024
9dead79
Update CHANGELOG for 0.11.1
twslankard May 14, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 26 additions & 1 deletion CHANGELOG.rst
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,33 @@
Changelog
=========

[20240510] [0.11.1]
===================

Important notes
---------------

* [BREAKING] the ``open_source`` method now returns a ``ScanSource`` by default, not a ``MultiScanSource``.

Python SDK
----------

* Updated the ``open_source`` documentation.
* Fixed an issue that caused the viz to redraw when the mouse cursor is moved.

ouster_client
-------------

* Improved the client initialization latency.

mapping
-------

* Fixed several issues with the documentation.


[20240425] [0.11.0]
=========================
===================

Important notes
---------------
Expand Down
2 changes: 1 addition & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ include(VcpkgEnv)
project(ouster_example VERSION 20231031)

# generate version header
set(OusterSDK_VERSION_STRING 0.11.0)
set(OusterSDK_VERSION_STRING 0.11.1)
include(VersionGen)

# ==== Options ====
Expand Down
149 changes: 96 additions & 53 deletions docs/cli/mapping-sessions.rst
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ Start mapping with the Ouster-CLI

.. _ouster-cli-mapping:


Installation
------------

Expand All @@ -29,29 +30,34 @@ Mapping Tools
After installing the Ouster SDK and mapping dependencies, you can explore various mapping tools
using a connected Ouster sensor or a PCAP/OSF file.

Use ``ouster-cli`` to view the available commands and options you can use ``--help``. Try the
following command:
To explore and configure the parameters of the SLAM algorithm, you can use the ``--help`` flag
to view the available options.

.. code:: bash

ouster-cli source <SENSOR_HOSTNAME> / <FILENAME> --help
ouster-cli source <SENSOR_HOSTNAME> / <FILENAME> slam --help

Currently, there are two main commands: ``slam`` and ``save``. You can further explore each
command by accessing their respective submenus using the ``--help`` flag. For example:
The ``slam`` command can be combined with either or both the ``save`` and ``viz`` commands.
You can further explore each command in detail by accessing their respective submenus
using the ``--help`` flag.

.. code:: bash

ouster-cli source <SENSOR_HOSTNAME> / <FILENAME> slam --help
ouster-cli source <SENSOR_HOSTNAME> / <FILENAME> slam save --help

.. code:: bash

ouster-cli source <SENSOR_HOSTNAME> / <FILENAME> slam viz --help


SLAM Command
------------

Simultaneous localization and mapping (SLAM) is a technique that enables a system to construct
Simultaneous Localization and Mapping (SLAM) is a technique that enables a system to construct
a map of its surroundings while simultaneously determining its own position on that map.
The Ouster SDK slam command writes lidar scans with per-column poses into an OSF file, an open-source
custom file format for which Ouster provides conversion capabilities, allowing for the
reconstruction of a detailed and precise map later.

We use the slam algorithm to determine the lidar movement trajectory, correct motion
distortion and reconstruct a detailed and precise point cloud map.

Connect to a sensor or use a PCAP/OSF file :ref:`Download Sample PCAP File <sample-data-download>`

Expand All @@ -64,24 +70,88 @@ Then execute the following command:

.. code:: bash

ouster-cli source <SENSOR_HOSTNAME> / <FILENAME> slam viz -o sample.osf
ouster-cli source <SENSOR_HOSTNAME> / <FILENAME> slam viz -e exit save sample.osf

.. note::

Please replace <HOSTNAME> with the corresponding hostname or IP of your sensor, and replace
<FILENAME> with the actual file path and name of the PCAP/OSF file. Similarly, make the
necessary substitutions in the subsequent commands.

The terminal will display details such as the output filename and the processing duration. The
output filename must have the .osf extension in order to be used by the ``save`` command.

You can adjust settings such as point size, color, switch between 2D images, and pause playback in the visualizer, among other options. More details can be found at the :ref:`Ouster Visualizer <viz-run>`
Save Command
------------

The ``save`` command stores the lidarscan and the lidar movement trajectory into a OSF file by
specifying a filename with a .osf extension. This OSF file will be used for accumulated point
cloud generation and the other post-process tools we offer in the future.

.. code:: bash

ouster-cli source <SENSOR_HOSTNAME> / <FILENAME> slam save sample.osf

The ``save`` command can also be used to generated an accumulated point cloud map using a
SLAM-generated OSF file in LAS (.las), PLY (.ply), or PCD (.pcd) format.
The output format depends on the extension of the output filename.
For example, to convert the OSF file we generated using the ``slam`` command to PLY format,
we can simply use the following:

.. code:: bash

ouster-cli source sample.osf save output.ply

You can utilize the ``slam`` command with the ``save`` command to directly generate a cumulative
point cloud map. However, please be aware that this combined process can be resource-intensive.
We recommend using this approach with a PCAP/OSF file rather than with a live sensor to avoid
SLAM performance degradation.

.. code:: bash

ouster-cli source <FILENAME> slam save output.ply

The accumulated point cloud data is automatically split and downsampleed into multiple files to
prevent exporting a huge size file. The terminal will display details, and you will see the
following printout for each output file:

.. code:: bash

Output file: output-000.ply
3932160 points accumulated during this period,
154228 near points are removed [3.92 %],
1475955 down sampling points are removed [37.54 %],
2213506 zero range points are removed [56.29 %],
88471 points are saved [2.25 %].

Use the ``--help`` flag for more information such as adjusting the minimal range, selecting
different fields as values, and changing the point cloud downsampling scale etc.

You can use an open source software `CloudCompare`_ to import and view the generated point cloud
data files.


Viz Command
-----------

Accumulated Scan in SLAM command visulizer
------------------------------------------
The ``viz`` command enables visualizing the accumulated point cloud generation during the
SLAM process. By default, the viz operates in looping mode, meaning the visualiation will
continuously replay the source file.

.. code:: bash

ouster-cli source <SENSOR_HOSTNAME> / <FILENAME> slam viz

When combining the ``viz`` and ``save`` commands, the saving process will automatically terminate
after the first iteration, and then the SLAM process restarts for each subsequent lidar scan iteration.
To end the SLAM and visualization processes after the save operation completes, you can use ``ctrl + c``.
Alternatively, you can add ``-e exit`` to the ``viz`` command to terminate the process after a
complete iteration.

.. code:: bash

Within the Ouster Visualizer, there is a visualization feature known as **ScansAccumulator**. This functionality represents a continuation of efforts to visualize lidar data by incorporating SLAM-generated poses stored within the ``LidarScan.pose`` property."
ouster-cli source <SENSOR_HOSTNAME> / <FILENAME> slam viz -e exit save sample.osf


**Scans Accumulation**: The viz command allows the user to customize ...

Available view modes
~~~~~~~~~~~~~~~~~~~~~
Expand Down Expand Up @@ -127,9 +197,10 @@ Dense accumulated clouds view (with every point of a scan)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

To obtain the densest view use the ``--accum-num N --accum-every 1`` params where ``N`` is the
number of clouds to accumulate (``N`` up to 100 is generally small enough to avoid slowing down the viz interface)::
number of clouds to accumulate (``N`` up to 100 is generally small enough to avoid slowing down
the viz interface)::

ouster-cli source <SENSOR_HOSTNAME> / <FILENAME> slam viz --accum-num 20 -o sample.osf
ouster-cli source <SENSOR_HOSTNAME> / <FILENAME> slam viz --accum-num 20 save sample.osf

and the dense accumulated clouds result:

Expand All @@ -141,53 +212,25 @@ and the dense accumulated clouds result:
Overall map view (with poses)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

One of the main tasks we frequently need is a preview of the overall map. We can test this by using the generated OSF file, which was created with the above command and contains the SLAM-generated ``LidarScan.pose`` property.
One of the main tasks we frequently need is a preview of the overall map. We can test this by using
the generated OSF file, which was created with the above command and contains the
SLAM-generated ``LidarScan.pose`` property.
::

ouster-cli source sample.osf viz --accum-num 20 \
--accum-every 0 --accum-every-m 10.5 --accum-map -r 0 -e stop


Here is a preview example of the overall map generated from the accumulated scan results. By utilizing the '-e stop' option, the visualizer stops once the replay process finishes, displaying the preview of the lidar trajectory:
Here is a preview example of the overall map generated from the accumulated scan results.
By utilizing the '-e stop' option, the visualizer stops once the replay process finishes,
displaying the preview of the lidar trajectory:

.. figure:: /images/scans_accum_map_all_scan.png

Data fully replayed with map and accum enabled (last current scan is displayed here in grey
palette)


Save Command
------------

The ``save`` command can be used to convert the SLAM-generated OSF file to a point cloud data file
format such as LAS (.las), PLY (.ply), or PCD (.pcd). The output file format depends on the
extension of the output filename. Let's use the OSF file generated from the SLAM command
and convert it to a PLY file:

.. code:: bash

ouster-cli source sample.osf save output.ply

The ``save`` command automatically splits and downsamples the trajectory-adjusted point cloud into
several files to prevent exporting a huge size file. The terminal will display details, and you
will see the following printout for each output file:

.. code:: bash

Output file: output1.ply
3932160 points accumulated during this period,
154228 near points are removed [3.92 %],
1475955 down sampling points are removed [37.54 %],
2213506 zero range points are removed [56.29 %],
88471 points are saved [2.25 %].

You can adjust the minimal range, select different fields as values, and change the voxel size by
referring to the ``--help`` flag for more information.

You can use an open source software `CloudCompare`_ to import and view the generated point cloud
data files.


.. _Networking Guide: https://static.ouster.dev/sensor-docs/image_route1/image_route3/networking_guide/networking_guide.html

.. _CloudCompare: https://www.cloudcompare.org/
4 changes: 2 additions & 2 deletions docs/python/slam-api-example.rst
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ between consecutive scans
from ouster.sdk import open_source
from ouster.mapping.slam import KissBackend
import numpy as np
scans = open_source(pcap_path, sensor_idx=0)
scans = open_source(pcap_path)
slam = KissBackend(scans.metadata, max_range=75, min_range=1, voxel_size=1.0)
last_scan_pose = np.eye(4)

Expand Down Expand Up @@ -59,7 +59,7 @@ as well as for demonstration and feedback purposes.
from functools import partial
from ouster.viz import SimpleViz, ScansAccumulator
from ouster.mapping.slam import KissBackend
scans = open_source(pcap_path, sensor_idx=0)
scans = open_source(pcap_path)
slam = KissBackend(scans.metadata, max_range=75, min_range=1, voxel_size=1.0)

scans_w_poses = map(partial(slam.update), scans)
Expand Down
53 changes: 26 additions & 27 deletions docs/python/using-scan-source.rst
Original file line number Diff line number Diff line change
Expand Up @@ -24,38 +24,39 @@ can be accomplished as follows:
>>> pcap_path = '<SAMPLE_DATA_PCAP_PATH>'
>>> metadata_path = '<SAMPLE_DATA_JSON_PATH>'
>>> from ouster.sdk import open_source
>>> source = open_source(pcap_path, sensor_idx=0, meta=[metadata_path])
>>> source = open_source(pcap_path, meta=[metadata_path])


The ``source`` handle here acts the same as the handle returned by the ``pcap.Pcap`` constructor, with some
extra capabilities that we will cover later.

Notice here that besides the ``pcap_path`` we pass two additional parameters: ``sensor_idx`` with a value
of zero, and ``meta`` which we set to the ``metadata_path`` to point to the sensor metadata associated with
the pcap file we are trying to open. Both parameters are optional and can be omitted. In case the ``meta``
parameter was not omitted, the ``open_source`` method will attempt to locate the metadata associated with
the pcap file based on location and the pcap file prefix. That being said, if ``SAMPLE_DATA_JSON_PATH`` is
located in the same folder as ``SAMPLE_DATA_PCAP_PATH`` and the two files share a prefix we can simplify the
above call to:
Notice here that rather than we try to load and parse the metadata ourselves we only need to pass to metadata
to the method through ``meta`` parameter and the method will take care of loading it and associating it with the
source object. The ``meta`` parameter however is optional and can be omitted. When the ``meta`` parameter is not
set explicity the ``open_source`` method will attempt to locate the metadata automatically for us and we can reduce
the call to:

.. code:: python
>>> source = open_source(pcap_path, sensor_idx=0)
>>> source = open_source(pcap_path)

However if metadata file is not in the same folder as the pcap and don't have a shared name prefix the method will
fail.

The second parameter, ``sensor_idx``, allows users to select a specific sensor from the selected source.
That is because starting with ouster-sdk v0.11 Ouster added support for working with sensor data collected from
multiple sensors. The ``open_source`` method by default returns the more complete interface ``MultiScanSource``
which has the capability to interact with multiple sensor streams, which we will in next section. Setting the
value of ``sensor_idx`` to zero tells ``open_source`` we are only interested in LidarScan data coming from the
first sensor from this specific pcap file in case the file had more than one sensor. By doing so, the
``open_source`` method returns a less sophisticated interface ``ScanSource`` which is more familiar to SDK users
from previous versions.

The main different between the ``MultiScanSource`` and the ``ScanSource`` is the expected return of some
of the object methods. For example, when creating an iterator for a ``ScanSource`` object, the user would get
a single ``LidarScan`` object per iteration. Iterating over the contents of a ``MultiScanSource`` object always
yields a **list** of ``LidarScan(s)`` per iteration corresponding to the number of sensors stored in the pcap
file or whatever source type is being used. This is true even when the pcap file contains data for a single sensor.
.. note::
Another optional but important parameter for the ``open_source`` method is ``sensor_idx``. This paramter is to zero
by default, which should always be the case unless the pcap file that you are using (or osf or any LidarScan storage)
contains scans from more than one sensor, in this case, users can set the ``sensor_idx`` to a any value between zero
and ``sensors_count -1`` to access and manipulate scans from a specific sensor by the order they appear in the file.
Alternatively, if users set the value of ``sensor_idx`` to ``-1`` then ``open_source`` will return a slightly differnt
interface from ``ScanSource`` which is the ``MultiScanSource`` this interface and as the name suggests allows users to
work with sensor data collected from multiple sensors at the same time.

The main different between the ``MultiScanSource`` and the ``ScanSource`` is the expected return of some of the object
methods. For example, when creating an iterator for a ``ScanSource`` object, the user would get a single ``LidarScan``
object per iteration. Iterating over the contents of a ``MultiScanSource`` object always yields a **list** of
``LidarScan(s)`` per iteration corresponding to the number of sensors stored in the pcap file or whatever source type
is being used. This is true even when the pcap file contains data for a single sensor.


On the other hand, if the user wants to open an osf file or access the a live sensor, all that changes is url
Expand All @@ -65,7 +66,7 @@ of the source. For example, to interact with a live sensor the user can execute

>>> sensor_url = '<SENSOR-HOSTNAME-OR-IP>'
>>> from ouster.sdk import open_source
>>> source = open_source(sensor_url, sensor_idx=0)
>>> source = open_source(sensor_url)


Obtaining sensor metadata
Expand Down Expand Up @@ -96,8 +97,7 @@ scans. We can achieve that using:
... if ctr == 10:
... break


As we noted earlier, if we don't supply ``sensor_idx=0`` to the ``open_source`` method, the method will construct a
As we noted earlier, if we set ``sensor_idx=-1`` when invoking ``open_source`` method, the method will construct a
``MultiScanSource``, which always addresses a group of sensors. Thus, when iterating over the ``source`` the user
receives a collated set of scans from the addressed sensors per iteration. The ``MultiScanSource`` examines the
timestamp of every scan from every sensor and returns a list of scans that fit within the same time window as single
Expand Down Expand Up @@ -126,7 +126,6 @@ Note that when iterating over a ``MultiScanSource`` object, it always a list of
source has only a single sensor. In this case, the iterator will yield a list with a single element per iteration.



Using indexing and slicing capabilities of a ScanSource
========================================================

Expand All @@ -142,7 +141,7 @@ source as an indexed one upon opening. Revisitng the previous pcap open example,

>>> pcap_path = '<SAMPLE_DATA_PCAP_PATH>'
>>> from ouster.sdk import open_source
>>> source = open_source(pcap_path, sensor_idx=0, index=True)
>>> source = open_source(pcap_path, index=True)

First note that we omitted the ``meta`` parameter since it can be populated automatically as we explained earlier.
Second you will noticed that we introduced a new parameter ``index`` with its value set to ``True`` (default is false),
Expand Down
7 changes: 7 additions & 0 deletions docs/versions.json
Original file line number Diff line number Diff line change
@@ -1,4 +1,11 @@
[
{
"version": "0.11.0",
"tags": {
"sdkx": "sdk/0.11.0",
"sdk": "sdk/0.11.0"
}
},
{
"version": "0.10.0",
"tags": {
Expand Down
Loading
Loading