Skip to main content

Library for Lidar. Currently supports YdLidar from http://www.ydlidar.com

Project description

PyLidar2

Build Status license
PyLidar2 is python 2 package to get data from Lidar device. Currently supports ydlidar from www.ydlidar.com/.

Source code

Source code is available on github's repository.
https://github.com/lakshmanmallidi/PyLidar2/blob/master/PyLidar2/__init.py__

Dependencies

  • pyserial
  • time
  • math

Installation

Using Pip
pip install PyLidar2

You can also install using setup.py file from git repository.

Usage

This package consists of multiple classes representing the version of lidar you are using. The class structure is YdLidarX4 where X4 is version name ydlidar. 0.1 version of this package does only contain class for X4 version only. Further contribution are actively accepted.

Functions:

YdLidarX4

  • Connect -- Begin serial connection with Lidar by opening serial port. Return success status True/False.
  • StartScanning -- Begin the lidar and returns a generator which returns a dictionary consisting angle(degrees) and distance(meters).
    Return Format : {angle(1):distance, angle(2):distance,....................,angle(360):distance}
    Return False in case of exception.
  • StopScanning -- Stops scanning but keeps serial connection alive.
    Return True on success.
    Return False in case of exception.
  • GetHealthStatus -- Returns Health status of lidar
    True: good
    False: Not good or Exception or not connected
  • GetDeviceInfo -- Reboots the Lidar. Return True on success. Return False in case of exception.
  • Reset -- Reboot the lidar
  • Disconnect -- Stop scanning and close serial communication with Lidar.
    Return True on success.
    Return False in case of exception.
Examples

This Example prints data from lidar

import PyLidar2
import time # Time module
#Serial port to which lidar connected, Get it from device manager windows
#In linux type in terminal -- ls /dev/tty* 
port = raw_input("Enter port name which lidar is connected:") #windows
#port = "/dev/ttyUSB0" #linux
Obj = PyLidar2.YdLidarX4(port)
if(Obj.Connect()):
    print(Obj.GetDeviceInfo())
    gen = Obj.StartScanning()
    t = time.time() # start time 
    while (time.time() - t) < 30: #scan for 30 seconds
        print(gen.next())
        time.sleep(0.5)
    Obj.StopScanning()
    Obj.Disconnect()
else:
    print("Error connecting to device")

This Example plot the data. This example needs matplotlib library.

import threading
import PyLidar2
import matplotlib.pyplot as plt
import math    
import time

def draw():
    global is_plot
    while is_plot:
        plt.figure(1)
        plt.cla()
        plt.ylim(-9000,9000)
        plt.xlim(-9000,9000)
        plt.scatter(x,y,c='r',s=8)
        plt.pause(0.001)
    plt.close("all")


is_plot = True
x=[]
y=[]
for _ in range(361):
    x.append(0)
    y.append(0)

port =  raw_input("Enter port name which lidar is connected:") #windows
Obj = PyLidar2.YdLidarX4(port)
threading.Thread(target=draw).start()
if(Obj.Connect()):
    print(Obj.GetDeviceInfo())
    gen = Obj.StartScanning()
    t = time.time() # start time 
    while (time.time() - t) < 30: #scan for 30 seconds
        data = gen.next()
        for angle in range(0,361):
            if(data[angle]>1000):
                x[angle] = data[angle] * math.cos(math.radians(angle))
                y[angle] = data[angle] * math.sin(math.radians(angle))
    is_plot = False
    Obj.StopScanning()
    Obj.Disconnect()
else:
    print("Error connecting to device")

Testing

A "tesing" branch is maintained in the git repository for testing, debugging and updating the code. Please visit Github repo https://github.com/lakshmanmallidi/PyLidar2 for further information.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for PyLidar2, version 1.1
Filename, size File type Python version Upload date Hashes
Filename, size PyLidar2-1.1-py2-none-any.whl (5.5 kB) File type Wheel Python version py2 Upload date Hashes View
Filename, size PyLidar2-1.1.tar.gz (4.5 kB) File type Source Python version None Upload date Hashes View

Supported by

AWS AWS Cloud computing Datadog Datadog Monitoring DigiCert DigiCert EV certificate Facebook / Instagram Facebook / Instagram PSF Sponsor Fastly Fastly CDN Google Google Object Storage and Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Salesforce Salesforce PSF Sponsor Sentry Sentry Error logging StatusPage StatusPage Status page