Use of controls, or adjustments, or performance of procedures other than those specified herein, may result in hazardous radiation exposure. Your use of the OS1 is subject to the Terms of Sale that you signed with Ouster or your distribu- tor/integrator. Included in these terms is the prohibition on:...
If you have any questions about the above points, contact us at legal@ouster.io. 2 Proper Assembly, Maintenance and Safe Use The OS1 may be easily setup by mounting to the base to a mounting with the correct mounting hole pat- tern, and following the interconnection instructions delineated in Mounting Guidelines.
Hz mode. When the sensor is running, and the laser is operating, a faint red flickering light may be seen behind the optical window. Note that the OS1 utilizes an 865nm infrared laser that is only dimly discernable to the naked eye, while transmitting a laser eye- safe fundamental signal in the 865nm IR band.
Industry leading intrinsic calibration Example client code available For the purposes of this document, the term “OS1” refers to the family of sensors, and only where there is a difference in performance will each model be referred to by its specific model designation.
4 OS1 Product Models The OS1 is available with 128, 64, or 32 beams of vertical resolution and with uniform, gradient, or below horizon beam spacing options. Product specs and more information on these configurations can be found on the OS1 product page.
5 Connecting to Sensor Overview The OS1 requires a computer with a gigabit Ethernet connection and a 24V supply. Optionally you may time synchronize the sensor through an external time source or through the computer via PTP.
Both Ouster Studio and our sample drivers are available for Linux, Mac, and Windows. Please contact your sales rep if you do not already have links to either the latest Ouster Studio or the sample drivers.
8 Coordinate Frames and XYZ Calcula- tion 8.1 Lidar Coordinate Frame The Lidar Coordinate Frame follows the right-hand rule convention and is defined at the intersection of the lidar axis of rotation and the lidar optical midplane (a plane parallel to Sensor Coordinate Frame XY plane and coincident with the 0°...
Page 12
The corresponding 3D point can be computed by range lidar origin beam origin encoder count = 2π · θ encoder 90112 beam azimuth angles[i] θ 2π azimuth beam altitude angles[i] ϕ = 2π n) cos (θ ) cos(ϕ) + n cos (θ x = (r + θ...
8.3 Sensor Coordinate Frame The Sensor Coordinate Frame follows the right-hand rule convention and is defined at the center of the sensor housing on the bottom, with the x-axis pointed forward, y-axis pointed to the left and z-axis pointed towards the top of the sensor. The external connector is located in the negative x direction. The Sensor Coordinate Frame is marked in the diagram below with X Figure8.3: Top-down view of Sensor Coordinate Frame Figure8.4: Side view of Sensor Coordinate Frame...
Z translation and a rotation of the X,Y,Z points about the z-axis. The z translation is the height of the lidar aperture stop above the sensor origin, which is 36.180 mm for the OS1, and the data must be rotated 180°...
(continued from previous page) Which corresponds to the following matrix lidar sensor 1 74.296 The table below lists all product lines’ distances of the aperture stop above the sensor origin for use in the z translation.
Note: The calculations and illustrations of the lidar data in this section presupposes the use of the latest firmware v1.14.0 or v2.0.0. Previous firmware did not scale lidar data packet size with number of channels in a sensor. Please contact support@ouster.io if you need an older version of the guide to lidar data format.
Page 17
Reflectivity [16 bit unsigned int] - sensor signal_photon measurements are scaled based on measured range and sensor sensitivity at that range, providing an indication of target reflectivity. Calibration of this measurement has not currently been rigorously implemented, but this will be updated in a future firmware release. Ambient Photons [16 bit unsigned int] - ambient photons in the ambient return measure- ment are reported.
OS0-32, OS1-32, 6,464 OS2-32 OS0-64, OS1-64, 12,608 OS2-64 OS0-128, OS1-128, 1,556 24,896 OS2-128 10 IMU Data 10.1 IMU Data Format IMU UDP Packets are 48 Bytes long and by default are sent to Port at 100 Hz. Values are little 7503 endian.
Ouster provides timestamps for both the gyro and accelerometer in order to give access to the lowest level information. In most applications it is acceptable to use the average of the two timestamps.
Page 20
Lidar packets account for >99% of data coming from the sensor. For most applications, a gigabit Ethernet network connection is required for reliable performance.
The OS1 is shipped with the following items: OS1-128, OS1-64, or OS1-32 Sensor to interface box cable/connector Interface box Interface box AC/DC power supply (2 meters) RJ45 cable (1 meter) Optional: Heat sink Downloadable CAD files for the OS1 can be found online at www.ouster.com/lidar-product-details...
The shape of any heatsink should maximize the surface area for free and forced convection while being thick enough to allow the heat to conduct through the material If you have questions about your specific mounting situation please contact the Ouster at sup-...
13 Electrical Interface 13.1 Interface Box The Interface Box that accompanies the OS1 is designed to allow the sensor to be operated for test and evaluation purposes. It terminates the interface cable from the sensor, allows it to be powered up and provides access to the sensor gigabit Ethernet Interface via a standard RJ45 connector.
The OS1 can be operated without the use of an Interface Box. Warning: Ouster is not responsible for any errors in wiring as a result of bypassing the Interface Box and this activity may result in a voiding of your warranty if it results in damage to the sensor.
Page 25
Figure13.1: cable pinout of on-sensor receptacle Table13.1: Ouster Cable Pinout: Sinbon-Type Connector, Sensor P/Ns: 840_101855, 840_102144, 840_102145, 840_102146 Net Name Pin Number Wire Twisted With MULTIPURPOSE_IO Purple, 26 AWG SYNC_PULSE_IN Yellow, 26 AWG VCC_24 Red, 22 AWG GROUND Black, 22 AWG...
14 Digital IO 14.1 SYNC_PULSE_IN is a dedicated input channel that is accessible within the Interface Box Jumper J4. This SYNC_PULSE_IN channel expects an input pulse sequence which can be used for time synchronization. See the Setting Configuration Parameters for more information on configuring this input. Any references to pulse polarity in this document references the signal polarity on the pin of the sensor.
14.2 MULTIPURPOSE_IO (M_IO) ) is a configurable input or output channel accessible within the Interface Box MULTIPURPOSE_IO M_IO Jumper J4 connected to the MULTIPURPOSE_IO pin of the Interface Box. Detailed information on how to configure this channel using the sensor TCP interface can be found in the TCP API section.
Documentation: Contains the HTTP and TCP API guides that are compatible the version of the firmware on the sensor. See www.ouster.com for latest user manuals and data sheets. Reset Configuration: Resets sensor to factory configurations and settings. Note that this resets any...
Figure15.1: The sensor homepage, accessed through its IPv4 link-local address 16 HTTP API Reference HTTP API developer reference guide. This documents the interface for HTTP API and is accessible via on the sensor hosted HTTP server. /api/v1 API Resources system/firmware system/network system/time...
16.2 system/network GET system/network Get the system network configuration. /api/v1/system/network HTTP/1.1 Host: 192.0.2.123 HTTP/1.1 200 content-type: application/json; charset=UTF-8 "carrier": true, "duplex": "full", "ethaddr": "bc:0f:a7:00:01:2c", "hostname": "os1-991900123456", "ipv4": { "addr": "192.0.2.123/24", "link_local": "169.254.245.183/16", "override": null "ipv6": { "link_local": "fe80::be0f:a7ff:fe00:12c/64" "speed": 1000...
Page 31
→ Response JSON Object ) – State of Ethernet link, when physical layer is connected. carrier boolean true ) – Duplex mode of Ethernet link, duplex string half full ) – Ethernet hardware (MAC) address. ethaddr string ) – Hostname of the sensor, also used when requesting DHCP lease. hostname string ) –...
Page 32
– Static IP override value, this should match . This value will be when unset and string addr null operating in DHCP mode. Status Codes 200 OK – No error PUT system/network/ipv4/override Override the default dynamic behavior and set a static IP address. Note: The sensor will reset the network configuration after a short sub second delay (to allow for the HTTP response to be sent).
204 No Content – No error, no content 16.3 system/time GET system/time Get the system time configuration for all timing components of the sensor. /api/v1/system/time HTTP/1.1 Host: 192.0.2.123 HTTP/1.1 200 content-type: application/json; charset=UTF-8 "ptp": { "current_data_set": { "mean_path_delay": 37950, "offset_from_master": -211488, "steps_removed": "parent_data_set": { "gm_clock_accuracy": 33,...
Page 36
(continued from previous page) "reference_id": "70747000", "remote_host": "ptp", "residual_frequency": -0.019, "rms_offset": 4.133e-06, "root_delay": 1e-09, "root_dispersion": 0.000128737, "skew": 1.14, "stratum": 1, "system_time_offset": 4.976e-06, "update_interval": → Response JSON Object ) – Monotonic time of operating system. This timestamp never counts back- monotonic float wards and is the time since boot in seconds.
Page 38
) – Result of the PMC command. This is a linuxptp time_status_np object GET TIME_STATUS_NP non-portable command. Status Codes 200 OK – No error Fields of interest: → Current_data_set.offset_from_master Offset from master time source in nanoseconds as calculated during the last update from master. Parent_data_set.grandmaster_identity This should match the local grandmaster clock.
The sensor can be queried and configured using a simple plaintext protocol over TCP on port 7501. An example session using the unix netcat utility is shown below. Note that “os-xxx” refers to the sensor serial number and can look like “os-xxx” or “os1-xxx”. nc os-991900123456...
Page 40
ERROR An error with factory calibration that requires a manual power cycle or reboot. UNCONFIG- URED If sensor is in an state, please contact Ouster support with the two diagnostic ERROR UNCONFIGURED files found at http://os-9919xxxxxxxx/diag for support. The following commands will return sensor configuration and calibration information: Table17.1: Sensor Configuration and Calibration...
Page 41
Table 17.1 – continued from previous page Command Description Response Example Returns JSON-formatted get_sensor_info sensor metadata: serial number, hardware and soft- "status": "RUNNING", ware revision, and sensor "image_rev": "ousteros-image-prod-aries-v2.0. status. 0-20200429230129", → "base_pn": "000-101323-03", "prod_sn": "991900123456", "proto_rev": "v1.1.1", "base_sn": "101837000752", "prod_line": "OS-1-128", "build_rev": "v2.0.0", "prod_pn": "840-101855-02",...
Page 42
Table 17.1 – continued from previous page Command Description Response Example Returns JSON-formatted get_time_info sensor timing configuration and status of udp timestamp "timestamp": { , and sync_pulse_in multipur- "time": 302.96139565999999, pose_io "mode": "TIME_FROM_INTERNAL_OSC", "time_options": { "sync_pulse_in": 0, "internal_osc": 302, "ptp_1588": "sync_pulse_in": { "locked": 0, "diagnostics": {...
Page 43
Table 17.1 – continued from previous page Command Description Response Example Returns JSON-formatted get_beam_intrinsics beam altitude and azimuth offsets, in degrees. Length of "lidar_origin_to_beam_origin_mm": 13.762, arrays is equal to the number "beam_altitude_angles": [ of channels in sensor. Also 16.926, returns distance between 16.313,...
Page 44
Table 17.1 – continued from previous page Command Description Response Example Returns JSON-formatted get_lidar_intrinsics lidar transformation matrix needed to adjust to the "lidar_to_sensor_transform": [ Sensor Coordinate Frame. 36.18, continues on next page...
Page 45
Table 17.1 – continued from previous page Command Description Response Example Returns JSON-formatted get_alerts sensor diagnostic informa- <START_CURSOR> tion. "next_cursor": 2, list contains Alerts "active": [ when they were activated or deactivated. An optional "category": "UDP_TRANSMISSION", argument spec- "msg": "Received an unknown error START_CURSOR when trying to send lidar data UDP packet;...
<parameter> command or after sensor reset. reinitialize An example session using the unix netcat utility is shown below: nc os1-991900123456 7501 get_config_param active lidar_mode 1024x10 The following commands will return sensor active or staged configuration parameters:...
Page 47
Table17.2: Sensor Configurations get_config_param Command Description Response Returns the ip address to which (default) udp_ip "" the sensor sends UDP traffic. Returns the port number of lidar (default) udp_port_lidar 7502 UDP data packets. Returns the port number of IMU (default) udp_port_imu 7503 UDP data packets.
Page 48
Table17.3: Sensor Modes Command Command Description Response Returns the configured mode of the (default), multipurpose_io_mode MULTIPURPOSE_IO pin. See Time INPUT_NMEA_UART OUT- Syncrhonization section in sensor PUT_FROM_INTERNAL_OSC OUT- user guide for a detailed description PUT_FROM_SYNC_PULSE_IN OUT- of each option. PUT_FROM_PTP_1588 OUT- PUT_FROM_ENCODER_ANGLE Returns polarity...
UDP traffic. This takes effect after issuing a com- reinitialize mand. Using this command has the same effect as using set_config_param udp_ip <ip address> An example session using the unix netcat utility is shown below: nc os1-991900123456 7501 set_config_param lidar_mode 512x20 set_config_param set_udp_dest_auto set_udp_dest_auto...
Page 50
Table 17.4 – continued from previous page set_config_param Command Description Response Set the horizontal resolution and rota- on suc- lidar_mode <mode> set_config_param tion rate of the sensor. Valid modes are cess, otherwise error: 512x10 1024x10 2048x10 512x20 1024x20 Each 50% the total number of points gathered is reduced (e.g., from 2048x10 to 1024x10) extends range by 15-20%.
Page 51
Table 17.4 – continued from previous page set_config_param Command Description Response to ensure that the next time the sen- (default) auto_start_flag <1/0> sor starts up, it will stay in the dormant state until it is manually commanded to start spinning and firing lasers again. It will not put the sensor into the dormant state while it is already running.
Page 52
Table 17.5 – continued from previous page set_config_param Command Description Response Set output SYNC_PULSE_OUT on success, sync_pulse_out_pulse_width set_config_param pulse width in ms, in 1 ms in- otherwise <width in ms> error: crements. Valid inputs are inte- gers greater than 0 ms, but also limited by the criteria described in the Time Syncrhonization section of sensor user guide.
Many initial problems with the OS1 are associated with the sensor not properly being assigned an IP address by a network switch or DHCP server on a client computer. Check your networking settings,...
Page 54
(continued from previous page) "msg": "Unit internal temperature out of bounds; please ensure proper heat sinking.", "cursor": 1, "id": "0x01000001", "msg_verbose": "" "category": "OVERTEMP", "level": "ERROR", "realtime": "1569712884968876544", "active": true, "msg": "Unit internal temperature out of bounds; please ensure proper heat sinking.", "cursor": 2, "id": "0x01000002",...
Table20.1: Alerts and Errors in v1.14.0 / v2.0.0 Category Level Alert Message 0x00000000 UNKNOWN ERROR An unknown error has occurred; please contact Ouster https://ouster.com/ tech-support. 0x01000000 OVERTEMP ERROR Unit internal temperature too high; please see user guide for heat sinking requirements. 0x01000001...
Page 56
ERROR Unit internal temperature too high; please see user guide for heat sinking requirements. 0x0100000C INTERNAL_COMM ERROR Unit has experienced an internal COMM error; please contact Ouster at https://ouster.com/ tech-support. 0x0100000D INTERNAL_COMM ERROR Unit has experienced an internal COMM error;...
Page 57
0x0100001A UDP_TRANSMISSION WARNING Received an unknown error when trying to send IMU UDP packet; closing socket. 0x0100001B INTERNAL_FW ERROR Unit experienced startup ror; please contact Ouster https: //ouster.com/tech-support. 0x0100001C INTERNAL_FW ERROR Unit experienced startup ror; please contact Ouster https: //ouster.com/tech-support.
Page 58
Ouster https: //ouster.com/tech-support. 0x01000025 INTERNAL_COMM ERROR Unit has experienced an internal COMM error; please contact Ouster at https://ouster.com/ tech-support. 0x01000026 INTERNAL_COMM ERROR Unit has experienced an internal COMM error; please contact Ouster at https://ouster.com/ tech-support. 0x01000027...
Page 59
ERROR Internal fault detected; unit will restart to at- tempt recovery. 0x0100003F INTERNAL_COMM ERROR Unit has experienced an internal COMM error; please contact Ouster at https://ouster.com/ tech-support. 0x01000040 INTERNAL_FAULT ERROR After restart attempts, unit did not recover. Going to error state.
Page 60
WARNING The phase lock offset error has exceeded the threshold. 0x01000051 MOTOR_CONTROL ERROR The phase lock control failed to achieve a lock multiple times; please contact Ouster at https: //ouster.com/tech-support. 0x01000052 CONFIG_INVALID ERROR Configuration value is invalid or out of bounds.
Page 61
Table 20.1 – continued from previous page Category Level Alert Message 0x01000055 UDP_TRANSMISSION WARNING Unit has experienced a network transmission anomaly; please contact Ouster at https:// ouster.com/tech-support. 0x01000056 INTERNAL_FAULT ERROR Internal fault detected; unit will restart to at- tempt recovery.
21 Networking Guide 21.1 Networking 101 Welcome to this guide that will help you understand how to quickly get connected to your sensor to start doing great things with it. When trying to connect to the sensor for the first time there are some basics that need to to be achieved for successful communication between the host machine and the sensor.
If you are trying to connect to the sensor on another domain with a supporting DHCP and DNS server configuration you should replace the .local with the domain the sensor is on. For example, if the sensor is connected to a network with domain ouster-domain.com sensor will be reachable on os-991234567890.ouster-domain.com 21.2 Windows...
Page 64
Determining the IPv4 Address of the Sensor 1. Open a command prompt on the host machine by pressing Win+X and then A 2. Use the ping command to determine the IPv4 address of the sensor Command ping -4 [sensor_hostname] Example C:\WINDOWS\system32>ping -4 os-991234567890.local Note: If this command hangs you may need to go back and configure you interface to...
Page 65
Determining the IPv4 Address of the Interface 1. Open a command prompt by pressing Win+X and then A 2. View the IPv4 address of your interfaces Command netsh interface ip show config Example C:\WINDOWS\system32>netsh interface ip show config Response Configuration for interface "Local Area Connection" DHCP enabled: IP Address: 169.254.0.1...
Page 66
netsh interface ip set address ["Network Interface Name"] dhcp Example with interface name "Local Area Connection" C:\WINDOWS\system32>netsh interface ip set address "Local Area Connection" dhcp Response blank Setting the Host Interface to Static IP Use this to set your interface to be assigned a static IPv4 address. This is useful for controlling the IP address that the sensor will be sending data to.
Page 67
; names with the correct fully-qualified (unicast) domain name of the target host offering the service. → _roger._tcp Ouster\032Sensor\032 991234567890._roger._tcp → Ouster\032Sensor\032 991234567890._roger._tcp 0 0 7501 os-991234567890. local. ; Replace with unicast FQDN of target host → Ouster\032Sensor\032 991234567890._roger._tcp "pn=840-102145-B" "sn= 991234567890"...
21.3 macOS The following steps have been tested on macOS 10.15.4. The sensor’s hostname is os-991234567890. , where is the sensor serial number. local 991234567890 Connecting the Sensor 1. Connect the sensor to an available Ethernet port on your host machine or router. 2.
Page 69
64 bytes from 169.254.0.123: icmp_seq=2 ttl=64 time=0.299 ms os-991234567890.local ping statistics --- 3 packets transmitted, 3 packets received, 0.0% packet loss round-trip min/avg/max/stddev = 0.299/0.520/0.644/0.157 ms Note: In this example, your sensor IPv4 address is determined to be . If your 169.254.0.123 sensor IPv4 address is of the form it is connected via link-local.
Page 71
options=6407<RXCSUM,TXCSUM,VLAN_MTU,CHANNEL_IO,PARTIAL_CSUM,ZEROINVERT_CSUM> ether 48:65:ee:1d:22:35 inet6 fe80::1c24:5e0a:2ea8:12e9%en1 prefixlen 64 secured scopeid 0x7 inet 169.254.0.1 netmask 0xffff0000 broadcast 169.254.255.255 nd6 options=201<PERFORMNUD,DAD> media: autoselect (1000baseT <full-duplex>) status: active Setting the Host Interface to Static IP Use this to set your interface to be assigned a static IPv4 address. This is useful for controlling the IP address that the sensor will be sending data to.
Page 72
→ ; names with the correct fully-qualified (unicast) domain name of the target host offering the service. → _roger._tcp Ouster Sensor 991234567890._ roger._tcp → Ouster Sensor 991234567890._roger._tcp 0 0 7501 os-991234567890.local. ; Replace with unicast FQDN of target host →...
21.4 Linux The following steps have been tested on Ubuntu 18.04. The sensor’s hostname is os-991234567890. , where is the sensor serial number. local 991234567890 Connecting the Sensor 1. Connect the sensor to an available Ethernet port on your host machine or router. 2.
Page 74
3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000 → link/ether 00:50:56:28:7a:8a brd ff:ff:ff:ff:ff:ff inet 172.16.79.232/24 brd 172.16.79.255 scope global wlan0 valid_lft forever preferred_lft forever inet6 fe80::250:56ff:fe28:7a8a/64 scope link valid_lft forever preferred_lft forever Via GUI The image below illustrates how to se the interface to mode using the graph- Link-Local Only ical user interface.
Page 75
. Learn more about this in Finding a Sensor with mDNS Service Discovery _roger._tcp Command avahi-browse -lrt [service type] Example username@ubuntu:~$ avahi-browse -lrt _roger._tcp Response eth0 IPv6 Ouster Sensor 991234567890 _roger._tcp local eth0 IPv4 Ouster Sensor 991234567890 _roger._tcp local eth0 IPv6 Ouster Sensor 991234567890 _roger._tcp...
Page 76
IPv4 Ouster Sensor 991234567890 _roger._tcp local hostname = [os-991234567890.local] address = [169.254.0.123] port = [7501] txt = ["fw=ousteros-image-prod-aries-v2.0.0-20200417193957" "sn= 991234567890" "pn=840-102145-B"] → Note: In this example, your sensor IPv4 address is determined to be . If your 169.254.0.123 sensor IPv4 address is of the form it is connected via link-local.
Page 77
4: gpd0: <POINTOPOINT,MULTICAST,NOARP> mtu 1500 qdisc noop state DOWN group default qlen 500 → link/none In this example, your sensor is plugged into interface eth0 Your host IPv4 address will be on the line that starts with : In this case it is inet 169.
Page 78
(continued from previous page) inet 172.16.79.232/24 brd 172.16.79.255 scope global wlan0 valid_lft forever preferred_lft forever inet6 fe80::250:56ff:fe28:7a8a/64 scope link valid_lft forever preferred_lft forever Via GUI The image below illustrates how to se the interface to mode using the graph- Automatic (DHCP) ical user interface.
Page 79
Response blank, however you can verify the change has been made with the command. ip addr line for the interface will show the static IPv4 address. e.g. inet eth0 192.0.2.1 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever...
Note: In this example, your sensor IPv4 address is determined to be 169.254.0.123 22 Ouster Studio 23 Open Source Drivers Our latest open source drivers are found on www.github.com/ouster. Note that while firmware v1.14 is still in beta, the latest public visualization tools are still meant for Gen1 sensors.
24 OS1 CAD files All the most up-to-date CAD files of our products can be found on our Lidar Product Details page. 25 Time Synchronization 25.1 Timing Overview Diagram Signal path with MULTIPURPOSE_IO set as input Signal path with MULTIPURPOSE_IO set as output...
Using the IEEE 1588 Precision Time Protocol. PTP provides the convenience of configuring timing over a network that supports IEEE 1588 with no additional hardware signals. 25.3 Setting Ouster Sensor Time Source The source for measurement timestamps can be configured using the...
Page 83
UDP packet), but min increment is on the order of 10 ns. Accuracy is +/- 90 ppm. A free running counter synced to the SYNC_PULSE_IN input TIME_FROM_SYNC_PULSE_IN counts seconds (# of pulses) and nanoseconds since OS1 turn on. is set to then the seconds multipurpose_io_mode...
27 set_config_param nmea_ignore_valid_char 1 reinitialize 25.4 External Trigger Clock Source Additionally, the OS1 can be configured to output a SYNC_PULSE_OUT signal from a variety of sources. See example commands in the TCP API section. Pulses will always be evenly spaced.
25.5 NMEA Message Format The Ouster Sensor expects a standard NMEA $GPRMC UART message. Data (called a sentence) is a simple ASCII string starting with a ‘$’ character and ending with a return character. Fields of the sen- tence are separated with a ‘,’ character, and the last field (a checksum) is separated by a ‘*’ character.
Page 86
seconds (10 seconds from the initial UTC offset when UTC was introduced in 1972 + 27 leap seconds announced in the intervening years). Therefore, setting to 37 in February of 2019 nmea_leap_seconds would make the timestamps match the TAI standard. by default is .
Page 87
Field Description $GPRMC Recommended Minimum sentence C 042901.00 Fix taken at 4:29:01 UTC Status A=active or V=Void 3745.871698 Latitude 37 deg 45.871698’ Latitude cardinal reference 12224.825960 Longitude 12 deg 24.825960’ Longitude cardinal reference 0.874 Speed over the ground in knots 327.72 Track angle in degrees True 130219...
Familiarity with Linux permissions. 26.2 Physical Network Setup Ensure the Ouster sensor is connected to the PTP master clock with at most one network switch. Ideally the sensor should be connected directly to the PTP grandmaster. Alternatively, a simple layer-2 gigabit Ethernet switch will suffice.
Announce Interval: - sent every 2 seconds Sync Interval: - sent every 1 second Delay Request Interval: - sent every 1 second For more settings, review the field returned from the sensor’s port_data_set HTTP system/time/ptp terface. 26.4 Linux PTP Grandmaster Clock An alternative to an external grandmaster PTP clock is to run a local Linux PTP master clock if accuracy allows.
Page 90
The focus is on configuring the Linux PTP service to serve a common clock to all the downstream Ouster OS1 sensors using the Linux system time from the Ubuntu host machine. Optionally, a grandmaster clock can be added to discipline the system time of the Linux host.
Page 91
(continued from previous page) Reading state information... Done The following NEW packages will be installed: chrony ethtool linuxptp 0 upgraded, 3 newly installed, 0 to remove and 29 not upgraded. Need to get 430 kB of archives. After this operation, 1,319 kB of additional disk space will be used. Get:1 http://us.archive.ubuntu.com/ubuntu bionic/main amd64 ethtool amd64 1:4.15-0ubuntu1 [114 kB] Get:2 http://us.archive.ubuntu.com/ubuntu bionic/universe amd64 linuxptp amd64 1.8-1 [112 kB] Get:3 http://us.archive.ubuntu.com/ubuntu bionic-updates/main amd64 chrony amd64 3.2-4ubuntu4.2 [203 kB]...
Page 92
Configuring for Multiple Ports ptp4l On a Linux system with multiple Ethernet ports (i.e. Intel i210) needs to be configured to support ptp4l all of them. Modify and append the following, replacing with the appropri- /etc/linuxptp/ptp4l.conf eno1 eno2 ate interface names: boundary_clock_jbod 1 [eno1] [eno2]...
Page 93
The above console output shows systemd correctly read the override file cre- systemctl status ptp4l ated earlier before starting several seconds after the restart command. The log output shows that a grandmaster clock has been discovered on port 1 ( ) and port 2 ( ) is eno1...
Page 94
PTP hardware clock in the Ethernet controller for . These interfaces are then connected to eno2 PTP slaves such as Ouster OS1 sensors. Create a systemd drop-in directory to override the system service file: sudo mkdir -p /etc/systemd/system/phc2sys.service.d...
Page 95
Configuring Chrony to Set System Clock Using PTP An upstream PTP grandmaster clock (e.g., a GPS disciplined PTP clock) can be used to set the system time if precise absolute time is needed for sensor data. Chrony is a Linux time service that can read from NTP and PTP and set the Linux system time using the most accurate source available.
Page 96
(continued from previous page) Frequency : 0.502 ppm slow Residual freq : -0.028 ppm Skew : 0.577 ppm Root delay : 0.000000001 seconds Root dispersion : 0.000003448 seconds Update interval : 2.0 seconds Leap status : Normal chronyc sources -v 210 Number of sources = 9 .-- Source mode '^' = server, '=' = peer, '#' = local clock.
26.5 Verifying Operation If the PTP grandmaster was just setup and configured, it’s recommended to power cycle the sensor. The sensor will then jump to the correct time instead of slowly easing in the time adjustment which will take time if the grandmaster initially set the sensor to the wrong time. HTTP API The sensor can be queried for the state of its local PTP service through the HTTP system/time/ptp...
Do not firmware to lower numbered versions without having been instructed roll back to do so by Ouster deployment engineering. 28 Best Practices Please check back later for best practices and use cases for using your Ouster sensor. 29 Changelog...
HTTP Routing Table /system GET system/firmware GET system/network GET system/network/ipv4 GET system/network/ipv4/override GET system/time GET system/time/ptp GET system/time/sensor GET system/time/system PUT system/network/ipv4/override DELETE system/network/ipv4/override...
Need help?
Do you have a question about the OS1 and is the answer not in the manual?
Questions and answers