Skip to content

Repository files navigation

NodeJS (and Web Serial API) driver for slamtec RPLidar

Please note: this driver tested only on A1 (but it will certainly suit advanced models without significant problems).

Yep, you can use the driver both in NodeJS and even in your browser at almost maximum design speeds (~440RPM for A1)!

Installing

// Usual module for NodeJS
import {RPLidar} from '@tsofist/rplidar';

// Usual module (for bundling) for Browser
import {RPLidarBrowser} from '@tsofist/rplidar';

// Independent module for Browser (as esm/cjs module)
import {RPLidarBrowser} from '@tsofist/rplidar/lib/rplidar-browser.esm.js';
import {RPLidarBrowser} from '@tsofist/rplidar/lib/rplidar-browser.js';

// Independent module for Browser from CDN as esm
import {RPLidarBrowser} from 'https://unpkg.com/@tsofist/rplidar/lib/rplidar-browser.esm.js';

Usage

const lidar = new RPLidar();

console.log('Opening lidar port..');

await lidar.open();
await lidar.motorStop();

console.log(`RPLidar ready on "${lidar.serialPortPath}"`);
console.log(`Lidar Info:`, await lidar.getInfo());
console.log(`Device health:`, await lidar.getHealth());
console.log(`Lidar samples rates:`, await lidar.getSamplesRate());
console.log(`Lidar scanning modes:`, await lidar.listScanModes());

lidar.on(`scan:sample`, (sample: RPLidarScanSample) => {
  console.log(`Scan sample:`, sample);
  console.log(`Actual speed: ${lidar.scanningRPM}RPM (${lidar.scanningHz}Hz)`);
});

console.log(`Start scanning..`);

await lidar.motorStart();
await lidar.scanStart();

await delay(5_000);

console.log(`Stop scanning..`);

await lidar.scanStop();
await lidar.motorStop();

await delay(3_000);

await lidar.close();

console.log(`Lidar port closed`);

About

nodejs driver for slamtec RPLidar

Resources

Stars

2 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages