rplidar-driver
A TypeScript (javascript) RPLidar device driver for controlling Slamtec A1 - A3 lidar devices from Node.
-
Implements the following device api:
- startMotor()
- stopMotor()
- reset()
- getHealth()
- getInfo()
- getRPM()
- getSampleRates()
- getScanModes()
- startScan()
- stopScan()
See API docs.
-
RPLidar devices support 2 scan modes: Standard and Express. This driver uses the Standard scanning mode. Support for Express scan mode is planned.
-
Supports 3 scan data delivery modes: realtime scan data delivery, batch 360 degree scan data delivery and single 360 degree batch scan data delivery
-
Tested on MacOS Mojave and Catalina and Linux Ubuntu 18.04.1 with RPLidar 1AM8 device and cu.SLAB_USBtoUART driver. Windows 10 testing planned.
Device user guides and protocol documentation can be found here.
Prerequisites
Node >= 10.0.0
USBtoUART Driver - download and install for your OS
Installation
npm install @wayneparrott/rplidar-driver
Usage
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();
Thanks
All credit to Andrew Koroluk the author of the rplidar npm module. rplidar-driver began as a fork of node-rplidar with the goal to reimplement it's functionality in TypeScript module. Initially I was not able to run rplidar on a RPLidar 1AM8 device without errors. That led to some early mods. Then I began removing dependencies, introducing types, additional api, etc. But still much of the code and examples are basically Andrew's original work with minor tweaks to work with rplidar-driver. Thanks Andrew for showing me the way!
Built in TypeScript using the CodeMix plugin for Eclipse.