{
"info": {
"author": "Lakshman mallidi",
"author_email": "lakshman.mallidi@gmail.com",
"bugtrack_url": null,
"classifiers": [
"License :: OSI Approved :: MIT License",
"Operating System :: OS Independent",
"Programming Language :: Python :: 3"
],
"description": "# PyLidar3\n\n[](https://github.com/lakshmanmallidi/PyLidar3) [](https://github.com/lakshmanmallidi/PyLidar3/License)\n
PyLidar3 is python 3 package to get data from Lidar device. Currently supports ydlidar from [www.ydlidar.com/]([www.ydlidar.com/).\n\n## Source code\nSource code is available on github's repository.
\n[https://github.com/lakshmanmallidi/PyLidar3/blob/master/PyLidar3/\\__init.py\\_\\_](https://github.com/lakshmanmallidi/PyLidar3/blob/master/PyLidar3/__init__.py)\n\n## Dependencies\n* pyserial\n* time\n* math\n* enum\n\n## Installation\n\n##### Using Pip\n```\npip install PyLidar3\n```\nYou can also install using setup.py file from git repository.\n\n## Usage\nThis package consists of multiple classes representing the version of lidar you are using. The class structure is YdLidarX4 where X4 is version name ydlidar. Further contribution are actively accepted. \n##### Class structure:\n###### YdLidarX4\n`Arguments`: port, chunk_size(default:6000).
\n\n`port`: serial port to which device is connected. Example: com4, /dev/ttyAMC0.
\n\n`chunk_size`: Number of bytes of data read from device. Increase in chunk_size results in more averaged angle:distance pairs but increase response time result in slower data acquisition. For faster data acquisition decrease chunk_size.
\n```\nNote: Calibrate chunk size depends on your application and frequency of device. \nif the chunk size is not enough not all angles are covered. \n```\n\n* `Connect` -- Begin serial connection with Lidar by opening serial port. Return success status True/False.
\n\n* `StartScanning` -- Begin the lidar and returns a generator which returns a dictionary consisting angle(degrees) and distance(meters).
\n `Return Format` : {angle(0):distance, angle(2):distance,....................,angle(359):distance}
\n\n* `StopScanning` -- Stops scanning but keeps serial connection alive.
\n\n* `GetHealthStatus` -- Returns True if Health of lidar is good else returns False
\n\n* `GetDeviceInfo` -- Returns Information of Lidar version, serial number etc.
\n\n* `Reset` -- Reboot the lidar
\n\n* `Disconnect` -- Stop scanning and close serial communication with Lidar.
\n\n###### YdLidarG4\n`Arguments`: port, chunk_size(default:6000).
\n\n`port`: serial port to which device is connected. Example: com4, /dev/ttyAMC0.
\n\n`chunk_size`: Number of bytes of data read from device. Increase in chunk_size results in more averaged angle:distance pairs but increase response time result in slower data acquisition. For faster data acquisition decrease chunk_size.
\n```\nNote: Calibrate chunk size depends on your application and frequency of device. \nif the chunk size is not enough not all angles are covered. \n```\n\n* `Connect` -- Begin serial connection with Lidar by opening serial port. Return success status True/False.
\n\n\n* `StartScanning` -- Begin the lidar and returns a generator which returns a dictionary consisting angle(degrees) and distance(meters).
\n `Return Format` : {angle(0):distance, angle(2):distance,....................,angle(359):distance}
\n\n* `StopScanning` -- Stops scanning but keeps serial connection alive.
\n\n* `GetHealthStatus` -- Returns True if Health of lidar is good else returns False
\n\n* `GetDeviceInfo` -- Returns Information of Lidar version, serial number etc.
\n\n* `EnableLowPowerMode` -- Enable Low Power Consumption Mode(Turn motor and distance-measuring unit off in StopScanning).
\n\n* `DisableLowPowerMode` -- Disable Low Power Consumption Mode(Turn motor and distance-measuring unit on StopScanning).
\n\n* `GetLowPowerModeStatus` -- Return True if Low Power Consumption Mode is Enable else return False.
\n\n```\nclass FrequencyStep(Enum):\n oneTenthHertz=1\n oneHertz=2\n```\n* `IncreaseCurrentFrequency` -- Increase current frequency by oneTenth or one depends on enum FrequencyStep.
\n\n* `DecreaseCurrentFrequency` -- Decrease current frequency by oneTenth or one depends on enum FrequencyStep.
\n```\nimport PyLidar3\nport = input(\"Enter port name which lidar is connected:\") #windows\nObj = PyLidar3.YdLidarG4(port)\nif(Obj.Connect()):\n print(Obj.GetDeviceInfo())\n print(Obj.GetCurrentFrequency())\n Obj.IncreaseCurrentFrequency(PyLidar3.FrequencyStep.oneTenthHertz)\n print(Obj.GetCurrentFrequency())\n Obj.DecreaseCurrentFrequency(PyLidar3.FrequencyStep.oneHertz)\n print(Obj.GetCurrentFrequency())\n Obj.Disconnect()\nelse:\n print(\"Error connecting to device\")\n```\n\n* `EnableConstantFrequency` -- Enables constant frequency default Enable.\n\n* `DisableConstantFrequency` -- Disable constant frequency.\n\n* `SwitchRangingFrequency` -- Switch between ranging frequencies 4khz, 8khz and 9khz, default 9khz.\n\n* `GetCurrentRangingFrequency` -- Returns current Ranging Frequency in khz.\n\n* `Reset` -- Reboot the lidar
\n\n* `Disconnect` -- Stop scanning and close serial communication with Lidar.
\n\n## Examples\nThis Example prints data from lidar\n```\nimport PyLidar3\nimport time # Time module\n#Serial port to which lidar connected, Get it from device manager windows\n#In linux type in terminal -- ls /dev/tty* \nport = input(\"Enter port name which lidar is connected:\") #windows\n#port = \"/dev/ttyUSB0\" #linux\nObj = PyLidar3.YdLidarX4(port) #PyLidar3.your_version_of_lidar(port,chunk_size) \nif(Obj.Connect()):\n print(Obj.GetDeviceInfo())\n gen = Obj.StartScanning()\n t = time.time() # start time \n while (time.time() - t) < 30: #scan for 30 seconds\n print(next(gen))\n time.sleep(0.5)\n Obj.StopScanning()\n Obj.Disconnect()\nelse:\n print(\"Error connecting to device\")\n```\nThis Example plot the data. This example needs matplotlib library.\n```\nimport threading\nimport PyLidar3\nimport matplotlib.pyplot as plt\nimport math \nimport time\n\ndef draw():\n global is_plot\n while is_plot:\n plt.figure(1)\n plt.cla()\n plt.ylim(-9000,9000)\n plt.xlim(-9000,9000)\n plt.scatter(x,y,c='r',s=8)\n plt.pause(0.001)\n plt.close(\"all\")\n\n\nis_plot = True\nx=[]\ny=[]\nfor _ in range(360):\n x.append(0)\n y.append(0)\n\nport = input(\"Enter port name which lidar is connected:\") #windows\nObj = PyLidar3.YdLidarX4(port) #PyLidar3.your_version_of_lidar(port,chunk_size) \nthreading.Thread(target=draw).start()\nif(Obj.Connect()):\n print(Obj.GetDeviceInfo())\n gen = Obj.StartScanning()\n t = time.time() # start time \n while (time.time() - t) < 30: #scan for 30 seconds\n data = next(gen)\n for angle in range(0,360):\n if(data[angle]>1000):\n x[angle] = data[angle] * math.cos(math.radians(angle))\n y[angle] = data[angle] * math.sin(math.radians(angle))\n is_plot = False\n Obj.StopScanning()\n Obj.Disconnect()\nelse:\n print(\"Error connecting to device\")\n\n```\n## Testing\n\nA \"tesing\" branch is maintained in the git repository for testing, debugging and updating the code. Please visit Github repo [https://github.com/lakshmanmallidi/PyLidar3](https://github.com/lakshmanmallidi/PyLidar3) for further information. \n\n\n",
"description_content_type": "text/markdown",
"docs_url": null,
"download_url": "",
"downloads": {
"last_day": -1,
"last_month": -1,
"last_week": -1
},
"home_page": "https://github.com/lakshmanmallidi/PyLidar3",
"keywords": "",
"license": "",
"maintainer": "",
"maintainer_email": "",
"name": "PyLidar3",
"package_url": "https://pypi.org/project/PyLidar3/",
"platform": "",
"project_url": "https://pypi.org/project/PyLidar3/",
"project_urls": {
"Homepage": "https://github.com/lakshmanmallidi/PyLidar3"
},
"release_url": "https://pypi.org/project/PyLidar3/1.6/",
"requires_dist": [
"pyserial"
],
"requires_python": ">=3.4",
"summary": "Library for Lidar. Currently supports YdLidar(X4,G4) from http://www.ydlidar.com",
"version": "1.6"
},
"last_serial": 5370706,
"releases": {
"1.0": [
{
"comment_text": "",
"digests": {
"md5": "541ead9093da9c3623563630a3c0d2dd",
"sha256": "345a8824111b98ecc4a47d5ef5b2cdaaa58507e897d19e73c66e85120224086c"
},
"downloads": -1,
"filename": "PyLidar3-1.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "541ead9093da9c3623563630a3c0d2dd",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.4",
"size": 5506,
"upload_time": "2019-03-03T19:06:26",
"url": "https://files.pythonhosted.org/packages/e1/aa/2a1dea37bd51af793f213d4d3cfbe5295dc6d51a374c41d00e288087a31f/PyLidar3-1.0-py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "e77387c28cb1c958d986a39021e44a3b",
"sha256": "25eb7b4142608261e0aedfccd3792e9a4d2e14e588205111277c4bc2dc36c304"
},
"downloads": -1,
"filename": "PyLidar3-1.0.tar.gz",
"has_sig": false,
"md5_digest": "e77387c28cb1c958d986a39021e44a3b",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.4",
"size": 4498,
"upload_time": "2019-03-03T19:06:28",
"url": "https://files.pythonhosted.org/packages/f9/09/acb971a13ba35ffb6122b1e0f6ce27d4148d4d833fc0c7aa07434ffb15cc/PyLidar3-1.0.tar.gz"
}
],
"1.1": [
{
"comment_text": "",
"digests": {
"md5": "f4d75494b5bde60eeea87ce30af7fdfa",
"sha256": "1dd71896842a372e21dd41e8504693a5f806abfdec7ba46e3e4697a6a9e4a740"
},
"downloads": -1,
"filename": "PyLidar3-1.1-py3-none-any.whl",
"has_sig": false,
"md5_digest": "f4d75494b5bde60eeea87ce30af7fdfa",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.4",
"size": 5509,
"upload_time": "2019-03-03T19:22:58",
"url": "https://files.pythonhosted.org/packages/26/f3/993aefa17ab2f92d55449a51d3376d3708b650ef5fb3dcf926c9d0f6789f/PyLidar3-1.1-py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "f7c29718713693d33ecc5bdb52146122",
"sha256": "bcd8a3b3033e6f223fbf41f3d2bc3c5ed522ad7ce45c75fca5b43e9a5059d80e"
},
"downloads": -1,
"filename": "PyLidar3-1.1.tar.gz",
"has_sig": false,
"md5_digest": "f7c29718713693d33ecc5bdb52146122",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.4",
"size": 4483,
"upload_time": "2019-03-03T19:22:59",
"url": "https://files.pythonhosted.org/packages/ce/f0/7352919e38a9583b4c2ed6f25c013327a0813758f7bde31c25ca770e78a7/PyLidar3-1.1.tar.gz"
}
],
"1.2": [
{
"comment_text": "",
"digests": {
"md5": "aafa7dea8a815c196de50f555aeaf4ee",
"sha256": "c2daff9bce292e57a1630946bd99fa558b000c1beaa61a5c9650222025502291"
},
"downloads": -1,
"filename": "PyLidar3-1.2-py3-none-any.whl",
"has_sig": false,
"md5_digest": "aafa7dea8a815c196de50f555aeaf4ee",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.4",
"size": 6951,
"upload_time": "2019-05-10T16:06:56",
"url": "https://files.pythonhosted.org/packages/24/cc/41332edb6f829535781d22e10296be218c78ee893c83dae0164e5c0e65a0/PyLidar3-1.2-py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "0ef7887596d25349460061d025c638f4",
"sha256": "12e18861722fbcaca30fe310897e1322cb121af50068b59d5fa31858381f815d"
},
"downloads": -1,
"filename": "PyLidar3-1.2.tar.gz",
"has_sig": false,
"md5_digest": "0ef7887596d25349460061d025c638f4",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.4",
"size": 5716,
"upload_time": "2019-05-10T16:07:00",
"url": "https://files.pythonhosted.org/packages/59/0d/7ac0a9ddba5e347e0f3ce14503ea65bec325274101773cb6b111cdbb8b87/PyLidar3-1.2.tar.gz"
}
],
"1.3": [
{
"comment_text": "",
"digests": {
"md5": "b6f12bfc4f655548fff6535820f16c25",
"sha256": "8b60307a3c91891e30fd9ec0f678b0f5ce3e2fbc582a7f73df3c248ed940655d"
},
"downloads": -1,
"filename": "PyLidar3-1.3-py3-none-any.whl",
"has_sig": false,
"md5_digest": "b6f12bfc4f655548fff6535820f16c25",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.4",
"size": 6767,
"upload_time": "2019-05-18T19:32:51",
"url": "https://files.pythonhosted.org/packages/c6/79/84e70a2d7e6bbeeefb686eb1b109a8c97480648749a94309494dbe173a11/PyLidar3-1.3-py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "75bb598d876a9de24b20abf44f922b22",
"sha256": "a04763c685513f44f5eca3198d6b9c330660ca61120b247b9e4948bcf38aa2b8"
},
"downloads": -1,
"filename": "PyLidar3-1.3.tar.gz",
"has_sig": false,
"md5_digest": "75bb598d876a9de24b20abf44f922b22",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.4",
"size": 5808,
"upload_time": "2019-05-18T19:32:53",
"url": "https://files.pythonhosted.org/packages/5d/77/a175c3784333e37dc74f0ebba31cea5eca0de51986d6b6109ecc8c50a650/PyLidar3-1.3.tar.gz"
}
],
"1.4": [
{
"comment_text": "",
"digests": {
"md5": "9a1fc686954b679481a72cf38526ed48",
"sha256": "c7b556cc07564263e0965065d330ba6e8233e18b3bda2166ad46f48686ec8557"
},
"downloads": -1,
"filename": "PyLidar3-1.4-py3-none-any.whl",
"has_sig": false,
"md5_digest": "9a1fc686954b679481a72cf38526ed48",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.4",
"size": 6809,
"upload_time": "2019-05-20T18:19:29",
"url": "https://files.pythonhosted.org/packages/39/c3/06d1e8cde8a5b4040697b0655b1688c9993b0929d33ae8fc9c70a60c0598/PyLidar3-1.4-py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "3d27bf99774638a8ddd94188b5b90eae",
"sha256": "cfd70fc8eb3bab8944ef7d61d55bb3b3217572b82e35365050b4c1aab42caa8d"
},
"downloads": -1,
"filename": "PyLidar3-1.4.tar.gz",
"has_sig": false,
"md5_digest": "3d27bf99774638a8ddd94188b5b90eae",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.4",
"size": 5851,
"upload_time": "2019-05-20T18:19:31",
"url": "https://files.pythonhosted.org/packages/24/44/fa8f40404be2254efa3de62459b9ff3d18fdcec730f8e9b965798ab46d96/PyLidar3-1.4.tar.gz"
}
],
"1.5": [
{
"comment_text": "",
"digests": {
"md5": "d7620cfd69559ded19e6881175fab86f",
"sha256": "766fad7ad26b354b0b30f0f21fd82453d4e62dcdac1ea2fd710b2fe1ea1c6549"
},
"downloads": -1,
"filename": "PyLidar3-1.5-py3-none-any.whl",
"has_sig": false,
"md5_digest": "d7620cfd69559ded19e6881175fab86f",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.4",
"size": 6822,
"upload_time": "2019-05-20T18:37:21",
"url": "https://files.pythonhosted.org/packages/7e/c5/77b7a88136c2828bdee8be9937b371e930acf89b6272ae512c7b28dd3498/PyLidar3-1.5-py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "fce4bb19d220e40700289772bd9ffd4f",
"sha256": "8bce829775847ad88e4bac1500eb5780a7c21ac5ea768063dcb18774a7abc49a"
},
"downloads": -1,
"filename": "PyLidar3-1.5.tar.gz",
"has_sig": false,
"md5_digest": "fce4bb19d220e40700289772bd9ffd4f",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.4",
"size": 5851,
"upload_time": "2019-05-20T18:37:22",
"url": "https://files.pythonhosted.org/packages/75/49/fe04046c21b74e57bc1a8365c69e4b8a5a8a9b78f43ae83fbcb23c95fb62/PyLidar3-1.5.tar.gz"
}
],
"1.6": [
{
"comment_text": "",
"digests": {
"md5": "a90480a698aa4e12cb19b65f71b8337c",
"sha256": "b2fdf19bc2565608ee69deb23ba5cf46ee05303ead2dbc80c19b0c4fc803012d"
},
"downloads": -1,
"filename": "PyLidar3-1.6-py3-none-any.whl",
"has_sig": false,
"md5_digest": "a90480a698aa4e12cb19b65f71b8337c",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.4",
"size": 6814,
"upload_time": "2019-06-07T09:18:07",
"url": "https://files.pythonhosted.org/packages/3b/ba/bb6aecc7fc070eac42097ec89871c47596f27871ed9973800bb4633f2a8e/PyLidar3-1.6-py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "c792c9dfc85efb292d2525e4302f708e",
"sha256": "df77440d60816ecd1e66fa2388603dd6d25e786009bae8f9f3a6d0ee0154b318"
},
"downloads": -1,
"filename": "PyLidar3-1.6.tar.gz",
"has_sig": false,
"md5_digest": "c792c9dfc85efb292d2525e4302f708e",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.4",
"size": 5849,
"upload_time": "2019-06-07T09:18:08",
"url": "https://files.pythonhosted.org/packages/aa/48/b7feefe3619bf213b7b8addb06eb1c9fe94e8607f43e19560e3234c35e6f/PyLidar3-1.6.tar.gz"
}
]
},
"urls": [
{
"comment_text": "",
"digests": {
"md5": "a90480a698aa4e12cb19b65f71b8337c",
"sha256": "b2fdf19bc2565608ee69deb23ba5cf46ee05303ead2dbc80c19b0c4fc803012d"
},
"downloads": -1,
"filename": "PyLidar3-1.6-py3-none-any.whl",
"has_sig": false,
"md5_digest": "a90480a698aa4e12cb19b65f71b8337c",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.4",
"size": 6814,
"upload_time": "2019-06-07T09:18:07",
"url": "https://files.pythonhosted.org/packages/3b/ba/bb6aecc7fc070eac42097ec89871c47596f27871ed9973800bb4633f2a8e/PyLidar3-1.6-py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "c792c9dfc85efb292d2525e4302f708e",
"sha256": "df77440d60816ecd1e66fa2388603dd6d25e786009bae8f9f3a6d0ee0154b318"
},
"downloads": -1,
"filename": "PyLidar3-1.6.tar.gz",
"has_sig": false,
"md5_digest": "c792c9dfc85efb292d2525e4302f708e",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.4",
"size": 5849,
"upload_time": "2019-06-07T09:18:08",
"url": "https://files.pythonhosted.org/packages/aa/48/b7feefe3619bf213b7b8addb06eb1c9fe94e8607f43e19560e3234c35e6f/PyLidar3-1.6.tar.gz"
}
]
}