Options
All
  • Public
  • Public/Protected
  • All
Menu

Class RPLidarDriver

rpLidar-driver provides api for controlling and reading data from Slamtec RPLidar A1-A3 and S1 devices via a host computer serial port.

remarks

You must call init() before using any other apis.

example
import { RPLidarDriver, ScanSample} from 'rplidar-driver';

async function run_demo() {
  const lidar = new RPLidarDriver();

  await lidar.init();
  console.log('health: ', await lidar.getHealth());
  console.log('info: ', await lidar.getInfo());

  lidar.on('scan', (scanSample: ScanSample) => console.log(scanSample));
  lidar.startScan();
  console.log('started scanning');
}

run_demo();
```

Hierarchy

  • EventEmitter
    • RPLidarDriver

Index

Constructors

constructor

  • new RPLidarDriver(path?: string, options?: object): RPLidarDriver
  • create instance

    Parameters

    • Default value path: string = DEFAULT_SERIALPORT_PATH

      a string name or file-path to the serial driver

    • Default value options: object = { baudRate: DEFAULT_BAUD_RATE, debug: false }

      {minQuality: 5, debug: false}

      • baudRate: number
      • debug: boolean

    Returns RPLidarDriver

Properties

Private baudRate

baudRate: number

serial port baudrate setting

Private debug

debug: any

flag to enable/disable display of debug info

Private motorState

motorState: number = MOTOR_STATES.OFF

Private path

path: string

path to serial port driver, e.g., com3, /dev/ttyusb0

Private rotations

rotations: any

Private rpmSum

rpmSum: any

Private sampleBuffer

sampleBuffer: SampleBuffer

buffers 360 degrees of scanSample data when sampleDeliveryMode == ONE_REV

Private sampleDeliveryMode

sampleDeliveryMode: ScanSampleDeliveryMode

determines how scan data is buffered and delivered to the driver client

Private scanCache

scanCache: Buffer

used in parsing scan data packets

Private scanFrameStartTime

scanFrameStartTime: any

Private serialPort

serialPort: SerialPort

serial port commo interface

Private state

state: number = RPLIDAR_STATES.UNKNOWN

Private waitingFor

waitingFor: any

Static defaultMaxListeners

defaultMaxListeners: number

Methods

addListener

  • addListener(event: string | symbol, listener: function): this
  • Parameters

    • event: string | symbol
    • listener: function
        • (...args: any[]): void
        • Parameters

          • Rest ...args: any[]

          Returns void

    Returns this

emit

  • emit(event: string | symbol, ...args: any[]): boolean
  • Parameters

    • event: string | symbol
    • Rest ...args: any[]

    Returns boolean

eventNames

  • eventNames(): Array<string | symbol>
  • Returns Array<string | symbol>

getHealth

getInfo

Protected getLidarConf

  • getLidarConf(cmd: LIDAR_CONF_CMD, scanModeId?: number): Promise<any>

getMaxListeners

  • getMaxListeners(): number
  • Returns number

getRPM

  • getRPM(): number
  • Return the average rotations per minute of the scan head. RPM can only be calculated when the device is actively scanning.

    Returns number

    rpm

getSampleRates

getScanModes

  • Asynchronously access RPLidar scan modes. Dynamically load and cache the modes.

    Returns Promise<ScanMode[]>

    Promise<ScanMode[]>

init

  • init(): Promise<void>
  • Asynchronously create the serial port and event handlers and connect to RPLidar device.

    Returns Promise<void>

    empty promise

listenerCount

  • listenerCount(type: string | symbol): number
  • Parameters

    • type: string | symbol

    Returns number

listeners

  • listeners(event: string | symbol): Function[]
  • Parameters

    • event: string | symbol

    Returns Function[]

Protected loadAllScanModes

  • loadAllScanModes(): Promise<ScanMode[]>

Protected loadScanMode

  • loadScanMode(scanModeId: number): Promise<ScanMode>
  • Asynchronously load scanMode information from the lidar device.

    Parameters

    • scanModeId: number

      the scanMode to load

    Returns Promise<ScanMode>

    Promise

off

  • off(event: string | symbol, listener: function): this
  • Parameters

    • event: string | symbol
    • listener: function
        • (...args: any[]): void
        • Parameters

          • Rest ...args: any[]

          Returns void

    Returns this

on

  • on(event: string | symbol, listener: function): this
  • Parameters

    • event: string | symbol
    • listener: function
        • (...args: any[]): void
        • Parameters

          • Rest ...args: any[]

          Returns void

    Returns this

once

  • once(event: string | symbol, listener: function): this
  • Parameters

    • event: string | symbol
    • listener: function
        • (...args: any[]): void
        • Parameters

          • Rest ...args: any[]

          Returns void

    Returns this

Protected parse

  • parse(emitter: EventEmitter, buffer: Buffer): void
  • Parse a raw byte stream data into objects and dispatch via events to listeners.

    Parameters

    • emitter: EventEmitter

      the source from which parsed data events will be emitted

    • buffer: Buffer

      raw bytes received from serial port

    Returns void

prependListener

  • prependListener(event: string | symbol, listener: function): this
  • Parameters

    • event: string | symbol
    • listener: function
        • (...args: any[]): void
        • Parameters

          • Rest ...args: any[]

          Returns void

    Returns this

prependOnceListener

  • prependOnceListener(event: string | symbol, listener: function): this
  • Parameters

    • event: string | symbol
    • listener: function
        • (...args: any[]): void
        • Parameters

          • Rest ...args: any[]

          Returns void

    Returns this

rawListeners

  • rawListeners(event: string | symbol): Function[]
  • Parameters

    • event: string | symbol

    Returns Function[]

removeAllListeners

  • removeAllListeners(event?: string | symbol): this
  • Parameters

    • Optional event: string | symbol

    Returns this

removeListener

  • removeListener(event: string | symbol, listener: function): this
  • Parameters

    • event: string | symbol
    • listener: function
        • (...args: any[]): void
        • Parameters

          • Rest ...args: any[]

          Returns void

    Returns this

reset

  • reset(): Promise<void>

Protected scan

  • scan(): Promise<void>
  • Asynchronously perform low level scan operation.

    Returns Promise<void>

setMaxListeners

  • setMaxListeners(n: number): this
  • Parameters

    • n: number

    Returns this

setMotorSpeed

  • setMotorSpeed(speed: number): void
  • Asynchronously update the S1/A2/A3 device motor speed. Ignore this action if A1 device.

    Parameters

    • speed: number

    Returns void

    Promise

startMotor

  • startMotor(): Promise<void>
  • Asynchronously start the device motor. You can visually observe the device scanning head rotating upon completion.

    Returns Promise<void>

startScan

  • Asynchronously start the device scanning and generating scanSample data.

    A ScanSample contains the following data: quality: number // quality of reading based on laser reflected pulse strength angle: number // degree distance: number // millimeters start: boolean // when true indicates start of new 360 degree sampling

    The delivered of scanSamples can be configured for continuously delivery, i.e., CONTINUOUS mode, as each scanSample packet is parsed or it can be buffered and delivered as a single array of scanSamples for a single 360 degree range, i.e., ONE_REV mode.

    When the sampleScanDeliveryMode is CONTINUOUS, call stopScan() to terminate scan data capture. When the sampleScanDeliveryMode is ONE_REV, scan data capture will terminate automatically upon receipt of a full 360 degree collection of scanSamples.

    The motor will be started automatically if it is not already running. Upon completion the motor will continue to run but no further scan data will be generated until the next startScan() call. Use stopMotor() if you wish to stop the lidar's scan head rotation.

    example
    // Example1 - UNBUFFERED devery mode requires use of event listener
    lidar.on('scan', (scanSample: ScanSample) => {
        console.log(scanSample);
    });
    lidar.startScan();
    
    // Example2 - BUFFERED_ONE_REV delivery mode
    // demonstrates 2 ways to get a 360 degree block of scan data
    
    // method-A
    const data: ScanSample[] = async lidar.startScan(ScanSampleDeliveryMode.BUFFERED_ONE_REV);
    
    // method-B uses an event listener similar to Example-1
    lidar.on('scan', (scanSamples: ScanSample[]) => {
        console.log(scanSamples);
    });

    Parameters

    • Default value sampleDeliveryMode: ScanSampleDeliveryMode = ScanSampleDeliveryMode.UNBUFFERED

      UNBUFFERED is the default value When set to UNBUFFERED will emit 'scan' events, each event containing 1 scanSample. When set to BUFFERED will continuously return 360 degree blocks of scanSamples. When set to BUFFERED_ONE_REV buffer will return the next 360 degree block of scanSamples and stop.

    • Default value minQuality: number = 0

      filter all scanSamples with quality < minQuality

    Returns Promise<ScanSample[] | void>

    Promise when sampleDeliveryMode set to UNBUFFERED or BUFFERED. When set to BUFFERED_ONE_REV buffer will return Promise<ScanSample[]> containin 360 degree of scan data.

stopMotor

  • stopMotor(): Promise<void>
  • Asynchronously stop the device motor. You can visually observe the device scanning head stop rotating upon completion.

    Returns Promise<void>

stopScan

  • stopScan(): Promise<void>
  • Discontinue capture of scanSamples. Not this operation does not stop the motor.

    Returns Promise<void>

Static listenerCount

  • listenerCount(emitter: EventEmitter, event: string | symbol): number
  • deprecated

    since v4.0.0

    Parameters

    • emitter: EventEmitter
    • event: string | symbol

    Returns number

Generated using TypeDoc