VLP 16 User Manual
63-9243%20REV%20D%20MANUAL%2CUSERS%2CVLP-16
63-9243%20REV%20D%20MANUAL%2CUSERS%2CVLP-16
VLP-16_User_Manual
63-9243%20REV%20D%20MANUAL%2CUSERS%2CVLP-16
VLP16_User_Manual
User Manual: Pdf
Open the PDF directly: View PDF .
Page Count: 138
Download | |
Open PDF In Browser | View PDF |
VLP-16 User Manual 63-9243 Rev. D Copyright 2018 Velodyne LiDAR, Inc. All rights reserved. Trademarks Velodyne™, HDL-32E™, HDL-64E™, VLP-16™, VLP-32™, Puck™, Puck LITE™, Puck Hi-Res™, and Ultra Puck™ are trademarks of Velodyne LiDAR, Inc. All other trademarks, service marks, and company names in this document or website are properties of their respective owners. Disclaimer of Liability The information contained in this document is subject to change without notice. Velodyne LiDAR, Inc. shall not be liable for errors contained herein or for incidental or consequential damage in connection with the furnishing, performance, or use of this document or equipment supplied with it. The materials and information contained herein are being provided by Velodyne LiDAR, Inc. to its Customer solely for Customer’s use for its internal business purposes. Velodyne LiDAR, Inc. retains all right, title, interest in and copyrights to the materials and information herein. The materials and information contained herein constitute confidential information of Velodyne LiDAR, Inc. and Customer shall not disclose or transfer any of these materials or information to any third party. No part of this publication may be reproduced or transmitted in any form or by any means, electronic or mechanical, including photocopying and recording, or stored in a database or retrieval system for any purpose without the express written permission of Velodyne LiDAR, Inc., which reserves the right to make changes to this document at any time without notice and assumes no responsibility for its use. This document contains the most current information available at the time of publication. When new or revised information becomes available, this entire document will be updated and distributed to all registered users. Limited Warranty Except as specified below, products sold hereunder shall be free from defects in materials and workmanship and shall conform to Velodyne's published specifications or other specifications accepted in writing by Velodyne for a period of one (1) year from the date of shipment of the products. The foregoing warranty does not apply to any Garmin products, other products not manufactured by Velodyne or products that have been subject to misuse, neglect, or accident, or have been opened, dissembled, or altered in any way. Velodyne shall make the final determination as to whether its products are defective. Velodyne 's sole obligation for products failing to comply with this warranty shall be, at its option, to either repair, replace or issue credit for the nonconforming product where, within fourteen (14) days of the expiration of the warranty period, (i) Velodyne has received written notice of any nonconformity; (ii) after Velodyne's written authorization, Buyer has returned the nonconforming product to Velodyne at Buyer's expense; and (iii) Velodyne has determined that the product is nonconforming and that such nonconformity is not the result of improper installation, repair or other misuse. Velodyne will pay for return shipping for all equipment repaired or replaced under warranty and Buyer will pay all duties or taxes, if any, on all equipment repaired or replaced under warranty. THE FOREGOING WARRANTY AND REMEDIES ARE EXCLUSIVE AND MADE EXPRESSLY IN LIEU OF ALL OTHER WARRANTIES, EXPRESSED, IMPLIED OR OTHERWISE, INCLUDING WARRANTIES OF 65-0003 Rev E Velodyne LiDAR Terms & Conditions Page 3 of 5 201603-31 MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. VELODYNE DOES NOT ASSUME OR AUTHORIZE ANY OTHER PERSON TO ASSUME FOR IT ANY OTHER LIABILITY IN CONNECTION WITH ITS PRODUCTS. This warranty is non-transferable. Velodyne LiDAR, Inc. 5521 Hellyer Ave San Jose, CA 95138 Phone +1 408-465-2800 Revision History Sensor VLP-16 Firmware 3.0.37.0 Release Date 2017-12-12 Release Notes • CHANGED: Phase Lock Offset setting now expects integer degrees instead of hundredths of degrees. • IMPROVED: Removed 'Update Calibration' from System tab. • IMPROVED: Sun Noise Filter. • ADDED: Ability to change sensor's Ethernet MAC Address from Web Interface. • IMPROVED: Low signal cross-talk filtering performance. • IMPROVED: Firmware update messages during update. • IMPROVED: Phase Lock rotations error < ±5 degrees. • FIXED: Intermittent ghost returns at 40, 80 and greater than 124 meters. • IMPROVED: Several JSON data additions and changes. • ADDED: Reverse rotation capability. Specify negative RPM values to use this capability. For details, see the full Release Notes at http://www.velodynelidar.com/downloads.html#firmware. 3 Table of Contents Chapter 1 • About This Manual 1.1 Manual Scope 16 1.2 Prerequisite Knowledge 16 1.3 Audience 16 1.4 Document Conventions 16 Chapter 2 • VLP-16 Overview 2.1 Overview 18 2.2 Product Models 19 2.3 Time of Flight 19 2.4 Data Interpretation Requirements 19 Chapter 3 • Safety Precautions 3.1 Warning and Caution Definitions 20 3.1.1 Caution Hazard Alerts 20 3.2 Safety Overview 20 3.2.1 Electrical Safety 20 3.2.2 Mechanical Safety 20 3.2.3 Laser Safety 21 Chapter 4 • Unboxing & Verification 4.1 What’s in the Box? 22 4.1.1 Variants 22 4.2 Verification Procedure 22 4.2.1 Network Setup in Isolation 23 4.2.2 Access Sensor’s Web Interface 24 4.2.3 Visualize Live Sensor Data with VeloView 26 4.2.3.1 VeloView Operation 27 Chapter 5 • Installation & Integration 4 5.1 Overview 29 5.2 Mounting 29 5.3 Encapsulation, Solar Hats, and Ventilation 30 VLP-16 User Manual 5.4 Connections 30 5.4.1 Integrated Cable and Interface Box 31 5.4.2 Operation Without an Interface Box 31 5.4.3 Power 31 Chapter 6 • Key Features 6.1 Calibrated Reflectivity 32 6.2 Laser Return Modes 32 6.2.1 Single Return Modes: Strongest, Last 32 6.2.2 Multiple Returns 33 6.2.3 Dual Return Mode 33 6.3 Phase Locking Multiple Sensors 37 Chapter 7 • Sensor Inputs 7.1 Power Requirements 39 7.2 Interface Box Signals 40 7.3 Ethernet Interface 41 7.4 GPS, Pulse Per Second (PPS) and NMEA GPRMC Message 41 7.4.1 GPS Input Signals 41 7.4.2 Electrical Requirements 41 7.4.3 Timing and Polarity Requirements 41 7.4.4 GPS Connection Scenarios 44 7.4.4.1 Connecting a Garmin 18x LVC GPS Receiver 44 7.4.4.2 Connecting to a computer's serial port 44 7.4.4.3 Connecting to a microcomputer’s UART 45 7.4.5 NMEA Message Formats 46 7.4.5.1 Pre-NMEA Version 2.3 Message Format 46 7.4.5.2 NMEA Version 2.3 Message Format 47 7.4.6 Accepting NMEA Messages Via Ethernet 48 Chapter 8 • Sensor Operation 8.1 Firing Sequence 49 8.2 Throughput Calculations 49 5 8.2.1 Data Packet Rate 49 8.2.2 Position Packet Rate 50 8.2.3 Total Packet Rate 50 8.2.4 Laser Measurements Per Second 50 8.2.4.1 Single Return Mode (Strongest, Last) 50 8.2.4.2 Dual Return Mode 50 8.3 Rotation Speed (RPM) 50 8.3.1 Horizontal Angular (Azimuth) Resolution 50 8.3.2 Rotation Speed Fluctuation and Point Density 51 Chapter 9 • Sensor Data 9.1 Sensor Origin and Frame of Reference 52 9.2 Calculating X,Y,Z Coordinates from Collected Spherical Data 52 9.3 Packet Types and Definitions 54 9.3.1 Definitions 54 9.3.1.1 Firing Sequence 55 9.3.1.2 Laser Channel 55 9.3.1.3 Data Point 55 9.3.1.4 Azimuth 55 9.3.1.5 Data Block 55 9.3.1.6 Time Stamp 55 9.3.1.7 Factory Bytes 56 9.3.2 Data Packet Structure 56 9.3.3 Position Packet Structure 60 9.4 Discreet Point Timing Calculation 61 9.5 Precision Azimuth Calculation 65 9.6 Converting PCAP Files to Point Cloud Formats 66 Chapter 10 • Sensor Communication 6 10.1 Web Interface 68 10.1.1 Configuration Screen 69 10.1.1.1 MAC Address 71 10.1.1.2 Correctly reset MAC Address to Factory MAC Address 71 VLP-16 User Manual 10.1.2 System Screen 72 10.1.3 Info Screen 73 10.1.4 Diagnostics Screen 75 10.2 Sensor Control with curl 76 10.2.1 Using curl with Velodyne LiDAR Sensors 76 10.2.2 curl Command Parameters 76 10.2.3 Command Line curl Examples 77 10.2.3.1 Get Diagnostic Data 77 10.2.3.2 Conversion Formulas 78 10.2.3.3 Interpret Diagnostic Data 78 10.2.3.3.1 top:hv 78 10.2.3.3.2 top:lm20_temp 79 10.2.3.3.3 top:pwr_5v 79 10.2.3.3.4 top:pwr_2_5v 79 10.2.3.3.5 top:pwr_3_3v 79 10.2.3.3.6 top:pwr_5v_raw 79 10.2.3.3.7 top:pwr_vccint 80 10.2.3.3.8 bot:i_out 80 10.2.3.3.9 bot:lm20_temp 80 10.2.3.3.10 bot:pwr_1_2v 80 10.2.3.3.11 bot:pwr_1_25v 81 10.2.3.3.12 bot:pwr_2_5v 81 10.2.3.3.13 bot:pwr_3_3v 81 10.2.3.3.14 bot:pwr_5v 81 10.2.3.3.15 bot:pwr_v_in 81 10.2.3.4 Get Snapshot 82 10.2.3.5 Get Sensor Status 82 10.2.3.6 Set Motor RPM 82 10.2.3.7 Set Field of View 83 10.2.3.8 Set Return Type (Strongest, Last, Dual) 83 10.2.3.9 Save Configuration 83 7 10.2.3.10 Reset System 83 10.2.3.11 Network Configuration 83 10.2.3.12 Set Host (Destination) IP Address 83 10.2.3.13 Set Data Port 84 10.2.3.14 Set Telemetry Port 84 10.2.3.15 Set Network (Sensor) IP Address 84 10.2.3.16 Set Netmask 84 10.2.3.17 Set Gateway 84 10.2.3.18 Set DHCP 84 10.2.4 curl Example using Python 84 Chapter 11 • Troubleshooting 11.1 Troubleshooting Process 87 11.1.1 Turned DHCP On, Lost Contact With Sensor 88 11.2 Service and Maintenance 89 11.2.1 Fuse Replacement 89 11.3 Technical Support 90 11.3.1 Purchased through a Distributor 90 11.3.2 Factory Support 90 11.3.3 Support Desk 90 11.4 Return Merchandise Authorization (RMA) 90 Appendix A • Sensor Specifications Appendix B • Firmware Update B.1 Firmware Update Procedure 92 B.1.1 Special Procedure to Update Firmware 98 B.1.2 If An Error Occurs 99 Appendix C • Mechanical Diagrams 8 C.1 Interface Box Mechanical Drawing 101 C.2 VLP-16 and Puck LITE Mechanical Drawing 102 C.3 VLP-16 and Puck LITE Optical Drawing 103 C.4 VLP-16 and Puck LITE Optical Keep Out Zone 104 VLP-16 User Manual C.5 Puck Hi-Res Mechanical Drawing 105 C.6 Puck Hi-Res Optical Drawing 106 C.7 Puck Hi-Res Optical Keep Out Zone 107 Appendix D • Wiring Diagrams D.1 Interface Box Wiring Diagram 109 D.2 Interface Box Schematic 110 Appendix E • VeloView E.1 Features 111 E.2 Install VeloView 112 E.3 Visualize Streaming Sensor Data 112 E.4 Capture Streaming Sensor Data to PCAP File 114 E.5 Replay Captured Sensor Data from PCAP File 114 Appendix F • Laser Pulse F.1 The Semiconductor Laser Diode 119 F.2 Laser Patterns 120 F.2.1 Laser Spot Pattern 120 F.2.2 Laser Scan Pattern 120 F.2.3 Beam Divergence 121 Appendix G • Time Synchronization G.1 Introduction 123 G.2 Background 123 G.3 PPS Qualifier 124 G.3.1 Require GPS Receiver Valid 124 G.3.2 Require PPS Lock 124 G.3.3 Delay 125 G.4 GPS Qualifier 125 G.5 Application 125 G.6 Logic Tables 125 Appendix H • Phase Lock H.1 Phase Lock 127 9 H.1.1 Setting the Phase Lock 127 H.1.2 Application Scenarios 128 H.2 Field of View 130 Appendix I • Sensor Care I.1 Cleaning the Sensor 131 I.1.1 Required Materials 131 I.1.2 Determine Method of Cleaning 132 I.1.3 Method One 132 I.1.4 Method Two 132 I.1.5 Method Three 132 I.1.6 Method Four 133 Appendix J • Network Configuration 10 J.1 Ethernet and Network Setup 134 J.1.1 Defaults 134 J.1.2 Establishing Communication via Ethernet 134 J.2 Network Considerations 135 J.2.1 Throughput Requirements 135 J.2.2 Single Sensor Transmitting to a Broadcast Address 136 J.2.3 Multiple Sensors in the Same Network 136 J.2.3.1 Multiple Sensors Transmitting to a Broadcast Address 136 J.2.3.2 Multiple Sensors Transmitting to a Specific Address 137 VLP-16 User Manual List of Tables Table 1-1 Document Conventions 16 Table 2-1 3D Sensing System Components 19 Table 7-1 Interface Box Signals 40 Table 7-2 Pre-NMEA Version 2.3 Message Format 47 Table 7-3 Post-NMEA Version 2.3 Message Format 47 Table 8-1 Rotation Speed vs Resolution 51 Table 9-1 Vertical Angles (ω) by Laser ID and Model 53 Table 9-2 Factory Byte Values 56 Table 9-3 Position Packet Structure Field Offsets 60 Table 9-4 PPS Status Byte Values 60 Table 10-1 Configuration Screen Functionality and Features 69 Table 10-2 System Screen Functionality and Features 72 Table 10-3 Info Screen Functionality and Features 73 Table 10-4 System Screen Functionality and Features 75 Table 11-1 Common Problems and Resolutions 87 Table F-1 VLP-16 Beam Divergence 122 Table F-2 Dimensions of VLP-16 Laser Spots at Distance 122 11 List of Figures Figure 2-1 Example 3D Sensing System 18 Figure 3-1 Class 1 Laser 21 Figure 4-1 Sensor Network Settings 24 Figure 4-2 Interface Box (power and data connections) 25 Figure 4-3 Sample Web Interface Main Configuration Screen 26 Figure 4-4 VeloView Open Sensor Stream 27 Figure 4-5 VeloView Select Sensor Calibration 27 Figure 4-6 VeloView Sensor Stream Display 28 Figure 5-1 Mounting Details 30 Figure 6-1 A Single Return 33 Figure 6-2 Dual Return with Last and Strongest Returns 34 Figure 6-3 Dual Return with Second Strongest Return 35 Figure 6-4 Dual Return with Far Retro-Reflector 36 Figure 6-5 Forestry Application Multiple Returns 37 Figure 6-6 Phase Locking Example 38 Figure 7-1 Interface Box (sensor power and data connections) 40 Figure 7-2 Synchronizing PPS with NMEA GPRMC Message 42 Figure 7-3 PPS Signal Closely Followed by NMEA GPRMC Message 42 Figure 7-4 PPS Signal Followed 600 ms later by NMEA GPRMC Message 43 Figure 7-5 RS-232 Example Transmission 44 Figure 7-6 Garmin GPRMC Message 44 Figure 7-7 DB9 Pin-outs (DTE) and USB-to-Serial Adapter 45 Figure 7-8 Signal Directly from UART (incorrect polarity) 46 Figure 7-9 Inverted Signal from UART (correct polarity) 46 Figure 8-1 Firing Sequence Timing 49 Figure 8-2 Point Density Example 51 Figure 9-1 VLP-16 Sensor Coordinate System 53 Figure 9-2 VLP-16 Single Return Mode Data Structure 57 Figure 9-3 VLP-16 Dual Return Mode Data Structure 58 Figure 9-4 Single Return Mode Packet Data Trace (packet start) 59 Figure 9-5 Single Return Mode Packet Data Trace (ending) 59 Figure 9-6 Wireshark Position Packet Trace 61 Figure 9-7 Firing Sequence Timing 62 Figure 9-8 Example Data Point Timing Calculation 63 12 VLP-16 User Manual Figure 9-9 Single Return Mode Timing Offsets (in µs) 64 Figure 9-10 Dual Return Mode Timing Offsets (in µs) 65 Figure 10-1 VLP-16 Configuration Screen 69 Figure 10-2 VLP-16 System Screen 72 Figure 10-3 VLP-16 Info Screen 73 Figure 10-4 VLP-16 Diagnostics Screen 75 Figure B-1 Velodyne Downloads Page 92 Figure B-2 Compare Firmware Versions 93 Figure B-3 Select New Firmware Image 94 Figure B-4 Upload New Firmware Image 95 Figure B-5 Firmware Update Complete Page 96 Figure B-6 Finalize Firmware Update 97 Figure B-7 Verify Firmware Versions 98 Figure C-1 Interface Box Mechanical Drawing 50-6001 Rev A 101 Figure C-2 VLP-16 and Puck LITE Mechanical Drawing 86-0101 Rev B1 102 Figure C-3 VLP-16 and Puck LITE Optical Drawing 86-0101 Rev B1 103 Figure C-4 VLP-16 and Puck LITE Optical Keep Out Zone 86-0101 Rev B1 104 Figure C-5 Puck Hi-Res Mechanical Drawing 86-0129 Rev A 105 Figure C-6 Puck Hi-Res Optical Drawing 86-0129 Rev A 106 Figure C-7 Puck Hi-Res Optical Keep Out Zone 86-0129 Rev A 107 Figure D-1 Interface Box Wiring Diagram 86-0107A 109 Figure D-2 Interface Box Schematic 69-8230A 110 Figure E-1 VeloView Open Sensor Stream 112 Figure E-2 VeloView Select Sensor Calibration 113 Figure E-3 VeloView Sensor Stream Display 113 Figure E-4 VeloView Record Button 114 Figure E-5 VeloView Open Capture File 115 Figure E-6 VeloView Play Button 115 Figure E-7 VeloView Spreadsheet Tool 116 Figure E-8 VeloView Data Point Table 116 Figure E-9 VeloView Show Only Selected Elements 117 Figure E-10 VeloView Select All Points 117 Figure E-11 VeloView List Selected Points 118 Figure F-1 Laser Diode Concept 119 Figure F-2 Laser Spot Shape 120 Figure F-3 Laser Spots on a Wall 121 13 Figure G-1 Web Interface PPS and GPS Qualifier Option Selections 123 Figure G-2 Top of Hour Counters 124 Figure G-3 Sub-Second Counter Behavior 125 Figure G-4 Minutes and Seconds Counter Behavior 126 Figure H-1 Direction of Laser Firing 127 Figure H-2 Configuration Screen - Phase Lock 128 Figure H-3 Right and Left Sensor Phase Offset 129 Figure H-4 Fore and Aft Sensor Phase Offset 129 Figure H-5 Sensor Data Shadows 130 Figure J-1 Sensor Network Settings 135 Figure J-2 Single Sensor Broadcasting on a Simple Network 136 Figure J-3 Multiple Sensors - Improper Network Setup 137 Figure J-4 Multiple Sensors - Proper Network Setup 137 14 VLP-16 User Manual List of Equations Equation 8-1 Azimuth Resolution at 600 RPM 50 Equation 10-1 Standard Voltage Conversion 78 Equation 10-2 Standard Current Conversion 78 Equation 10-3 Standard Temperature Conversion 78 Equation F-1 Gap Between Scan Lines 121 Equation H-1 Arc of Shadow 130 15 Chapter 1 • About This Manual 1.1 Manual Scope This manual provides descriptions and procedures supporting the installation, verification, operation, and diagnostic evaluation of the VLP-16, Puck LITE and Puck Hi-Res sensors. For readability, all products in the VLP-16 LiDAR sensor family are referred to as “VLP-16” in this manual, except where noted. 1.2 Prerequisite Knowledge This manual is written with the premise that the user has some basic engineering experience and general understanding of LiDAR technology. In addition, some familiarity with the configuration and operation of networking applications and equipment is recommended. It is recommended that prior to installation or other procedures covered in this manual, the user fully reads and comprehends all information within this manual. 1.3 Audience The user mentioned occasionally in this document is typically an engineer tasked with sensor integration for a project, a tech tasked with sensor upkeep, or data scientist looking to understand sensor output data. 1.4 Document Conventions This document uses the following typographic conventions: Table 1-1 Document Conventions Convention Description Bold Indicates text on a window, other than the window title, including menus, menu options, buttons, fields, and labels. Example: Click OK. Italic Indicates a variable, which is a placeholder for actual text provided by the user or system. Example: copy source-file target-file Note: Angled brackets (< >) are also used to indicate variables. Indicates text that is displayed on screen or entered by the user. Example: screen/code # pairdisplay -g oradb [ ] square brackets Indicates optional values. Example: [ a | b ] indicates that you can choose a, b, or nothing. { } braces Indicates required or expected values. Example: { a | b } indicates that you must choose either a or b. | vertical bar Indicates that you have a choice between two or more options or arguments. Examples: [ a | b ] indicates that you can choose a, b, or nothing. { a | b } indicates that you must choose either a or b. 16 VLP-16 User Manual Note: Notes such as this indicate important information. They call attention to an operating procedure or practice which may enhance user interaction with the product. Notes may also be used to prevent information loss or product damage. Chapter 1 • About This Manual 17 Chapter 2 • VLP-16 Overview This chapter provides basic information on the sensor's hardware and software components. 2.1 Overview 18 2.2 Product Models 19 2.3 Time of Flight 19 2.4 Data Interpretation Requirements 19 2.1 Overview The VLP-16 sensor uses an array of 16 infra-red (IR) lasers paired with IR detectors to measure distances to objects. The device is mounted securely within a compact, weather-resistant housing. The array of laser/detector pairs spins rapidly within its fixed housing to scan the surrounding environment, firing each laser approximately 18,000 times per second, providing, in real-time, a rich set of 3D point data. Advanced digital signal processing and waveform analysis provide highly accurate long-range sensing, as well as calibrated reflectivity data, enabling easy detection of retro-reflectors like street-signs, license plates, and lane markings. Combining 16 laser/detector pairs into one VLP-16 sensor and pulsing each at 18.08 kHz enables measurements of up to 300,000 data points per second -- or double that in dual return mode. Figure 2-1 Example 3D Sensing System 18 VLP-16 User Manual Table 2-1 3D Sensing System Components Item Description 1 Desktop/Laptop Computer 2 INS/GPS Antenna/Interface (optional) 3 Velodyne Interface Box 4 Velodyne LiDAR Sensor 5 DC Power Supply Note: Optional - not included unless ordered: Garmin GPS receiver (P/N: 80-GPS18LVC). 2.2 Product Models For ordering information, contact Sales at http://www.velodynelidar.com/contacts.php. 2.3 Time of Flight Velodyne LiDAR sensors use time-of-flight (ToF) methodology. When each IR laser emits a laser pulse, its time-of-shooting and direction are registered. The laser pulse travels through air until it hits an obstacle which reflects some of the energy. A portion of that energy is received by the paired IR detector, which registers the time-of-acquisition and power received. 2.4 Data Interpretation Requirements Desktop or Laptop computer Advanced geo-referencing software application GPS-Based SLAM-Based User Built Purchased from System Integrator For more software details, see Converting PCAP Files to Point Cloud Formats on page 66. Note: Click the following link to view a list of Velodyne system integrators who can sell you imaging software or a complete system: http://velodyneLiDAR.com/integrators.php. Chapter 2 • VLP-16 Overview 19 Chapter 3 • Safety Precautions This chapter provides information necessary for the safe operation of Velodyne LiDAR sensors. Observe the following general safety precautions during all LiDAR sensor phases of operation. Failure to comply with these precautions or with specific warnings elsewhere in this manual violates safety standards of intended sensor usage and may impair the protection provided by the equipment. Velodyne LiDAR, Inc. assumes no liability for failure to comply with these requirements. 3.1 Warning and Caution Definitions 3.1.1 Caution Hazard Alerts CAUTION CAUTION indicates a potentially hazardous situation which may result in minor or moderate injury. It may also be used to alert against unsafe practices. The icon shown in the left column displays the specific concern; in this case, a hot surface. 3.2 Safety Overview 3.2.1 Electrical Safety Your sensor is powered by a 12 VDC (1.5 A-rated) power supply. IMPORTANT: Read all installations instructions before powering up the sensor. Note: The VLP-16 sensor is not field serviceable. For servicing and repair, the equipment must be completely shut off, removed, packaged carefully, and shipped back to the manufacturer's facility with a completed RMA Form. See Service and Maintenance on page 89 for details. 3.2.2 Mechanical Safety CAUTION The VLP-16 sensor contains a rapidly spinning assembly. Do not operate the VLP-16 sensor without its cover firmly installed. The sensor does not contain user serviceable parts. It should not be opened in the field. 20 VLP-16 User Manual 3.2.3 Laser Safety This device complies with FDA performance standards for laser products except for deviations pursuant to Laser Notice No. 50, dated June 24, 2007. Figure 3-1 Class 1 Laser Note: The VLP-16 sensor is a CLASS 1 LASER PRODUCT. The product fulfills the requirements of IEC 60825-1:2014 (Safety of Laser Products). There are no controls or adjustments on the sensor itself that are user accessible. Never look directly at the transmitting laser through a magnifying device. Chapter 3 • Safety Precautions 21 Chapter 4 • Unboxing & Verification This chapter provides the procedure to test and verify that your sensor is operating properly. Do this to check out a new sensor before permanently mounting it somewhere. 22 4.1 What’s in the Box? 22 4.1.1 Variants 22 4.2 Verification Procedure 4.2.1 Network Setup in Isolation 23 4.2.2 Access Sensor’s Web Interface 24 4.2.3 Visualize Live Sensor Data with VeloView 26 4.1 What’s in the Box? A standard Velodyne VLP-16 sensor comes packaged in its own cardboard box. Ensure all the components are present: VLP-16 sensor with a fixed 3.0 m data/power cable terminated inside its Interface Box AC/DC power adapter and 1.8 m AC power cord (once assembled, this is the power cord) 1.0 m Ethernet cable Velodyne USB memory stick, containing: User Manual VeloView application installers for PC, Mac, and linux Sensor sample data (i.e. pcap files) Miscellaneous documents 4.1.1 Variants Variants of the sensor exist, particularly with other connector types and/or cable lengths, and even without an Interface Box. Your sensor (or the type you are interested in) may vary from the standard configuration above. Contact Velodyne Sales for details. 4.2 Verification Procedure The purpose of this procedure is to verify the sensor’s basic functionality and get you started on your way to processing sensor data in (or from) the field. It involves one computer and one sensor in isolation at a workbench or desk. You’ll need AC power. You won’t need a GPS receiver. A video of the VLP-16 installation process is on YouTube at the following location: https://www.youtube.com/watch?v=Pa-q5elS_nE. 22 VLP-16 User Manual Note: Due to the large volume of data produced by the sensor when scanning, users are cautioned against connecting it to a corporate network. 1. Unpack the sensor and its accessories, and place them on a workbench or desk. Ensure the sensor is upright with clear space around it. 2. Create a simple network setup with a test computer and the sensor in isolation. Follow the procedure in Network Setup in Isolation below. 3. Use the sensor’s Web Interface to perform basic sensor configuration. Follow the procedure in Access Sensor’s Web Interface on the next page. 4. Use VeloView (or other visualization software of your choice) to view data streaming from your sensor. Follow the procedure in Visualize Live Sensor Data with VeloView on page 26. When finished, the sensor should be ready for more complicated usage scenarios. 4.2.1 Network Setup in Isolation Your sensor’s IP address comes from the factory set to its default value, 192.168.1.201. This procedure prepares a computer to communicate directly with the sensor at that address. Note: If using the computer’s main Ethernet port, disconnect it from whatever network it’s on. If using a secondary Ethernet interface, the primary network cannot be a 192.168.1 network. If it is, use the primary Ethernet interface instead. 1. Open the computer’s Network Connections page. 2. Open the applicable Ethernet adapter and make sure the interface is enabled. 3. Open Properties > Internet Protocol Version 4 (TCP/IPv4) ( Figure 4-1 on the next page). 4. Select the Use the following IP address: function. 5. Make up an IP address for the Ethernet port and enter it: 192.168.1.XXX. “XXX” may be any integer from 2 to 254 except 201. 6. Enter the subnet mask: 255.255.255.0. When using a Windows-based computer, you can press the TAB key and the subnet mask field will automatically populate with the default mask for the network class indicated by the IP address entered; which is 255.255.255.0 in this case. Chapter 4 • Unboxing & Verification 23 Figure 4-1 Sensor Network Settings 7. Click OK. Gateway and DNS are not necessary when testing in isolation. In some cases it may be necessary to disable the computer’s firewall or configure it to allow UDP I/O on that Ethernet interface. How to do this is not covered here as the process varies widely. 4.2.2 Access Sensor’s Web Interface Now the computer is ready to connect to the sensor. 1. Plug the Ethernet cable into the computer and then plug its other end into the Ethernet port on the sensor’s Interface Box. Figure 4-2 on the facing page shows the Interface Box, its external ports, internal sensor terminal, and fuse. 24 VLP-16 User Manual Figure 4-2 Interface Box (power and data connections) 2. Connect power to the sensor’s Interface Box. When power is applied, two green LEDs in the Interface Box light up. The sensor begins scanning its environment and transmitting data approximately 30 seconds after power up. 3. On the computer, point a browser to http://192.168.1.201. 4. The sensor’s Web Interface should appear ( Figure 4-3 on the next page). The Web Interface provides access to many of the sensor’s control settings. See Web Interface on page 68 for details. Chapter 4 • Unboxing & Verification 25 Figure 4-3 Sample Web Interface Main Configuration Screen 4.2.3 Visualize Live Sensor Data with VeloView Now that the computer can access the sensor’s Web Interface, it’s time to get a first look at the sensor’s data. Note: VeloView is an open source visualization and recording application tailored for Velodyne LiDAR sensors. Other visualization software (e.g. ROS, DSR and PCL) can perform similar functions and may be used instead. VeloView is documented in more detail in VeloView on page 111. If the application isn’t already on the computer, perform the procedure detailed in Install VeloView on page 112. Older versions should be updated to at least the version installed by following the procedure. 26 VLP-16 User Manual 4.2.3.1 VeloView Operation 1. Power-up the sensor. 2. Start the VeloView application. 3. Click on File->Open and select Sensor Stream ( Figure 4-4 below). Figure 4-4 VeloView Open Sensor Stream 4. The Sensor Configuration dialog will appear ( Figure 4-5 below). Select the correct sensor type then click OK. Figure 4-5 VeloView Select Sensor Calibration 5. VeloView begins displaying the sensor data stream. See VeloView Sensor Stream Display on the next page. Chapter 4 • Unboxing & Verification 27 Figure 4-6 VeloView Sensor Stream Display Above is an example of a VeloView screen in an office, workbench or lab scenario. 28 VLP-16 User Manual Chapter 5 • Installation & Integration This chapter provides important information for integrating the VLP-16 sensor into your application environment. 5.1 Overview 29 5.2 Mounting 29 5.3 Encapsulation, Solar Hats, and Ventilation 30 5.4 Connections 30 5.4.1 Integrated Cable and Interface Box 31 5.4.2 Operation Without an Interface Box 31 5.4.3 Power 31 5.1 Overview Ensure the sensor is functional first before beginning sensor integration. See Verification Procedure on page 22. Common steps in installation and integration involve: Securely mounting the sensor to a vehicle, drone, robot, or other scanning platform Allowing for proper ventilation, providing thermal protection, and sensor encapsulation Connecting power to the sensor Connecting the sensor's Ethernet data output to a computer, switch, or network – see Network Configuration on page 134 Optionally, connecting a GPS receiver or INS (Inertial Navigation System) – see GPS, Pulse Per Second (PPS) and NMEA GPRMC Message on page 41 The typical sensor setup uses a standard computer or laptop connected to the sensor. However, it is recommended to use at least a 100 Mbps Ethernet adapter to accommodate the sensor data rate. 5.2 Mounting The sensor base provides one ¼”-20-threaded, 9/32"-deep mounting hole, and two precision locating holes for locator pins ( Figure 5-1 on the next page). The sensor may be mounted at any angle or orientation, though reliability should be best at 0° inclination (i.e. level to ground) as reductions to bearing life may occur at other orientations. Ensure the sensor is mounted securely to withstand vibration and shock without risk of detachment. The unit does not need shock proofing. The unit is designed to withstand automotive G-forces (i.e. 500 m/s2 amplitude, 11 ms duration shock and 3 GRMS 5 Hz to 2,000 Hz vibration). Chapter 5 • Installation & Integration 29 Figure 5-1 Mounting Details 5.3 Encapsulation, Solar Hats, and Ventilation For various reasons, you may wish to encapsulate the sensor, either wholly or partially. The working field of view, if covered with transparent material, should be highly transmissive of near-IR light at and near the 903 nm wavelength. Any moisture that enters should have a way to drain passively. The VLP-16 generates a moderate amount of heat during normal operation. Strategies for managing heat in hot weather include employing a "thermal hat," exposing the sensor to moving air, and drawing heat from the sensor with a heat sink (e.g. aluminum plate(s)). The sensor reports internal temperatures passively on its web interface. The same readings may be obtained programmatically via curl commands (i.e. http GET requests). See Sensor Communication on page 68 for details. The sensor's operating temperature range can be found on its data sheet. Do not operate the sensor without sufficient ambient air flow or cooling. 5.4 Connections This section covers the sensor’s physical connections. See Network Considerations on page 135 before connecting one or more Velodyne LiDAR sensors physically to your network. See Ethernet and Network Setup on page 134 for instructions on how to configure the sensor's Ethernet connection. 30 VLP-16 User Manual Note: Do not twist or otherwise adjust the strain relief gland nut where the interface cable enters the sensor. Adjusting the position of the gland nut may damage the VLP-16 sensor internally. 5.4.1 Integrated Cable and Interface Box The standard VLP-16 sensor comes with an integrated cable that is terminated inside the Interface Box. The cable is approximately 3.0 m in length and is permanently attached to the sensor. Note: If you need to cut the integrated cable for any reason, please contact Velodyne Sales to get a waiver. Cutting this cable could have warranty and RMA cost implications. Also, there is a minimum length requirement. The Interface Box provides convenient connections for power, Ethernet, and GPS inputs. It protects the sensor from power irregularities by incorporating a replaceable fuse and a reverse-current protection diode. When connected correctly to power, the diode allows current through to the sensor. If, however, the power and ground are switched, the diode blocks current flow. Opening the Interface Box and making modifications inside, such as replacing the fuse or reverse-current protection diode, or repairing wires, is permitted. For more information on the Interface Box, see Interface Box Signals on page 40. 5.4.2 Operation Without an Interface Box The VLP-16's Interface Box is a convenience, but it also adds bulk. The sensor may be ordered and used without the Interface Box to accommodate the needs of the user. Contact Velodyne Sales for details (i.e. SKUs). If used without the Interface Box, the user must provide sufficient reverse- and over-voltage protection circuitry to protect the sensor. The schematic for the circuitry in the Interface Box can be found in Wiring Diagrams on page 108. 5.4.3 Power The VLP-16 sensor does not have a physical power switch. The power source must be capable of providing as much as 3.0 A to accommodate the current surge that occurs during rotor spin-up when power is supplied to the sensor. In normal operation the sensor draws approximately 8 W of power. The sensor's data sheet specifies the input voltage that should be supplied to the unit. The sensor will not operate outside that voltage range. The power input jack on the Interface Box accommodates a 5.5 mm (O.D.) x 2.5 mm (I.D.) barrel connector. The center pin has positive (+) polarity. Note: Before operating the sensor, ensure it is securely mounted and that power will be applied in the correct polarity. If the sensor doesn't spin up when power is applied, check the fuse, check the sensor's web interface if Laser is On and Motor RPM is a valid value, check the input voltage, and make sure that the power source (battery, power inverter, or power rail) is providing sufficient current. If they check out and yet the problem persists, get Technical Support on page 90. Chapter 5 • Installation & Integration 31 Chapter 6 • Key Features 6.1 Calibrated Reflectivity 32 6.2 Laser Return Modes 32 6.2.1 Single Return Modes: Strongest, Last 32 6.2.2 Multiple Returns 33 6.2.3 Dual Return Mode 33 37 6.3 Phase Locking Multiple Sensors 6.1 Calibrated Reflectivity The VLP-16 measures reflectivity of an object independent of laser power and distances involved. Reflectivity values returned are based on laser calibration against NIST-calibrated reflectivity reference targets at the factory. For each laser measurement, a reflectivity byte is returned in addition to distance. Reflectivity byte values are segmented into two ranges, allowing software to distinguish diffuse reflectors (e.g. tree trunks, clothing) in the low range from retroreflectors (e.g. road signs, license plates) in the high range. A retroreflector reflects light back to its source with a minimum of scattering. The VLP-16 provides its own light, with negligible separation between transmitting laser and receiving detector, so retroreflecting surfaces pop with reflected IR light compared to diffuse reflectors that tend to scatter reflected energy. Diffuse reflectors report values from 0 to 100 for reflectivities from 0% to 100%. Retroreflectors report values from 101 to 255, where 255 represents an ideal reflection. Note: When a laser pulse doesn't result in a measurement, such as when a laser is shot skyward, both distance and reflectivity values will be 0. The key is a distance of 0, because 0 is a valid reflectivity value (i.e. one step above noise). 6.2 Laser Return Modes The VLP-16 supports three laser return modes: Strongest, Last, and Dual. A sensor can be configured to handle laser returns in one of these ways interactively via the sensor's web interface (where the setting is called Return Type) or programmatically via curl command. (See Configuration Screen on page 69 or Sensor Control with curl on page 76 for additional information related to setting laser return modes.) A laser return is a detection of a reflection. Up to two returns per laser shot are supported by the VLP-16. 6.2.1 Single Return Modes: Strongest, Last As shown in Figure 6-1 on the facing page, when a laser pulse hits a solid wall a single return or measurement is obtained. In this situation, the reading is considered both the strongest and the last return. (More on the nature of laser pulses emitted by your sensor, including the rectangular shape of the pulse, is covered in Laser Pulse on page 119.) 32 VLP-16 User Manual Figure 6-1 A Single Return 6.2.2 Multiple Returns Multiple laser returns are possible from any single laser shot because of beam divergence. When a laser pulse leaves the sensor it slowly, gradually grows larger. A pulse can be big enough to hit multiple objects producing multiple reflections. Usually, the farther away a reflection starts, the weaker it is at the detector. Bright or retroreflective surfaces may flip that, however. The VLP-16 analyzes multiple returns and reports either the strongest return, the last return, or both returns, depending on the laser return mode setting. If the setting is Strongest and a pulse produces multiple returns, only the strongest reflection results in a measurement. Likewise, if the setting is Last, only the last (time-wise) reflection results in a measurement. This could be used to measure distances to the ground from the air. 6.2.3 Dual Return Mode Figure 6-2 on the next page shows the majority of a laser pulse striking the near wall while the remainder hits the far wall. The Dual return mode setting allows you obtain both measurements. Note that the sensor records both returns only when the separation between the two objects is one meter or more. Chapter 6 • Key Features 33 Figure 6-2 Dual Return with Last and Strongest Returns As shown in Figure 6-3 on the facing page, in the event the strongest return is the last return, the second-strongest return is reported. The majority of the beam hits the far wall and is (in this case) the strongest return. It's entirely possible, however, that the far wall might be far enough away that despite reflecting the majority of the beam, the return from the near wall would be the strongest return. 34 VLP-16 User Manual Figure 6-3 Dual Return with Second Strongest Return It's also possible that a small portion of the beam clips a retro-reflector and returns more energy than the majority of the beam, as in Figure 6-4 on the next page. Chapter 6 • Key Features 35 Figure 6-4 Dual Return with Far Retro-Reflector The dual return function is often used in forestry applications where measurement of the height of trees is desired. Figure 6-5 on the facing page indicates a sample response when the laser pulse initially hits the upper canopy, penetrates it, and eventually hits the ground, producing multiple returns. Which laser return mode would be best in this situation? 36 VLP-16 User Manual Figure 6-5 Forestry Application Multiple Returns Note: In dual return mode, the data rate of the sensor doubles. 6.3 Phase Locking Multiple Sensors When using multiple Velodyne LiDAR sensors in proximity to one another, users may observe interference between them due to one sensor picking up a reflection intended for another. To minimize this interference, the sensor provides a phaselocking feature that enables the user to control where the laser firings overlap. The Phase Lock feature can be used to synchronize the relative rotational position of multiple sensors based on the PPS signal and relative sensor orientation. To operate correctly, the PPS signal must be present and locked. Phase locking works by offsetting the firing position based on the rising edge of the PPS signal. Note: For phase lock to work correctly, the sensor’s RPM setting must be set to a multiple of 60 RPM between 300 RPM and 1200 RPM (inclusive). Chapter 6 • Key Features 37 Figure 6-6 Phase Locking Example The red arrows shown in Figure 6-6 above indicate the firing direction of the sensor's laser at the moment it receives the rising edge of the PPS signal. Additional information for phase locking multiple sensors is located in Phase Lock on page 127. 38 VLP-16 User Manual Chapter 7 • Sensor Inputs This chapter covers sensor input requirements and functionality, including power, PPS, and Ethernet. It also covers scenarios for obtaining GPS input. 7.1 Power Requirements 39 7.2 Interface Box Signals 40 7.3 Ethernet Interface 41 7.4 GPS, Pulse Per Second (PPS) and NMEA GPRMC Message 41 7.4.1 GPS Input Signals 41 7.4.2 Electrical Requirements 41 7.4.3 Timing and Polarity Requirements 41 7.4.4 GPS Connection Scenarios 44 7.4.5 NMEA Message Formats 46 7.4.6 Accepting NMEA Messages Via Ethernet 48 7.1 Power Requirements Power requirements are detailed in Chapter 5: Power on page 31. Chapter 7 • Sensor Inputs 39 7.2 Interface Box Signals Figure 7-1 Interface Box (sensor power and data connections) Table 7-1 Interface Box Signals 40 Signal Specifications Signal Input/Output Black Ground Input Red Power Input Yellow GPS Sync Pulse Input White GPS Serial Receive Input Light Orange Ethernet TX+ Output Orange Ethernet TX- Output Light Blue Ethernet RX+ Input Blue Ethernet RX- Input VLP-16 User Manual 7.3 Ethernet Interface Your sensor's primary interface is its Ethernet interface. All command and control occurs over it, and all sensor data is transmitted over it. The RJ45 Ethernet connector on the Interface Box connects to any standard 100 Mbps Ethernet NIC or switch with MDI or AUTO MDIX capability. See Ethernet and Network Setup on page 134 for more. 7.4 GPS, Pulse Per Second (PPS) and NMEA GPRMC Message Your sensor can synchronize data with precise GPS-supplied time. Synchronizing to a GPS-supplied Pulse-Per-Second (PPS) signal provides the ability to compute the exact firing moment of each data point as required by some geo-referencing applications. See Time Synchronization on page 123 for details on GPS time synchronization and how important it is for associating sensor data with the sensor’s environment. To utilize these features, configure your GPS/INS device to issue a PPS signal in conjunction with a once-per-second NMEA GPRMC sentence. No other NMEA message is accepted by the sensor. Note: The GPRMC record may be configured for HHMMSS, HHMMSS.s, HHMMSS.ss, and HHMMSS.sss formats. 7.4.1 GPS Input Signals The serial data output from the GPS/INS is connected to the sensor’s Interface Box via the screw terminal labeled: “GPS RECEIVE.” The PPS output from the GPS/INS is connected to the sensor’s Interface Box via the screw terminal labeled: “GPS PULSE.” The ground signal from the GPS/INS is connected to the sensor’s Interface Box via the screw terminal labeled: “GROUND.” Note: You can use the provided GPS port on the Interface Box if using the Velodyne GPS Receiver (P/N 80GPS18LVC). 7.4.2 Electrical Requirements “High” voltage must be greater than 3.0 V and less than 15.0 V. “Low” voltage must be less than 1.2 V, and greater than -15.0 V. The GPS/INS unit must be able to supply at least 2 mA of current in the “High” state. 7.4.3 Timing and Polarity Requirements The PPS synchronization pulse and GPRMC message (or GPGGA) may be issued concurrently or sequentially. The PPS synchronization pulse width is not critical (typical lengths are between 10 μs and 200 ms). Note: Reception of the GPRMC sentence must conclude no more than 300 ms before the rising edge of the subsequent synchronization pulse as shown in Figure 7-2 on the next page, Figure 7-3 on the next page and Figure 7-4 on page 43. Chapter 7 • Sensor Inputs 41 Figure 7-2 Synchronizing PPS with NMEA GPRMC Message Figure 7-3 PPS Signal Closely Followed by NMEA GPRMC Message 42 VLP-16 User Manual Figure 7-4 PPS Signal Followed 600 ms later by NMEA GPRMC Message The serial connection for the NMEA message follows the RS232 standard. The interface is capable of handling voltages between ±15 VDC. Low voltages are marks and represent a logical 1. High voltages are spaces and represent a logical 0. The serial line idle state (MARK) is a low voltage indicating a logical 1. When the start bit is asserted, the positive voltage will be asserted representing a logical 0. As an example, the transmission of an ASCII "$" character is shown in Figure 7-5 on the next page. Chapter 7 • Sensor Inputs 43 Figure 7-5 RS-232 Example Transmission 7.4.4 GPS Connection Scenarios Depending on the user’s application, the source of the NMEA message (and PPS) can be a GPS/INS receiver or a substitute device such as a laptop or microcomputer. There are three common connection scenarios: connecting to a sensor from a Velodyne-supplied Garmin 18x LVC GPS receiver, connecting to it from a computer's serial port, and connecting directly from a microcomputer’s UART. 7.4.4.1 Connecting a Garmin 18x LVC GPS Receiver As an option, Velodyne LiDAR offers a Garmin 18x LVC GPS Receiver (P/N 80-GPS18LVC) pre-configured for optimized operation with your sensor. The receiver plugs directly into the Interface Box’s GPS port and is used to synchronize your sensor's timestamp with precision GPS time. The signals from the Garmin receiver will be similar to those shown in Figure 7-6 below where the signal is normally low and zeros are represented by the high voltage. Figure 7-6 Garmin GPRMC Message 7.4.4.2 Connecting to a computer's serial port In some situations, you may wish to source NMEA messages from a computer instead of a GPS receiver. 44 VLP-16 User Manual Figure 7-7 DB9 Pin-outs (DTE) and USB-to-Serial Adapter An example of a standard DB9 serial port is shown in Figure 7-7 above (a). Because modern computers use USB ports, a USB to Serial Adapter, as shown in Figure 7-7 above (b), will be required. The DB9 connector on the adapter provides a signal with the proper polarity and voltage levels to connect directly to the sensor’s Interface Box. After connecting the USB to Serial Adapter to your computer and wiring up a mating DB9 connector (not pictured), you can complete the connection to your sensor. Remove the cover from the Interface Box and make the following connections to the terminal screw strip in the Interface Box. DB9 pin 3 to GPS RECEIVE DB9 pin 5 connects to GROUND 7.4.4.3 Connecting to a microcomputer’s UART In other situations, you may wish to source NMEA messages from a microcomputer such as a Raspberry Pi or Arduino, instead. The native signal coming from the microcomputer’s UART will have incorrect polarity. In this instance, invert the signal using a 7404 hex inverter chip or equivalent circuitry. To connect to the sensor, remove the cover from the Interface Box and connect the appropriate leads to the GPS RECEIVE and GROUND connections on the terminal strip. Figure 7-8 on the next page shows a signal directly from a Raspberry Pi UART output and Figure 7-9 on the next page shows the same output inverted into a signal compatible with your Velodyne sensor. Chapter 7 • Sensor Inputs 45 Figure 7-8 Signal Directly from UART (incorrect polarity) Figure 7-9 Inverted Signal from UART (correct polarity) 7.4.5 NMEA Message Formats GPGGA may be substituted in place of GPRMC. The sensor accepts both pre- and post-NMEA version 2.3 sentence structures. The difference is that in version 2.3 a Fix Mode Indicator field was added after Magnetic Variation and before the Checksum. NMEA messages are terminated with sentence delimiter(HEX 0D0A). 7.4.5.1 Pre-NMEA Version 2.3 Message Format Table 7-2 on the facing page provides a description of the pre-NMEA 2.3 message format contents shown below. 46 VLP-16 User Manual $GPRMC,123519,A,4807.038,N,01131.000,E,022.4,084.4,230394,003.1,W*6A Table 7-2 Pre-NMEA Version 2.3 Message Format Value Description $GPRMC Recommended Minimum sentence 123519 Fix taken at 12:35:19 UTC A Receiver status: A = Active, V = Void 4807.038,N Latitude 48 deg 07.038' N 01131.000,E Longitude 11 deg 31.000' E 022.4 Speed over the ground (knots) 084.4 Track made good (degrees True) 230394 23rd of March 1994 003.1,W Magnetic Variation *6A * followed by 2-byte Checksum 7.4.5.2 NMEA Version 2.3 Message Format Table 7-3 below provides a description of the post-NMEA 2.3 message format contents shown below. $GPRMC,123519,A,4807.038,N,01131.000,E,022.4,084.4,230394,003.1,W,A*02 Table 7-3 Post-NMEA Version 2.3 Message Format Value Description $GPRMC Recommended Minimum sentence 123519 Fix taken at 12:35:19 UTC A Receiver status: A = Active, V = Void 4807.038,N Latitude 48 deg 07.038' N 01131.000,E Longitude 11 deg 31.000' E 022.4 Speed over the ground (knots) 084.4 Track made good (degrees True) 230394 23rd of March 1994 003.1,W Magnetic Variation Chapter 7 • Sensor Inputs 47 Value Description A Fix Mode Indicator: A = Autonomous, D = Differential, E = Estimated, N = Not valid, S = Simulator. Sometimes there can be a null value as well. *6A * followed by 2-byte Checksum Note: The Receiver Status (aka Validity) field in the GPRMC message ('A' or 'V') should be checked to ensure the GPS receiver is actively positioning and is providing trustworthy UTC (Coordinated Universal Time) and position updates. If status is Void, which usually occurs when the GPS receiver is searching for satellites, GPS position should be ignored. In many instances, the GPS receiver, if its status is Void, will continue to provide a PPS signal based on the GPS receiver's internal clock. More on this can be found in Time Synchronization on page 123. 7.4.6 Accepting NMEA Messages Via Ethernet Your sensor can accept NMEA sentences over Ethernet. Three methods are supported: 1. A host opens a TCP connection to the sensor’s port 10110 and transmits NMEA sentences on the socket. 2. A host transmits NMEA sentences in UDP packets to the sensor’s UDP port 10110. 3. A host transmits NMEA sentences in UDP packets to a broadcast address on port 10110 with an NMEA sentence. 1 and 2 require knowledge of the sensor’s IP address. 3 does not, but it may load devices on the network that don’t want the packets. Note: The supported NMEA sentence and syntax are exactly the same as on the wired (serial) GPS interface. Supported sentence delimiter sequences include (HEX 0D0A, the standard), by itself, and by itself. The support follows the ad-hoc but widely supported NMEA over Ethernet approach utilized by the OpenCPN project. Additional information can be found at the following web sites: http://stripydog.blogspot.com/2015/03/nmea-0183-over-ip-unwritten-rules-for.html https://opencpn.org/wiki/dokuwiki/doku.php?id=opencpn:supplementary_software:nmea_instruments http://arundale.com/docs/ais/nmearouter.html 48 VLP-16 User Manual Chapter 8 • Sensor Operation This chapter provides details on the laser firing sequence, point density, and how to determine throughput rate and angular resolution. 8.1 Firing Sequence 49 8.2 Throughput Calculations 49 8.2.1 Data Packet Rate 49 8.2.2 Position Packet Rate 50 8.2.3 Total Packet Rate 50 8.2.4 Laser Measurements Per Second 50 8.3 Rotation Speed (RPM) 50 8.3.1 Horizontal Angular (Azimuth) Resolution 50 8.3.2 Rotation Speed Fluctuation and Point Density 51 8.1 Firing Sequence All 16 lasers are fired and recharged every 55.296 μs. The time between firings is 2.304 μs. There are 16 firings (16 × 2.304 μs) followed by an idle period of 18.43 μs. Therefore, the timing cycle to fire and recharge all 16 lasers is given by (16 × 2.304 μs) + 18.432 μs = 55.296 μs. Figure 8-1 Firing Sequence Timing 8.2 Throughput Calculations Some terms used here are defined in Packet Types and Definitions on page 54. 8.2.1 Data Packet Rate There are 24 firing cycles in a data packet. 24 x 55.296 μs = 1.327 ms is the accumulation delay per packet. 1 packet/1.327 ms = 753.5 packets/second 1248 bytes/packet * 753.5 packets/second = 940368 bytes/second Chapter 8 • Sensor Operation 49 8.2.2 Position Packet Rate Position packets arrive at approximately 1/14th the rate of data packets. 554 bytes/packet * 753.5 packets/second / 14 = 29817 bytes/second 8.2.3 Total Packet Rate Summing yields 970185 bytes/second for single return mode. Dual return mode doubles the data rate but not the position packet rate: (2 * 970185 bytes/second) + 29817 bytes/second = 1970187 bytes/second 8.2.4 Laser Measurements Per Second A laser firing results in a single data point, which is a measurement of distance to target and its reflectivity. 16 laser firings/data block * 24 data blocks/packet = 384 laser firings/packet 8.2.4.1 Single Return Mode (Strongest, Last) 384 laser firings/packet * 753.5 packets/second = 289344 laser measurements per second 8.2.4.2 Dual Return Mode 384 laser firings/packet * 1507 packets/second = 578688 laser measurements per second 8.3 Rotation Speed (RPM) The sensor’s motor can be set to rotate between 300 RPM and 1200 RPM, inclusive, in increments of 60 RPM (e.g. 300, 360, 420, 480, … 1140, 1200). Note: If the RPM setting is not evenly divisible by 60, neither motor speed control nor phase lock functions will function properly. The user can set this parameter using the sensor’s Web Interface or curl commands. See Configuration Screen on page 69 or Sensor Control with curl on page 76 for more on setting rotation speed. Note: In VeloView, one rotation can be referred to as a single “frame” of data, beginning and ending at approximately 0° azimuth. The number of frames per second of data generated depends entirely on the RPM setting, e.g. 600 RPM / 60 s/min = 10 frames per second. Choice of RPM is up to the user and depends on the application. For example, an autonomous vehicle may wish to increase rotation speed so it could more quickly identify frame-to-frame variations in the environment, such as a child running across a street. Conversely, a cart-based mapping solution might use a lower RPM to increase the detail in each frame. 8.3.1 Horizontal Angular (Azimuth) Resolution Because the firing timing of the sensor is fixed at 55.296 μs per firing cycle, the speed of rotation changes the angular resolution of the sensor. An example calculation for 600 RPM is given in Equation 8-1 below. Equation 8-1 Azimuth Resolution at 600 RPM 50 VLP-16 User Manual By changing the RPM in the equation above you can calculate the azimuthal resolution for any rotation speed. Table 8-1 Rotation Speed vs Resolution RPM Resolution 300 0.1° 600 0.2° 900 0.3° 1200 0.4° 8.3.2 Rotation Speed Fluctuation and Point Density Your sensor uses a feedback control function to maintain its rotational speed within ±3 RPM of its configured setting. This small variation in speed produces a small change in the azimuthal gaps with every revolution. Consequently, over time, the sensor automatically “fills in the gaps” between successive laser firings. A data set from a stationary sensor provides an example of the how the sensor “fills in the gaps,” and the effect is demonstrated in Figure 8-2 below. On the left is a single frame of data. On the right is the same frame and the nine preceding frames overlaid on each other. You can see how the azimuth gaps are filled. Figure 8-2 Point Density Example Chapter 8 • Sensor Operation 51 Chapter 9 • Sensor Data This chapter provides detailed information about sensor data characteristics. 9.1 Sensor Origin and Frame of Reference 52 9.2 Calculating X,Y,Z Coordinates from Collected Spherical Data 52 9.3 Packet Types and Definitions 54 9.3.1 Definitions 54 9.3.2 Data Packet Structure 56 9.3.3 Position Packet Structure 60 9.4 Discreet Point Timing Calculation 61 9.5 Precision Azimuth Calculation 65 9.6 Converting PCAP Files to Point Cloud Formats 66 9.1 Sensor Origin and Frame of Reference The sensor reports distances relative to itself in spherical coordinates (radius r, elevation ω, azimuth α). Sensor data origin (0,0,0) is 37.7 mm above the sensor base, on the center axis, as shown in Figure 9-1 on the facing page (see the side and top views), which also shows the sensor’s frame of reference. See also the mechanical/optical drawings in VLP-16 and Puck LITE Mechanical Drawing on page 102. 9.2 Calculating X,Y,Z Coordinates from Collected Spherical Data A computation is necessary to convert the spherical data (radius r, elevation ω, azimuth α) from the sensor to Cartesian coordinates. Figure 9-1 on the facing page lists the formulas for converting spherical coordinates (R, ω, α) to Cartesian coordinates (X, Y, Z). 52 VLP-16 User Manual Figure 9-1 VLP-16 Sensor Coordinate System Table 9-1 below lists the fixed vertical/elevation angles for each laser in the sensor, along with vertical corrections. The set of angles vary by sensor model (see Factory Bytes on page 56 for more). Table 9-1 Vertical Angles (ω) by Laser ID and Model Laser ID Vertical Angle VLP16 Vertical Angle Puck LITE Vertical Correction (mm) Vertical Angle Puck Hi-Res Vertical Correction (mm) 0 -15° -15° 11.2 -10.00° 7.4 1 1° 1° -0.7 0.67° -0.9 2 -13° -13° 9.7 -8.67° 6.5 3 3° 3° -2.2 2.00° -1.8 4 -11° -11° 8.1 -7.33° 5.5 5 5° 5° -3.7 3.33° -2.7 6 -9° -9° 6.6 -6.00 4.6 Chapter 9 • Sensor Data 53 Laser ID Vertical Angle VLP16 Vertical Angle Puck LITE Vertical Correction (mm) Vertical Angle Puck Hi-Res Vertical Correction (mm) 7 7° 7° -5.1 4.67° -3.7 8 -7° -7° 5.1 -4.67° 3.7 9 9° 9° -6.6 6.00° -4.6 10 -5° -5° 3.7 -3.33° 2.7 11 11° 11° -8.1 7.33° -5.5 12 -3° -3° 2.2 -2.00° 1.8 13 13° 13° -9.7 8.67° -6.5 14 -1° -1° 0.7 -0.67° 0.9 15 15° 15° -11.2 10.00° -7.4 Note: Table 9-1 on the previous page lists lasers in the order they are fired. Though the VLP-16's lasers are organized in a single, vertical column, they are not fired from one end to the other. Instead, the firing sequence "hops around." This is to avoid "cross-talk" or interference. After computing X,Y,Z, apply the vertical correction in Table 9-1 on the previous page for greatest accuracy. This represents the vertical offset of the laser with respect to sensor origin. These vertical offset corrections are also found in the VLP-16 and Puck LITE Optical Drawing on page 103 and the Hi-Res version below it. 9.3 Packet Types and Definitions There are two types of packets generated by the sensor: data packets and position packets. Position packets are sometimes referred to as telemetry packets, or GPS packets. Data packets contain the 3D data measured by the sensor as well as the calibrated reflectivity of the surface from which the light pulse was returned. Also contained in the data packet is a set of azimuths and a 4-byte timestamp, as well as two factory bytes identifying the model of sensor and the return mode. Knowing the model and return mode provides your software the information to automatically adjust to the different data formats. Position packets provide a copy of the last GPRMC NMEA message received if you've configured your sensor to synchronize with a GPS time source. See GPS, Pulse Per Second (PPS) and NMEA GPRMC Message on page 41 for additional information. Position packets also provide a byte identifying the state of the PPS signal for synchronizing with a time source. Note: In both types of packets, multi-byte values (e.g. azimuth, distance, and timestamp) are transmitted with the least significant byte first (i.e. little-endian). 9.3.1 Definitions The following sections provide explanations of sensor data packet constructs. 54 VLP-16 User Manual 9.3.1.1 Firing Sequence A firing sequence occurs when all the lasers in a sensor are fired. They are fired in a sequence specific to a given product line. Laser recharge time is included. A firing sequence is sometimes referred to as a firing group. It takes 55.296 μs to fire all 16 lasers in a VLP-16 and recharge. 9.3.1.2 Laser Channel A laser channel is a single 903 nm laser emitter and detector pair. Each laser channel is fixed at a particular elevation angle relative to the horizontal plane of the sensor. Each laser channel is given its own Laser ID number as shown in Table 9-1 on page 53. The elevation angle of a particular laser channel is inferred by its data packet location. 9.3.1.3 Data Point A data point is a measurement by one laser channel of a reflection of a laser pulse. A data point is represented in the packet by three bytes - two bytes of distance and one byte of calibrated reflectivity. The distance is an unsigned integer. It has 2 mm granularity. Hence, a reported value of 51,154 represents 102,308 mm or 102.308 m. Calibrated reflectivity is reported on a scale of 0 to 255 as described in Key Features on page 32. The elevation angle (ω) is inferred based on the position of the data point within a data block. 9.3.1.4 Azimuth A two-byte azimuth value (α) appears after the flag bytes at the beginning of each data block. The azimuth is an unsigned integer. It represents an angle in hundredths of a degree. Therefore, a raw value of 27742 should be interpreted as 277.42°. Valid values for azimuth range from 0 to 35999. Only one azimuth value is reported per data block. 9.3.1.5 Data Block The information from two firing sequences of 16 lasers is contained in each data block. Each packet contains the data from 24 firing sequences in 12 data blocks. Only one Azimuth is returned per data block. A data block consists of 100 bytes of binary data: A two-byte flag (0xFFEE) A two-byte Azimuth 32 Data Points [2 + 2 + (32 × 3)] = 100 bytes For calculating time offsets it is recommended that the data blocks in a packet be numbered 0 to 11. 9.3.1.6 Time Stamp The four-byte time stamp is a 32-bit unsigned integer marking the moment of the first data point in the first firing sequence of the first data block. The time stamp’s value is the number of microseconds elapsed since the top of the hour. The number ranges from 0 to 3,599,999,999, the number of microseconds in one hour. The time stamp is critical because it's used by geo-referencing software to match each laser firing with corresponding data from an inertial navigation system. The inertial navigation system provides a series of time stamped values for pitch, roll, yaw, latitude, longitude, and elevation. By matching the time of the data point to the time-stamped data from the INS, the user's software can mathematically transform the data from the sensor's coordinate frame to an earth-based reference frame. The time stamps are matched to Universal Coordinated Time (UTC) provided by the GPS/INS. When the sensor powers up it begins counting microseconds using an internal time reference. However, the sensor can synchronize its data with UTC time so you can ascertain the exact firing time of each laser in any particular packet. Chapter 9 • Sensor Data 55 UTC synchronization requires a user-supplied GPS/INS receiver generating a synchronizing Pulse Per Second (PPS) signal and an NMEA GPRMC message. The GPRMC message provides minutes and seconds in UTC. Upon synchronization, the sensor reads the minutes and seconds from the GPRMC message and uses the information to set the sensor’s time stamp to the number of microseconds past the hour, per UTC. Note: A full description of electrical and timing requirements can be found in GPS, Pulse Per Second (PPS) and NMEA GPRMC Message on page 41. A full description of timing options can be found in Time Synchronization on page 123. 9.3.1.7 Factory Bytes Beginning with firmware release 3.0.29.0, every data packet includes a pair of bytes called the Factory Bytes. Their values indicate how azimuths and data points are organized in the packet. Their packet locations, values, and meanings are specified in Table 9-2 below. The Return Mode byte indicates how the packet’s azimuth and data points are organized. See Data Packet Structure below for details. Every sensor model line has its lasers arrayed vertically at slightly different angles. Use the Product ID byte to identify the correct set of vertical (or elevation) angles. Product IDs are not unique and may be shared by different sensors. For example, per Table 9-2 below, the VLP-16 and Puck LITE share the same elevation angles. Hence, the two products share the same Product ID. Conversely, the Puck Hi-Res has a different Product ID since it has a different set of elevation angles. Table 9-2 Factory Byte Values Return Mode Product ID Offset in packet: 0x04DE Offset in packet: 0x04DF Mode Value Product Model Value Strongest 0x37 (55) HDL-32E 0x21 (33) Last Return 0x38 (56) VLP-16 0x22 (34) Dual Return 0x39 (57) Puck LITE 0x22 (34) -- -- Puck Hi-Res 0x24 (36) -- -- VLP-32C 0x28 (40) -- -- Velarray 0x31 (49) -- -- VLS-128 0x63 (99) 9.3.2 Data Packet Structure A data packet is 1248 bytes long and sent via a UDP packet on port 2368. The data packet is comprised of 42 bytes of protocol header, twelve Data Blocks, a four-byte timestamp, and two factory bytes. There are two formats for the data packet: Single Return Mode (either Strongest or Last) Dual Return Mode See Laser Return Modes on page 32 for an illustration of what Strongest, Last, and Dual mean in this context. 56 VLP-16 User Manual The packet data structure for Single Return Mode is shown in Figure 9-2 below. The packet data structure for Dual Return Mode is shown in Figure 9-3 on the next page. There are several key differences between the packet structures. First, in Dual Return Mode the sensor sends a pair of data blocks for each azimuth angle firing. The odd numbered blocks (1, 3, ..., 9, 11) contain either the strongest or second-strongest return and the even numbered blocks (0, 2, ..., 8, 10) contain the last return. If the strongest return is also the last return, then the second-strongest return is provided. If only one return was detected, the data will be identical in the even|odd block pairs (0|1, 2|3, 4|5, 6|7, 8|9, 10|11). Figure 9-2 VLP-16 Single Return Mode Data Structure Chapter 9 • Sensor Data 57 Figure 9-3 VLP-16 Dual Return Mode Data Structure The figures below show a Wireshark trace of a single packet in Single Return Mode. Figure 9-4 on the facing page shows the beginning of the packet and Figure 9-5 on the facing page shows packet end. The location/offset of the data relative to the initial byte in the packet is shown in parentheses. 58 VLP-16 User Manual Figure 9-4 Single Return Mode Packet Data Trace (packet start) Figure 9-5 Single Return Mode Packet Data Trace (ending) Chapter 9 • Sensor Data 59 9.3.3 Position Packet Structure The position packet provides an echo of the NMEA sentence received from an external time source as well as the Pulse Per Second status and a time stamp representing when the position packet was assembled. The position packet is a 554 byte UDP packet received on port 8308. The structure of the position packet is given in Table 9-3 below. Note: You may notice the timestamps in the position packets are occasionally out of order with respect to the data packets. This is normal as the delivery of data packets is the sensor's highest priority, and a position packet may get deferred momentarily in favor of transmitting a data packet. The ratio of data packets to position packets is about 14 to 1. See NMEA Message Formats on page 46 for details on the GPRMC message. Table 9-3 Position Packet Structure Field Offsets Byte Offset from Number of Bytes Description beginning of packet (hex) 42 0x0000 UDP header 198 0x002A unused (null bytes) 4 0x00F0 Timestamp (µs) 1 0x00F4 Pulse Per Second status 3 0x00F5 unused variable length 0x00F8 NMEA GPRMC sentence Payload length is 512 bytes. The GPRMC sentence is terminated with CR/LF and padded to end of payload with null bytes. Table 9-4 PPS Status Byte Values Value Description 0 No PPS detected 1 Synchronizing to PPS 2 PPS Locked 3 Error A position packet is shown in the figure below. Packet offsets are on the left, raw data bytes in hex are in the center, and the ASCII interpretation is on the right. 60 VLP-16 User Manual Figure 9-6 Wireshark Position Packet Trace Legend: light blue: Ethernet+IP+UDP packet header (42 bytes) orange: Timestamp (4 bytes) red: PPS status (1 byte) green: NMEA GPRMC sentence (length varies) 9.4 Discreet Point Timing Calculation For the purpose of geo-referencing LiDAR data, it is helpful to calculate the exact moment of a particular laser firing in order to more closely associate it with time stamped data from an INS. By using the firing timing information given in Figure 9-7 on the next page you are able to compute the exact firing time for each data point. Chapter 9 • Sensor Data 61 All sixteen lasers are fired and recharged every 55.296 μs. The cycle time between firings is 2.304 μs. There are 16 firings (16 × 2.304 μs) followed by a recharge period of 18.43 μs. Therefore, the timing cycle to fire and recharge all 16 lasers is given by (16 × 2.304 μs) + 18.43 μs = 55.296 μs. Figure 9-7 Firing Sequence Timing To calculate the exact time, in microseconds, of each data point, first number the points in the firing sequence as 0 to 15. This becomes the data point index (aka Laser ID) for your calculations. Next, number the firing sequences 0 to 23. This becomes your sequence index. The timestamp in the packet indicates the time of the first data point in the packet. You’ll need to calculate a time offset for each data point and then add that offset to the timestamp. See Figure 9-9 on page 64 for specific Data Point Timing Offsets (Single Return Mode) and Figure 9-10 on page 65 for specific Data Point Timing Offsets (Dual Return Mode). The offset equation is given by: TimeOffset = (55.296 µs * SequenceIndex)+(2.304 µs * DataPointIndex) To calculate the exact point time, add the TimeOffset to the timestamp. ExactPointTime = Timestamp + TimeOffset Example: Calculate the timing offsets of every point in a packet, in single or dual return mode. The following is working Python code: def make_table(dual_mode): timing_offsets = [[0.0 for x in range(12)] for y in range(32)] # Init matrix # constants full_firing_cycle = 55.296 # µs single_firing = 2.304 # µs # compute timing offsets for x in range(12): for y in range(32): if dual_mode: dataBlockIndex = (x - (x % 2)) + (y / 16) else: dataBlockIndex = (x * 2) + (y / 16) dataPointIndex = y % 16 timing_offsets[y][x] = \ (full_firing_cycle * dataBlockIndex) + (single_firing * dataPointIndex) return timing_offsets To verify the values are correct, you can print them out and compare them with values in Figure 9-9 on page 64 and Figure 9-10 on page 65. 62 VLP-16 User Manual timing_offsets = make_table(False) # False : single return mode print('\n'.join([', '.join(['{:8.3f}'.format(value) for value in row]) for row in timing_offsets])) Example: Calculate the exact firing time of the last firing in a packet if the timestamp value is 45,231,878 µs. Timestamp = 45,231,878 µs TimeOffset = timing_offsets[15][23] ExactPointTime = Timestamp + TimeOffset ExactPointTime = 45,231,878 + 1,306.368 µs ExactPointTime = 45,233,184.368 µs Figure 9-8 below shows the timing calculation for a specific data point. Figure 9-8 Example Data Point Timing Calculation Chapter 9 • Sensor Data 63 Figure 9-9 Single Return Mode Timing Offsets (in µs) 64 VLP-16 User Manual Figure 9-10 Dual Return Mode Timing Offsets (in µs) 9.5 Precision Azimuth Calculation The azimuth (α) reported by the sensor in each data block is the azimuth at the moment the first laser in a firing sequence fires. To get better precision when geo-referencing, it’s useful to precisely calculate the unique azimuth for each point by accounting for the firing timing. These precision azimuths may be calculated/interpolated using the timing offsets shown in Figure 9-9 on the previous page and Figure 9-10 above. Consider a single data packet with 12 data blocks. If you assume the rotational speed is constant over the two 55.296 µs firing sequences in each data block, you can use the algorithm below to estimate a more precise azimuth angle for each point. The pseudo code below illustrates the concept. K represents an index to a data point in the Nth data block, where its valid range is 0 to 31. Do this for each data block. // First, adjust for an Azimuth rollover from 359.99° to 0° If (Azimuth[datablock_n+1] < Azimuth[datablock_n]) Then Azimuth[datablock_n+1] := Azimuth[datablock_n+1] + 360; Endif; // Determine the Azimuth Gap between data blocks AzimuthGap = Azimuth[datablock_n+1] - Azimuth[datablock_n]; Chapter 9 • Sensor Data 65 // Perform the interpolation using the timing firing K = 0; While (K < 31) // Determine if you’re in the first or second firing sequence of the data block if (K < 16) Then // Interpolate Precision_Azimuth[K] := Azimuth[datablock_n] + (AzimuthGap * 2.304 μs * K) / 55.296 μs); Else // Interpolate Precision_Azimuth[K] := Azimuth[datablock_n] + (AzimuthGap * 2.304 μs * ((K-16) + 55.296 μs)) / (2 * 55.296 μs); Endif // Adjust for any rollover If Precision_Azimuth[K] >= 360 Then Precision_Azimuth[K] := Precision_Azimuth[K] – 360; Endif K++; End While Note: If you examine the VeloView code in GITHUB, you’ll notice that VeloView uses a slightly different method to calculate XYZ coordinates. VeloView operates on the azimuth as if it were read as positive in the counter-clockwise direction with the origin along the X axis. 9.6 Converting PCAP Files to Point Cloud Formats Converting a packet capture (pcap) file of Velodyne LiDAR data to a LAS, LAZ, XYZ, PLY, or other point cloud file format can be a non-trivial process. The data provided by the sensor in the pcap file is measured relative to the sensor’s reference frame - the sensor’s internal three dimensional coordinate system which moves with the sensor. That’s markedly different from a point cloud file where the data points are referenced to a single coordinate system. That coordinate system might be an earth-frame (latitude, longitude, elevation) or another convenient reference frame. Processing the raw LiDAR data into a point cloud is called geo-referencing. In geo-referencing, the user takes into account the sensor’s position (X/Y/Z) and orientation (pitch/roll/yaw) for each measurement. Knowing these six values enables a user to perform the proper mathematical rotations and translations to reference the LiDAR data into a single coordinate system. Two popular techniques Velodyne LiDAR customers use for geo-referencing are inertial referencing and Simultaneous Localization and Mapping (SLAM). With inertial referencing, the location and orientation of the sensor at every moment is recorded with an Inertial Navigation System (INS). An INS combines a Global Positioning System (GPS) receiver with an Inertial Measurement Unit (IMU). Data from the both the INS and LiDAR sensor are time-synchronized to the GPS satellite’s reference clock, enabling the user to match each LiDAR data point with its corresponding position and orientation from the INS. Having matched the LiDAR data with the INS data, each measurement is mathematically translated into a single coordinate system. 66 VLP-16 User Manual SLAM is a technique used by robots to analyze and navigate their environment. SLAM software automatically identifies stationary objects in the LiDAR data. The algorithm then uses the location of the stationary objects to mathematically back-out the movement of the LiDAR and translate the data into a single coordinate system. Most Velodyne LiDAR customers develop their own geo-referencing systems. However, inertial referencing and SLAM solutions are available through third parties, and many can be found on the system integrators page at: http://velodyneLiDAR.com/integrators.php. Chapter 9 • Sensor Data 67 Chapter 10 • Sensor Communication This section provides detailed information about sensor communication methods. 10.1 Web Interface 68 10.1.1 Configuration Screen 69 10.1.2 System Screen 72 10.1.3 Info Screen 73 10.1.4 Diagnostics Screen 75 10.2 Sensor Control with curl 76 10.2.1 Using curl with Velodyne LiDAR Sensors 76 10.2.2 curl Command Parameters 76 10.2.3 Command Line curl Examples 77 10.2.4 curl Example using Python 84 10.1 Web Interface The easiest way to control a sensor’s operation is through its Web Interface. It has four screens. This section provides an explanation of the feature sets and functionality on each screen. 68 VLP-16 User Manual 10.1.1 Configuration Screen Figure 10-1 VLP-16 Configuration Screen Table 10-1 Configuration Screen Functionality and Features Function Description Default Laser ON/OFF Turns the sensor's laser ON or OFF. ON Return Type Strongest — Sensor provides only the strongest detected return. Last — Sensor provides only the last (temporally) detected return. Dual — Sensor provides both the strongest and last returns. If the last is also Strongest Chapter 10 • Sensor Communication 69 Function Description Default the strongest, the sensor provides the second-strongest return. If only one return is detected, the two values will be identical. Motor RPM Sets the sensor’s internal spin rate. Valid values include the range from 300 to 1200 RPM, and 0. Setting it to 0 during active scanning will auto-disable the sensor’s lasers, which re-enable automatically the next time RPM is set in the valid non-zero range. Set - Activates the changes. 600 FOV Start Sets the start azimuth for a user-defined Field of View. Units: integer degrees. Set - Activates the changes. 0 FOV End Sets the end azimuth for a user-defined Field of View. Units: integer degrees. Set - Activates the changes. 359 PPS Qualifier Adjusts parameters that affect how PPS is used when synchronizing time stamps to UTC. Require GPS Receiver Valid: ON/OFF. Require PPS Lock: ON/OFF. Delay: Sets the qualification period (in seconds) for PPS. Set - Activates the changes. OFF ON 5 GPS Qualifier Controls whether GPS Receiver Valid is required when synchronizing time stamps to UTC. Require GPS Receiver Valid: ON/OFF. Set - Activates the changes. OFF Phase Lock Used to synchronize the firing of two or more sensors. The offset is used to set the azimuth at which the laser fires in conjunction with the PPS signal’s rising edge. Requires a valid PPS signal. Offset: Enter the offset as the desired degrees multiplied by 100. For example, if the desired offset is 270º, enter 27000. Set - Activates the changes. OFF 0 Host (Destination) IP Address (IPv4) to which the sensor transmits its data. By default it is set to the broadcast address. If using one or more sensors in a network it must be set to a non-broadcast IP address to avoid cross-loading. Data Port — Port number for laser data packets. Telemetry Port — Port number for position (telemetry) packets. Set — Activates changes. 255.255.255.255 2368 8308 Network (Sensor) DHCP — When ON, the sensor obtains its IP address from a DHCP server on its local network. When set to OFF, it uses the IP Address, Mask, and Gateway the user configures. IPv4 Address — Sensor IP address as specified by the user. Mask — Sensor subnet mask as specified by the user. Gateway — Sensor gateway as specified by the user. MAC Address - Sensor MAC address override. Set — Activates changes. OFF 192.168.1.201 255.255.255.0 192.168.1.1 70 VLP-16 User Manual Function Description Default Note: Take care when turning DHCP ON. Before doing so, ensure a DHCP server on the network is available to provide the sensor with an IP address. If you turn DHCP ON and lose contact with the sensor, follow the Turned DHCP On, Lost Contact With Sensor on page 88 procedure to get it back. Save Configuration Saves all current settings to flash memory. Whenever the sensor powers up or is reset, it is restored to these saved settings. Only the most recent save is kept. Download Snapshot Clicking this button generates an ASCII text file (name format: .hdl) for downloading. It contains a JSON object capturing the sensor’s state at that moment. The file can be sent to Velodyne Technical Support on page 90 for analysis and to obtain troubleshooting advice. GPS Position Displays the last received GPS latitude and longitude. PPS Displays the current state of the PPS signal if provided from a GPS. Absent, Synchronizing, Locked, and Error are the valid states. Motor State Indicates if the sensor’s internal motor is spinning: ON/OFF. RPM — The sensor’s current RPM. Lock — Indicates the phase lock feature state: ON/OFF. Phase — Indicates the current phase offset. Only relevant when the phase lock feature is active. This value is presented in hundredths of a degree. Laser State Indicates the current laser array firing status: ON/DISABLED. See Time Synchronization on page 123 for additional information on the PPS and GPS Qualifier functions. 10.1.1.1 MAC Address The ability to change the sensor's MAC Address was introduced with VLP-16 firmware release 3.0.34.0. It may be advantageous to do this for asset management in multi-sensor situations where the MAC address is the closest thing to a hard sensor ID, or as an anti-tracking measure. Bear in mind, however, that multiple sensors with the same MAC address running on the same network will likely produce undesirable results. Note: When changing the sensor's MAC Address, the first octet must not be set to an odd value. 00 is ok. 60 is ok. ff is not ok. As defined by IEEE 802 Standards, the least significant bit of the first octet of a MAC address identifies it as a multicast address. A sensor bearing a multicast MAC address may cause undesirable network issues. By extension, never set a MAC Address to the broadcast address (aka. all bits on) or any other group address. 10.1.1.2 Correctly reset MAC Address to Factory MAC Address If you have changed the sensor's MAC Address to something other than the Factory MAC Address and wish to reset it back, follow the procedure below. Chapter 10 • Sensor Communication 71 1. On the sensor's Configuration Screen, enter 00-00-00-00-00-00 in the MAC Address field. The '-' characters must be present and the six octet values must be expressed as two hexadecimal digits each, all zeroes. 2. Click the Save Configuration button. 3. Click System to view the System Screen. 4. Click the Reset System button. Once the sensor is done resetting, you may refresh the page and go back to the Configuration Screen. The MAC Address should match the Factory MAC Address. 10.1.2 System Screen Figure 10-2 VLP-16 System Screen Table 10-2 System Screen Functionality and Features 72 Function Description Update Firmware Choose File — Enables user to select a new firmware image file. Update — Initiates the firmware update process. Reset System Used to reset the system after a firmware update. GPS Position See description in Table 10-1 on page 69. VLP-16 User Manual Function Description PPS See description in Table 10-1 on page 69. Motor State See description in Table 10-1 on page 69. Laser State See description in Table 10-1 on page 69. 10.1.3 Info Screen Figure 10-3 VLP-16 Info Screen Table 10-3 Info Screen Functionality and Features Function FPGA (top board) Description Board — Top or Bottom board information. Mode — State of the Application Watchdog – Velodyne use only. Type — Velodyne Use Only. HW Version — Velodyne Use Only. SOPC SYSID — Velodyne Use Only. SW Version — Current operating firmware version. Build — Velodyne Use Only. Chapter 10 • Sensor Communication 73 Function 74 Description FPGA (bottom board) Board — Top or Bottom board information. Mode – Velodyne use only. Type — Velodyne Use Only. HW Version — Velodyne Use Only. SOPC SYSID — Velodyne Use Only. SW Version — Current operating firmware version. Firmware Image Image — Firmware type (Failsafe and Application). Firmware Version Version — Number of the stored Failsafe and Application images. SOPC SYSID Failsafe boot(00) — Velodyne Use Only. Application hdlbot(03) — Velodyne Use Only. GPS Position See description in Table 10-1 on page 69. PPS See description in Table 10-1 on page 69. Motor State See description in Table 10-1 on page 69. Laser State See description in Table 10-1 on page 69. VLP-16 User Manual 10.1.4 Diagnostics Screen Figure 10-4 VLP-16 Diagnostics Screen Table 10-4 System Screen Functionality and Features Function Description Top Board (Scaled) HV — Velodyne Use Only. A/D TD — Velodyne Use Only. Temp — Circuit board temperature. 5v — Internal voltage status. 2.5v — Internal voltage status. 3.3v — Internal voltage status. 5v (Raw) — Internal voltage status. 1.2v — Internal voltage status. VHV Velodyne Use Only. Bottom Board (Scaled) I out — The sensor's electrical current consumption. 1.2v — N/A. Temp — Circuit board temperature. 5v — Internal voltage status. 2.5v — Internal voltage status. 3.3v — Internal voltage status. Chapter 10 • Sensor Communication 75 Function Description V in — Internal voltage status. 1.25v — N/A. GPS Position See description in Table 10-1 on page 69. PPS See description in Table 10-1 on page 69. Motor State See description in Table 10-1 on page 69. Laser State See description in Table 10-1 on page 69. 10.2 Sensor Control with curl In addition to the Web Interface, Velodyne LiDAR sensors provide an HTTP interface for programmatic configuration and control. One of the easiest tools to use for this purpose is curl. curl is a command line program freely available on a wide variety of operating systems. curl specializes in transferring data between devices using Internet protocols. You can learn more about curl and libcurl, the library (written in C) it uses to do all the heavy lifting, at this page: https://ec.haxx.se/curldoes.html. libcurl has bindings for many environments and programming languages. The sections below show how to command and control a sensor from the command line using curl, and from a Python program using pycurl, a Python binding for libcurl. 10.2.1 Using curl with Velodyne LiDAR Sensors Note: It is recommended to issue at most one curl command per second to the sensor. curl takes care of the following items for you. But you should follow them when using libcurl in your software. Always check the response from the sensor, even if the function used does not return one. (curl can and will respond with status/error messages.) Always close the socket connection to the sensor when finished. 10.2.2 curl Command Parameters To obtain JSON-formatted sensor status, invoke curl with the following URLs: http://192.168.1.201/cgi/status.json - Returns the current operational state and parameters of the sensor. http://192.168.1.201/cgi/diag.json - Returns diagnostic information from the sensor. http://192.168.1.201/cgi/snapshot.hdl - Returns current sensor configuration and status data. The following sensor parameters can be changed by sending a urlencoded tagged key and data pair to http://192.168.1.201/cgi/setting: 1. rpm=[integer] 2. returns=[Strongest]|[Last]|[Dual] Set Field of View by sending a urlencoded key and data pair to http://192.168.1.201/cgi/setting/fov: 1. [start]|[end]=[integer] Set Sensor Address, Destination Port, or Telemetry Port by sending a urlencoded key and data pair to http://192.168.1.201/cgi/setting/host: 76 VLP-16 User Manual 1. addr=255.255.255.255 2. dport=2368 3. tport=8309 Network Settings can be set by providing the urlencoded key and data pair to http://192.168.1.201/cgi/setting/net: 1. addr=192.168.1.200 2. mask=255.255.255.0 3. gateway=192.168.1.2 4. dhcp=[on|off] Special Commands to Save settings to NVRAM and Reset the sensor: 1. http://192.168.1.201/cgi/save a. submit 2. http://192.168.1.201/cgi/reset a. reset_system 10.2.3 Command Line curl Examples 10.2.3.1 Get Diagnostic Data Returns a JSON-formatted string containing values as seen on the Diagnostics page of the sensor’s Web Interface. Command: curl http://192.168.1.201/cgi/diag.json Example Response: { "volt_temp":{ "top":{ "hv":2917, "lm20_temp":1105, "pwr_5v":2075, "pwr_2_5v":2047, "pwr_3_3v":2693, "pwr_5v_raw":2263, "pwr_vccint":977 }, "bot":{ "i_out":2086, "pwr_1_2v":992, "lm20_temp":1231, "pwr_5v":2046, "pwr_2_5v":2046, "pwr_3_3v":2692, "pwr_v_in":910, "pwr_1_25v":1 } }, } Chapter 10 • Sensor Communication 77 10.2.3.2 Conversion Formulas Equation 10-1 Standard Voltage Conversion Equation 10-2 Standard Current Conversion Equation 10-3 Standard Temperature Conversion 10.2.3.3 Interpret Diagnostic Data Use the formulas above to convert raw diagnostic data fields below to usable values. Some fields are scaled by additional factors. 10.2.3.3.1 top:hv The HV field comes from the sensor's top board. It represents the high voltage bias to the APD (Avalanche photodiode). Its operating range is -150.0 V to -132.0 V. To convert the raw value, use Equation 10-1 above then scale the result by subtracting 5.0 and multiplying the result by 101.0. Example: hv = 2917 (raw value) (2917 * 5.0) / 4096 = 3.561 101.0 * (3.561 - 5.0) = -145.34 V 78 VLP-16 User Manual 10.2.3.3.2 top:lm20_temp This field indicates the temperature of the top board. Its operating range is -25.0° C to 94.0° C. To convert the raw value, use Equation 10-3 on the previous page. Example: lm20_temp = 1105 (raw value) (1105 * 5.0) / 4096 = 1.3489 -1481.96 + SQRT(2.1962E6 + ((1.8639 – 1.3489) / 3.88E-6)) = 44.126° C 10.2.3.3.3 top:pwr_5v This is the top board's 5.0 V rail. Its operating range is 4.8 V to 5.2 V. To convert the raw value, use Equation 10-1 on the previous page then scale the result by multiplying it by 2.0. Example: pwr_5v = 2075 (raw value) (2075 * 5.0) / 4096 = 2.533 2.533 * 2.0 = 5.066 V 10.2.3.3.4 top:pwr_2_5v This is the top board's 2.5 V rail. Its operating range is 2.3 V to 2.7 V. To convert the raw value, use Equation 10-1 on the previous page. Example: pwr_2_5v = 2047 (raw value) (2047 * 5.0) / 4096 = 2.499 V 10.2.3.3.5 top:pwr_3_3v This is the top board's 3.3 V rail. Its operating range is 3.1 V to 3.5 V. To convert the raw value, use Equation 10-1 on the previous page. Example: pwr_3_3v = 2693 (raw value) (2693 * 5.0) / 4096 = 3.287 V 10.2.3.3.6 top:pwr_5v_raw This is the top board's unregulated 5.0 V rail. Its operating range is 2.3 V to 2.7 V. To convert the raw value, use Equation 10-1 on the previous page then scale the result by multiplying it by 2.0. Chapter 10 • Sensor Communication 79 Example: pwr_5v_raw = 2263 (raw value) (2263 * 5.0) / 4096 = 2.762 2.762 * 2.0 = 5.525 V 10.2.3.3.7 top:pwr_vccint This is the top board's 1.2 V rail. Its operating range is 1.0 V to 1.4 V. To convert the raw value, use Equation 10-1 on page 78. Example: pwr_vccint = 977 (raw value) (977 * 5.0) / 4096 = 1.193 V 10.2.3.3.8 bot:i_out This is the sensor's input power line. Its operating range is 0.3 A to 1.0 A. (It spikes whenever the motor spins up.) To convert the raw value, use Equation 10-2 on page 78. Example: i_out = 2086 (raw value) (2086 * 5.0) / 4096 = 2.546 10.0 * (2.546 - 2.5) = 0.464 A 10.2.3.3.9 bot:lm20_temp This field indicates the temperature of the bottom board. Its operating range is -25.0° C to 94.0° C. To convert the raw value, use Equation 10-3 on page 78. Example: lm20_temp = 1231 (raw value) (1105 * 5.0) / 4096 = 1.503 -1481.96 + SQRT(2.1962E6 + ((1.8639 – 1.503) / 3.88E-6)) = 31.082° C 10.2.3.3.10 bot:pwr_1_2v This is the bottom board's 1.2 V rail. Its operating range is 1.0 V to 1.4 V. To convert the raw value, use Equation 10-1 on page 78. Example: 80 VLP-16 User Manual pwr_1_2v = 992 (raw value) (992 * 5.0) / 4096 = 1.211 V 10.2.3.3.11 bot:pwr_1_25v This is the bottom board's 1.25 V rail. Its operating range is 1.0 V to 1.4 V. To convert the raw value, use Equation 10-1 on page 78. Example: pwr_1_25v = 1 (raw value) (1 * 5.0) / 4096 = 0.001 V 10.2.3.3.12 bot:pwr_2_5v This is the bottom board's 2.5 V rail. Its operating range is 2.3 V to 2.7 V. To convert the raw value, use Equation 10-1 on page 78. Example: pwr_2_5v = 2046 (raw value) (2046 * 5.0) / 4096 = 2.498 V 10.2.3.3.13 bot:pwr_3_3v This is the bottom board's 3.3 V rail. Its operating range is 3.1 V to 3.5 V. To convert the raw value, use Equation 10-1 on page 78. Example: pwr_3_3v = 2692 (raw value) (2692 * 5.0) / 4096 = 3.286 V 10.2.3.3.14 bot:pwr_5v This is the bottom board's 5.0 V rail. Its operating range is 4.8 V to 5.2 V. To convert the raw value, use Equation 10-1 on page 78 then scale the result by multiplying it by 2.0. Example: pwr_5v = 2046 (raw value) (2046 * 5.0) / 4096 = 2.498 2.498 * 2.0 = 4.995 V 10.2.3.3.15 bot:pwr_v_in This is the voltage of the input power. Its operating range is 8.0 V to 19.0 V. Chapter 10 • Sensor Communication 81 To convert the raw value, use Equation 10-1 on page 78 then scale the result by multiplying it by 11.0. Example: pwr_v_in = 910 (raw value) (910 * 5.0) / 4096 = 1.111 1.111 * 11.0 = 12.219 V 10.2.3.4 Get Snapshot Downloads sensor snapshot data to an HDL file. This has the same effect as clicking on the Download Snapshot button under the Configuration tab. Command: curl http://192.168.1.201/cgi/snapshot.hdl > snapshot.hdl 10.2.3.5 Get Sensor Status Returns sensor state data, such as: GPS PPS is present, GPS position, motor status, phase, and laser states. Command: curl http://192.168.1.201/cgi/status.json Example Response: { "gps":{ "pps_state":"Absent", "position":"" }, "motor":{ "state":"On", "rpm":600, "lock":"Off", "phase":0 }, "laser":{ "state":"On" } } 10.2.3.6 Set Motor RPM Sets the RPM of the motor. Valid integer values range from 300 to 1200, in increments of 60. (If the RPM setting is not evenly divisible by 60, neither motor speed control nor phase lock functions will function properly.) For values 1 through 299, the sensor defaults back to 300 RPM. If a value of 0 or less is entered, the sensor motor powers down and the lasers are turned off, as leaving them on with the motor stopped would be an unsafe eye state. This has the same effect as setting the value for the Motor RPM in the Web Interface. Command: curl --data “rpm=[integer]” http://192.168.1.201/cgi/setting Example: curl --data “rpm=600” http://192.168.1.201/cgi/setting 82 VLP-16 User Manual 10.2.3.7 Set Field of View Sets the field of view (0° to 359°). Numbers outside this range are quietly ignored. This has the same effect as setting the FOV Start and FOV End values on the Web Interface. Command: curl --data “[start]|[end]=[integer]” http://192.168.1.201/cgi/setting/fov Examples: curl --data "start=10" http://192.168.1.201/cgi/setting/fov curl --data "end=270" http://192.168.1.201/cgi/setting/fov 10.2.3.8 Set Return Type (Strongest, Last, Dual) This command sets the return type (or mode) of the sensor. Choose one: Strongest, Last, and Dual. This has the same effect as selecting the Web Interface Return Type. Command: curl --data “returns=[Strongest]|[Last]|[Dual]” http://192.168.1.201/cgi/setting Examples: curl --data “returns=Strongest” http://192.168.1.201/cgi/setting curl --data “returns=Last” http://192.168.1.201/cgi/setting curl --data "returns=Dual" http://192.168.1.201/cgi/setting 10.2.3.9 Save Configuration Saves the configuration so that the settings are persistent across power cycles. This is equivalent to clicking on the Save Configuration button under the Configuration tab in the Web Interface. Command: curl --data “submit” http://192.168.1.201/cgi/save 10.2.3.10 Reset System Resets the sensor. This command performs the same operation as pressing the Reset System button under the System tab in the Web Interface, or if you cycled power to the sensor. Command: curl --data "reset_system" http://192.168.1.201/cgi/reset Example Response: The system resets. 10.2.3.11 Network Configuration Use the curl commands below to alter the network configuration of the sensor. Once changed, the settings must be saved and the sensor reset for the new configuration to take effect. 10.2.3.12 Set Host (Destination) IP Address This command sets the destination IP address where firing data and Position/Telemetry packets are sent. This has the same effect as entering a Host IP address on the sensor’s Web Interface. Command: curl --data "addr=255.255.255.255" http://192.168.1.201/cgi/setting/host Chapter 10 • Sensor Communication 83 10.2.3.13 Set Data Port This command sets the sensor’s data port (default: 2368). It has the same effect as setting the Web Interface’s Data Port field to the given number. Command: curl --data "dport=2368" http://192.168.1.201/cgi/setting/host 10.2.3.14 Set Telemetry Port This command sets the sensor’s telemetry port (default: 8308). It has the same effect as setting the port number in the Web Interface’s Telemetry Port field. Command: curl --data "tport=8309" http://192.168.1.201/cgi/setting/host 10.2.3.15 Set Network (Sensor) IP Address This sets the IP address of the device. The default is 192.168.1.201. This has the same effect as entering an IP address in the Web Interface Network IP field. Command: curl --data "addr=192.168.1.200" http://192.168.1.201/cgi/setting/net 10.2.3.16 Set Netmask This sets the network mask of the sensor. The default is 255.255.255.0. This has the same effect as entering a net mask in the Web Interface Mask field. Command: curl --data "mask=255.255.0.0" http://192.168.1.201/cgi/setting/net 10.2.3.17 Set Gateway This sets the gateway address of the sensor. The default is 192.168.1.1. This has the same effect as entering a gateway address in the Web Interface Gateway field. Command: curl --data "gateway=192.168.1.2" http://192.168.1.201/cgi/setting/net 10.2.3.18 Set DHCP This determines if the sensor is to rely on a DHCP server for its IP address. This has the same effect as selecting the corresponding radio button for DHCP in the Web Interface. Take care when turning DHCP ON. Before doing so, ensure a DHCP server on the network is available to provide the sensor with an IP address. If you turn DHCP ON and lose contact with the sensor, follow the Turned DHCP On, Lost Contact With Sensor on page 88 procedure to get it back. Command: curl --data "dhcp=[on|off]" http://192.168.1.201/cgi/setting/net 10.2.4 curl Example using Python The script below demonstrates how to do basic operations with a sensor using PycURL, a Python package built on libcurl. It works in Python 2 and 3. For more information on PycURL go to: http://pycurl.io/docs/. The script expects the sensor to have its default IP address. If it’s different, change Base_URL accordingly. 84 VLP-16 User Manual The sensor object contains the interface to the actual sensor. A buffer is required because PycURL does not provide storage for the network response. After each sensor request, the HTTP response code is checked for success. The first operation is to reset the sensor. After a delay, the script changes a couple of sensor parameters. Waiting another 10 seconds (for the motor to spin up), sensor status is obtained and printed to standard out. import pycurl try: from io import BytesIO except ImportError: from StringIO import StringIO as BytesIO try: from urllib.parse import urlencode except ImportError: from urllib import urlencode import urllib2 import json import time def sensor_do(s, url, pf, buf): s.setopt(s.URL, url) s.setopt(s.POSTFIELDS, pf) s.setopt(s.WRITEDATA, buf) s.perform() rcode = s.getinfo(s.RESPONSE_CODE) success = rcode in range(200, 207) print('%s %s: %d (%s)' % (url, pf, rcode, 'OK' if success else 'ERROR')) return success Base_URL = 'http://192.168.1.201/cgi/' sensor = pycurl.Curl() buffer = BytesIO() rc = sensor_do(sensor, Base_URL+'reset', urlencode({'data':'reset_system'}), buffer) if rc: time.sleep(10) rc = sensor_do(sensor, Base_URL+'setting', urlencode({'rpm':'300'}), buffer) if rc: time.sleep(1) rc = sensor_do(sensor, Base_URL+'setting', urlencode({'laser':'on'}), buffer) if rc: time.sleep(10) response = urllib2.urlopen(Base_URL+'status.json') if response: status = json.loads(response.read()) print 'Sensor laser is %s, motor rpm is %s' % \ (status['laser']['state'], status['motor']['rpm']) sensor.close() Typical output looks like the following: http://192.168.1.201/cgi/reset data=reset_system: 204 (OK) http://192.168.1.201/cgi/setting rpm=300: 204 (OK) Chapter 10 • Sensor Communication 85 http://192.168.1.201/cgi/setting laser=on: 204 (OK) Sensor laser is On, motor rpm is 301 86 VLP-16 User Manual Chapter 11 • Troubleshooting This section provides detail on how to troubleshoot your sensor, how to request technical assistance, how to have the sensor repaired, and how to replace the fuse in the Interface Box. 87 11.1 Troubleshooting Process 11.1.1 Turned DHCP On, Lost Contact With Sensor 88 11.2 Service and Maintenance 89 11.2.1 Fuse Replacement 89 90 11.3 Technical Support 11.3.1 Purchased through a Distributor 90 11.3.2 Factory Support 90 11.3.3 Support Desk 90 90 11.4 Return Merchandise Authorization (RMA) 11.1 Troubleshooting Process Table 11-1 Common Problems and Resolutions Problem Resolution Verify: Power connection and polarity. Proper voltage should be between 9 V and 18 V, drawing a maximum of 0.9 A during normal operation. Fuse in the Interface Box is okay. See Fuse Replacement on page 89 if it’s blown. Interface Box LEDs do not light Verify: Power connection and polarity. Proper voltage should be between 9 V and 18 V, drawing a maximum of 0.9 A during normal operation. Fuse in the Interface Box is okay. See Fuse Replacement on page 89 if it’s blown. Rotor doesn’t spin Verify: Unit spins but no data Ethernet wiring is functional. Packet output using another application (e.g. VeloView/Wireshark). Receiving computer's network settings. Correct static IP address in your computer's network settings. No security software is installed which may block Ethernet broadcasts. Laser ON radio button is selected in Web Interface Configuration Screen on page 69. Input voltage and current draw are in proper ranges. Chapter 11 • Troubleshooting 87 Problem Can see data in Wireshark but not VeloView Resolution Wireshark sniffs packets promiscuously but VeloView does not. VeloView needs permission to receive packets from the system firewall, if active. Check: No firewall is active on receiving computer. Sensor's destination address. Port numbers are set to 2368 (data) and 8308 (position/telemetry). Verify: Ethernet wiring is functional. Packet output using another application (e.g. VeloView/Wireshark). Receiving computer's network settings. Correct static IP address in your computer's network settings. No security software is installed which may block Ethernet broadcasts. Cannot see sensor’s Web Interface Action: Reboot computer - sometimes network settings do not take effect until the computer is rebooted. This is nearly always an issue with the network and/or user computer. Check the following: Data dropouts Is the sensor’s horizontal field of view set to less than 360°? Is there excessive traffic and/or collisions on network? Is a network device throttling back traffic? Devices such as wireless access points often throttle broadcast data. Are excessive broadcast packets from another service being seen by the sensor? This can slow the sensor down. Is the computer fast enough to keep up with the packet flow coming from the sensor? Remove all network devices and test with a computer directly connected to the sensor. Check the following: GPS Not Synchronizing Baud rate set to 9600 and serial port set to 8N1 (8 bits, no parity, 1 stop bit). Electrical continuity of PPS and serial wiring. Incorrect construction of NMEA sentence. Incorrect signal levels: “High” voltage must be greater than 3.0 V and less than 15.0 V. “Low” voltage must be less than 1.2 V. Serial line not sourcing enough current: The GPS/INS unit must be able to source at least 2 mA in the “high” voltage state. The polarity of the serial and PPS signals. The GPS signal may be obscured by being indoors, near buildings, tree cover, etc. Bring the receiver outside, exposed to as much open sky as possible for best signal reception. 11.1.1 Turned DHCP On, Lost Contact With Sensor When the sensor's DHCP is set to ON, the configuration saved, and the sensor is reset or power cycled, the sensor will no longer have an IP address as it expects a DHCP server to assign it one. 88 VLP-16 User Manual Because no DHCP server is present, the sensor performs Automatic Private IP Addressing (APIPA) and self-assigns a Class B IP address that looks like 169.254.x.x. Your computer's IP address will likely be very different (not on the same logical network) resulting in a failure to communicate with the sensor. Perform the following procedure to regain communication with the sensor. 1. Isolate the sensor and your computer on the same network segment. 2. Use any of the following techniques to discover the sensor’s current IP address. a. Launch Wireshark with the sensor powered on and connected. Capture UDP packets on the Ethernet interface. You should see packets coming from the sensor with an IP address that looks like 169.254.x.x. b. Find the IP address of the sensor using the arp command on your operating system. On Windows, if Cygwin is installed, use the ‘arp -a’ command. Cygwin can be obtained from https://www.cygwin.com/. On Mac OS and various linuxes, use the ‘arp -a’ command. Velodyne LiDAR sensors respond to ARP. The arp command displays the current IP-to-physical address translation table. If desired, you can narrow it to a specific interface with the ‘-N if_addr’ argument. Look for an address that matches the pattern 169.254.x.x. This will be your sensor's self-assigned address. c. Many third-party software tools capable of performing IP scans and ARP sweeps for various operating systems exist. Any of them should be able to discover the sensor’s IP address. However, this may be the least efficient, most time-consuming approach as 169.254.x.x is a large list to scan. 3. Once you have the address of the sensor, change the IP address of the corresponding Ethernet interface on your computer to something on the same logical network segment. For example, if the sensor is found at 169.254.134.79, you can change the computer’s IP address to 169.254.134.222. 4. Now point your browser at the sensor's IP address and you should see its Web Interface. Set DHCP to OFF and check that the sensor's network settings (specifically, IP Address, Mask, and Gateway) are configured properly. 5. Press the Save Configuration button. 6. Either power cycle the sensor or reset it (press the Reset System button on the System page). 7. Set your computer's IP address and subnet mask to something compatible with the sensor’s address (step 4) and communication will be restored. 11.2 Service and Maintenance Apart from a small, replaceable 3.0 A Mini automotive fuse in the Interface Box and keeping the sensor clean (see Cleaning the Sensor on page 131), there are no field-serviceable components, maintenance requirements or procedures for the sensor. For service or maintenance, see Technical Support on the next page. Note: Opening the sensor or compromising the integrity of the sensor housing by modifying it (e.g. drilling holes) will void the warranty. 11.2.1 Fuse Replacement If the LEDs in the sensor’s Interface Box do not light up when power is provided, check the horizontally-mounted fuse inside. It is designed to blow if a power surge of 3.0 A or greater occurs. Fuse Specification: 3.0 A Mini ATM Blade Fuse (32 V Max, Color: violet) To replace the fuse: Chapter 11 • Troubleshooting 89 1. Unplug/disconnect power from the Interface Box. 2. Remove the Interface Box cover with a small Phillips screwdriver, retaining all four screws. 3. Carefully remove the fuse. 4. Replace it with an identical, fresh fuse. 5. Replace the Interface Box’s cover and restore power. 11.3 Technical Support 11.3.1 Purchased through a Distributor IMPORTANT: If you purchased the sensor through a distributor, you should pursue technical assistance through the distributor first. 11.3.2 Factory Support Follow the steps below to obtain technical assistance from the factory. 1. On your browser go to the Contact Us page at http://www.velodynelidar.com/contacts.php. 2. Click CONTACT TECHNICAL SUPPORT. 3. Select 'for Technical Support' if it isn't already selected. 4. Fill out the rest of the form. Required fields are marked with a red asterisk. Optional fields may be left empty. 5. IMPORTANT: In the Description field, please describe the problem concisely, including any non-default sensor configuration and setup details as necessary. 6. Attachments are limited to a maximum individual file size of 20 MB. No limit is placed on the number of attachments, nor on the total size of all attachments. For very large files, please host them somewhere suitable and include a link in the Description field. Bundling files in zip files is fine. 7. Click the Submit button. 11.3.3 Support Desk You may also contact our Support Desk directly at +1 (669) 275-2230. Toll charges may apply. 11.4 Return Merchandise Authorization (RMA) If your product was damaged during initial shipping or has failed during or beyond its warranty period, a Return Merchandise Authorization (RMA) must be issued prior to shipping the product to Velodyne LiDAR for service. The Return Merchandise Authorization (RMA) form can be downloaded from the Velodyne LiDAR Downloads page at: http://velodyneLiDAR.com/downloads.html. Follow its instructions to complete the RMA process. Once filed, you may request status on the repair by contacting lidarservice@velodyne.com. 90 VLP-16 User Manual Appendix A • Sensor Specifications Sensor specifications (including environmental and regulatory specifications) have been moved to product data sheets found on the Velodyne LiDAR web site at this address: http://www.velodynelidar.com/downloads.html#datasheets. For additional information, contact Velodyne LiDAR Sales: http://www.velodynelidar.com/contacts.php. Appendix A • Sensor Specifications 91 Appendix B • Firmware Update To update your sensor’s firmware, follow the procedure below. If a problem occurs, follow the steps in If An Error Occurs on page 99. 92 B.1 Firmware Update Procedure B.1.1 Special Procedure to Update Firmware 98 B.1.2 If An Error Occurs 99 B.1 Firmware Update Procedure Before starting the procedure, make sure your computer can communicate with the sensor over Ethernet. The first part of the procedure checks if the sensor needs an update. The second part (beginning with step 6) performs the update in two stages. This procedure works best with the Chrome browser. 1. Point your browser to the Velodyne Downloads page at http://velodyneLiDAR.com/downloads.html. Figure B-1 Velodyne Downloads Page 2. Click the FIRMWARE icon (on the left) to advance to the Firmware section. Note the latest version available. 3. Open the sensor’s Web Interface in your browser and click the Info button. 4. Check the Firmware Application Version on the Info page (red box in the figure below). This is the active firmware on the sensor. 5. Compare the versions. If they differ, download the newer firmware version to your computer from the Downloads page, and continue the procedure. If not, stop here. 92 VLP-16 User Manual Figure B-2 Compare Firmware Versions Note: The firmware image labeled “Failsafe” is the original image programmed into the sensor when it was manufactured. It cannot be updated. 6. When updating VLP-16 firmware specifically from 3.0.29.x to 3.0.37.x, or downgrading it from 3.0.37.x to 3.0.29.x, a special procedure must be performed instead. Stop the regular procedure here and proceed to Special Procedure to Update Firmware on page 98. 7. If your VLP-16's firmware version predates 3.0.24.x, it cannot be updated in the field. Stop the regular procedure here and, instead, follow the Return Merchandise Authorization (RMA) on page 90 process to return the unit to the factory for firmware update. Appendix B • Firmware Update 93 Figure B-3 Select New Firmware Image 8. Click the System button. 9. Click the Choose File button under Update Firmware. 10. Using the dialog, locate the new firmware file on your computer and select it. 11. Verify that the correct file for your sensor model has been selected. It must have the ‘.flash’ file extension. 12. Click Update Firmware's Update button to initiate the update process. 94 VLP-16 User Manual Figure B-4 Upload New Firmware Image 13. As shown in the figure above, a progress bar indicating the percentage of update completion is displayed. 14. When this first stage of the update is complete, the Firmware Update Complete screen (below) is displayed. But wait, there's more. Internally, you've updated the bottom board but not the top, yet. Appendix B • Firmware Update 95 Figure B-5 Firmware Update Complete Page 15. Now click the Process Firmware Update button to initiate the second stage of the procedure. The firmware image that you just uploaded is being prepared for use by the sensor. 16. A second progress bar is shown. Note: This step should take approximately 70 seconds. If it completes in less than 10 seconds an error occurred. Instead of continuing, perform the If An Error Occurs on page 99 procedure. 96 VLP-16 User Manual Figure B-6 Finalize Firmware Update 17. When processing completes, press the Reset System button to finalize the update. The sensor will perform a warm boot. 18. The Configuration screen will be shown when the sensor finishes rebooting. 19. Return to the Info page. Appendix B • Firmware Update 97 Figure B-7 Verify Firmware Versions 20. Verify that the Firmware Application Version (red box) matches the version of the firmware downloaded and installed. Also verify that the same version appears in the SW Version column for both the Top and Bottom boards (green box). If everything matches, the procedure completed successfully. Any mismatches indicate an error occurred in the last stage of the update. (Occasionally, the screen may indicate that “Firmware Update Processing is not available in Failsafe mode.” In Failsafe mode, the lasers and motor are disabled.) Perform the If An Error Occurs on the facing page procedure below to resolve the issue. B.1.1 Special Procedure to Update Firmware The firmware update process requires both the top and bottom boards be flashed. A minor tweak is made to the steps normally used to update both boards. When this tweak is made, the normal procedure becomes the “Special Procedure to Update Firmware.” 1. First, go to the System tab. 2. Click on Choose File and specify the flash file name. 3. Press Update to update the bottom board. 4. Wait a bit. 5. You will eventually see another screen entitled, “Firmware Upload Complete.” 6. Do not press the Process Firmware Update button to flash the top board. *This is where the process deviates 98 VLP-16 User Manual from the normal procedure.* 7. Instead, reset the sensor, either by pressing the Reset System button or cycling power to the sensor. 8. The sensor boots up. At this point, you do not have to run the update process for the bottom board again. Go to the System tab and click on the Update button associated with 'Update Firmware'. Do not specify a flash file name. 9. After several seconds, a page for updating the top board’s firmware appears. 10. Press the Process Firmware Update button to update the top board’s firmware. Note: Sometimes the update process for the top board times out and eventually fails. When this happens, reset the sensor or cycle power to it. You will see explicit instructions to cycle power to the sensor if the case warrants it. 11. Wait a bit. 12. Reset sensor for the new firmware version to take effect. 13. Return to the Info page and verify that the Firmware Application Version and SW Versions are as expected ( Figure B-7 on the previous page). Why the change? The starting address of the NIOS code was changed in 3.0.34 (VLP-16) and 2.2.23 (HDL-32E). For example, when 3.0.34 is flashed onto the sensor, it is not loaded until the sensor is reset. As a result, the older firmware is grabbing the NIOS code at the wrong starting address of the new firmware image to push onto the top board. B.1.2 If An Error Occurs If an error occurs during the Firmware Update Procedure, it did not finish. Perform the steps below to complete the process. 1. Reset the sensor. Either power cycle it (remove power, wait at least 10 seconds, apply power, wait 30 seconds), or click the Reset System button if you’re on the sensor’s Firmware Update Complete screen or can get to the sensor’s System page. The Configuration screen will be shown when the sensor finishes rebooting. 2. Go back to the sensor’s System page ( Figure B-3 on page 94). 3. In the Update Firmware section, just click the Update button ( Figure B-4 on page 95). A progress bar is briefly displayed. 4. When complete, the Firmware Update Complete screen is displayed ( Figure B-5 on page 96). 5. Click the Process Firmware Update button. A second progress bar is displayed. This step should take approximately 70 seconds ( Figure B-6 on page 97). 6. When processing completes, press the Reset System button to finalize the update. The sensor will perform a warm boot. The Configuration screen will be shown when the sensor finishes rebooting. 7. Return to the sensor's Info page. 8. Verify that the Firmware Application Version (red box in Figure B-2 on page 93) matches the version of the firmware downloaded and installed. Also verify that the same version appears in the SW Version column for both the Top and Bottom boards (green box in Figure B-2 on page 93). At this point they should all match. Appendix B • Firmware Update 99 Appendix C • Mechanical Diagrams This appendix provides technical drawings and diagrams of mechanical assemblies. High resolution versions may be accessed on the Velodyne LiDAR web site. 100 C.1 Interface Box Mechanical Drawing 101 C.2 VLP-16 and Puck LITE Mechanical Drawing 102 C.3 VLP-16 and Puck LITE Optical Drawing 103 C.4 VLP-16 and Puck LITE Optical Keep Out Zone 104 C.5 Puck Hi-Res Mechanical Drawing 105 C.6 Puck Hi-Res Optical Drawing 106 C.7 Puck Hi-Res Optical Keep Out Zone 107 VLP-16 User Manual C.1 Interface Box Mechanical Drawing Figure C-1 Interface Box Mechanical Drawing 50-6001 Rev A Appendix C • Mechanical Diagrams 101 C.2 VLP-16 and Puck LITE Mechanical Drawing Figure C-2 VLP-16 and Puck LITE Mechanical Drawing 86-0101 Rev B1 102 VLP-16 User Manual C.3 VLP-16 and Puck LITE Optical Drawing Figure C-3 VLP-16 and Puck LITE Optical Drawing 86-0101 Rev B1 Appendix C • Mechanical Diagrams 103 C.4 VLP-16 and Puck LITE Optical Keep Out Zone Figure C-4 VLP-16 and Puck LITE Optical Keep Out Zone 86-0101 Rev B1 104 VLP-16 User Manual C.5 Puck Hi-Res Mechanical Drawing Figure C-5 Puck Hi-Res Mechanical Drawing 86-0129 Rev A Appendix C • Mechanical Diagrams 105 C.6 Puck Hi-Res Optical Drawing Figure C-6 Puck Hi-Res Optical Drawing 86-0129 Rev A 106 VLP-16 User Manual C.7 Puck Hi-Res Optical Keep Out Zone Figure C-7 Puck Hi-Res Optical Keep Out Zone 86-0129 Rev A Appendix C • Mechanical Diagrams 107 Appendix D • Wiring Diagrams This appendix provides technical wiring and schematic drawings and diagrams. High resolution versions may be accessed on the Velodyne LiDAR web site. 108 D.1 Interface Box Wiring Diagram 109 D.2 Interface Box Schematic 110 VLP-16 User Manual D.1 Interface Box Wiring Diagram Figure D-1 Interface Box Wiring Diagram 86-0107A Appendix D • Wiring Diagrams 109 D.2 Interface Box Schematic Figure D-2 Interface Box Schematic 69-8230A 110 VLP-16 User Manual Appendix E • VeloView This appendix gets you started with VeloView. It shows you how to use the application to acquire, visualize, save, and replay sensor data. You can examine sensor data with other free tools, such as Wireshark (available from wireshark.org) or tcpdump. But to visualize the 3D data, use VeloView. It’s free and relatively easy to use. E.1 Features 111 E.2 Install VeloView 112 E.3 Visualize Streaming Sensor Data 112 E.4 Capture Streaming Sensor Data to PCAP File 114 E.5 Replay Captured Sensor Data from PCAP File 114 E.1 Features VeloView provides real-time visualization of 3D LiDAR data from Velodyne LiDAR sensors. VeloView can also playback pre-recorded data stored in “pcap” (Packet Capture) files. Note: VeloView does not support .pcapng files. VeloView displays distance measurements from a Velodyne LiDAR sensor as point data. It supports custom-colored display of variables such as intensity-of-return (i.e. calibrated reflectivity), time, distance, azimuth, and laser ID. The data can be exported as XYZ data in CSV format. Functionality and features include: Visualize live streaming sensor data over Ethernet Record live sensor data in pcap files Visualize sensor data from a recording (pcap file) Interprets point data such as distance timestamp, azimuth, laser ID, etc. Tabular point data inspector Export to CSV format Record and export GPS data Ruler tool Display multiple frames of data simultaneously (Trailing Frames) Display or hide subsets of lasers Crop views Appendix E • VeloView 111 Note: VeloView is not intended to generate point cloud files in LAS, XYZ, or PLY formats (see Converting PCAP Files to Point Cloud Formats on page 66). See the list of Velodyne system integrators at http://velodyneLiDAR.com/integrators.php for vendors who can sell you more advanced imaging software or a complete mapping system. E.2 Install VeloView Installers for VeloView for Windows (32-bit and 64-bit) and Macintosh computers can be found on the USB stick included with your sensor. Links to the latest installers can be found on the Velodyne web site. You can install VeloView from the USB stick or follow the steps below to install from the web site. 1. Point your browser to http://velodynelidar.com/downloads.html#software. 2. Click the VeloView Download button to go the official VeloView download page. 3. Scroll down to the How to Obtain section. 4. Choose the correct binary installer for your operating system; click the link. 5. Save the executable installer to disk. 6. Launch the installer and follow the on-screen instructions. E.3 Visualize Streaming Sensor Data 1. Setup access to your sensor over Ethernet as described in Unboxing & Verification on page 22 or Installation & Integration on page 29 and power it up. 2. Start the VeloView application. 3. Click on File > Open and select Sensor Stream. Figure E-1 VeloView Open Sensor Stream 4. The Sensor Configuration dialog will appear. Select your sensor type then click OK. 112 VLP-16 User Manual Figure E-2 VeloView Select Sensor Calibration 5. VeloView begins displaying the sensor data stream. Figure E-3 VeloView Sensor Stream Display The stream can be paused by pressing the Play button. Press it again to resume streaming. Appendix E • VeloView 113 E.4 Capture Streaming Sensor Data to PCAP File 1. Click the Record button. Figure E-4 VeloView Record Button A Choose Output File dialog will pop up with the file name field pre-loaded with something like 2016-12-22-16-25-50_ Velodyne-VLP-16-Data.pcap. You may alter it if you like. 2. Navigate to where you want the file to be saved and click the Saved button. VeloView begins writing packets to your pcap file. 3. Recording will continue until the Record button is clicked again, which stops the recording and closes the pcap file. Note: Velodyne LiDAR sensors generate a lot of data. (See Sensor Specifications on page 91 for data rates.) The pcap file can become quite large if the recording duration is lengthy. Also, it is best to record to a fast, local HDD or SSD, not to a slow subsystem such as a USB storage device or network drive. E.5 Replay Captured Sensor Data from PCAP File To replay (or examine) a pcap file, open it with VeloView. You can press Play to let it run, or scrub through the data frames with the Scrub slider. Select a set of 3D rendered data points with your mouse and examine the numbers with a Spreadsheet sidebar. 1. Click on File > Open and select Capture File. 114 VLP-16 User Manual Figure E-5 VeloView Open Capture File 2. An Open File dialog will pop up. Navigate to a pcap file, select it, and click the Open button. The Sensor Configuration dialog will pop-up. 3. Select your sensor type and click OK. VeloView should display frame 0. Figure E-6 VeloView Play Button 4. Press Play to replay/pause the data stream. Use the Scrub slider tool (it looks like an old-fashioned volume slider) to move back and forth through the data frames. Both controls are in the same toolbar as the Record button. 5. To take a closer look at some data, scrub to an interesting frame and click the Spreadsheet button. Appendix E • VeloView 115 Figure E-7 VeloView Spreadsheet Tool A sidebar of tabular data is displayed to the right of the rendered frame, containing all data points in the frame. 6. Adjust the columns to get a better view of the numbers. If you’ve adjusted columns in Excel, some of this will be familiar. You can change column widths by dragging the column header divider left or right, and by double-clicking them. Drag column headers left or right to reorder them. Sort the table by clicking column headers. And you can make the table itself wider by dragging the table’s sides left or right. Make Points_m_XYZ wider to expose the XYZ points themselves. Figure E-8 VeloView Data Point Table 7. Click Show only selected elements. 116 VLP-16 User Manual Figure E-9 VeloView Show Only Selected Elements Since no points are selected yet, the table will be empty. 8. Click the Select All Points tool. This turns your mouse into a point selection tool. Figure E-10 VeloView Select All Points 9. In the 3D rendered data pane use your mouse to draw a rectangle around a small number of points. They will immediately populate the data table. Appendix E • VeloView 117 Figure E-11 VeloView List Selected Points In Figure E-11 above, 14 data points were selected with a small selection rectangle. The points appear in pink. Their attributes are listed on the right. In this example, most of their intensity values exceed 100, indicating something retro-reflective is there (see Key Features on page 32 for details). Azimuth is in hundredths of a degree. Distances are with respect to the sensor’s origin. At any point you can save a subset of data frames by doing File > Save As > Select Frames. 118 VLP-16 User Manual Appendix F • Laser Pulse This section provides details on your sensor’s laser diodes, the laser pulse and scan patterns, and certain beam characteristics of the laser pulses. F.1 The Semiconductor Laser Diode 119 F.2 Laser Patterns 120 F.2.1 Laser Spot Pattern 120 F.2.2 Laser Scan Pattern 120 F.2.3 Beam Divergence 121 F.1 The Semiconductor Laser Diode The source of each laser pulse in the sensor is a semiconductor laser diode. The laser diode is a series of stacked p-n junctions similar, at least in concept, to that shown in Figure F-1 below. When a current is applied across the junction, photons are produced and routed out one end to form a tightly focused laser beam. Note: The physics of laser diodes can be found elsewhere on the Internet. Start by searching for p-n junction, laser diode, and principles of semiconductor laser diodes. Figure F-1 Laser Diode Concept Appendix F • Laser Pulse 119 F.2 Laser Patterns Laser firings produced by the sensor can be viewed with an infrared viewer or camera. Photos in this section were taken with an infrared camera. F.2.1 Laser Spot Pattern While the terms laser “spot” and “dot” are often used when describing a laser pulse hitting a target, in reality the sensor’s laser “spot” is a small rectangular area comprised of three smaller bars or bands of light as shown in Figure F-2 below. The long axis of the rectangle coincides with the direction of the laser scan. The dimensions of this laser spot at the sensor’s ring lens is 9.5 mm tall by 12.7 mm wide - but it doesn’t remain that size as it speeds away. Read more about that in Beam Divergence on the facing page. Figure F-2 Laser Spot Shape F.2.2 Laser Scan Pattern Inside each VLP-16 sensor is a vertical array of lasers. Figure F-3 on the facing page shows three adjacent, concurrent, laser scans on the corner of a wall about 3 meters from the sensor. Each laser scan is composed of multiple laser spots or pulses. Each spot is composed of three short closely-spaced horizontal bars or bands of light. The gap between scan lines can be calculated with the following equation: 120 VLP-16 User Manual Equation F-1 Gap Between Scan Lines Figure F-3 Laser Spots on a Wall Photo of sensor laser pattern reflecting off of a flat target a short distance away. F.2.3 Beam Divergence As a laser pulse propagates outward from the sensor the cross-section of the laser beam describing the path of the pulse gradually, steadily grows larger. The angular measure of this increase in beam path diameter is called Beam Divergence. Appendix F • Laser Pulse 121 VLP-16 beam divergence on the horizontal axis (i.e. along the direction of the laser scan) differs from beam divergence on the vertical axis (transverse to the scan) by roughly a factor of two. Table F-1 VLP-16 Beam Divergence Horizontal Beam Divergence Vertical Beam Divergence 3.0 mrad (0.18 deg) 1.5 mrad (0.09 deg) Table F-2 below lists laser spot horizontal and vertical dimensions at various distances from the sensor. Table F-2 Dimensions of VLP-16 Laser Spots at Distance 122 Distance (mm) Horizontal (mm) (Scan Direction) Vertical (mm) 1000 15.4 11.0 2000 18.2 12.5 5000 26.4 17.0 10000 40.1 24.5 15000 53.8 32.0 25000 81.2 47.0 50000 149.7 84.6 100000 286.8 159.6 VLP-16 User Manual Appendix G • Time Synchronization This section provides a detailed discussion of the GPS Qualifier and PPS Qualifier functions. These features were introduced with firmware release 3.0.34.0 (VLP-16). G.1 Introduction 123 G.2 Background 123 G.3 PPS Qualifier 124 G.3.1 Require GPS Receiver Valid 124 G.3.2 Require PPS Lock 124 G.3.3 Delay 125 G.4 GPS Qualifier 125 G.5 Application 125 G.6 Logic Tables 125 G.1 Introduction The following describes the new interface options found in sensor firmware version 3.0.34.0 (VLP-16). These two new options control how the sensor utilizes the GPS information supplied to the sensor. The first control option determines how the sensor utilizes the PPS signal (PPS Qualifier). The second control option determines how the sensor utilizes the timestamp provided in a National Marine Electronics Association (NMEA) sentence (GPS Qualifier). The new options, shown below in their default positions, can be found on the Configuration tab in the sensor’s Web Interface. Figure G-1 Web Interface PPS and GPS Qualifier Option Selections G.2 Background Your sensor maintains a counter representing the number of microseconds since the Top Of Hour (TOH). The TOH count is incremented based on an internal oscillator. When the sensor is presented with a valid PPS signal the TOH count is adjusted on the rising edge of each PPS to align the TOH with UTC Time. The TOH is sent as a four-byte time stamp in both the data and position/telemetry packets. The TOH is comprised of two separate counters. One counter maintains the number of minutes and seconds since the top of the hour, and the other counter maintains the sub-second count ( Figure G-2 on the next page). Appendix G • Time Synchronization 123 Figure G-2 Top of Hour Counters The combined value represents the number of microseconds since the top of the hour. It ranges from 0 to 3,599,999,999 μs -- there are 3.6 × 109 μs in one hour. The sub-second counter range alone spans 0 to 999,999 μs. The sensor continuously monitors the PPS input assessing the timing characteristics of any pulses presented. This process is indicated both on the Web Interface (see Configuration Screen on page 69) and in the position packet. When the sensor detects a valid, stable PPS signal, the Web Interface indicates “PPS: Locked” and the PPS status field in the position packet at offset 0xF4 is set to 0x02. As noted, the sensor counts microseconds using an internal oscillator. This internal oscillator always drives the sub-second counter; however, the sensor may be configured to use a valid PPS signal to adjust the value of the sub-second counter every second, thereby reflecting the "top of second" moment indicated by the rising edge of the PPS. The minutes and seconds counter may be adjusted to the time values provided in the NMEA sentence. If no NMEA sentence is provided, the minutes and seconds counter is incremented every second. Using the PPS signal to adjust the sub-second counter allows the sensor to remain synchronized to a PPS source even if that source is drifting slightly. This might occur when a GPS receiver indicates an invalid fix and begins using its own internal time to drive the PPS reference. New control options (PPS Qualifier and GPS Qualifier, described below) have been added to allow the user to finely adjust the manner in which the sensor reacts when a valid PPS is confirmed and locked onto. G.3 PPS Qualifier The three settings described below (and in Logic Tables on the facing page) control how the sensor adjusts the TOH counter based on GPS and PPS signal status. Depending on the GPS receiver's valid/invalid status, the three settings determine if the sensor's Top-Of-The-Hour (TOH) counter should enter free-running mode or synchronize the sub-second counter with the rising edge of the PPS signal. G.3.1 Require GPS Receiver Valid This setting determines the manner in which the sensor utilizes the current status of the GPS receiver provided in the NMEA sentence. If the Require GPS Receiver Valid is set to On, the sensor requires the GPS receiver to indicate a valid satellite condition before using the rising edge of a PPS signal to adjust the internal sub-second counter. Note: The sensor must also receive a valid NMEA message indicating the GPS receiver is providing a valid time stamp. If Require GPS Receiver Valid is set to Off, the sensor synchronizes its sub-second counter to the rising edge of the PPS signal regardless of GPS receiver satellite status. G.3.2 Require PPS Lock This setting determines the manner in which the sensor validates the PPS signal prior to adjusting the internal sub-second counter to the rising edge of that PPS signal. 124 VLP-16 User Manual If Require PPS Lock is set to On the sensor utilizes the value in the Delay field to determine the validity of a PPS signal prior to synchronizing its internal sub-second counter to the rising edge of a PPS signal. If Require PPS Lock is set to Off the sensor ignores the value in the Delay field and the sensor uses a rolling window of 2 cycles before the PPS signal may be considered valid and then used as a time reference by the sensor. Turning this option off effectively sets the Delay value to 2. G.3.3 Delay This parameter allows the user to extend the time the sensor requires to validate the PPS. The units are in integer seconds. Acceptable values range from 0 to 65535. The default is 5 seconds. The sensor constantly qualifies the PPS signal over a rolling N-second window defined by the Delay parameter. At the first instance the PPS signal is deemed unstable, the sensor enters free-running mode where the sub-second counter is driven by the internal oscillator. In free-running mode the sub-second counter is no longer adjusted with the rising edge of the PPS signal. Additionally, the minutes and seconds component of the TOH begins incrementing based on the rollover of the free-running sub-second counter. G.4 GPS Qualifier This setting determines if the minutes and seconds component of the TOH counter are adjusted to the timestamp provided by the GPS receiver or driven by the rollover of the sub-second counter. If the Require GPS Receiver Valid is On, the minutes and seconds field in the NMEA sentence timestamp is used to adjust the minutes and seconds component of the TOH counter only when GPS receiver indicates a valid status. If the Require GPS Receiver Valid is Off, then the sensor ignores the GPS receiver status and always adjusts the minutes and seconds component of the TOH counter with the timestamp provided in the NMEA message. G.5 Application Most GPS receivers have low-drift internal clocks and may be configured to use this clock to maintain the PPS signal in the event the GPS fix becomes invalid. Alternatively, the GPS might be configured to discontinue the PPS in the event the fix becomes invalid. In the default settings (and previous versions of firmware), the sensor uses PPS to synchronize to the time contained in the GPRMC message regardless of the state of valid flag in the GPRMC message. In this configuration, all the elements in a larger system (LiDAR, IMU, RGB cameras, etc.) will be clocked off the same time source (the internal clock in the GPS receiver) in the event the GPS fix becomes invalid. This allows for proper reconciliation of the data during post- or real-time processing. G.6 Logic Tables Figure G-3 Sub-Second Counter Behavior Appendix G • Time Synchronization 125 Figure G-4 Minutes and Seconds Counter Behavior Note: If no NMEA sentence is provided, the Minutes and Seconds counter is driven by the rollover of the sub-seconds counter. 126 VLP-16 User Manual Appendix H • Phase Lock When using multiple sensors close to one another (e.g. mounted on top of a vehicle), occasional interference patterns may appear in the sensor data. Velodyne provides firing controls to minimize this interference by controlling where data is gathered. The sensors can then be configured to ignore the data containing the interference. 127 H.1 Phase Lock H.1.1 Setting the Phase Lock 127 H.1.2 Application Scenarios 128 130 H.2 Field of View H.1 Phase Lock The Phase Lock feature requires that a PPS signal be present and locked. The sensor uses the rising edge of the PPS as the zero-degree reference moment for all its firing references. The sensor then adjusts its timing such that it initiates a firing sequence at the phase lock offset specified by the user. For example, assume the user enters an angle of 35° (α) as the phase offset. The red arrow in Figure H-1 below indicates the laser firing direction precisely as the sensor receives the rising edge of the PPS signal. Note: For Phase Lock to work correctly, the sensor’s RPM must be set to a multiple of 60 RPM between 300 RPM and 1200 RPM (inclusive). Figure H-1 Direction of Laser Firing H.1.1 Setting the Phase Lock To enable Phase Lock, enter the desired phase offset in the Phase Lock Offset field shown in Figure H-2 on the next page. Enter the offset in degrees. For example, if the desired offset is 270°, enter 270 in the Offset field. Click the Phase Lock On radio button (as needed) and then the Set button to the right. Note: To retain these settings over the next power cycle or reset, click the Save Configuration button. Appendix H • Phase Lock 127 The current phase lock status (On/Off) and phase lock offset can be viewed on the Web Interface (red box). The current phase lock offset is presented in degrees. The accuracy of the offset is ±5° (subject to change). Figure H-2 Configuration Screen - Phase Lock H.1.2 Application Scenarios When setting the phase lock offset for two or more sensors, Velodyne recommends the sensors be configured to fire at each other. This is the optimal configuration for minimizing interference because the location of the interference is under user control. Figure H-3 on the facing page shows two sensors mounted on a vehicle. The sensor mounted on the car’s left side has its phase lock offset set to 90°, and the phase lock offset of the sensor mounted on the right side of the vehicle is set to 270°, as shown by the red arrows. 128 VLP-16 User Manual Figure H-3 Right and Left Sensor Phase Offset When sensors are placed on the roof in the fore and aft positions, the phase offsets are set to 180° and 0° as shown in Figure H-4 below. Figure H-4 Fore and Aft Sensor Phase Offset In both scenarios the two sensors create data shadows behind each other. To avoid any spurious data due to blockage or reflections from the opposing sensor, the user should ignore any data in the shadowed azimuth ranges as shown in Figure H-5 on the next page. To do that, you need to know the diameter of the sensors (see Sensor Specifications on page 91) and distance between the sensor centers. Appendix H • Phase Lock 129 Figure H-5 Sensor Data Shadows The angle subtended by the shadow of a sensor in range but at some distance from another sensor is given by the following formula: Equation H-1 Arc of Shadow Data reported at the azimuths included within the subtended angle should be ignored. H.2 Field of View Alternatively, each sensor's Field of View control may be used to remove the subtended azimuths from the data stream. Use Figure H-5 above and Equation H-1 above to determine for each sensor the azimuthal angles at which the shadows begin and end. Then, using each sensor's Web Interface or curl commands (or equivalent programmatic commands), configure the sensor's horizontal FOV start and end angles. See Configuration Screen on page 69 and Set Field of View on page 83 for more. 130 VLP-16 User Manual Appendix I • Sensor Care To accurately sense its environment, the VLP-16 sensor should be kept clean, especially its ring lens. This section lists various approved cleaning methods, but it is important to use the correct method. Start with Determine Method of Cleaning on the next page. 131 I.1 Cleaning the Sensor I.1.1 Required Materials 131 I.1.2 Determine Method of Cleaning 132 I.1.3 Method One 132 I.1.4 Method Two 132 I.1.5 Method Three 132 I.1.6 Method Four 133 I.1 Cleaning the Sensor CAUTION READ THROUGH THIS ENTIRE SECTION BEFORE CLEANING YOUR VLP-16 SENSOR Improper handling can permanently damage it. I.1.1 Required Materials 1. Clean microfiber cloths 2. Mild, liquid dish-washing soap 3. Spray bottle with warm, clean water 4. Spray bottle with warm, mildly soapy water 5. 70% isopropyl alcohol (Method 2 ONLY) 6. NACL Precision Optics Cleaner (Method 3 ONLY, Optional) 7. Simple Green (Method 4 ONLY) 8. Distilled water (Method 4 ONLY) 9. 99% isopropyl alcohol (Method 4 ONLY) Note: Avoid using hard water when cleaning the VLP-16 sensor. Appendix I • Sensor Care 131 I.1.2 Determine Method of Cleaning The first five characters of the sensor’s serial number represent the year (AE = 2015) and day of manufacture (031 = January 31st) of the device. If the first five characters of the serial number are between AE001 and AE229, clean the sensor using Method 1 below. Note: The easiest way to get a sensor's serial number is from the label on the device's underside. Sometimes, however, it's mounted somewhere inaccessible and that's not possible. The next easiest way is to view the sensor's Web Interface on page 68. Look for S/N at the top. Other ways include getting a snapshot from the command line (see Get Snapshot on page 82) or requesting the snapshot programmatically (see curl Example using Python on page 84). In both cases, you can find the serial number in the snapshot['info']['serial'] field. If the first five characters of the sensor’s serial number are AE230 or greater, or if the sensor was serviced by Velodyne LiDAR after August 17th, 2015, use either Method 2 or 3 below. I.1.3 Method One This sensor's ring lens is made of acrylic. If the sensor is caked with mud and bugs, use a spray bottle with clean, warm water to loosen any debris from it. Do not wipe dirt directly off the sensor. Doing so may abrade the surface. Try to spray it off with warm water first. Next, use warm, mildly soapy water and a clean microfiber cloth to gently wipe the sensor, again taking care not to abrade the surface. When cleaning the ring lens, wipe gently along the curve of the sensor, not top-tobottom. To finish, spray the sensor with clean water to rinse off any remaining soap, then dry with another clean microfiber cloth. I.1.4 Method Two This sensor’s ring lens is made of polycarbonate and may be cleaned with isopropyl alcohol. But first, if the sensor is caked with mud or bugs, use a spray bottle with clean, warm water to loosen any debris from it. Do not wipe dirt directly off the sensor. Doing so may abrade the surface. Try to spray it off with warm water first. Then, if necessary, use isopropyl alcohol and a clean microfiber cloth to clean any remaining dirt from the sensor. Next, use warm, mildly-soapy water and gently wipe the sensor with a clean microfiber cloth. Wipe the ring lens gently along the curve of the sensor, not top-to-bottom. To finish, spray the sensor with clean water to rinse off any remaining soap, then dry with another clean microfiber cloth. I.1.5 Method Three North American Coating Laboratories has formulated a cleaning solution for Velodyne optical devices. It can be ordered directly from them. NACL part number: 98-0020 NACL description: NACL Precision Optics Cleaner 6 oz North American Coating Laboratories 9450 Pineneedle Drive, Mentor, OH 44060 Toll-Free: +1 (866) 216-6225 Tel: +1 (440) 357-7000 Fax: +1 (440) 357-7001 Email: info@nacl.com URL: http://www.nacl.com/ 132 VLP-16 User Manual 1. Spray NACL Precision Optics Cleaner solution onto a clean, dry microfiber cloth. 2. Gently wipe the VLP-16’s ring lens along the curve of the sensor, not top-to-bottom. I.1.6 Method Four Use a diluted mixture (50/50) of Simple Green and distilled water to remove particulates on the lens with a rinsing action. After heavy particulates are removed, additional Simple Green solution and a soft microfiber cloth can be used gently to clean the lens. This should then be followed up with a 99% IPA (Isopropyl Alcohol) wipe using a microfiber cloth to remove any residual Simple Green. Never use an ammonia-based cleaner. Appendix I • Sensor Care 133 Appendix J • Network Configuration Your sensor generates lots of data which it transmits via Ethernet. This section covers various aspects of this interface and how to connect and configure it. It also touches on the situation where you have more than one sensor on the same network. 134 J.1 Ethernet and Network Setup J.1.1 Defaults 134 J.1.2 Establishing Communication via Ethernet 134 135 J.2 Network Considerations J.2.1 Throughput Requirements 135 J.2.2 Single Sensor Transmitting to a Broadcast Address 136 J.2.3 Multiple Sensors in the Same Network 136 J.1 Ethernet and Network Setup The RJ45 Ethernet connector on the Interface Box connects to any standard 100 Mbps Ethernet NIC or switch with MDI or AUTO MDIX capability. J.1.1 Defaults Each sensor’s IP address is set at the factory to 192.168.1.201. By default, the sensor sends UDP data packets to broadcast address 255.255.255.255. Note: Each sensor has a unique MAC Address and Serial Number set at the factory by Velodyne LiDAR that cannot be changed. J.1.2 Establishing Communication via Ethernet The instructions below are for Windows computers. For linux or Macintosh computers, perform equivalent steps (not specified here). 1. Connect the computer to the Interface Box with an Ethernet cable. Velodyne recommends disabling WiFi on your computer to avoid possible network conflicts. 2. Provide power to the sensor. 3. Open your computer’s Network/Ethernet settings page. 4. Select Internet Protocol Version 4 (TCP/IPv4). 5. Select the Use the following IP address: function. The sensor requires a static IP address. 6. Enter the following IP address: 192.168.1.XXX. See Figure J-1 on the facing page. “XXX” can be any number from 2 to 254 except 201. 134 VLP-16 User Manual 7. Enter the subnet mask: 255.255.255.0 When using a Windows OS based computer, you can press the TAB key and the subnet mask automatically populates with the 255.255.255.0 value. 8. Click OK. 9. We recommend disabling any firewall software the computer may have running. 10. Point your browser to 192.168.1.201 to access the sensor’s Web Interface to confirm communication. Figure J-1 Sensor Network Settings J.2 Network Considerations Your application network topology may be simple, with a single sensor transmitting data on a basic network. Or, it could be complicated, with multiple sensors. This section presents certain topics to consider. J.2.1 Throughput Requirements When actively sensing its environment, your sensor produces a lot of data which it transmits via Ethernet. The volume of data depends partly on which Return Type (or mode) it’s in. Details on return modes can be found in Laser Return Modes on page 32. See Chapter 6 • on page 32 for return mode data rates. Appendix J • Network Configuration 135 You should assess network loading to see if your network’s topology can accommodate the sensor data rate you select. J.2.2 Single Sensor Transmitting to a Broadcast Address Below is a single sensor on a network transmitting to a broadcast address works without any contention. Figure J-2 Single Sensor Broadcasting on a Simple Network This is the simplest network, with sensor data flow free from competition or interference. Here it is acceptable for the sensor to broadcast its data on the network. J.2.3 Multiple Sensors in the Same Network Note: Each sensor must have its own, unique IP address in a given network. When using multiple Velodyne LiDAR sensors in a network it is imperative that you set each sensor's destination IP address to a specific, non-broadcast IP address. However, two or more sensors may share the same destination address. The scenarios below illustrate the wrong way and then a better way to configure them. (An alternative would be to directconnect sensors to separate NICs.) J.2.3.1 Multiple Sensors Transmitting to a Broadcast Address If multiple sensors on a network transmit data to a broadcast address, each sensor will see the broadcast data of the other sensors. The additional overhead steals cycles from the sensor (and possibly other networked devices) and may lead to a degradation in performance. (See Phase Lock on page 127 and Phase Locking Multiple Sensors on page 37 for additional information on using multiple sensors within sensing range of each other.) An improper setup is shown in Figure J-3 on the facing page. Note that each sensor’s destination address is set to 255.255.255.255. 136 VLP-16 User Manual Figure J-3 Multiple Sensors - Improper Network Setup J.2.3.2 Multiple Sensors Transmitting to a Specific Address The solution is to configure each sensor on such a network to transmit their data to a non-broadcast address. If every sensor in the same network transmits packets to a specific, non-broadcast, destination address (doesn’t have to be the same one), as illustrated in Figure J-4 below, the other sensors will not suffer unnecessary network overhead. Figure J-4 Multiple Sensors - Proper Network Setup Appendix J • Network Configuration 137 Corporate Headquarters: Velodyne LiDAR, Inc. 5521 Hellyer Ave San Jose, CA 95138 U.S.A. www.VelodyneLiDAR.com Phone +1 408-465-2800 Fax +1 408-779-9227 Email lidar@velodyne.com VLP-16 User Manual 63-9243 Rev. D
Source Exif Data:
File Type : PDF File Type Extension : pdf MIME Type : application/pdf PDF Version : 1.4 Linearized : No Page Count : 138 Page Mode : UseOutlines Page Layout : TwoPageRight Language : en-us Tagged PDF : Yes Producer : madbuild Create Date : 2018:04:20 04:38:45-07:00 Modify Date : 2018:04:20 04:38:45-07:00 Title : VLP-16 User Manual Author : mperedo Subject : Keywords : LiDAREXIF Metadata provided by EXIF.tools