Ouster OS1 User Manual

Ouster OS1 User Manual

High resolution imaging lidar
Hide thumbs Also See for OS1:
Table of Contents

Advertisement

OS1 User Guide
Release v1.14.0-beta.12
Ouster OS1 High Resolution Imaging Lidar
Sep 01, 2020

Advertisement

Table of Contents
loading
Need help?

Need help?

Do you have a question about the OS1 and is the answer not in the manual?

Questions and answers

Subscribe to Our Youtube Channel

Summary of Contents for Ouster OS1

  • Page 1 OS1 User Guide Release v1.14.0-beta.12 Ouster OS1 High Resolution Imaging Lidar Sep 01, 2020...
  • Page 2: Table Of Contents

    What’s in the box ......... . . 4 OS1 Product Models...
  • Page 3 25.2 Sensor Time Source ......... 82 25.3 Setting Ouster Sensor Time Source ....... . 82 25.4 External Trigger Clock Source .
  • Page 4: Safety & Legal Notices

    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:...
  • Page 5: Proper Assembly, Maintenance And Safe Use

    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.
  • Page 6: Assemblage Correct Et Utilisation Sûre

    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.
  • Page 7: Os1 Overview

    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.
  • Page 8: Os1 Product Models

    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.
  • Page 9: Connecting To Sensor Overview

    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.
  • Page 10: Network Configuration

    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.
  • Page 11: Coordinate Frames And Xyz Calculation

    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 + θ...
  • Page 13: Sensor Coordinate Frame

    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...
  • Page 14: Combining Lidar And 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°...
  • Page 15: Imu Data To Sensor Xyz Coordinate Frame

    (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.
  • Page 16: Lidar Data

    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.
  • Page 18: Lidar Data Packet Size Calculation

    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.
  • Page 19: Data Rates

    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.
  • Page 21: Mechanical Interface

    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...
  • Page 22: Mounting Guidelines

    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-...
  • Page 23: Thermal Requirements

    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.
  • Page 24: Direct Cable Connection And Pinout

    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...
  • Page 26: Digital Io

    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.
  • Page 27: Multipurpose_Io (M_Io)

    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.
  • Page 28: Web Interface

    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...
  • Page 29: Http Api Reference

    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...
  • Page 30: System/Firmware

    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).
  • Page 33: System/Time

    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 34 (continued from previous page) "time_traceable": "time_status_np": { "cumulative_scaled_rate_offset": 0, "gm_identity": "001747.fffe.700038", "gm_present": true, "gm_time_base_indicator": 0, "ingress_time": 1552413985821448000, "last_gm_phase_change": "0x0000'0000000000000000.0000", "master_offset": -211488, "scaled_last_gm_phase_change": "sensor": { "nmea": { "baud_rate": "BAUD_9600", "diagnostics": { "decoding": { "date_decoded_count": 0, "last_read_message": "", "not_valid_count": 0, "utc_decoded_count": "io_checks": { "bit_count": 1, "bit_count_unfiltered": 0, "char_count": 0,...
  • Page 35 (continued from previous page) "time_options": { "internal_osc": 57178, "ptp_1588": 1552413986, "sync_pulse_in": "system": { "monotonic": 57191.819600378, "realtime": 1552413949.3948405, "tracking": { "frequency": -7.036, "last_offset": 5.942e-06, "leap_status": "normal", "ref_time_utc": 1552413947.8259742, "reference_id": "70747000", "remote_host": "ptp", "residual_frequency": 0.006, "rms_offset": 5.358e-06, "root_delay": 1e-09, "root_dispersion": 0.000129677, "skew": 1.144, "stratum": 1, "system_time_offset": -2.291e-06, "update_interval":...
  • 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 37 (continued from previous page) "steps_removed": "parent_data_set": { "gm_clock_accuracy": 33, "gm_clock_class": 6, "gm_offset_scaled_log_variance": 20061, "grandmaster_identity": "001747.fffe.700038", "grandmaster_priority1": 128, "grandmaster_priority2": 128, "observed_parent_clock_phase_change_rate": 2147483647, "observed_parent_offset_scaled_log_variance": 65535, "parent_port_identity": "001747.fffe.700038-1", "parent_stats": "port_data_set": { "announce_receipt_timeout": 3, "delay_mechanism": 1, "log_announce_interval": 1, "log_min_delay_req_interval": 0, "log_min_pdelay_req_interval": 0, "log_sync_interval": 0, "peer_mean_path_delay": 0, "port_identity": "bc0fa7.fffe.00012c-1", "port_state": "SLAVE",...
  • 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.
  • Page 39: Tcp Api

    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;...
  • Page 46: Querying Active Or Staged Parameters

    <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...
  • Page 49: Setting Configuration Parameters

    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.
  • Page 53: Troubleshooting

    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",...
  • Page 55: Common Issues

    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.
  • Page 62: Networking Guide

    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.
  • Page 63: Windows

    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"...
  • Page 68: Macos

    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 70 inet 127.0.0.1 netmask 0xff000000 inet6 ::1 prefixlen 128 inet6 fe80::1%lo0 prefixlen 64 scopeid 0x1 nd6 options=201<PERFORMNUD,DAD> en0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500 options=400<CHANNEL_IO> ether 38:f9:d3:d6:33:8a inet6 fe80::1c30:1246:93a2:9f68%en0 prefixlen 64 secured scopeid 0x7 inet 192.0.2.7 netmask 0xffffff00 broadcast 192.0.2.255 nd6 options=201<PERFORMNUD,DAD> media: autoselect status: active en1: flags=8963<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST>...
  • 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 →...
  • Page 73: Linux

    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...
  • Page 80: Ouster Studio

    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.
  • Page 81: Os1 Cad Files

    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...
  • Page 82: Sensor Time Source

    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...
  • Page 84: External Trigger Clock Source

    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.
  • Page 85: Nmea Message Format

    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...
  • Page 88: Ptp Quickstart Guide 26.1 Assumptions

    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.
  • Page 89: Linux Ptp Grandmaster Clock

    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.
  • Page 97: Verifying Operation

    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...
  • Page 98: Tested Grandmaster Clocks

    (continued from previous page) delayMechanism logMinPdelayReqInterval 0 versionNumber bc0fa7.fffe.c48254-1 seq 3 RESPONSE MANAGEMENT TIME_STATUS_NP master_offset 613554162 ingress_time cumulativeScaledRateOffset +0.000000000 scaledLastGmPhaseChange gmTimeBaseIndicator lastGmPhaseChange 0x0000'0000000000000000.0000 gmPresent true gmIdentity 001747.fffe.700038 26.6 Tested Grandmaster Clocks Trimble Thunderbolt PTP GM100 Grandmaster Clock Firmware version: 20161111-0.1.4.0, November 11 2016 15:58:25 PTP configuration: →...
  • Page 99: Updating Firmware

    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...
  • Page 100: Http Routing Table

    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...

Table of Contents

Save PDF